summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authortack <tack@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-11-10 00:45:19 +0000
committertack <tack@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-11-10 00:45:19 +0000
commit3c2afd67861769e82034b2ca276d2670964fc09c (patch)
tree9fa61272171332b4352fb34bde7ced4999244444 /libmpcodecs
parent1d30062395914bbc9eef1299c70018df9f333628 (diff)
downloadmpv-3c2afd67861769e82034b2ca276d2670964fc09c.tar.bz2
mpv-3c2afd67861769e82034b2ca276d2670964fc09c.tar.xz
Add support for 8 channel audio.
Where 8 channel support is non-trivial (e.g. ao_dsound), at least ensure we fail gracefully. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29868 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/ad_faad.c5
-rw-r--r--libmpcodecs/ae_pcm.c3
2 files changed, 5 insertions, 3 deletions
diff --git a/libmpcodecs/ad_faad.c b/libmpcodecs/ad_faad.c
index 1e973119c2..b5d65d4883 100644
--- a/libmpcodecs/ad_faad.c
+++ b/libmpcodecs/ad_faad.c
@@ -47,7 +47,7 @@ LIBAD_EXTERN(faad)
/* configure maximum supported channels, *
* this is theoretically max. 64 chans */
-#define FAAD_MAX_CHANNELS 6
+#define FAAD_MAX_CHANNELS 8
#define FAAD_BUFFLEN (FAAD_MIN_STREAMSIZE*FAAD_MAX_CHANNELS)
//#define AAC_DUMP_COMPRESSED
@@ -167,7 +167,8 @@ static int init(sh_audio_t *sh)
} else {
mp_msg(MSGT_DECAUDIO,MSGL_V,"FAAD: Decoder init done (%dBytes)!\n", sh->a_in_buffer_len); // XXX: remove or move to debug!
mp_msg(MSGT_DECAUDIO,MSGL_V,"FAAD: Negotiated samplerate: %ldHz channels: %d\n", faac_samplerate, faac_channels);
- sh->channels = faac_channels;
+ // 8 channels is aac channel order #7.
+ sh->channels = faac_channels == 7 ? 8 : faac_channels;
if (audio_output_channels <= 2) sh->channels = faac_channels > 1 ? 2 : 1;
sh->samplerate = faac_samplerate;
sh->samplesize=2;
diff --git a/libmpcodecs/ae_pcm.c b/libmpcodecs/ae_pcm.c
index c3aaeee724..c0ebf18283 100644
--- a/libmpcodecs/ae_pcm.c
+++ b/libmpcodecs/ae_pcm.c
@@ -39,7 +39,8 @@ static int bind_pcm(audio_encoder_t *encoder, muxer_stream_t *mux_a)
static int encode_pcm(audio_encoder_t *encoder, uint8_t *dest, void *src, int nsamples, int max_size)
{
max_size = FFMIN(nsamples, max_size);
- if (encoder->params.channels == 6 || encoder->params.channels == 5) {
+ if (encoder->params.channels == 5 || encoder->params.channels == 6 ||
+ encoder->params.channels == 8) {
max_size -= max_size % (encoder->params.channels * 2);
reorder_channel_copy_nch(src, AF_CHANNEL_LAYOUT_MPLAYER_DEFAULT,
dest, AF_CHANNEL_LAYOUT_WAVEEX_DEFAULT,