The lame codec has a more limited input range than the other codecs. So
tell the downmixers to stay strictly within the level range requested.
also changes some tabs into spaces in deca52 and decdca
git-svn-id: svn://localhost/HandBrake/trunk@3205
b64f7644-9d1e-0410-96f1-
a4d463321fa5
pv->list = hb_list_init();
pv->state = a52_init( 0 );
pv->list = hb_list_init();
pv->state = a52_init( 0 );
- /* Decide what format we want out of a52dec
- work.c has already done some of this deduction for us in do_job() */
+ /* Decide what format we want out of a52dec
+ work.c has already done some of this deduction for us in do_job() */
- pv->flags_out = HB_AMIXDOWN_GET_A52_FORMAT(audio->config.out.mixdown);
+ pv->flags_out = HB_AMIXDOWN_GET_A52_FORMAT(audio->config.out.mixdown);
+ if ( audio->config.out.codec == HB_ACODEC_LAME )
+ pv->flags_out |= A52_ADJUST_LEVEL;
- /* pass the number of channels used into the private work data */
- /* will only be actually used if we're not doing AC3 passthru */
+ /* pass the number of channels used into the private work data */
+ /* will only be actually used if we're not doing AC3 passthru */
pv->out_discrete_channels = HB_AMIXDOWN_GET_DISCRETE_CHANNEL_COUNT(audio->config.out.mixdown);
pv->level = 32768.0;
pv->out_discrete_channels = HB_AMIXDOWN_GET_DISCRETE_CHANNEL_COUNT(audio->config.out.mixdown);
pv->level = 32768.0;
/* Interleave */
for( j = 0; j < 256; j++ )
{
/* Interleave */
for( j = 0; j < 256; j++ )
{
- for ( k = 0; k < pv->out_discrete_channels; k++ )
- {
- samples_out[(pv->out_discrete_channels*j)+k] = samples_in[(256*k)+j];
- }
+ for ( k = 0; k < pv->out_discrete_channels; k++ )
+ {
+ samples_out[(pv->out_discrete_channels*j)+k] = samples_in[(256*k)+j];
+ }
pv->downmix = hb_downmix_init(w->audio->config.in.channel_layout,
w->audio->config.out.mixdown);
hb_downmix_set_chan_map( pv->downmix, &hb_smpte_chan_map, &hb_qt_chan_map );
pv->downmix = hb_downmix_init(w->audio->config.in.channel_layout,
w->audio->config.out.mixdown);
hb_downmix_set_chan_map( pv->downmix, &hb_smpte_chan_map, &hb_qt_chan_map );
+ if ( w->audio->config.out.codec == HB_ACODEC_LAME )
+ hb_downmix_adjust_level( pv->downmix );
pv->downmix = hb_downmix_init(w->audio->config.in.channel_layout,
w->audio->config.out.mixdown);
hb_downmix_set_chan_map( pv->downmix, &hb_smpte_chan_map, &hb_qt_chan_map );
pv->downmix = hb_downmix_init(w->audio->config.in.channel_layout,
w->audio->config.out.mixdown);
hb_downmix_set_chan_map( pv->downmix, &hb_smpte_chan_map, &hb_qt_chan_map );
+ if ( w->audio->config.out.codec == HB_ACODEC_LAME )
+ hb_downmix_adjust_level( pv->downmix );
- int out_discrete_channels;
+ int out_discrete_channels;
pv->list = hb_list_init();
pv->state = dca_init( 0 );
pv->list = hb_list_init();
pv->state = dca_init( 0 );
- /* Decide what format we want out of libdca
- work.c has already done some of this deduction for us in do_job() */
+ /* Decide what format we want out of libdca
+ work.c has already done some of this deduction for us in do_job() */
- pv->flags_out = HB_AMIXDOWN_GET_DCA_FORMAT(audio->config.out.mixdown);
+ pv->flags_out = HB_AMIXDOWN_GET_DCA_FORMAT(audio->config.out.mixdown);
+ if ( audio->config.out.codec == HB_ACODEC_LAME )
+ pv->flags_out |= DCA_ADJUST_LEVEL;
- /* pass the number of channels used into the private work data */
- /* will only be actually used if we're not doing AC3 passthru */
+ /* pass the number of channels used into the private work data */
+ /* will only be actually used if we're not doing AC3 passthru */
pv->out_discrete_channels = HB_AMIXDOWN_GET_DISCRETE_CHANNEL_COUNT(audio->config.out.mixdown);
pv->level = 32768.0;
pv->out_discrete_channels = HB_AMIXDOWN_GET_DISCRETE_CHANNEL_COUNT(audio->config.out.mixdown);
pv->level = 32768.0;
/* Interleave */
for( j = 0; j < 256; j++ )
{
/* Interleave */
for( j = 0; j < 256; j++ )
{
- for ( k = 0; k < pv->out_discrete_channels; k++ )
- {
- samples_out[(pv->out_discrete_channels*j)+k] = samples_in[(256*k)+j] * 16384;
- }
+ for ( k = 0; k < pv->out_discrete_channels; k++ )
+ {
+ samples_out[(pv->out_discrete_channels*j)+k] = samples_in[(256*k)+j] * 16384;
+ }