diff options
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, |