summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2012-08-01 23:05:00 +0000
committerjstebbins <[email protected]>2012-08-01 23:05:00 +0000
commitad257c9dac38fe3f7502b1058247b4458465c0a8 (patch)
treec142e7b68aa0406b64e77a7f844b0622172fc5c9 /contrib
parentdbec0d898d37f3b9a1fed8158543115fbdb3ce91 (diff)
libhb: Allow control of audio mix normalization
Since switching to libavresample for audio mixing, our output volume levels have been reduced because libavresample does mix level normalization by default. This change applies a patch to libav to allow us to disable this behavior and adds a new field to hb_audio_config_t to allow the hb frontends to control this feature. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4884 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'contrib')
-rw-r--r--contrib/ffmpeg/A06-mix-normalization.patch39
1 files changed, 39 insertions, 0 deletions
diff --git a/contrib/ffmpeg/A06-mix-normalization.patch b/contrib/ffmpeg/A06-mix-normalization.patch
new file mode 100644
index 000000000..06fb2754c
--- /dev/null
+++ b/contrib/ffmpeg/A06-mix-normalization.patch
@@ -0,0 +1,39 @@
+diff --git a/libavresample/audio_mix.c b/libavresample/audio_mix.c
+index 2c2a356..25f9f98 100644
+--- a/libavresample/audio_mix.c
++++ b/libavresample/audio_mix.c
+@@ -327,7 +327,9 @@ int ff_audio_mix_init(AVAudioResampleContext *avr)
+ avr->out_channel_layout,
+ avr->center_mix_level,
+ avr->surround_mix_level,
+- avr->lfe_mix_level, 1, matrix_dbl,
++ avr->lfe_mix_level,
++ avr->normalize_mix_level,
++ matrix_dbl,
+ avr->in_channels,
+ avr->matrix_encoding);
+ if (ret < 0) {
+diff --git a/libavresample/internal.h b/libavresample/internal.h
+index 7b7648f..006b6fd 100644
+--- a/libavresample/internal.h
++++ b/libavresample/internal.h
+@@ -45,6 +45,7 @@ struct AVAudioResampleContext {
+ double center_mix_level; /**< center mix level */
+ double surround_mix_level; /**< surround mix level */
+ double lfe_mix_level; /**< lfe mix level */
++ int normalize_mix_level; /**< enable mix level normalization */
+ int force_resampling; /**< force resampling */
+ int filter_size; /**< length of each FIR filter in the resampling filterbank relative to the cutoff frequency */
+ int phase_shift; /**< log2 of the number of entries in the resampling polyphase filterbank */
+diff --git a/libavresample/options.c b/libavresample/options.c
+index 02e1f86..e7e0c27 100644
+--- a/libavresample/options.c
++++ b/libavresample/options.c
+@@ -47,6 +47,7 @@ static const AVOption options[] = {
+ { "center_mix_level", "Center Mix Level", OFFSET(center_mix_level), AV_OPT_TYPE_DOUBLE, { M_SQRT1_2 }, -32.0, 32.0, PARAM },
+ { "surround_mix_level", "Surround Mix Level", OFFSET(surround_mix_level), AV_OPT_TYPE_DOUBLE, { M_SQRT1_2 }, -32.0, 32.0, PARAM },
+ { "lfe_mix_level", "LFE Mix Level", OFFSET(lfe_mix_level), AV_OPT_TYPE_DOUBLE, { 0.0 }, -32.0, 32.0, PARAM },
++ { "normalize_mix_level", "Normalize Mix Level", OFFSET(normalize_mix_level), AV_OPT_TYPE_INT, { 1 }, 0, 1, PARAM },
+ { "force_resampling", "Force Resampling", OFFSET(force_resampling), AV_OPT_TYPE_INT, { 0 }, 0, 1, PARAM },
+ { "filter_size", "Resampling Filter Size", OFFSET(filter_size), AV_OPT_TYPE_INT, { 16 }, 0, 32, /* ??? */ PARAM },
+ { "phase_shift", "Resampling Phase Shift", OFFSET(phase_shift), AV_OPT_TYPE_INT, { 10 }, 0, 30, /* ??? */ PARAM },