--- faad2-2.7/libfaad/decoder.c 2009-02-05 01:51:03.000000000 +0100 +++ faad2/libfaad/decoder.c 2017-02-28 21:14:46.946234869 +0100 @@ -589,24 +589,30 @@ if (hDecoder->pce_set) { uint8_t i, chpos = 0; - uint8_t chdir, back_center = 0; + uint8_t chdir, back_center = 0, total = 0; hInfo->num_front_channels = hDecoder->pce.num_front_channels; + total += hInfo->num_front_channels; hInfo->num_side_channels = hDecoder->pce.num_side_channels; + total += hInfo->num_side_channels; hInfo->num_back_channels = hDecoder->pce.num_back_channels; + total += hInfo->num_back_channels; hInfo->num_lfe_channels = hDecoder->pce.num_lfe_channels; + total += hInfo->num_lfe_channels; chdir = hInfo->num_front_channels; if (chdir & 1) { #if (defined(PS_DEC) || defined(DRM_PS)) - /* When PS is enabled output is always stereo */ - hInfo->channel_position[chpos++] = FRONT_CHANNEL_LEFT; - hInfo->channel_position[chpos++] = FRONT_CHANNEL_RIGHT; -#else + if( total == 1 ) + { + /* When PS is enabled output is always stereo */ + hInfo->channel_position[chpos++] = FRONT_CHANNEL_LEFT; + hInfo->channel_position[chpos++] = FRONT_CHANNEL_RIGHT; + } else +#endif hInfo->channel_position[chpos++] = FRONT_CHANNEL_CENTER; chdir--; -#endif } for (i = 0; i < chdir; i += 2) {