Mercurial > mplayer.hg
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 } |