comparison libmpcodecs/ae_faac.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 ed8f90096c65
children 0f1b5b68af32
comparison
equal deleted inserted replaced
25314:02e2e7a5599a 25315:dfa8a510c81c
6 #include <sys/types.h> 6 #include <sys/types.h>
7 #include "m_option.h" 7 #include "m_option.h"
8 #include "mp_msg.h" 8 #include "mp_msg.h"
9 #include "libmpdemux/aviheader.h" 9 #include "libmpdemux/aviheader.h"
10 #include "libaf/af_format.h" 10 #include "libaf/af_format.h"
11 #include "libaf/reorder_ch.h"
11 #include "libmpdemux/ms_hdr.h" 12 #include "libmpdemux/ms_hdr.h"
12 #include "stream/stream.h" 13 #include "stream/stream.h"
13 #include "libmpdemux/muxer.h" 14 #include "libmpdemux/muxer.h"
14 #include <faac.h> 15 #include <faac.h>
15 #include "ae.h" 16 #include "ae.h"
96 return sz; 97 return sz;
97 } 98 }
98 99
99 static int encode_faac(audio_encoder_t *encoder, uint8_t *dest, void *src, int len, int max_size) 100 static int encode_faac(audio_encoder_t *encoder, uint8_t *dest, void *src, int len, int max_size)
100 { 101 {
102 if (encoder->params.channels >= 5)
103 reorder_channel_nch(src, AF_CHANNEL_LAYOUT_MPLAYER_DEFAULT,
104 AF_CHANNEL_LAYOUT_AAC_DEFAULT,
105 encoder->params.channels,
106 len / divisor, divisor);
107
101 // len is divided by the number of bytes per sample 108 // len is divided by the number of bytes per sample
102 enc_frame_size = faacEncEncode(faac, (int32_t*) src, len / divisor, dest, max_size); 109 enc_frame_size = faacEncEncode(faac, (int32_t*) src, len / divisor, dest, max_size);
103 110
104 return enc_frame_size; 111 return enc_frame_size;
105 } 112 }