diff -Nraub mplayer.ori/libmpcodecs/ae_lavc.c mplayer/libmpcodecs/ae_lavc.c --- mplayer.ori/libmpcodecs/ae_lavc.c 2006-09-12 11:58:52.000000000 -0400 +++ mplayer/libmpcodecs/ae_lavc.c 2006-10-13 22:54:47.000000000 -0400 @@ -102,6 +102,17 @@ static int encode_lavc(audio_encoder_t *encoder, uint8_t *dest, void *src, int size, int max_size) { int n; + if (encoder->params.channels == 6 || encoder->params.channels == 5) { + //Codec wants: L C R SL SR LFE + //We have: L R SL SR C LFE + int i; + uint16_t tmp; + for (i = 0; i < size; i += encoder->params.channels*2) { + tmp = ((uint16_t*)(src+i))[4]; + memmove(src+i+4, src+i+2, 3*2); + ((uint16_t*)(src+i))[1] = tmp; + } + } n = avcodec_encode_audio(lavc_actx, dest, size, src); compressed_frame_size = n; return n;