All pastes #803835 Raw Edit

Anonymous

public diff v1 · immutable
·published 2007-12-02 17:43 UTC
rendered paste body
Index: test/test.c===================================================================--- test/test.c	(revision 1091)+++ test/test.c	(working copy)@@ -39,6 +39,7 @@ static int    h264_30     = 0; static char * audios      = NULL; static int    audio_mixdown = HB_AMIXDOWN_DOLBYPLII;+static float  dynamic_range_compression = 0; static int    sub         = 0; static int    width       = 0; static int    height      = 0;@@ -823,7 +824,11 @@             {                 job->acodec = acodec;             }-+            if ( dynamic_range_compression )+            {+                job->dynamic_range_compression = dynamic_range_compression;+            }+                         if( size )             {                 job->vbitrate = hb_calc_bitrate( job, size );@@ -1181,6 +1186,10 @@             fprintf( stderr, "/" );     }     fprintf( stderr, " kHz)\n"+    "    -D, --normalize <float> Normalize the source's audio by applying dynamic\n"+    "                            range compression, so soft sounds are louder.\n"+    "                            Range is 0.0 (off) to 4.0 (too loud), with\n"+    "                            1.0 - 2.5 being a good range for... normal use.\n"          	@@ -1267,6 +1276,7 @@             { "markers",     optional_argument, NULL,    'm' },             { "audio",       required_argument, NULL,    'a' },             { "mixdown",     required_argument, NULL,    '6' },+            { "normalize",   required_argument, NULL,    'D' },             { "subtitle",    required_argument, NULL,    's' },             { "subtitle-scan", no_argument,     NULL,    'U' },             { "subtitle-forced", no_argument,   NULL,    'F' },@@ -1308,7 +1318,7 @@         int c;          c = getopt_long( argc, argv,-                         "hvuC:f:4i:Io:t:Lc:ma:6:s:UFN:e:E:2d789gpOP::w:l:n:b:q:S:B:r:R:Qx:TY:X:VZ:z",+                         "hvuC:f:4i:Io:t:Lc:ma:6:s:UFN:e:E:2dD:789gpOP::w:l:n:b:q:S:B:r:R:Qx:TY:X:VZ:z",                          long_options, &option_index );         if( c < 0 )         {@@ -1416,6 +1426,9 @@                     audio_mixdown = HB_AMIXDOWN_6CH;                 }                 break;+            case 'D':+                dynamic_range_compression = atof( optarg );+                break;             case 's':                 sub = atoi( optarg );                 break;Index: libhb/deca52.c===================================================================--- libhb/deca52.c	(revision 1091)+++ libhb/deca52.c	(working copy)@@ -56,6 +56,30 @@ static hb_buffer_t * Decode( hb_work_object_t * w );  /***********************************************************************+ * dynrng_call+ ***********************************************************************+ * Boosts soft audio -- taken from gbooker's work in A52Decoder, comment and all..+ * Two cases + * 1) The user requested a compression of 1 or less, return the typical power rule + * 2) The user requested a compression of more than 1 (decompression): + *    If the stream's requested compression is less than 1.0 (loud sound), return the normal compression + *    If the stream's requested compression is more than 1.0 (soft sound), use power rule (which will make+ *   it louder in this case). + * + **********************************************************************/+static sample_t dynrng_call (sample_t c, void *data)+{        +        double *level = (double *)data;+        float levelToUse = (float)*level;+        if(c > 1.0 || levelToUse <= 1.0)+        {+            return powf(c, levelToUse);+        }+        else+                return c;+}+ +/***********************************************************************  * hb_work_deca52_init  ***********************************************************************  * Allocate the work object, initialize liba52@@ -200,7 +224,13 @@      /* Feed liba52 */     a52_frame( pv->state, pv->frame, &pv->flags_out, &pv->level, 0 );-+    +    if ( pv->job->dynamic_range_compression )+    {+        float dynamic_compression_level = pv->job->dynamic_range_compression;;+        a52_dynrng( pv->state, dynrng_call, &pv->job->dynamic_range_compression);        +    }+         /* 6 blocks per frame, 256 samples per block, channelsused channels */     buf        = hb_buffer_init( 6 * 256 * pv->out_discrete_channels * sizeof( float ) );     if (pts == -1)Index: libhb/work.c===================================================================--- libhb/work.c	(revision 1091)+++ libhb/work.c	(working copy)@@ -159,7 +159,7 @@             title->width, title->height, job->width, job->height,             job->crop[0], job->crop[1], job->crop[2], job->crop[3] );     hb_log( " + grayscale %s", job->grayscale ? "on" : "off" );-    +     if ( job->vfr )     {         job->vrate_base = 900900;@@ -324,6 +324,9 @@                 "faac" : ( ( job->acodec & HB_ACODEC_LAME ) ? "lame" :                 "vorbis" ) );     }+    +    if ( job->dynamic_range_compression )+        hb_log(" + normalizing audio at strength: %f", job->dynamic_range_compression);      /* if we are doing AC3 passthru, then remove any non-AC3 audios from the job */     /* otherwise, Bad Things will happen */Index: libhb/common.h===================================================================--- libhb/common.h	(revision 1091)+++ libhb/common.h	(working copy)@@ -236,6 +236,7 @@     int             acodec;     int             abitrate;     int             arate;+    float           dynamic_range_compression;      /* Subtitle settings:          subtitle: index in hb_title_t's subtitles list, starting