|
|
|
@ -1833,6 +1833,8 @@ static int configure_audio_filters(VideoState *is, const char *afilters, int for |
|
|
|
|
int64_t channel_layouts[2] = { 0, -1 }; |
|
|
|
|
int channels[2] = { 0, -1 }; |
|
|
|
|
AVFilterContext *filt_asrc = NULL, *filt_asink = NULL; |
|
|
|
|
char aresample_swr_opts[512] = ""; |
|
|
|
|
AVDictionaryEntry *e = NULL; |
|
|
|
|
char asrc_args[256]; |
|
|
|
|
int ret; |
|
|
|
|
|
|
|
|
@ -1840,6 +1842,12 @@ static int configure_audio_filters(VideoState *is, const char *afilters, int for |
|
|
|
|
if (!(is->agraph = avfilter_graph_alloc())) |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
|
|
|
|
|
while ((e = av_dict_get(swr_opts, "", e, AV_DICT_IGNORE_SUFFIX))) |
|
|
|
|
av_strlcatf(aresample_swr_opts, sizeof(aresample_swr_opts), "%s=%s:", e->key, e->value); |
|
|
|
|
if (strlen(aresample_swr_opts)) |
|
|
|
|
aresample_swr_opts[strlen(aresample_swr_opts)-1] = '\0'; |
|
|
|
|
av_opt_set(is->agraph, "aresample_swr_opts", aresample_swr_opts, 0); |
|
|
|
|
|
|
|
|
|
ret = snprintf(asrc_args, sizeof(asrc_args), |
|
|
|
|
"sample_rate=%d:sample_fmt=%s:channels=%d:time_base=%d/%d", |
|
|
|
|
is->audio_filter_src.freq, av_get_sample_fmt_name(is->audio_filter_src.fmt), |
|
|
|
|