summaryrefslogtreecommitdiff
path: root/libavformat/utils.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-09-26 22:52:33 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-09-26 22:58:02 +0200
commita8e3815db5095fc52b9bd8637fc19cb638bd3aad (patch)
tree3fbd499818284071c85a4ddf672c5033f37de2a3 /libavformat/utils.c
parentcddbafb56acf3fa7ac4556549bd8c911067f2324 (diff)
lavf: factorize timestamp shift in update_initial_timestamps()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/utils.c')
-rw-r--r--libavformat/utils.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 5cb380a954..83b2d269f8 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -940,24 +940,26 @@ static void update_initial_timestamps(AVFormatContext *s, int stream_index,
{
AVStream *st= s->streams[stream_index];
AVPacketList *pktl= s->parse_queue ? s->parse_queue : s->packet_buffer;
+ int64_t shift;
if(st->first_dts != AV_NOPTS_VALUE || dts == AV_NOPTS_VALUE || st->cur_dts == AV_NOPTS_VALUE || is_relative(dts))
return;
st->first_dts= dts - (st->cur_dts - RELATIVE_TS_BASE);
st->cur_dts= dts;
+ shift = st->first_dts - RELATIVE_TS_BASE;
if (is_relative(pts))
- pts += st->first_dts - RELATIVE_TS_BASE;
+ pts += shift;
for(; pktl; pktl= get_next_pkt(s, st, pktl)){
if(pktl->pkt.stream_index != stream_index)
continue;
if(is_relative(pktl->pkt.pts))
- pktl->pkt.pts += st->first_dts - RELATIVE_TS_BASE;
+ pktl->pkt.pts += shift;
if(is_relative(pktl->pkt.dts))
- pktl->pkt.dts += st->first_dts - RELATIVE_TS_BASE;
+ pktl->pkt.dts += shift;
if(st->start_time == AV_NOPTS_VALUE && pktl->pkt.pts != AV_NOPTS_VALUE)
st->start_time= pktl->pkt.pts;