summaryrefslogtreecommitdiffstats
path: root/libhb/encfaac.c
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2011-06-12 18:05:20 +0000
committerjstebbins <[email protected]>2011-06-12 18:05:20 +0000
commit991912416a55dfcf100591f31e6e72f3f2f5275d (patch)
tree0ed644ee9ba9d05e20e30de2a0805aa27802405c /libhb/encfaac.c
parente36c5d5cc69a207b088a0c92c8c6cb7a3f50ba21 (diff)
libhb: generalize channel remapping between decoders and encoders
Decoders set the channel map of their output in hb_audio_config_t. Encoders use this information to remap while encoding. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4052 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'libhb/encfaac.c')
-rw-r--r--libhb/encfaac.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/libhb/encfaac.c b/libhb/encfaac.c
index b8ff8347c..fe1a1f55b 100644
--- a/libhb/encfaac.c
+++ b/libhb/encfaac.c
@@ -119,20 +119,27 @@ int encfaacInit( hb_work_object_t * w, hb_job_t * job )
cfg->outputFormat = 0;
cfg->inputFormat = FAAC_INPUT_FLOAT;
- if (audio->config.out.mixdown == HB_AMIXDOWN_6CH && audio->config.in.codec == HB_ACODEC_AC3)
+ if( ( audio->config.out.mixdown == HB_AMIXDOWN_6CH ) && ( audio->config.in.channel_map != &hb_qt_chan_map ) )
{
- /* we are preserving 5.1 AC-3 audio into 6-channel AAC, and need to
- re-map the output of deca52 into our own mapping - the mapping
- below is the default mapping expected by QuickTime */
- /* DTS output from libdca is already in the right mapping for QuickTime */
- /* This doesn't seem to be correct for VLC on Linux */
- cfg->channel_map[0] = 2;
- cfg->channel_map[1] = 1;
- cfg->channel_map[2] = 3;
- cfg->channel_map[3] = 4;
- cfg->channel_map[4] = 5;
- cfg->channel_map[5] = 0;
- }
+ if( audio->config.in.channel_map == &hb_ac3_chan_map )
+ {
+ cfg->channel_map[0] = 2;
+ cfg->channel_map[1] = 1;
+ cfg->channel_map[2] = 3;
+ cfg->channel_map[3] = 4;
+ cfg->channel_map[4] = 5;
+ cfg->channel_map[5] = 0;
+ }
+ else if( audio->config.in.channel_map == &hb_smpte_chan_map )
+ {
+ cfg->channel_map[0] = 2;
+ cfg->channel_map[1] = 0;
+ cfg->channel_map[2] = 1;
+ cfg->channel_map[3] = 4;
+ cfg->channel_map[4] = 5;
+ cfg->channel_map[5] = 3;
+ }
+ }
if( !faacEncSetConfiguration( pv->faac, cfg ) )
{