|
|
@@ -405,6 +405,11 @@ static int opt_map_channel(void *optctx, const char *opt, const char *arg) |
|
|
|
int n; |
|
|
|
AVStream *st; |
|
|
|
AudioChannelMap *m; |
|
|
|
char *allow_unused; |
|
|
|
char *mapchan; |
|
|
|
mapchan = av_strdup(arg); |
|
|
|
if (!mapchan) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
|
|
|
GROW_ARRAY(o->audio_channel_maps, o->nb_audio_channel_maps); |
|
|
|
m = &o->audio_channel_maps[o->nb_audio_channel_maps - 1]; |
|
|
@@ -415,6 +420,7 @@ static int opt_map_channel(void *optctx, const char *opt, const char *arg) |
|
|
|
m->file_idx = m->stream_idx = -1; |
|
|
|
if (n == 1) |
|
|
|
m->ofile_idx = m->ostream_idx = -1; |
|
|
|
av_free(mapchan); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
@@ -450,11 +456,22 @@ static int opt_map_channel(void *optctx, const char *opt, const char *arg) |
|
|
|
m->file_idx, m->stream_idx); |
|
|
|
exit_program(1); |
|
|
|
} |
|
|
|
/* allow trailing ? to map_channel */ |
|
|
|
if (allow_unused = strchr(mapchan, '?')) |
|
|
|
*allow_unused = 0; |
|
|
|
if (m->channel_idx < 0 || m->channel_idx >= st->codecpar->channels) { |
|
|
|
av_log(NULL, AV_LOG_FATAL, "mapchan: invalid audio channel #%d.%d.%d\n", |
|
|
|
m->file_idx, m->stream_idx, m->channel_idx); |
|
|
|
exit_program(1); |
|
|
|
if (allow_unused) { |
|
|
|
av_log(NULL, AV_LOG_VERBOSE, "mapchan: invalid audio channel #%d.%d.%d\n", |
|
|
|
m->file_idx, m->stream_idx, m->channel_idx); |
|
|
|
} else { |
|
|
|
av_log(NULL, AV_LOG_FATAL, "mapchan: invalid audio channel #%d.%d.%d\n" |
|
|
|
"To ignore this, add a trailing '?' to the map_channel.\n", |
|
|
|
m->file_idx, m->stream_idx, m->channel_idx); |
|
|
|
exit_program(1); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
av_free(mapchan); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|