diff options
author | jstebbins <[email protected]> | 2011-06-12 18:05:20 +0000 |
---|---|---|
committer | jstebbins <[email protected]> | 2011-06-12 18:05:20 +0000 |
commit | 991912416a55dfcf100591f31e6e72f3f2f5275d (patch) | |
tree | 0ed644ee9ba9d05e20e30de2a0805aa27802405c /libhb/encfaac.c | |
parent | e36c5d5cc69a207b088a0c92c8c6cb7a3f50ba21 (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.c | 33 |
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 ) ) { |