From 5b4f44f66ae3c42b7497929b6ef5f67e8b1ff0ad Mon Sep 17 00:00:00 2001 From: Rodger Combs Date: Sun, 6 Mar 2016 20:43:37 -0600 Subject: [PATCH] lavf/segment: slight refactor to seg_write_packet This reduces some code duplication, and ensures that cur_entry.last_duration is always set. --- libavformat/segment.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/libavformat/segment.c b/libavformat/segment.c index 4c1e1156af..d6473f4675 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -860,11 +860,13 @@ static int seg_write_packet(AVFormatContext *s, AVPacket *pkt) seg->cur_entry.index = seg->segment_idx + seg->segment_idx_wrap * seg->segment_idx_wrap_nb; seg->cur_entry.start_time = (double)pkt->pts * av_q2d(st->time_base); seg->cur_entry.start_pts = av_rescale_q(pkt->pts, st->time_base, AV_TIME_BASE_Q); - seg->cur_entry.end_time = seg->cur_entry.start_time + - pkt->pts != AV_NOPTS_VALUE ? (double)(pkt->pts + pkt->duration) * av_q2d(st->time_base) : 0; - } else if (pkt->pts != AV_NOPTS_VALUE && pkt->stream_index == seg->reference_stream_index) { - seg->cur_entry.end_time = - FFMAX(seg->cur_entry.end_time, (double)(pkt->pts + pkt->duration) * av_q2d(st->time_base)); + seg->cur_entry.end_time = seg->cur_entry.start_time; + } + + if (pkt->stream_index == seg->reference_stream_index) { + if (pkt->pts != AV_NOPTS_VALUE) + seg->cur_entry.end_time = + FFMAX(seg->cur_entry.end_time, (double)(pkt->pts + pkt->duration) * av_q2d(st->time_base)); seg->cur_entry.last_duration = pkt->duration; }