Commit 6f5e7e86 authored by Nicolas George's avatar Nicolas George

ffmpeg: use the more powerful version of abuffersink.

parent 1f5c1333
...@@ -882,7 +882,7 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter, ...@@ -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); snprintf(name, sizeof(name), "output stream %d:%d", ost->file_index, ost->index);
ret = avfilter_graph_create_filter(&ofilter->filter, ret = avfilter_graph_create_filter(&ofilter->filter,
avfilter_get_by_name("abuffersink_old"), avfilter_get_by_name("abuffersink"),
name, NULL, NULL, fg->graph); name, NULL, NULL, fg->graph);
if (ret < 0) if (ret < 0)
return ret; return ret;
...@@ -1939,15 +1939,8 @@ static int poll_filters(void) ...@@ -1939,15 +1939,8 @@ static int poll_filters(void)
filtered_frame = ost->filtered_frame; filtered_frame = ost->filtered_frame;
while (!ost->is_past_recording_time) { while (!ost->is_past_recording_time) {
if (ost->enc->type == AVMEDIA_TYPE_AUDIO && ret = av_buffersink_get_buffer_ref(ost->filter->filter, &picref,
!(ost->enc->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE)) AV_BUFFERSINK_FLAG_NO_REQUEST);
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);
if (ret < 0) { if (ret < 0) {
if (ret != AVERROR(EAGAIN) && ret != AVERROR_EOF) { if (ret != AVERROR(EAGAIN) && ret != AVERROR_EOF) {
char buf[256]; char buf[256];
...@@ -3108,6 +3101,10 @@ static int transcode_init(void) ...@@ -3108,6 +3101,10 @@ static int transcode_init(void)
ret = AVERROR(EINVAL); ret = AVERROR(EINVAL);
goto dump_format; 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_codec_experimental(ost->st->codec, 1);
assert_avoptions(ost->opts); assert_avoptions(ost->opts);
if (ost->st->codec->bit_rate && ost->st->codec->bit_rate < 1000) if (ost->st->codec->bit_rate && ost->st->codec->bit_rate < 1000)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment