OSDN Git Service

lavf/segment: fix logic for segmenting audio-only inputs
authorStefano Sabatini <stefasab@gmail.com>
Sat, 14 Jan 2012 01:40:09 +0000 (02:40 +0100)
committerStefano Sabatini <stefasab@gmail.com>
Tue, 3 Jul 2012 21:23:36 +0000 (23:23 +0200)
Also add a comment for clarifying the logic.

Fix trac ticket #1290.

libavformat/segment.c

index 4902aff..3212826 100644 (file)
@@ -203,7 +203,8 @@ static int seg_write_packet(AVFormatContext *s, AVPacket *pkt)
     int64_t end_pts = seg->recording_time * seg->number;
     int ret;
 
-    if ((seg->has_video && st->codec->codec_type == AVMEDIA_TYPE_VIDEO) &&
+    /* if the segment has video, start a new segment *only* with a key video frame */
+    if ((st->codec->codec_type == AVMEDIA_TYPE_VIDEO || !seg->has_video) &&
         av_compare_ts(pkt->pts, st->time_base,
                       end_pts, AV_TIME_BASE_Q) >= 0 &&
         pkt->flags & AV_PKT_FLAG_KEY) {