X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffmpeg_filter.c;h=e23e2ebaaf3e6857f6830d29f13be69cd66fa0a4;hb=f9a8eeb08c4ccfd0678047e64b0f616ae1379c27;hp=60309307c5c24cc719666d6e35b54f080baa71e3;hpb=fc2922836bc289e443c0c7a20450bf8f03c0785d;p=ffmpeg diff --git a/ffmpeg_filter.c b/ffmpeg_filter.c index 60309307c5c..e23e2ebaaf3 100644 --- a/ffmpeg_filter.c +++ b/ffmpeg_filter.c @@ -367,12 +367,16 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter, char *sample_fmts, *sample_rates, *channel_layouts; char name[255]; int ret; + AVABufferSinkParams *params = av_abuffersink_params_alloc(); - + if (!params) + return AVERROR(ENOMEM); + params->all_channel_counts = 1; snprintf(name, sizeof(name), "output stream %d:%d", ost->file_index, ost->index); ret = avfilter_graph_create_filter(&ofilter->filter, avfilter_get_by_name("ffabuffersink"), - name, NULL, NULL, fg->graph); + name, NULL, params, fg->graph); + av_freep(¶ms); if (ret < 0) return ret; @@ -620,20 +624,25 @@ static int configure_input_audio_filter(FilterGraph *fg, InputFilter *ifilter, AVFilter *filter = avfilter_get_by_name("abuffer"); InputStream *ist = ifilter->ist; int pad_idx = in->pad_idx; - char args[255], name[255]; + AVBPrint args; + char name[255]; int ret; - snprintf(args, sizeof(args), "time_base=%d/%d:sample_rate=%d:sample_fmt=%s" - ":channel_layout=0x%"PRIx64, + av_bprint_init(&args, 0, AV_BPRINT_SIZE_AUTOMATIC); + av_bprintf(&args, "time_base=%d/%d:sample_rate=%d:sample_fmt=%s", 1, ist->st->codec->sample_rate, ist->st->codec->sample_rate, - av_get_sample_fmt_name(ist->st->codec->sample_fmt), - ist->st->codec->channel_layout); + av_get_sample_fmt_name(ist->st->codec->sample_fmt)); + if (ist->st->codec->channel_layout) + av_bprintf(&args, ":channel_layout=0x%"PRIx64, + ist->st->codec->channel_layout); + else + av_bprintf(&args, ":channels=%d", ist->st->codec->channels); snprintf(name, sizeof(name), "graph %d input from stream %d:%d", fg->index, ist->file_index, ist->st->index); if ((ret = avfilter_graph_create_filter(&ifilter->filter, filter, - name, args, NULL, + name, args.str, NULL, fg->graph)) < 0) return ret;