comparison libmpcodecs/ad_pcm.c @ 25315:dfa8a510c81c

Fix all current known multi-channel wrong order problems by adding common functions for channel reordering. This fixes these modules by adding channel reordering code for 5.0/5.1 audio: ao: pcm ad: dmo, faad, ffmpeg(ac3, dca, libfaad, liba52), pcm ae: faac, lavc(ac3, libfaac), pcm
author ulion
date Mon, 10 Dec 2007 16:53:30 +0000
parents 666efb20e7d5
children 0f1b5b68af32
comparison
equal deleted inserted replaced
25314:02e2e7a5599a 25315:dfa8a510c81c
3 #include <unistd.h> 3 #include <unistd.h>
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "ad_internal.h" 6 #include "ad_internal.h"
7 #include "libaf/af_format.h" 7 #include "libaf/af_format.h"
8 #include "libaf/reorder_ch.h"
8 9
9 static ad_info_t info = 10 static ad_info_t info =
10 { 11 {
11 "Uncompressed PCM audio decoder", 12 "Uncompressed PCM audio decoder",
12 "pcm", 13 "pcm",
124 if (len > maxlen) 125 if (len > maxlen)
125 // if someone needs hundreds of channels adjust audio_out_minsize 126 // if someone needs hundreds of channels adjust audio_out_minsize
126 // based on channels in preinit() 127 // based on channels in preinit()
127 return -1; 128 return -1;
128 len=demux_read_data(sh_audio->ds,buf,len); 129 len=demux_read_data(sh_audio->ds,buf,len);
130 if (len > 0 && sh_audio->channels >= 5) {
131 reorder_channel_nch(buf, AF_CHANNEL_LAYOUT_WAVEEX_DEFAULT,
132 AF_CHANNEL_LAYOUT_MPLAYER_DEFAULT,
133 sh_audio->channels,
134 len / sh_audio->samplesize, sh_audio->samplesize);
135 }
129 return len; 136 return len;
130 } 137 }