diff --git a/libswresample/rematrix.c b/libswresample/rematrix.c
index c4c218de54f96b3ba9308b59b8a5de69587b77b7..1117f235ccb8dfb7c1dd9bd7e2c077406739fd37 100644
--- a/libswresample/rematrix.c
+++ b/libswresample/rematrix.c
@@ -106,6 +106,13 @@ static int clean_layout(SwrContext *s, int64_t layout){
     if((layout & AV_CH_LAYOUT_STEREO_DOWNMIX) == AV_CH_LAYOUT_STEREO_DOWNMIX)
         return AV_CH_LAYOUT_STEREO;
 
+    if(layout && layout != AV_CH_FRONT_CENTER && !(layout&(layout-1))) {
+        char buf[128];
+        av_get_channel_layout_string(buf, sizeof(buf), -1, layout);
+        av_log(s, AV_LOG_VERBOSE, "Treating %s as mono\n", buf);
+        return AV_CH_FRONT_CENTER;
+    }
+
     return layout;
 }