mirror of https://git.ffmpeg.org/ffmpeg.git
ffmpeg: move pan filter insertion up.
This fixes one (disabled) fate test. Thanks-to: ubitux to pointing at the odd filter order and stereo/mono messup Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
0766b6e3ec
commit
d43812e235
67
ffmpeg.c
67
ffmpeg.c
|
@ -1004,6 +1004,39 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
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)
|
if (codec->channels && !codec->channel_layout)
|
||||||
codec->channel_layout = av_get_default_channel_layout(codec->channels);
|
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;
|
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) {
|
if (audio_sync_method > 0 && 0) {
|
||||||
char args[256] = {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);
|
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) {
|
if (audio_volume != 256) {
|
||||||
char args[256];
|
char args[256];
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue