diff options
author | tack <tack@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-11-10 00:45:19 +0000 |
---|---|---|
committer | tack <tack@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-11-10 00:45:19 +0000 |
commit | 3c2afd67861769e82034b2ca276d2670964fc09c (patch) | |
tree | 9fa61272171332b4352fb34bde7ced4999244444 /libmpcodecs | |
parent | 1d30062395914bbc9eef1299c70018df9f333628 (diff) | |
download | mpv-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.c | 5 | ||||
-rw-r--r-- | libmpcodecs/ae_pcm.c | 3 |
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, |