X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=libhb%2Fdeca52.c;h=785bf6aefa146a5917f7f008c017f2f9d65cc973;hb=4b72a63eb61a01275493c4bfb51ba02152d1c5e1;hp=f983a6528918ee357d4cc313707bef70fe98cda2;hpb=d1877249c13129ebed21db185f4e8bc05a53e6e6;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/libhb/deca52.c b/libhb/deca52.c index f983a652..785bf6ae 100644 --- a/libhb/deca52.c +++ b/libhb/deca52.c @@ -97,13 +97,13 @@ static int deca52Init( hb_work_object_t * w, hb_job_t * job ) 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); - /* 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; @@ -273,9 +273,16 @@ static hb_buffer_t * Decode( hb_work_object_t * w ) /* Feed liba52 */ a52_frame( pv->state, pv->frame, &pv->flags_out, &pv->level, 0 ); - if ( pv->dynamic_range_compression > 1.0 ) + /* If a user specifies strong dynamic range compression (>1), adjust it. + If a user specifies default dynamic range compression (1), leave it alone. + If a user specifies no dynamic range compression (0), call a null function. */ + if( pv->dynamic_range_compression > 1.0 ) { - a52_dynrng( pv->state, dynrng_call, &pv->dynamic_range_compression); + a52_dynrng( pv->state, dynrng_call, &pv->dynamic_range_compression ); + } + else if( !pv->dynamic_range_compression ) + { + a52_dynrng( pv->state, NULL, NULL ); } /* 6 blocks per frame, 256 samples per block, channelsused channels */ @@ -297,10 +304,10 @@ static hb_buffer_t * Decode( hb_work_object_t * w ) /* 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]; + } } }