1
mirror of https://git.videolan.org/git/ffmpeg.git synced 2024-10-01 08:54:48 +02:00

avfilter/af_channelmap: add support for unknown input channel layouts

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
Marton Balint 2016-12-03 20:02:47 +01:00
parent bffc2bcd75
commit 01a19f77ca

View File

@ -291,7 +291,7 @@ static int channelmap_query_formats(AVFilterContext *ctx)
AVFilterChannelLayouts *channel_layouts = NULL; AVFilterChannelLayouts *channel_layouts = NULL;
int ret; int ret;
layouts = ff_all_channel_layouts(); layouts = ff_all_channel_counts();
if (!layouts) { if (!layouts) {
ret = AVERROR(ENOMEM); ret = AVERROR(ENOMEM);
goto fail; goto fail;
@ -316,7 +316,7 @@ static int channelmap_filter_frame(AVFilterLink *inlink, AVFrame *buf)
AVFilterContext *ctx = inlink->dst; AVFilterContext *ctx = inlink->dst;
AVFilterLink *outlink = ctx->outputs[0]; AVFilterLink *outlink = ctx->outputs[0];
const ChannelMapContext *s = ctx->priv; const ChannelMapContext *s = ctx->priv;
const int nch_in = av_get_channel_layout_nb_channels(inlink->channel_layout); const int nch_in = inlink->channels;
const int nch_out = s->nch; const int nch_out = s->nch;
int ch; int ch;
uint8_t *source_planes[MAX_CH]; uint8_t *source_planes[MAX_CH];
@ -363,7 +363,7 @@ static int channelmap_config_input(AVFilterLink *inlink)
{ {
AVFilterContext *ctx = inlink->dst; AVFilterContext *ctx = inlink->dst;
ChannelMapContext *s = ctx->priv; ChannelMapContext *s = ctx->priv;
int nb_channels = av_get_channel_layout_nb_channels(inlink->channel_layout); int nb_channels = inlink->channels;
int i, err = 0; int i, err = 0;
const char *channel_name; const char *channel_name;
char layout_name[256]; char layout_name[256];
@ -378,7 +378,7 @@ static int channelmap_config_input(AVFilterLink *inlink)
if (m->in_channel_idx < 0 || m->in_channel_idx >= nb_channels) { if (m->in_channel_idx < 0 || m->in_channel_idx >= nb_channels) {
av_get_channel_layout_string(layout_name, sizeof(layout_name), av_get_channel_layout_string(layout_name, sizeof(layout_name),
0, inlink->channel_layout); nb_channels, inlink->channel_layout);
if (m->in_channel) { if (m->in_channel) {
channel_name = av_get_channel_name(m->in_channel); channel_name = av_get_channel_name(m->in_channel);
av_log(ctx, AV_LOG_ERROR, av_log(ctx, AV_LOG_ERROR,