From b2aae6a7ff22d1ba9361621f81504e435a747248 Mon Sep 17 00:00:00 2001 From: Dan Dennedy Date: Wed, 29 Dec 2010 01:02:43 -0800 Subject: [PATCH] Fix an infinite loop encoding a video with vorbis audio (kdenlive-1871). --- src/modules/avformat/consumer_avformat.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/modules/avformat/consumer_avformat.c b/src/modules/avformat/consumer_avformat.c index 6e834a98..78570a13 100644 --- a/src/modules/avformat/consumer_avformat.c +++ b/src/modules/avformat/consumer_avformat.c @@ -1225,9 +1225,20 @@ static void *consumer_thread( void *arg ) // Get the audio samples if ( n > 0 ) + { sample_fifo_fetch( fifo, audio_buf_1, n ); + } + else if ( audio_codec_id == CODEC_ID_VORBIS && terminated ) + { + // This prevents an infinite loop when some versions of vorbis do not + // increment pts when encoding silence. + audio_pts = video_pts; + break; + } else + { memset( audio_buf_1, 0, AUDIO_ENCODE_BUFFER_SIZE ); + } samples = n / channels; // For each output stream -- 2.39.2