ffmpeg | branch: master | Stefano Sabatini <[email protected]> | Thu Jul 17 
16:36:27 2014 +0200| [526bd7bdfad7d0e7b18ee45592e68c881abeac2a] | committer: 
Stefano Sabatini

lavf/segment: set segment end time when the first packet arrives

Avoid negative durations in case there is a single packet in the current
segment, since in that case the end time is still set to the previous
segment end time.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=526bd7bdfad7d0e7b18ee45592e68c881abeac2a
---

 libavformat/segment.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/libavformat/segment.c b/libavformat/segment.c
index c25a295..72bf5e0 100644
--- a/libavformat/segment.c
+++ b/libavformat/segment.c
@@ -729,6 +729,8 @@ 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));

_______________________________________________
ffmpeg-cvslog mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

Reply via email to