ffmpeg: use the more powerful version of abuffersink.
This commit is contained in:
parent
1f5c1333a7
commit
6f5e7e8690
17
ffmpeg.c
17
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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user