[FFmpeg-cvslog] ffmpeg: use the more powerful version of abuffersink.

Nicolas George git at videolan.org
Sat Jun 30 14:22:01 CEST 2012


ffmpeg | branch: master | Nicolas George <nicolas.george at normalesup.org> | Mon Jun 25 00:32:49 2012 +0200| [6f5e7e8690c9bfd0f4cf9581319adfb7c0983a9f] | committer: Nicolas George

ffmpeg: use the more powerful version of abuffersink.

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

 ffmpeg.c |   17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/ffmpeg.c b/ffmpeg.c
index dea93e5..b7f712e 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -882,7 +882,7 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
 
     snprintf(name, sizeof(name), "output stream %d:%d", ost->file_index, ost->index);
     ret = avfilter_graph_create_filter(&ofilter->filter,
-                                       avfilter_get_by_name("abuffersink_old"),
+                                       avfilter_get_by_name("abuffersink"),
                                        name, NULL, NULL, fg->graph);
     if (ret < 0)
         return ret;
@@ -1939,15 +1939,8 @@ static int poll_filters(void)
             filtered_frame = ost->filtered_frame;
 
             while (!ost->is_past_recording_time) {
-                if (ost->enc->type == AVMEDIA_TYPE_AUDIO &&
-                    !(ost->enc->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE))
-                    ret = av_buffersink_read_samples(ost->filter->filter, &picref,
-                                                    ost->st->codec->frame_size);
-                else if(ost->enc->type == AVMEDIA_TYPE_AUDIO)
-                    ret = av_buffersink_read(ost->filter->filter, &picref);
-                else
-                    ret = av_buffersink_get_buffer_ref(ost->filter->filter, &picref,
-                                                       AV_BUFFERSINK_FLAG_NO_REQUEST);
+                ret = av_buffersink_get_buffer_ref(ost->filter->filter, &picref,
+                                                   AV_BUFFERSINK_FLAG_NO_REQUEST);
                 if (ret < 0) {
                     if (ret != AVERROR(EAGAIN) && ret != AVERROR_EOF) {
                         char buf[256];
@@ -3108,6 +3101,10 @@ static int transcode_init(void)
                 ret = AVERROR(EINVAL);
                 goto dump_format;
             }
+            if (ost->enc->type == AVMEDIA_TYPE_AUDIO &&
+                !(ost->enc->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE))
+                av_buffersink_set_frame_size(ost->filter->filter,
+                                             ost->st->codec->frame_size);
             assert_codec_experimental(ost->st->codec, 1);
             assert_avoptions(ost->opts);
             if (ost->st->codec->bit_rate && ost->st->codec->bit_rate < 1000)



More information about the ffmpeg-cvslog mailing list