diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index 1b5492da92689ef2339bbf10c7a679cfabe05207..0c869f9d12f8dac56fa466634bad788051dc97bc 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -542,7 +542,7 @@ static int swr_convert_internal(struct SwrContext *s, AudioData *out, int out_co
     preout_tmp= s->preout;
     preout= &preout_tmp;
 
-    if(s->int_sample_fmt == s-> in_sample_fmt && s->in.planar)
+    if(s->int_sample_fmt == s-> in_sample_fmt && s->in.planar && !s->channel_map)
         postin= in;
 
     if(s->resample_first ? !s->resample : !s->rematrix)