--- squeezelite-1.8/pcm.c.orig	2015-10-06 10:36:36.267567815 +0000
+++ squeezelite-1.8/pcm.c	2015-10-06 10:43:02.527464582 +0000
@@ -331,7 +331,62 @@
 			}
 		}
 	} else {
-		LOG_ERROR("unsupported channels");
+        count = frames;
+		if (sample_size == 1) {
+			while (count--) {
+				*optr++ = *iptr++ << 24;
+				*optr++ = *iptr++ << 24;
+                iptr += (channels - 2);
+			}
+		} else if (sample_size == 2) {
+			if (bigendian) {
+				while (count--) {
+					*optr++ = *(iptr) << 24 | *(iptr+1) << 16;
+					iptr += 2;
+					*optr++ = *(iptr) << 24 | *(iptr+1) << 16;
+                    iptr += 2 * (channels - 1);
+				}
+			} else {
+				while (count--) {
+					*optr++ = *(iptr) << 16 | *(iptr+1) << 24;
+					iptr += 2;
+					*optr++ = *(iptr) << 16 | *(iptr+1) << 24;
+                    iptr += 2 * (channels - 1);
+                }
+			}
+		} else if (sample_size == 3) {
+			if (bigendian) {
+				while (count--) {
+					*optr++ = *(iptr) << 24 | *(iptr+1) << 16 | *(iptr+2) << 8;
+					iptr += 3;
+					*optr++ = *(iptr) << 24 | *(iptr+1) << 16 | *(iptr+2) << 8;
+                    iptr += 3 * (channels - 1);
+				}
+			} else {
+				while (count--) {
+					*optr++ = *(iptr) << 8 | *(iptr+1) << 16 | *(iptr+2) << 24;
+					iptr += 3;
+					*optr++ = *(iptr) << 8 | *(iptr+1) << 16 | *(iptr+2) << 24;
+                    iptr += 3 * (channels - 1);
+				}
+			}
+		} else if (sample_size == 4) {
+			if (bigendian) {
+				while (count--) {
+					*optr++ = *(iptr) << 24 | *(iptr+1) << 16 | *(iptr+2) << 8 | *(iptr+3);
+					iptr += 4;
+					*optr++ = *(iptr) << 24 | *(iptr+1) << 16 | *(iptr+2) << 8 | *(iptr+3);
+                    iptr += 4 * (channels - 1);
+				}
+			} else {
+				while (count--) {
+					*optr++ = *(iptr) | *(iptr+1) << 8 | *(iptr+2) << 16 | *(iptr+3) << 24;
+					iptr += 4;
+					*optr++ = *(iptr) | *(iptr+1) << 8 | *(iptr+2) << 16 | *(iptr+3) << 24;
+                    iptr += 4 * (channels - 1);
+				}
+			}
+		}
 	}
 
 	LOG_SDEBUG("decoded %u frames", frames);
