summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2011-01-16 20:51:48 +0200
committerUoti Urpala <uau@glyph.nonexistent.invalid>2011-01-18 14:58:09 +0200
commit8e7dae173d07533e1de46fad7bb2f834febe27cf (patch)
tree1e16938db643ba43a83d55524626812957c75e0a /libmpdemux
parente990fb2ffeaa786339895c8f3b3f104ef536bf39 (diff)
downloadmpv-8e7dae173d07533e1de46fad7bb2f834febe27cf.tar.bz2
mpv-8e7dae173d07533e1de46fad7bb2f834febe27cf.tar.xz
subtitles/demux: store duration instead of endpts in demux packets
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_lavf.c4
-rw-r--r--libmpdemux/demux_mkv.c2
-rw-r--r--libmpdemux/demuxer.h4
3 files changed, 5 insertions, 5 deletions
diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c
index 96f83407b0..03ffa17c43 100644
--- a/libmpdemux/demux_lavf.c
+++ b/libmpdemux/demux_lavf.c
@@ -756,11 +756,11 @@ static int demux_lavf_fill_buffer(demuxer_t *demux, demux_stream_t *dsds){
if(ts != AV_NOPTS_VALUE){
dp->pts = ts * av_q2d(priv->avfc->streams[id]->time_base);
priv->last_pts= dp->pts * AV_TIME_BASE;
- // always set endpts for subtitles, even if PKT_FLAG_KEY is not set,
+ // always set duration for subtitles, even if PKT_FLAG_KEY is not set,
// otherwise they will stay on screen to long if e.g. ASS is demuxed from mkv
if((ds == demux->sub || (pkt.flags & PKT_FLAG_KEY)) &&
pkt.convergence_duration > 0)
- dp->endpts = dp->pts + pkt.convergence_duration * av_q2d(priv->avfc->streams[id]->time_base);
+ dp->duration = pkt.convergence_duration * av_q2d(priv->avfc->streams[id]->time_base);
}
dp->pos=demux->filepos;
dp->flags= !!(pkt.flags&PKT_FLAG_KEY);
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c
index 2414b01b4b..b75f07fd67 100644
--- a/libmpdemux/demux_mkv.c
+++ b/libmpdemux/demux_mkv.c
@@ -1884,7 +1884,7 @@ static void handle_subtitles(demuxer_t *demuxer, mkv_track_t *track,
dp = new_demux_packet(size);
memcpy(dp->buffer, block, size);
dp->pts = timecode / 1000.0;
- dp->endpts = (timecode + block_duration) / 1000.0;
+ dp->duration = block_duration / 1000.0;
ds_add_packet(demuxer->sub, dp);
}
diff --git a/libmpdemux/demuxer.h b/libmpdemux/demuxer.h
index df0fdaa9bb..ece4b74af8 100644
--- a/libmpdemux/demuxer.h
+++ b/libmpdemux/demuxer.h
@@ -127,7 +127,7 @@ enum timestamp_type {
typedef struct demux_packet {
int len;
double pts;
- double endpts;
+ double duration;
double stream_pts;
off_t pos; // position in index (AVI) or file (MPG)
unsigned char* buffer;
@@ -289,7 +289,7 @@ static inline demux_packet_t* new_demux_packet(int len){
dp->len=len;
dp->next=NULL;
dp->pts=MP_NOPTS_VALUE;
- dp->endpts=MP_NOPTS_VALUE;
+ dp->duration = -1;
dp->stream_pts = MP_NOPTS_VALUE;
dp->pos=0;
dp->flags=0;