- if (s->mode == MAP_PAIR_STR_INT || s->mode == MAP_PAIR_STR_STR) {
- for (i = 0; i < s->nch; i++) {
- s->map[i].in_channel_idx = av_get_channel_layout_channel_index(
- inlink->channel_layout, s->map[i].in_channel);
- if (s->map[i].in_channel_idx < 0) {
- channel_name = av_get_channel_name(s->map[i].in_channel);
- av_get_channel_layout_string(layout_name, sizeof(layout_name),
- 0, inlink->channel_layout);
+ for (i = 0; i < s->nch; i++) {
+ struct ChannelMap *m = &s->map[i];
+
+ if (s->mode == MAP_PAIR_STR_INT || s->mode == MAP_PAIR_STR_STR) {
+ m->in_channel_idx = av_get_channel_layout_channel_index(
+ inlink->channel_layout, m->in_channel);
+ }
+
+ if (m->in_channel_idx < 0 || m->in_channel_idx >= nb_channels) {
+ av_get_channel_layout_string(layout_name, sizeof(layout_name),
+ 0, inlink->channel_layout);
+ if (m->in_channel) {
+ channel_name = av_get_channel_name(m->in_channel);