libhb: enable vbr encoding with fdk-aac and libav-aac
authorjstebbins <jstebbins.hb@gmail.com>
Mon, 4 May 2015 17:49:02 +0000 (17:49 +0000)
committerjstebbins <jstebbins.hb@gmail.com>
Mon, 4 May 2015 17:49:02 +0000 (17:49 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@7157 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/common.c
libhb/encavcodecaudio.c

index bca6e695606f1617630685e753b35712feb5f5a8..7bb3f2a56707b6eaa862f4b5ea90990e06c59e58 100644 (file)
@@ -1288,6 +1288,21 @@ void hb_audio_quality_get_limits(uint32_t codec, float *low, float *high,
 {
     switch (codec)
     {
+        case HB_ACODEC_FFAAC:
+            *direction   = 0;
+            *granularity = 1.;
+            *low         = 1.;
+            *high        = 10.;
+            break;
+
+        case HB_ACODEC_FDK_HAAC:
+        case HB_ACODEC_FDK_AAC:
+            *direction   = 0;
+            *granularity = 1.;
+            *low         = 1.;
+            *high        = 5.;
+            break;
+
         case HB_ACODEC_LAME:
             *direction   = 1;
             *granularity = 0.5;
@@ -1333,6 +1348,13 @@ float hb_audio_quality_get_default(uint32_t codec)
 {
     switch (codec)
     {
+        case HB_ACODEC_FFAAC:
+            return 5.;
+
+        case HB_ACODEC_FDK_HAAC:
+        case HB_ACODEC_FDK_AAC:
+            return 3.;
+
         case HB_ACODEC_LAME:
             return 2.;
 
index 78c99328609bca9f1dbaa7161e142fb4ce121339..2f302b3488e0ebe2284acc52771251033c838a9a 100644 (file)
@@ -163,6 +163,13 @@ static int encavcodecaInit(hb_work_object_t *w, hb_job_t *job)
     {
         context->global_quality = audio->config.out.quality * FF_QP2LAMBDA;
         context->flags |= CODEC_FLAG_QSCALE;
+        if (audio->config.out.codec == HB_ACODEC_FDK_AAC ||
+            audio->config.out.codec == HB_ACODEC_FDK_HAAC)
+        {
+            char vbr[2];
+            snprintf(vbr, 2, "%.1g", audio->config.out.quality);
+            av_dict_set(&av_opts, "vbr", vbr, 0);
+        }
     }
 
     if (audio->config.out.compression_level >= 0)