diff options
-rw-r--r-- | ffmpeg.c | 67 |
1 files changed, 33 insertions, 34 deletions
@@ -1004,6 +1004,39 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter, if (ret < 0) return ret; +#define AUTO_INSERT_FILTER(opt_name, filter_name, arg) do { \ + AVFilterContext *filt_ctx; \ + \ + av_log(NULL, AV_LOG_INFO, opt_name " is forwarded to lavfi " \ + "similarly to -af " filter_name "=%s.\n", arg); \ + \ + ret = avfilter_graph_create_filter(&filt_ctx, \ + avfilter_get_by_name(filter_name), \ + filter_name, arg, NULL, fg->graph); \ + if (ret < 0) \ + return ret; \ + \ + ret = avfilter_link(last_filter, pad_idx, filt_ctx, 0); \ + if (ret < 0) \ + return ret; \ + \ + last_filter = filt_ctx; \ + pad_idx = 0; \ +} while (0) + if (ost->audio_channels_mapped) { + int i; + AVBPrint pan_buf; + av_bprint_init(&pan_buf, 256, 8192); + av_bprintf(&pan_buf, "0x%"PRIx64, + av_get_default_channel_layout(ost->audio_channels_mapped)); + for (i = 0; i < ost->audio_channels_mapped; i++) + if (ost->audio_channels_map[i] != -1) + av_bprintf(&pan_buf, ":c%d=c%d", i, ost->audio_channels_map[i]); + + AUTO_INSERT_FILTER("-map_channel", "pan", pan_buf.str); + av_bprint_finalize(&pan_buf, NULL); + } + if (codec->channels && !codec->channel_layout) codec->channel_layout = av_get_default_channel_layout(codec->channels); @@ -1044,26 +1077,6 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter, pad_idx = 0; } -#define AUTO_INSERT_FILTER(opt_name, filter_name, arg) do { \ - AVFilterContext *filt_ctx; \ - \ - av_log(NULL, AV_LOG_INFO, opt_name " is forwarded to lavfi " \ - "similarly to -af " filter_name "=%s.\n", arg); \ - \ - ret = avfilter_graph_create_filter(&filt_ctx, \ - avfilter_get_by_name(filter_name), \ - filter_name, arg, NULL, fg->graph); \ - if (ret < 0) \ - return ret; \ - \ - ret = avfilter_link(last_filter, pad_idx, filt_ctx, 0); \ - if (ret < 0) \ - return ret; \ - \ - last_filter = filt_ctx; \ - pad_idx = 0; \ -} while (0) - if (audio_sync_method > 0 && 0) { char args[256] = {0}; @@ -1073,20 +1086,6 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter, AUTO_INSERT_FILTER("-async", "aresample", args); } - if (ost->audio_channels_mapped) { - int i; - AVBPrint pan_buf; - av_bprint_init(&pan_buf, 256, 8192); - av_bprintf(&pan_buf, "0x%"PRIx64, - av_get_default_channel_layout(ost->audio_channels_mapped)); - for (i = 0; i < ost->audio_channels_mapped; i++) - if (ost->audio_channels_map[i] != -1) - av_bprintf(&pan_buf, ":c%d=c%d", i, ost->audio_channels_map[i]); - - AUTO_INSERT_FILTER("-map_channel", "pan", pan_buf.str); - av_bprint_finalize(&pan_buf, NULL); - } - if (audio_volume != 256) { char args[256]; |