libvorbis/libvorbis-1.2.0-aotuv-b5.diff

3466 lines
133 KiB
Diff
Raw Blame History

--- lib/block.c-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/block.c 2007-08-02 12:25:50.000000000 +0200
@@ -106,7 +106,7 @@ int vorbis_block_init(vorbis_dsp_state *
oggpack_writeinit(vbi->packetblob[i]);
}
}
-
+
return(0);
}
@@ -287,6 +287,11 @@ int vorbis_analysis_init(vorbis_dsp_stat
b=v->backend_state;
b->psy_g_look=_vp_global_look(vi);
+ /* added by aoyumi */
+ b->nblock = _ogg_calloc((128*vi->channels), sizeof(*b->nblock));
+ b->tblock = _ogg_calloc((128*vi->channels), sizeof(*b->tblock));
+ b->lownoise_compand_level = _ogg_calloc(vi->channels, sizeof(*b->lownoise_compand_level));
+
/* Initialize the envelope state storage */
b->ve=_ogg_calloc(1,sizeof(*b->ve));
_ve_envelope_init(b->ve,vi);
@@ -351,6 +356,11 @@ void vorbis_dsp_clear(vorbis_dsp_state *
drft_clear(&b->fft_look[0]);
drft_clear(&b->fft_look[1]);
+
+ /* added by aoyumi */
+ if(b->nblock) _ogg_free(b->nblock);
+ if(b->tblock) _ogg_free(b->tblock);
+ if(b->lownoise_compand_level) _ogg_free(b->lownoise_compand_level);
}
--- lib/modes/setup_X.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/setup_X.h 2007-08-02 12:25:50.000000000 +0200
@@ -15,13 +15,14 @@
********************************************************************/
-static double rate_mapping_X[12]={
- -1.,-1.,-1.,-1.,-1.,-1.,
+static double rate_mapping_X[13]={
+ -1.,-1.,-1.,-1.,-1.,-1.,-1.
-1.,-1.,-1.,-1.,-1.,-1.
};
ve_setup_data_template ve_setup_X_stereo={
- 11,
+// 11,
+ 12,
rate_mapping_X,
quality_mapping_44,
2,
@@ -72,7 +73,8 @@ ve_setup_data_template ve_setup_X_stereo
};
ve_setup_data_template ve_setup_X_uncoupled={
- 11,
+// 11,
+ 12,
rate_mapping_X,
quality_mapping_44,
-1,
@@ -123,7 +125,8 @@ ve_setup_data_template ve_setup_X_uncoup
};
ve_setup_data_template ve_setup_XX_stereo={
- 2,
+// 2,
+ 3,
rate_mapping_X,
quality_mapping_8,
2,
@@ -174,7 +177,8 @@ ve_setup_data_template ve_setup_XX_stere
};
ve_setup_data_template ve_setup_XX_uncoupled={
- 2,
+// 2,
+ 3,
rate_mapping_X,
quality_mapping_8,
-1,
--- lib/modes/psych_16.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/psych_16.h 2007-08-02 12:25:50.000000000 +0200
@@ -16,9 +16,13 @@
********************************************************************/
/* stereo mode by base quality level */
-static adj_stereo _psy_stereo_modes_16[4]={
+static adj_stereo _psy_stereo_modes_16[5]={
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
{{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
+ { 6, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4},
+ { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, 4},
+ { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+ {{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{ 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, 4},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
@@ -36,32 +40,38 @@ static adj_stereo _psy_stereo_modes_16[4
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
};
-static double _psy_lowpass_16[4]={6.5,8,30.,99.};
+static double _psy_lowpass_16[5]={6.,6.5,8,30.,99.};
-static att3 _psy_tone_masteratt_16[4]={
- {{ 30, 25, 12}, 0, 0}, /* 0 */
- {{ 25, 22, 12}, 0, 0}, /* 0 */
- {{ 20, 12, 0}, 0, 0}, /* 0 */
- {{ 15, 0, -14}, 0, 0}, /* 0 */
+static att3 _psy_tone_masteratt_16[5]={
+ {{ 30, 28, 12}, 0, 0}, /* -2 */
+ {{ 30, 28, 12}, 0, 0}, /* -1 */
+ {{ 25, 23, 12}, 0, 0}, /* 0.5 */
+ {{ 20, 12, 0}, 0, 0}, /* 5 */
+ {{ 15, 0, -14}, 0, 0}, /* 10 */
};
-static vp_adjblock _vp_tonemask_adj_16[4]={
+static vp_adjblock _vp_tonemask_adj_16[5]={
/* adjust for mode zero */
/* 63 125 250 500 1 2 4 8 16 */
- {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0,10, 0, 0, 0, 0, 0}}, /* 0 */
- {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0,10, 0, 0, 0, 0, 0}}, /* 1 */
- {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
- {{-30,-30,-30,-30,-30,-26,-20,-10, -5, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
+ {{-16,-16,-16,-16,-16,-16,-10, -8, -6,-2, 0, 0, 0, 0, 0, 0, 0}}, /* -2 */
+ {{-16,-16,-16,-16,-16,-16,-10, -8, -6,-2, 0, 0, 0, 0, 0, 0, 0}}, /* -1 */
+ {{-16,-16,-16,-16,-16,-16,-10, -8, -6,-4, 0, 0, 0, 0, 0, 0, 0}}, /* 0.5 */
+ {{-20,-20,-20,-20,-20,-16,-10,-10, -8,-6,-2,-2, 0, 0, 0, 0, 0}}, /* 5 */
+ {{-30,-30,-30,-30,-30,-26,-20,-10, -8,-6,-2,-2, 0, 0, 0, 0, 0}}, /* 10 */
};
-static noise3 _psy_noisebias_16_short[4]={
+static noise3 _psy_noisebias_16_short[5]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
- {{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 10, 10, 10, 10, 12, 12, 14, 20},
+ {{{-15,-15,-15,-15,-15,-10,-10, -5, 4, 10, 10, 10, 10, 12, 12, 14, 20},
+ {-12,-12,-12,-12,-12, -7, -7, -2, 3, 3, 4, 5, 6, 7, 8, 8, 15},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
+
+ {{{-15,-15,-15,-15,-15,-10,-10, -5, 4, 10, 10, 10, 10, 12, 12, 14, 20},
{-15,-15,-15,-15,-15,-10,-10, -5, 0, 0, 4, 5, 5, 6, 8, 8, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
- {{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 6, 6, 6, 6, 8, 10, 12, 20},
+ {{{-15,-15,-15,-15,-15,-10,-10, -5, 4, 6, 6, 6, 6, 8, 10, 12, 20},
{-15,-15,-15,-15,-15,-15,-15,-10, -5, -5, -5, 4, 5, 6, 8, 8, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10,-10,-10,-10,-10,-10,-10,-10,-10}}},
@@ -74,13 +84,17 @@ static noise3 _psy_noisebias_16_short[4]
{-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
};
-static noise3 _psy_noisebias_16_impulse[4]={
+static noise3 _psy_noisebias_16_impulse[5]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
- {{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 10, 10, 10, 10, 12, 12, 14, 20},
+ {{{-15,-15,-15,-15,-15,-10,-10, -5, 4, 10, 10, 10, 10, 12, 12, 14, 20},
+ {-12,-12,-12,-12,-12, -7, -7, -2, 3, 3, 4, 5, 6, 7, 8, 8, 15},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
+
+ {{{-15,-15,-15,-15,-15,-10,-10, -5, 4, 10, 10, 10, 10, 12, 12, 14, 20},
{-15,-15,-15,-15,-15,-10,-10, -5, 0, 0, 4, 5, 5, 6, 8, 8, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
- {{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 4, 4, 4, 5, 5, 6, 8, 15},
+ {{{-15,-15,-15,-15,-15,-10,-10, -5, 4, 4, 4, 4, 5, 5, 6, 8, 15},
{-15,-15,-15,-15,-15,-15,-15,-10, -5, -5, -5, 0, 0, 0, 0, 4, 10},
{-30,-30,-30,-30,-30,-24,-20,-14,-10,-10,-10,-10,-10,-10,-10,-10,-10}}},
@@ -93,9 +107,13 @@ static noise3 _psy_noisebias_16_impulse[
{-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
};
-static noise3 _psy_noisebias_16[4]={
+static noise3 _psy_noisebias_16[5]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
{{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 6, 8, 8, 10, 10, 10, 14, 20},
+ {-10,-10,-10,-10,-10, -5, -2, -2, 2, 2, 2, 4, 5, 6, 8, 8, 15},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
+
+ {{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 6, 8, 8, 10, 10, 10, 14, 20},
{-10,-10,-10,-10,-10, -5, -2, -2, 0, 0, 0, 4, 5, 6, 8, 8, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
@@ -119,17 +137,17 @@ static noiseguard _psy_noiseguards_16[4]
{20,20,-1},
};
-static double _noise_thresh_16[4]={ .3,.5,.5,.5 };
+static double _noise_thresh_16[5]={ .3,.3,.5,.5,.5 };
-static int _noise_start_16[3]={ 256,256,9999 };
-static int _noise_part_16[4]={ 8,8,8,8 };
+static int _noise_start_16[4]={ 256,256,256,9999 };
+static int _noise_part_16[5]={ 8,8,8,8,8 };
-static int _psy_ath_floater_16[4]={
- -100,-100,-100,-105,
+static int _psy_ath_floater_16[5]={
+ -100,-100,-100,-100,-105,
};
-static int _psy_ath_abs_16[4]={
- -130,-130,-130,-140,
+static int _psy_ath_abs_16[5]={
+ -130,-130,-130,-130,-140,
};
--- lib/modes/psych_11.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/psych_11.h 2007-08-02 12:25:50.000000000 +0200
@@ -15,25 +15,31 @@
********************************************************************/
-static double _psy_lowpass_11[3]={4.5,5.5,30.,};
+static double _psy_lowpass_11[4]={4.1,4.5,5.5,30.,};
-static att3 _psy_tone_masteratt_11[3]={
- {{ 30, 25, 12}, 0, 0}, /* 0 */
- {{ 30, 25, 12}, 0, 0}, /* 0 */
- {{ 20, 0, -14}, 0, 0}, /* 0 */
+static att3 _psy_tone_masteratt_11[4]={
+ {{ 31, 28, 13}, 0, 0}, /* -2 */
+ {{ 30, 28, 12}, 0, 0}, /* -1 */
+ {{ 30, 26, 12}, 0, 0}, /* 0 */
+ {{ 20, 0, -14}, 0, 0}, /* 10 */
};
-static vp_adjblock _vp_tonemask_adj_11[3]={
+static vp_adjblock _vp_tonemask_adj_11[4]={
/* adjust for mode zero */
/* 63 125 250 500 1 2 4 8 16 */
- {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0,10, 2, 0,99,99,99}}, /* 0 */
- {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0, 5, 0, 0,99,99,99}}, /* 1 */
- {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 2 */
+ {{-16,-16,-16,-16,-16,-16,-10,-8,-4, 0, 0, 0, 3, 3,99,99,99}}, /* -2 */
+ {{-16,-16,-16,-16,-16,-16,-10,-8,-4, 0, 0, 0, 0, 0,99,99,99}}, /* -1 */
+ {{-20,-20,-20,-20,-20,-16,-10,-8,-4,-2, 0, 0, 0, 0,99,99,99}}, /* 0 */
+ {{-20,-20,-20,-20,-20,-16,-10,-8,-4,-2, 0, 0, 0, 0,99,99,99}}, /* 10 */
};
-static noise3 _psy_noisebias_11[3]={
+static noise3 _psy_noisebias_11[4]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
+ {{{-10,-10,-10,-10, -5, -5, -4, 2, 4, 10, 10, 12, 12, 12, 99, 99, 99},
+ {-12,-12,-12,-12, -7, -7, -2, 3, 3, 4, 4, 5, 6, 12, 99, 99, 99},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
+
{{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 10, 10, 12, 12, 12, 99, 99, 99},
{-15,-15,-15,-15,-10,-10, -5, 0, 0, 4, 4, 5, 5, 10, 99, 99, 99},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
@@ -47,5 +53,5 @@ static noise3 _psy_noisebias_11[3]={
{-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24, 99, 99, 99}}},
};
-static double _noise_thresh_11[3]={ .3,.5,.5 };
+static double _noise_thresh_11[4]={ .3,.3,.5,.5 };
--- lib/modes/setup_32.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/setup_32.h 2007-08-02 12:25:50.000000000 +0200
@@ -15,22 +15,26 @@
********************************************************************/
-static double rate_mapping_32[12]={
- 18000.,28000.,35000.,45000.,56000.,60000.,
+static double rate_mapping_32[13]={
+// 18000.,28000.,35000.,45000.,56000.,60000.,
+ 14000.,21000.,28000.,35000.,45000.,56000.,60000.,
75000.,90000.,100000.,115000.,150000.,190000.,
};
-static double rate_mapping_32_un[12]={
- 30000.,42000.,52000.,64000.,72000.,78000.,
+static double rate_mapping_32_un[13]={
+// 30000.,42000.,52000.,64000.,72000.,78000.,
+ 26000.,32000.,42000.,52000.,64000.,72000.,78000.,
86000.,92000.,110000.,120000.,140000.,190000.,
};
-static double _psy_lowpass_32[12]={
- 12.3,13.,13.,14.,15.,99.,99.,99.,99.,99.,99.,99.
+static double _psy_lowpass_32[13]={
+// 12.3,13.,13.,14.,15.,99.,99.,99.,99.,99.,99.,99.
+ 12.1,12.6,13.,13.,14.,15.,99.,99.,99.,99.,99.,99.,99.
};
ve_setup_data_template ve_setup_32_stereo={
- 11,
+// 11,
+ 12,
rate_mapping_32,
quality_mapping_44,
2,
@@ -59,7 +63,7 @@ ve_setup_data_template ve_setup_32_stere
_psy_compand_short_mapping,
_psy_compand_long_mapping,
- {_noise_start_short_44,_noise_start_long_44},
+ {_noise_start_short_32,_noise_start_long_32},
{_noise_part_short_44,_noise_part_long_44},
_noise_thresh_44,
@@ -81,7 +85,8 @@ ve_setup_data_template ve_setup_32_stere
};
ve_setup_data_template ve_setup_32_uncoupled={
- 11,
+// 11,
+ 12,
rate_mapping_32_un,
quality_mapping_44,
-1,
@@ -110,7 +115,7 @@ ve_setup_data_template ve_setup_32_uncou
_psy_compand_short_mapping,
_psy_compand_long_mapping,
- {_noise_start_short_44,_noise_start_long_44},
+ {_noise_start_short_32,_noise_start_long_32},
{_noise_part_short_44,_noise_part_long_44},
_noise_thresh_44,
--- lib/modes/residue_44u.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/residue_44u.h 2007-08-02 12:25:50.000000000 +0200
@@ -304,6 +304,7 @@ static vorbis_residue_template _res_44u_
};
static vorbis_mapping_template _mapres_template_44_uncoupled[]={
+ { _map_nominal_u, _res_44u_n1 }, /* -2 */
{ _map_nominal_u, _res_44u_n1 }, /* -1 */
{ _map_nominal_u, _res_44u_0 }, /* 0 */
{ _map_nominal_u, _res_44u_1 }, /* 1 */
--- lib/modes/psych_8.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/psych_8.h 2007-08-02 12:25:50.000000000 +0200
@@ -15,23 +15,29 @@
********************************************************************/
-static att3 _psy_tone_masteratt_8[3]={
- {{ 32, 25, 12}, 0, 0}, /* 0 */
- {{ 30, 25, 12}, 0, 0}, /* 0 */
- {{ 20, 0, -14}, 0, 0}, /* 0 */
+static att3 _psy_tone_masteratt_8[4]={
+ {{ 33, 28, 13}, 0, 0}, /* -2 */
+ {{ 32, 28, 12}, 0, 0}, /* -1 */
+ {{ 30, 26, 12}, 0, 0}, /* 0 */
+ {{ 20, 0, -14}, 0, 0}, /* 10 */
};
-static vp_adjblock _vp_tonemask_adj_8[3]={
+static vp_adjblock _vp_tonemask_adj_8[4]={
/* adjust for mode zero */
/* 63 125 250 500 1 2 4 8 16 */
- {{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0,10, 0, 0,99,99,99}}, /* 1 */
- {{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0,10, 0, 0,99,99,99}}, /* 1 */
- {{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 1 */
+ {{-15,-15,-15,-15,-10,-10, -6,-2, 0, 0, 0, 0, 3, 3,99,99,99}}, /* -2 */
+ {{-15,-15,-15,-15,-10,-10, -6,-2, 0, 0, 0, 0, 0, 0,99,99,99}}, /* -1 */
+ {{-15,-15,-15,-15,-10,-10, -6,-2, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 0 */
+ {{-15,-15,-15,-15,-10,-10, -6,-2, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 10 */
};
-static noise3 _psy_noisebias_8[3]={
+static noise3 _psy_noisebias_8[4]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
+ {{{-10,-10,-10,-10, -5, -5, -5, 3, 4, 8, 8, 8, 10, 10, 99, 99, 99},
+ {-10,-10,-10,-10, -5, -2, -2, 3, 3, 4, 4, 5, 6, 8, 99, 99, 99},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
+
{{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 8, 8, 8, 10, 10, 99, 99, 99},
{-10,-10,-10,-10, -5, -5, -5, 0, 0, 4, 4, 4, 4, 4, 99, 99, 99},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
@@ -46,9 +52,13 @@ static noise3 _psy_noisebias_8[3]={
};
/* stereo mode by base quality level */
-static adj_stereo _psy_stereo_modes_8[3]={
+static adj_stereo _psy_stereo_modes_8[4]={
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
{{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
+ { 6, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4},
+ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+ { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+ {{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{ 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
@@ -62,12 +72,20 @@ static adj_stereo _psy_stereo_modes_8[3]
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
};
-static noiseguard _psy_noiseguards_8[2]={
+static noiseguard _psy_noiseguards_8[3]={
+ {10,10,-1},
{10,10,-1},
{10,10,-1},
};
-static compandblock _psy_compand_8[2]={
+static compandblock _psy_compand_8[3]={
+ {{
+ 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
+ 8, 8, 9, 9,10,10,11, 11, /* 15dB */
+ 12,12,13,13,14,14,15, 16, /* 23dB */
+ 17,18,19,20,21,22,23, 24, /* 31dB */
+ 25,26,27,28,29,30,31, 32, /* 39dB */
+ }},
{{
0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
8, 8, 9, 9,10,10,11, 11, /* 15dB */
@@ -84,19 +102,19 @@ static compandblock _psy_compand_8[2]={
}},
};
-static double _psy_lowpass_8[3]={3.,4.,4.};
-static int _noise_start_8[2]={
- 64,64,
+static double _psy_lowpass_8[4]={2.6,3.,4.,4.};
+static int _noise_start_8[3]={
+ 64,64,64,
};
-static int _noise_part_8[2]={
- 8,8,
+static int _noise_part_8[3]={
+ 8,8,8,
};
-static int _psy_ath_floater_8[3]={
- -100,-100,-105,
+static int _psy_ath_floater_8[4]={
+ -100,-100,-100,-105,
};
-static int _psy_ath_abs_8[3]={
- -130,-130,-140,
+static int _psy_ath_abs_8[4]={
+ -130,-130,-130,-140,
};
--- lib/modes/setup_16.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/setup_16.h 2007-08-02 12:25:50.000000000 +0200
@@ -18,36 +18,40 @@
#include "psych_16.h"
#include "residue_16.h"
-static int blocksize_16_short[3]={
- 1024,512,512
+static int blocksize_16_short[4]={
+ 1024,1024,512,512
};
-static int blocksize_16_long[3]={
- 1024,1024,1024
+static int blocksize_16_long[4]={
+ 1024,1024,1024,1024
};
-static int _floor_mapping_16_short[3]={
- 9,3,3
+static int _floor_mapping_16_short[4]={
+ 9,9,3,3
};
-static int _floor_mapping_16[3]={
- 9,9,9
+static int _floor_mapping_16[4]={
+ 9,9,9,9
};
-static double rate_mapping_16[4]={
- 12000.,20000.,44000.,86000.
+static double rate_mapping_16[5]={
+// 12000.,20000.,44000.,86000.
+ 10000.,12000.,20000.,44000.,86000.
};
-static double rate_mapping_16_uncoupled[4]={
- 16000.,28000.,64000.,100000.
+static double rate_mapping_16_uncoupled[5]={
+// 16000.,28000.,64000.,100000.
+ 16000.,18000.,28000.,64000.,100000.
};
-static double _global_mapping_16[4]={ 1., 2., 3., 4. };
+static double _global_mapping_16[5]={ 2., 2., 3., 4., 5. };
-static double quality_mapping_16[4]={ -.1,.05,.5,1. };
+static double quality_mapping_16[5]={ -.2,-.1,.05,.5,1. };
-static double _psy_compand_16_mapping[4]={ 0., .8, 1., 1.};
+//static double _psy_compand_16_mapping[5]={ 0., 0., .8, 1., 1.};
+static double _psy_compand_16_mapping[5]={ 0., 1., 1.8, 2., 2.};
ve_setup_data_template ve_setup_16_stereo={
- 3,
+// 3,
+ 4,
rate_mapping_16,
quality_mapping_16,
2,
@@ -98,7 +102,8 @@ ve_setup_data_template ve_setup_16_stere
};
ve_setup_data_template ve_setup_16_uncoupled={
- 3,
+// 3,
+ 4,
rate_mapping_16_uncoupled,
quality_mapping_16,
-1,
--- lib/modes/setup_11.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/setup_11.h 2007-08-02 12:25:50.000000000 +0200
@@ -17,28 +17,31 @@
#include "psych_11.h"
-static int blocksize_11[2]={
- 512,512
+static int blocksize_11[3]={
+ 512,512,512
};
-static int _floor_mapping_11[2]={
- 6,6,
+static int _floor_mapping_11[3]={
+ 6,6,6
};
-static double rate_mapping_11[3]={
- 8000.,13000.,44000.,
+static double rate_mapping_11[4]={
+// 8000.,13000.,44000.,
+ 8000.,10000.,13000.,44000.,
};
-static double rate_mapping_11_uncoupled[3]={
- 12000.,20000.,50000.,
+static double rate_mapping_11_uncoupled[4]={
+// 12000.,20000.,50000.,
+ 14000.,16000.,20000.,50000.,
};
-static double quality_mapping_11[3]={
- -.1,.0,1.
+static double quality_mapping_11[4]={
+ -.2,-.1,.0,1.
};
ve_setup_data_template ve_setup_11_stereo={
- 2,
+// 2,
+ 3,
rate_mapping_11,
quality_mapping_11,
2,
@@ -89,7 +92,8 @@ ve_setup_data_template ve_setup_11_stere
};
ve_setup_data_template ve_setup_11_uncoupled={
- 2,
+// 2,
+ 3,
rate_mapping_11_uncoupled,
quality_mapping_11,
-1,
--- lib/modes/residue_44.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/residue_44.h 2007-08-02 12:25:50.000000000 +0200
@@ -278,6 +278,7 @@ static vorbis_residue_template _res_44s_
};
static vorbis_mapping_template _mapres_template_44_stereo[]={
+ { _map_nominal, _res_44s_n1 }, /* -2 */
{ _map_nominal, _res_44s_n1 }, /* -1 */
{ _map_nominal, _res_44s_0 }, /* 0 */
{ _map_nominal, _res_44s_1 }, /* 1 */
--- lib/modes/setup_22.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/setup_22.h 2007-08-02 12:25:50.000000000 +0200
@@ -15,18 +15,21 @@
********************************************************************/
-static double rate_mapping_22[4]={
- 15000.,20000.,44000.,86000.
+static double rate_mapping_22[5]={
+// 15000.,20000.,44000.,86000.
+ 14000.,16000.,20000.,44000.,86000.
};
-static double rate_mapping_22_uncoupled[4]={
- 16000.,28000.,50000.,90000.
+static double rate_mapping_22_uncoupled[5]={
+// 16000.,28000.,50000.,90000.
+ 22000.,24000.,28000.,50000.,90000.
};
-static double _psy_lowpass_22[4]={9.5,11.,30.,99.};
+static double _psy_lowpass_22[5]={8.5,9.5,11.,30.,99.};
ve_setup_data_template ve_setup_22_stereo={
- 3,
+// 3,
+ 4,
rate_mapping_22,
quality_mapping_16,
2,
@@ -77,7 +80,8 @@ ve_setup_data_template ve_setup_22_stere
};
ve_setup_data_template ve_setup_22_uncoupled={
- 3,
+// 3,
+ 4,
rate_mapping_22_uncoupled,
quality_mapping_16,
-1,
--- lib/modes/psych_44.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/psych_44.h 2007-08-02 12:25:50.000000000 +0200
@@ -18,10 +18,26 @@
/* preecho trigger settings *****************************************/
-static vorbis_info_psy_global _psy_global_44[5]={
-
+static vorbis_info_psy_global _psy_global_44[6]={
+/*
+ { lines per eighth octave,
+ { pre-echo thresh.},
+ { post-echo thresh.}, stretch penalty, pre-echo minimum energy,
+ ampmax att 1/sec,
+ {coupling point(kHz)},{{coupling point limit0},{coupling point limit1}},
+ {coupling pre-point amp},{coupling post-point amp},{{sliding lowpass0},{sliding lowpass1}}
+ },
+*/
+/* q-2 */
+ {8, /* lines per eighth octave */
+ {24.f,16.f,16.f,16.f,16.f,16.f,14.f},
+ {-60.f,-30.f,-40.f,-40.f,-40.f,-40.f,-40.f}, 2,-75.f,
+ -6.f,
+ {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
+ },
{8, /* lines per eighth octave */
- {20.f,14.f,12.f,12.f,12.f,12.f,12.f},
+// {20.f,14.f,12.f,12.f,12.f,12.f,12.f},
+ {20.f,14.f,14.f,14.f,14.f,14.f,14.f},
{-60.f,-30.f,-40.f,-40.f,-40.f,-40.f,-40.f}, 2,-75.f,
-6.f,
{99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
@@ -39,14 +55,17 @@ static vorbis_info_psy_global _psy_globa
{99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
},
{8, /* lines per eighth octave */
- {10.f,8.f,8.f,8.f,8.f,8.f,8.f},
+// {10.f,8.f,8.f,8.f,8.f,8.f,8.f},
+ {8.f,8.f,8.f,6.f,6.f,6.f,7.f},
{-20.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-80.f,
-6.f,
{99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
},
{8, /* lines per eighth octave */
- {10.f,6.f,6.f,6.f,6.f,6.f,6.f},
- {-15.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-85.f,
+// {10.f,6.f,6.f,6.f,6.f,6.f,6.f},
+ {6.f,6.f,6.f,6.f,6.f,6.f,6.f},
+// {-15.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-85.f,
+ {-15.f,-14.f,-10.f,-10.f,-10.f,-11.f,-12.f}, 0,-85.f,
-6.f,
{99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
},
@@ -56,26 +75,41 @@ static vorbis_info_psy_global _psy_globa
static compandblock _psy_compand_44[6]={
/* sub-mode Z short */
{{
- 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
- 8, 9,10,11,12,13,14, 15, /* 15dB */
- 16,17,18,19,20,21,22, 23, /* 23dB */
- 24,25,26,27,28,29,30, 31, /* 31dB */
- 32,33,34,35,36,37,38, 39, /* 39dB */
+// 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
+// 8, 9,10,11,12,13,14, 15, /* 15dB */
+// 16,17,18,19,20,21,22, 23, /* 23dB */
+// 24,25,26,27,28,29,30, 31, /* 31dB */
+// 32,33,34,35,36,37,38, 39, /* 39dB */
+ 0, 1, 2, 3, 4, 5, 6, 6, /* 7dB */
+ 7, 7, 7, 8, 9,10, 11, 11, /* 15dB */
+ 12,12,13,13,14,14,15, 15, /* 23dB */
+ 16,16,17,17,17,18,18, 19, /* 31dB */
+ 19,19,20,21,22,23,24, 25, /* 39dB */
}},
/* mode_Z nominal short */
{{
+// 0, 1, 2, 3, 4, 5, 6, 6, /* 7dB */
+// 7, 7, 7, 7, 6, 6, 6, 7, /* 15dB */
+// 7, 8, 9,10,11,12,13, 14, /* 23dB */
+// 15,16,17,17,17,18,18, 19, /* 31dB */
+// 19,19,20,21,22,23,24, 25, /* 39dB */
0, 1, 2, 3, 4, 5, 6, 6, /* 7dB */
- 7, 7, 7, 7, 6, 6, 6, 7, /* 15dB */
+ 7, 7, 7, 7, 7, 7, 7, 7, /* 15dB */
7, 8, 9,10,11,12,13, 14, /* 23dB */
15,16,17,17,17,18,18, 19, /* 31dB */
19,19,20,21,22,23,24, 25, /* 39dB */
}},
/* mode A short */
{{
+// 0, 1, 2, 3, 4, 5, 5, 5, /* 7dB */
+// 6, 6, 6, 5, 4, 4, 4, 4, /* 15dB */
+// 4, 4, 5, 5, 5, 6, 6, 6, /* 23dB */
+// 7, 7, 7, 8, 8, 8, 9, 10, /* 31dB */
+// 11,12,13,14,15,16,17, 18, /* 39dB */
0, 1, 2, 3, 4, 5, 5, 5, /* 7dB */
- 6, 6, 6, 5, 4, 4, 4, 4, /* 15dB */
- 4, 4, 5, 5, 5, 6, 6, 6, /* 23dB */
- 7, 7, 7, 8, 8, 8, 9, 10, /* 31dB */
+ 6, 6, 6, 6, 6, 6, 6, 6, /* 15dB */
+ 6, 6, 6, 6, 6, 7, 7, 7, /* 23dB */
+ 8, 8, 8, 9, 9, 9,10, 11, /* 31dB */
11,12,13,14,15,16,17, 18, /* 39dB */
}},
/* sub-mode Z long */
@@ -96,172 +130,189 @@ static compandblock _psy_compand_44[6]={
}},
/* mode A long */
{{
+// 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
+// 8, 8, 7, 6, 5, 4, 4, 4, /* 15dB */
+// 4, 4, 5, 5, 5, 6, 6, 6, /* 23dB */
+// 7, 7, 7, 8, 8, 8, 9, 10, /* 31dB */
+// 11,12,13,14,15,16,17, 18, /* 39dB */
0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
- 8, 8, 7, 6, 5, 4, 4, 4, /* 15dB */
- 4, 4, 5, 5, 5, 6, 6, 6, /* 23dB */
- 7, 7, 7, 8, 8, 8, 9, 10, /* 31dB */
+ 7, 7, 7, 6, 6, 6, 6, 6, /* 15dB */
+ 6, 6, 6, 6, 6, 7, 7, 7, /* 23dB */
+ 8, 8, 8, 9, 9, 9,10, 11, /* 31dB */
11,12,13,14,15,16,17, 18, /* 39dB */
}}
};
/* tonal masking curve level adjustments *************************/
-static vp_adjblock _vp_tonemask_adj_longblock[12]={
-
+static vp_adjblock _vp_tonemask_adj_longblock[13]={
/* 63 125 250 500 1 2 4 8 16 */
+// {{ -3, -9,-12,-12,-10,-10,-10,-10,-10,-10,-10, -1, 0, 0, 1, 1, 1}}, /* -2(addition) */
+ {{-16,-16,-16,-15,-15,-15,-14,-14,-13,-13,-12,-12,-11, -5, 0, 0, 5}},
- {{ -3, -8,-13,-15,-10,-10,-10,-10,-10,-10,-10, 0, 0, 0, 0, 0, 0}}, /* -1 */
-
+// {{ -3, -9,-12,-12,-11,-11,-11,-11,-11,-11,-10, -1, -1, 0, 0, 0, 0}}, /* -1 */
+ {{-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-13,-13,-12, -7, -2, -2, 3}},
+
/* {{-15,-15,-15,-15,-10, -8, -4, -2, 0, 0, 0, 10, 0, 0, 0, 0, 0}}, 0 */
- {{ -4,-10,-14,-16,-15,-14,-13,-12,-12,-12,-11, -1, -1, -1, -1, -1, 0}}, /* 0 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-13, -8, -3, -3, 1}}, /* 0 */
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 5, 0, 0, 0, 0, 0}}, 1 */
- {{ -6,-12,-14,-16,-15,-15,-14,-13,-13,-12,-12, -2, -2, -1, -1, -1, 0}}, /* 1 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-13,-10, -4, -4, 0}}, /* 1 */
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 2 */
- {{-12,-13,-14,-16,-16,-16,-15,-14,-13,-12,-12, -6, -3, -1, -1, -1, 0}}, /* 2 */
-
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -5, -5, 0}}, /* 2 */
+
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 3 */
- {{-15,-15,-15,-16,-16,-16,-16,-14,-13,-13,-13,-10, -4, -2, -1, -1, 0}}, /* 3 */
-
-/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, *//* 4 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7 -3, -1, -1 , 0}}, /* 4 */
-
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -8, -7, 0}}, /* 3 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 4 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -9, -9, 0}}, /* 4 */
+
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 5 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7 -3, -1, -1 , 0}}, /* 5 */
-
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -9, -9, 0}}, /* 5 */
+
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 6 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -8, -4, -2, -2, 0}}, /* 6 */
-
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -9, -9, 0}}, /* 6 */
+
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 7 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 7 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -9, -9, 0}}, /* 7 */
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 8 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 8 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -9, -9, 0}}, /* 8 */
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 9 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 9 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11,-10,-10, 0}}, /* 9 */
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 10 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 10 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11,-10,-10, 0}}, /* 10 */
};
-
-static vp_adjblock _vp_tonemask_adj_otherblock[12]={
+static vp_adjblock _vp_tonemask_adj_otherblock[13]={
/* 63 125 250 500 1 2 4 8 16 */
- {{ -3, -8,-13,-15,-10,-10, -9, -9, -9, -9, -9, 1, 1, 1, 1, 1, 1}}, /* -1 */
+// {{ -3, -9,-12,-12,-10,-10,-10,-10,-10,-10,-10, -1, 0, 0, 1, 1, 1}}, /* -2(addition) */
+ {{-16,-16,-16,-15,-15,-15,-14,-14,-13,-13,-12,-12,-11, -5, 0, 0, 5}},
+// {{ -3, -9,-12,-12,-11,-11,-11,-11,-11,-11,-10, -1, -1, 0, 0, 0, 0}}, /* -1 */
+ {{-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-13,-13,-12, -7, -2, -2, 3}},
+
/* {{-20,-20,-20,-20,-14,-12,-10, -8, -4, 0, 0, 10, 0, 0, 0, 0, 0}}, 0 */
- {{ -4,-10,-14,-16,-14,-13,-12,-12,-11,-11,-10, 0, 0, 0, 0, 0, 0}}, /* 0 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14, -8, -3, -3, 0}}, /* 0 */
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 5, 0, 0, 0, 0, 0}}, 1 */
- {{ -6,-12,-14,-16,-15,-15,-14,-13,-13,-12,-12, -2, -2, -1, 0, 0, 0}}, /* 1 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-10, -4, -4, 0}}, /* 1 */
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 2 */
- {{-12,-13,-14,-16,-16,-16,-15,-14,-13,-12,-12, -5, -2, -1, 0, 0, 0}}, /* 2 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -6, -5, 0}}, /* 2 */
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 3 */
- {{-15,-15,-15,-16,-16,-16,-16,-14,-13,-13,-13,-10, -4, -2, 0, 0, 0}}, /* 3 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -9, -7, 0}}, /* 3 */
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 4 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7 -3, -1, -1 , 0}}, /* 4 */
-
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -9, -9, 0}}, /* 4 */
+
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 5 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7 -3, -1, -1 , 0}}, /* 5 */
-
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -9, -9, 0}}, /* 5 */
+
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 6 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -8, -4, -2, -2, 0}}, /* 6 */
-
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -9, -9, 0}}, /* 6 */
+
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 7 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 7 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -9, -9, 0}}, /* 7 */
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 8 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 8 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11, -9, -9, 0}}, /* 8 */
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 9 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 9 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11,-10,-10, 0}}, /* 9 */
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 10 */
- {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 10 */
+ {{-16,-16,-16,-16,-16,-16,-16,-16,-15,-15,-14,-14,-14,-11,-10,-10, 0}}, /* 10 */
};
/* noise bias (transition block) */
-static noise3 _psy_noisebias_trans[12]={
+static noise3 _psy_noisebias_trans[13]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
- /* -1 */
+ /* -2(addition mode) */
{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
+ {-28,-28,-26,-26,-22,-18,-16, -8, -2, 2, 2, 2, 2, 5, 6, 7, 15},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
+ /* -1 */
+/*{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2, 2, 2, 3, 6, 6, 15},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},*/
+ {{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
+ {-30,-30,-28,-28,-24,-20,-18,-10, -4, 0, 0, 0, 0, 2, 3, 4, 14},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
- /* 0
- {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
+ /* 0 */
+/*{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
{-30,-30,-30,-30,-26,-22,-20,-14, -8, -4, 0, 0, 0, 0, 2, 4, 10},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4, -2}}},*/
- {{{-15,-15,-15,-15,-15,-12, -6, -4, 0, 2, 4, 4, 5, 5, 5, 8, 10},
- {-30,-30,-30,-30,-26,-22,-20,-14, -8, -4, 0, 0, 0, 0, 2, 3, 6},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4, -2}}},
- /* 1
- {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
+ {{{-15,-15,-15,-15,-15,-12, -6, -4, 0, 2, 4, 4, 5, 5, 5, 8, 10},
+ {-30,-30,-30,-30,-26,-22,-20,-14, -6, 0, 0, 0, 0, 1, 2, 3, 8},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4, -2}}},
+ /* 1 */
+/*{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 8},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},*/
- {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2, 0, 1, 4},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},
- /* 2
- {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
+ {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2, -1, 1, 4},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},
+ /* 2 */
+/*{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 6},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}}, */
- {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -2, -1, 0, 3},
+ {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -2, -2, -1, 1, 3},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -7, -4}}},
- /* 3
- {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
+ /* 3 */
+/*{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 6},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -2, 0, 2},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -2, 0, 3},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
- /* 4
- {{{-20,-20,-20,-20,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
+ /* 4 */
+/*{{{-20,-20,-20,-20,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 5},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
{{{-20,-20,-20,-20,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -2, -1, 1},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -2, 0, 1},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
- /* 5
- {{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
+ /* 5 */
+/*{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1, 2},
{-34,-34,-34,-34,-30,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}}, */
{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -4, -4, -4, -4, -3, -1, 0},
{-34,-34,-34,-34,-30,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},
- /* 6
- {{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
+ /* 6 */
+/*{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-32,-32,-32,-32,-28,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2, 1},
{-34,-34,-34,-34,-30,-26,-24,-18,-17,-15,-15,-15,-15,-13,-13,-12, -8}}},*/
{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
- {-32,-32,-32,-32,-28,-24,-24,-18,-14, -8, -6, -6, -6, -6, -5, -2, 0},
- {-34,-34,-34,-34,-30,-26,-26,-24,-22,-19,-19,-19,-19,-18,-17,-16,-12}}},
- /* 7
- {{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
+ {-34,-34,-34,-34,-30,-30,-24,-20,-14, -8, -6, -6, -6, -6, -4, -2, 0},
+ {-34,-34,-34,-34,-30,-26,-24,-18,-17,-15,-15,-15,-15,-13,-13,-12, -8}}},
+ /* 7 */
+/*{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-32,-32,-32,-32,-28,-24,-24,-18,-14,-12,-10, -8, -8, -8, -6, -4, 0},
{-34,-34,-34,-34,-30,-26,-26,-24,-22,-19,-19,-19,-19,-18,-17,-16,-12}}},*/
{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
- {-32,-32,-32,-32,-28,-24,-24,-24,-18,-14,-12,-10,-10,-10, -8, -6, -2},
- {-34,-34,-34,-34,-30,-26,-26,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
- /* 8
- {{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2, 0, 0, 0, 1, 2, 3, 7},
+ {-34,-34,-34,-34,-30,-30,-24,-20,-14,-12,-10, -8, -8, -8, -6, -4, 0},
+ {-34,-34,-34,-34,-30,-26,-26,-24,-22,-19,-19,-19,-19,-18,-17,-16,-12}}},
+ /* 8 */
+/*{{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2, 0, 0, 0, 1, 2, 3, 7},
{-36,-36,-36,-36,-30,-30,-30,-24,-18,-14,-12,-10,-10,-10, -8, -6, -2},
{-36,-36,-36,-36,-34,-30,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},*/
- {{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2, 0, 0, 0, 1, 2, 3, 7},
- {-36,-36,-36,-36,-30,-30,-30,-24,-20,-16,-16,-16,-16,-14,-12,-10, -7},
- {-36,-36,-36,-36,-34,-30,-28,-26,-24,-30,-30,-30,-30,-30,-30,-24,-20}}},
- /* 9
- {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
+ {{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2, 0, 0, 0, 1, 2, 3, 7},
+ {-34,-34,-34,-34,-30,-30,-30,-24,-18,-14,-12,-10,-10,-10, -8, -6, -2},
+ {-36,-36,-36,-36,-34,-30,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
+ /* 9 */
+/*{{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
{-36,-36,-36,-36,-34,-32,-32,-28,-20,-16,-16,-16,-16,-14,-12,-10, -7},
{-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},*/
{{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
- {-38,-38,-38,-38,-36,-34,-34,-30,-24,-20,-20,-20,-20,-18,-16,-12,-10},
- {-40,-40,-40,-40,-40,-40,-40,-38,-35,-35,-35,-35,-35,-35,-35,-35,-30}}},
+ {-36,-36,-36,-36,-32,-32,-32,-28,-20,-16,-16,-16,-16,-14,-12,-10, -7},
+ {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
/* 10 */
{{{-30,-30,-30,-30,-30,-30,-30,-28,-20,-14,-14,-14,-14,-14,-14,-12,-10},
{-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-30,-30,-30,-30,-30,-30,-20},
@@ -269,65 +320,74 @@ static noise3 _psy_noisebias_trans[12]={
};
/* noise bias (long block) */
-static noise3 _psy_noisebias_long[12]={
- /*63 125 250 500 1k 2k 4k 8k 16k*/
+static noise3 _psy_noisebias_long[13]={
+ /* 63 125 250 500 1k 2k 4k 8k 16k*/
+ /* -2(addition mode) */
+ {{{-10,-10,-10,-10,-10, -4, 0, 0, 2, 6, 6, 6, 6, 10, 10, 12, 20},
+ {-20,-20,-20,-20,-20,-18,-12, -6, 0, 2, 2, 2, 2, 5, 6, 7, 15},
+ {-20,-20,-20,-20,-20,-20,-20,-10, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},
/* -1 */
- {{{-10,-10,-10,-10,-10, -4, 0, 0, 0, 6, 6, 6, 6, 10, 10, 12, 20},
- {-20,-20,-20,-20,-20,-20,-10, -2, 0, 0, 0, 0, 0, 2, 4, 6, 15},
+/*{{{-10,-10,-10,-10,-10, -4, 0, 0, 0, 6, 6, 6, 6, 10, 10, 12, 20},
+ {-20,-20,-20,-20,-20,-20,-10, -2, 0, 0, 0, 0, 0, 2, 4, 6, 15},
+ {-20,-20,-20,-20,-20,-20,-20,-10, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},*/
+ {{{-10,-10,-10,-10,-10, -4, 0, 0, 0, 6, 6, 6, 6, 10, 10, 12, 20},
+ {-20,-20,-20,-20,-20,-18,-12, -8, -2, 0, 0, 0, 0, 2, 3, 4, 14},
{-20,-20,-20,-20,-20,-20,-20,-10, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},
-
/* 0 */
- /* {{{-10,-10,-10,-10,-10,-10, -8, 2, 2, 2, 4, 4, 5, 5, 5, 8, 10},
- {-20,-20,-20,-20,-20,-20,-20,-14, -6, 0, 0, 0, 0, 0, 2, 4, 10},
- {-20,-20,-20,-20,-20,-20,-20,-14, -8, -6, -6, -6, -6, -4, -4, -4, -2}}},*/
- {{{-10,-10,-10,-10,-10,-10, -8, 2, 2, 2, 4, 4, 5, 5, 5, 8, 10},
- {-20,-20,-20,-20,-20,-20,-20,-14, -6, 0, 0, 0, 0, 0, 2, 3, 6},
+/*{{{-10,-10,-10,-10,-10,-10, -8, 2, 2, 2, 4, 4, 5, 5, 5, 8, 10},
+ {-20,-20,-20,-20,-20,-20,-20,-14, -6, 0, 0, 0, 0, 0, 2, 4, 10},
+ {-20,-20,-20,-20,-20,-20,-20,-14, -8, -6, -6, -6, -6, -4, -4, -4, -2}}},*/
+ {{{-10,-10,-10,-10,-10,-10, -8, 2, 2, 2, 4, 4, 5, 5, 5, 8, 10},
+ {-20,-20,-20,-20,-20,-20,-20,-14, -6, 0, 0, 0, 0, 1, 2, 3, 7},
{-20,-20,-20,-20,-20,-20,-20,-14, -8, -6, -6, -6, -6, -4, -4, -4, -2}}},
/* 1 */
- /* {{{-10,-10,-10,-10,-10,-10, -8, -4, 0, 2, 4, 4, 5, 5, 5, 8, 10},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 8},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},*/
- {{{-10,-10,-10,-10,-10,-10, -8, -4, 0, 2, 4, 4, 5, 5, 5, 8, 10},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 1, 4},
+/*{{{-10,-10,-10,-10,-10,-10, -8, -4, 0, 2, 4, 4, 5, 5, 5, 8, 10},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 8},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},*/
+ {{{-10,-10,-10,-10,-10,-10, -8, -4, 0, 2, 4, 4, 5, 5, 5, 8, 10},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, -1, 1, 4},
{-20,-20,-20,-20,-20,-20,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},
/* 2 */
- /* {{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 6},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
- {{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -2, -1, 0, 3},
+/*{{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 6},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
+ {{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -2, -2, -1, 1, 3},
{-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
/* 3 */
- /* {{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 6},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
+/*{{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 6},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
{{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -2, 0, 2},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -2, 0, 3},
{-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -5}}},
/* 4 */
- /* {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 5},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
+/*{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 5},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
- {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -2, -1, 1},
+ {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -2, 0, 1},
{-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -7}}},
/* 5 */
- /* {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
- {-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1, 2},
- {-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},*/
+/*{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
+ {-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1, 2},
+ {-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},*/
{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
{-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -3, -1, 0},
{-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -8}}},
/* 6 */
- /* {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
- {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2, 1},
- {-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12, -8}}},*/
+/*{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
+ {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2, 1},
+ {-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12, -8}}},*/
{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
- {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -5, -2, 0},
- {-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12,-10}}},
+ {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2, 0},
+ {-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12, -8}}},
/* 7 */
+// {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
+// {-24,-24,-24,-24,-24,-24,-24,-18,-14,-10, -8, -8, -8, -8, -6, -4, 0},
+// {-26,-26,-26,-26,-26,-26,-26,-22,-20,-19,-19,-19,-19,-18,-17,-16,-12}}},
{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
- {-24,-24,-24,-24,-24,-24,-24,-18,-14,-10, -8, -8, -8, -8, -6, -4, 0},
+ {-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-10, -8, -8, -8, -6, -4, 0},
{-26,-26,-26,-26,-26,-26,-26,-22,-20,-19,-19,-19,-19,-18,-17,-16,-12}}},
/* 8 */
{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 0, 0, 0, 0, 1, 2, 3, 7},
@@ -344,67 +404,85 @@ static noise3 _psy_noisebias_long[12]={
};
/* noise bias (impulse block) */
-static noise3 _psy_noisebias_impulse[12]={
+static noise3 _psy_noisebias_impulse[13]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
- /* -1 */
+ /* -2(addition mode) */
{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
+ {-28,-28,-26,-26,-22,-18,-16, -8, -2, 2, 2, 2, 3, 6, 7, 8, 15},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
+ /* -1 */
+/*{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2, 2, 2, 3, 6, 6, 15},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},*/
+ {{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
+ {-30,-30,-28,-28,-24,-20,-18,-10, -4, 0, 0, 0, 1, 4, 5, 6, 14},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
-
/* 0 */
- /* {{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 4, 8, 8, 8, 10, 12, 14, 20},
- {-30,-30,-30,-30,-26,-22,-20,-14, -6, -2, 0, 0, 0, 0, 2, 4, 10},
- {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},*/
+/*{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 4, 8, 8, 8, 10, 12, 14, 20},
+ {-30,-30,-30,-30,-26,-22,-20,-14, -6, -2, 0, 0, 0, 0, 2, 4, 10},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},*/
{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 4, 8, 8, 8, 10, 12, 14, 20},
- {-30,-30,-30,-30,-26,-22,-20,-14, -6, -2, 0, 0, 0, 0, 2, 3, 6},
+ {-30,-30,-30,-30,-26,-22,-20,-14, -6, 0, 0, 0, 0, 1, 2, 3, 7},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
/* 1 */
- {{{-12,-12,-12,-12,-12, -8, -6, -4, 0, 4, 4, 4, 4, 10, 12, 14, 20},
+/*{{{-12,-12,-12,-12,-12, -8, -6, -4, 0, 4, 4, 4, 4, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -4, -4, -2, -2, -2, -2, 2},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8,-10,-10, -8, -8, -8, -6, -4}}},*/
+ {{{-12,-12,-12,-12,-12, -8, -6, -4, 0, 4, 4, 4, 4, 10, 12, 14, 20},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -2, -2, -2, -1, 3},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -8,-10,-10, -8, -8, -8, -6, -4}}},
/* 2 */
+// {{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 8, 10, 10, 16},
+// {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
+// {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
{{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 8, 10, 10, 16},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -3, -2, 1},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
/* 3 */
+// {{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 6, 8, 8, 14},
+// {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
+// {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
{{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 6, 8, 8, 14},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -3, -2, 1},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
/* 4 */
+// {{{-16,-16,-16,-16,-16,-12,-10, -6, -2, 0, 0, 0, 0, 4, 6, 6, 12},
+// {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
+// {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
{{{-16,-16,-16,-16,-16,-12,-10, -6, -2, 0, 0, 0, 0, 4, 6, 6, 12},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -3, -2, 1},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
/* 5 */
- {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 4, 6, 11},
+/*{{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 4, 6, 11},
{-32,-32,-32,-32,-28,-24,-22,-16,-10, -6, -8, -8, -6, -6, -6, -4, -2},
- {-34,-34,-34,-34,-30,-26,-24,-18,-14,-12,-12,-12,-12,-12,-10, -9, -5}}},
- /* 6
+ {-34,-34,-34,-34,-30,-26,-24,-18,-14,-12,-12,-12,-12,-12,-10, -9, -5}}},*/
{{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 4, 6, 11},
- {-34,-34,-34,-34,-30,-30,-24,-20,-12,-12,-14,-14,-10, -9, -8, -6, -4},
- {-34,-34,-34,-34,-34,-30,-26,-20,-16,-15,-15,-15,-15,-15,-13,-12, -8}}},*/
+ {-32,-32,-32,-32,-28,-24,-22,-16,-12, -8, -8, -8, -6, -6, -5, -4, -2},
+ {-34,-34,-34,-34,-30,-26,-24,-18,-14,-12,-12,-12,-12,-12,-10, -9, -5}}},
+ /* 6 */
+/*{{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 4, 6, 11},
+ {-34,-34,-34,-34,-30,-30,-24,-20,-12,-12,-14,-14,-10, -9, -8, -6, -4},
+ {-34,-34,-34,-34,-34,-30,-26,-20,-16,-15,-15,-15,-15,-15,-13,-12, -8}}},*/
{{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 4, 6, 11},
- {-34,-34,-34,-34,-30,-30,-30,-24,-16,-16,-16,-16,-16,-16,-14,-14,-12},
- {-36,-36,-36,-36,-36,-34,-28,-24,-20,-20,-20,-20,-20,-20,-20,-18,-16}}},
+ {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-14,-14,-10, -9, -8, -6, -4},
+ {-34,-34,-34,-34,-34,-30,-26,-20,-16,-15,-15,-15,-15,-15,-13,-12, -8}}},
/* 7 */
- /* {{{-22,-22,-22,-22,-22,-20,-14,-10, -6, 0, 0, 0, 0, 4, 4, 6, 11},
- {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10,-10},
- {-34,-34,-34,-34,-32,-32,-30,-24,-20,-19,-19,-19,-19,-19,-17,-16,-12}}},*/
+/*{{{-22,-22,-22,-22,-22,-20,-14,-10, -6, 0, 0, 0, 0, 4, 4, 6, 11},
+ {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10,-10},
+ {-34,-34,-34,-34,-32,-32,-30,-24,-20,-19,-19,-19,-19,-19,-17,-16,-12}}},*/
{{{-22,-22,-22,-22,-22,-20,-14,-10, -6, 0, 0, 0, 0, 4, 4, 6, 11},
- {-34,-34,-34,-34,-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-24,-22},
- {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-30,-24}}},
+ {-34,-34,-34,-34,-30,-30,-24,-20,-16,-16,-16,-16,-14,-12,-10,-10, -8},
+ {-34,-34,-34,-34,-32,-32,-30,-24,-20,-19,-19,-19,-19,-19,-17,-16,-12}}},
/* 8 */
- /* {{{-24,-24,-24,-24,-24,-22,-14,-10, -6, -1, -1, -1, -1, 3, 3, 5, 10},
- {-34,-34,-34,-34,-30,-30,-30,-24,-20,-20,-20,-20,-20,-18,-16,-16,-14},
- {-36,-36,-36,-36,-36,-34,-28,-24,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},*/
{{{-24,-24,-24,-24,-24,-22,-14,-10, -6, -1, -1, -1, -1, 3, 3, 5, 10},
- {-34,-34,-34,-34,-34,-32,-32,-30,-26,-26,-26,-26,-26,-26,-26,-26,-24},
- {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-30,-24}}},
+ {-34,-34,-34,-34,-30,-30,-30,-24,-20,-20,-20,-20,-20,-18,-16,-16,-14},
+ {-36,-36,-36,-36,-36,-34,-28,-24,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
/* 9 */
- /* {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
- {-36,-36,-36,-36,-34,-32,-32,-30,-26,-26,-26,-26,-26,-22,-20,-20,-18},
- {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},*/
+// {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
+// {-36,-36,-36,-36,-34,-32,-32,-30,-26,-26,-26,-26,-26,-22,-20,-20,-18},
+// {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
{{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
- {-36,-36,-36,-36,-34,-32,-32,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26},
+ {-36,-36,-36,-36,-32,-32,-32,-28,-24,-24,-24,-24,-24,-22,-20,-20,-18},
{-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
/* 10 */
{{{-30,-30,-30,-30,-30,-26,-24,-24,-24,-20,-16,-16,-16,-16,-16,-14,-12},
@@ -413,28 +491,36 @@ static noise3 _psy_noisebias_impulse[12]
};
/* noise bias (padding block) */
-static noise3 _psy_noisebias_padding[12]={
+static noise3 _psy_noisebias_padding[13]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
-
- /* -1 */
+ /* -2(addition mode) */
{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
- {-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2, 2, 2, 3, 6, 6, 15},
+ {-28,-28,-26,-26,-22,-18,-16, -8, -2, 2, 2, 2, 3, 6, 7, 8, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
-
- /* 0 */
+ /* -1 */
+/*{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
+ {-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2, 2, 2, 3, 6, 6, 15},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},*/
{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
+ {-30,-30,-28,-28,-24,-20,-18,-10, -4, 0, 0, 0, 1, 4, 5, 6, 14},
+ {-30,-30,-30,-30,-30,-24,-20,-14,-10, -4, -4, -4, -4, -4, -2, 0, 2}}},
+ /* 0 */
+/*{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, 2, 3, 6, 6, 8, 10},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -4, -4, -2, 0, 2}}},*/
+ {{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
+ {-30,-30,-30,-30,-26,-22,-20,-14, -6, 0, 0, 0, 0, 3, 3, 5, 8},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -4, -4, -2, 0, 2}}},
/* 1 */
{{{-12,-12,-12,-12,-12, -8, -6, -4, 0, 4, 4, 4, 4, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, 0, 0, 0, 2, 2, 4, 8},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -6, -4, -2, 0}}},
/* 2 */
- /* {{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 8, 10, 10, 16},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, 0, 0, 0, 2, 2, 4, 8},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},*/
+// {{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 8, 10, 10, 16},
+// {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, 0, 0, 0, 2, 2, 4, 8},
+// {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
{{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 8, 10, 10, 16},
- {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1, 0, 0, 2, 6},
+ {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, 0, 0, 0, 0, 2, 4, 8},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
/* 3 */
{{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 6, 8, 8, 14},
@@ -453,16 +539,22 @@ static noise3 _psy_noisebias_padding[12]
{-34,-34,-34,-34,-30,-30,-24,-20,-14, -8, -4, -4, -4, -4, -3, -1, 4},
{-34,-34,-34,-34,-34,-30,-26,-20,-16,-13,-13,-13,-13,-13,-11, -8, -6}}},
/* 7 */
- {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 6, 6, 12},
+/*{{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 6, 6, 12},
{-34,-34,-34,-34,-30,-30,-30,-24,-16,-10, -8, -6, -6, -6, -5, -3, 1},
+ {-34,-34,-34,-34,-32,-32,-28,-22,-18,-16,-16,-16,-16,-16,-14,-12,-10}}},*/
+ {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 6, 6, 12},
+ {-34,-34,-34,-34,-30,-30,-24,-20,-14,-10, -8, -6, -6, -6, -5, -3, 1},
{-34,-34,-34,-34,-32,-32,-28,-22,-18,-16,-16,-16,-16,-16,-14,-12,-10}}},
/* 8 */
{{{-22,-22,-22,-22,-22,-20,-14,-10, -4, 0, 0, 0, 0, 3, 5, 5, 11},
{-34,-34,-34,-34,-30,-30,-30,-24,-16,-12,-10, -8, -8, -8, -7, -5, -2},
{-36,-36,-36,-36,-36,-34,-28,-22,-20,-20,-20,-20,-20,-20,-20,-16,-14}}},
/* 9 */
+// {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -2, -2, -2, -2, 0, 2, 6},
+// {-36,-36,-36,-36,-34,-32,-32,-24,-16,-12,-12,-12,-12,-12,-10, -8, -5},
+// {-40,-40,-40,-40,-40,-40,-40,-32,-26,-24,-24,-24,-24,-24,-24,-20,-18}}},
{{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -2, -2, -2, -2, 0, 2, 6},
- {-36,-36,-36,-36,-34,-32,-32,-24,-16,-12,-12,-12,-12,-12,-10, -8, -5},
+ {-36,-36,-36,-36,-32,-32,-32,-26,-18,-14,-12,-12,-12,-12,-10, -8, -5},
{-40,-40,-40,-40,-40,-40,-40,-32,-26,-24,-24,-24,-24,-24,-24,-20,-18}}},
/* 10 */
{{{-30,-30,-30,-30,-30,-26,-24,-24,-24,-20,-12,-12,-12,-12,-12,-10, -8},
@@ -478,14 +570,17 @@ static noiseguard _psy_noiseguards_44[4]
{10,10,100},
};
-static int _psy_tone_suppress[12]={
- -20,-20,-20,-20,-20,-24,-30,-40,-40,-45,-45,-45,
-};
-static int _psy_tone_0dB[12]={
- 90,90,95,95,95,95,105,105,105,105,105,105,
-};
-static int _psy_noise_suppress[12]={
- -20,-20,-24,-24,-24,-24,-30,-40,-40,-45,-45,-45,
+static int _psy_tone_suppress[13]={
+/* -20,-20,-20,-20,-20,-24,-30,-40,-40,-45,-45,-45, */
+ -20,-20,-20,-20,-20,-20,-24,-30,-40,-40,-42,-45,-45,
+};
+static int _psy_tone_0dB[13]={
+/* 90,90,95,95,95,95,105,105,105,105,105,105, */
+ 90,90,90,95,95,95,95,105,105,105,105,105,105,
+};
+static int _psy_noise_suppress[13]={
+/* -20,-20,-24,-24,-24,-24,-30,-40,-40,-45,-45,-45, */
+ -20,-20,-20,-24,-24,-24,-24,-30,-40,-40,-42,-45,-45,
};
static vorbis_info_psy _psy_info_template={
@@ -506,11 +601,13 @@ static vorbis_info_psy _psy_info_templat
/* ath ****************/
-static int _psy_ath_floater[12]={
- -100,-100,-100,-100,-100,-100,-105,-105,-105,-105,-110,-120,
-};
-static int _psy_ath_abs[12]={
- -130,-130,-130,-130,-140,-140,-140,-140,-140,-140,-140,-150,
+static int _psy_ath_floater[13]={
+/* -100,-100,-100,-100,-100,-100,-105,-105,-105,-105,-110,-120, */
+ -100,-100,-100,-100,-100,-100,-100,-105,-105,-105,-105,-110,-120,
+};
+static int _psy_ath_abs[13]={
+/* -130,-130,-130,-130,-140,-140,-140,-140,-140,-140,-140,-150, */
+ -130,-130,-130,-130,-130,-135,-140,-140,-140,-140,-140,-140,-150,
};
/* stereo setup. These don't map directly to quality level, there's
@@ -522,14 +619,22 @@ static int _psy_ath_abs[12]={
/* various stereo possibilities */
/* stereo mode by base quality level */
-static adj_stereo _psy_stereo_modes_44[12]={
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 -1 */
- {{ 4, 4, 4, 4, 4, 4, 4, 3, 2, 2, 1, 0, 0, 0, 0},
+static adj_stereo _psy_stereo_modes_44[13]={
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 -2(addition mode) */
+ {{ 4, 4, 4, 4, 4, 4, 4, 4, 3, 2, 1, 0, 0, 0, 0},
+ { 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 6, 6, 5, 4, 3},
+ { 1, 2, 2, 2, 2, 3, 3, 4, 4, 4, 5, 6, 7, 8, 8},
+ { 10,10.5, 11,11.5, 12,12.5, 13, 99, 99, 99, 99, 99, 99, 99, 99}},
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 -1 */
+/*{{ 4, 4, 4, 4, 4, 4, 4, 3, 2, 2, 1, 0, 0, 0, 0},
{ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 4, 3},
{ 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 8, 8},
+ { 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},*/
+ {{ 4, 4, 4, 4, 4, 4, 4, 3, 2, 2, 1, 0, 0, 0, 0},
+ { 8, 8, 8, 8, 8, 7, 7, 6, 6, 6, 6, 6, 5, 4, 3},
+ { 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 8, 8},
{ 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
-
-/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 */
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 */
/*{{ 4, 4, 4, 4, 4, 4, 4, 3, 2, 2, 1, 0, 0, 0, 0},
{ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 4, 3},
{ 1, 2, 3, 4, 5, 5, 6, 6, 6, 6, 6, 7, 8, 8, 8},
@@ -538,76 +643,76 @@ static adj_stereo _psy_stereo_modes_44[1
{ 8, 8, 8, 8, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4, 3},
{ 1, 2, 3, 4, 4, 5, 6, 6, 6, 6, 6, 8, 8, 8, 8},
{ 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
-
-
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 */
- {{ 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0},
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 */
+/*{{ 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0},
{ 8, 8, 8, 8, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4, 3},
{ 1, 2, 3, 4, 4, 5, 6, 6, 6, 6, 6, 8, 8, 8, 8},
+ { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},*/
+ {{ 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0},
+ { 8, 8, 8, 8, 6, 6, 5, 4, 4, 4, 4, 4, 4, 3, 3},
+ { 1, 2, 3, 4, 4, 5, 6, 6, 6, 6, 6, 8, 8, 8, 8},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
-
-
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 */
- /* {{ 3, 3, 3, 3, 3, 3, 2, 2, 2, 1, 0, 0, 0, 0, 0},
- { 8, 8, 8, 6, 5, 5, 5, 5, 5, 5, 5, 4, 3, 2, 1},
- { 3, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8},
- { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}}, */
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 */
+/*{{ 3, 3, 3, 3, 3, 3, 2, 2, 2, 1, 0, 0, 0, 0, 0},
+ { 8, 8, 8, 6, 5, 5, 5, 5, 5, 5, 5, 4, 3, 2, 1},
+ { 3, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8},
+ { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}}, */
{{ 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 0, 0, 0, 0, 0},
{ 8, 8, 6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 3, 2, 1},
{ 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 */
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 */
{{ 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0},
{ 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2, 1},
{ 4, 4, 5, 6, 6, 6, 6, 6, 8, 8, 10, 10, 10, 10, 10},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 */
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 */
{{ 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 2, 1, 0},
{ 6, 6, 6, 8, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 */
- /* {{ 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- { 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0},
- { 6, 6, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10},
- { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},*/
- {{ 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 */
+/*{{ 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0},
+ { 6, 6, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+ { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},*/
+ {{ 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ { 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0},
{ 6, 7, 8, 8, 8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6 */
- /* {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- { 3, 3, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- { 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
- { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}}, */
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6 */
+/*{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ { 3, 3, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ { 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+ { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}}, */
{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 3, 3, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 8, 8, 8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7 */
- /* {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- { 3, 3, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- { 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
- { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},*/
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7 */
+/*{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ { 3, 3, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ { 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+ { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},*/
{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 3, 3, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 8, 8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8 */
- /* {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- { 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- { 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
- { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},*/
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8 */
+/*{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ { 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ { 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+ { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},*/
{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 9 */
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 9 */
{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 10 */
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 10 */
{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
@@ -615,14 +720,16 @@ static adj_stereo _psy_stereo_modes_44[1
};
/* tone master attenuation by base quality mode and bitrate tweak */
-static att3 _psy_tone_masteratt_44[12]={
- {{ 35, 21, 9}, 0, 0}, /* -1 */
- {{ 30, 20, 8}, -2, 1.25}, /* 0 */
- /* {{ 25, 14, 4}, 0, 0}, *//* 1 */
- {{ 25, 12, 2}, 0, 0}, /* 1 */
- /* {{ 20, 10, -2}, 0, 0}, *//* 2 */
- {{ 20, 9, -3}, 0, 0}, /* 2 */
- {{ 20, 9, -4}, 0, 0}, /* 3 */
+static att3 _psy_tone_masteratt_44[13]={
+ {{ 40, 32, 16}, 0, 0}, /* -2 */
+// {{ 35, 21, 9}, 0, 0}, /* -1 */
+ {{ 36, 25, 10}, 0, 0}, /* -1 */
+// {{ 30, 20, 8}, -2, 1.25}, /* 0 */
+ {{ 32, 20, 8}, 0, 0}, /* 0 */
+ {{ 25, 14, 4}, 0, 0}, /* 1 */
+ {{ 20, 10, -2}, 0, 0}, /* 2 */
+// {{ 20, 9, -4}, 0, 0}, /* 3 */
+ {{ 20, 10, -3}, 0, 0}, /* 3 */
{{ 20, 9, -4}, 0, 0}, /* 4 */
{{ 20, 6, -6}, 0, 0}, /* 5 */
{{ 20, 3, -10}, 0, 0}, /* 6 */
@@ -633,34 +740,50 @@ static att3 _psy_tone_masteratt_44[12]={
};
/* lowpass by mode **************/
-static double _psy_lowpass_44[12]={
+static double _psy_lowpass_44[13]={
/* 15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999. */
- 13.9,15.1,15.8,16.5,17.2,18.9,20.1,48.,999.,999.,999.,999.
+// 13.9,15.1,15.8,16.5,17.2,18.9,20.1,48.,999.,999.,999.,999.
+ 13.1,14.8,15.1,15.8,16.5,17.2,18.3,20.1,48.,999.,999.,999.,999.
};
/* noise normalization **********/
-static int _noise_start_short_44[11]={
+static int _noise_start_short_44[12]={
/* 16,16,16,16,32,32,9999,9999,9999,9999 */
- 32,16,16,16,32,9999,9999,9999,9999,9999,9999
+// 32,16,16,16,32,9999,9999,9999,9999,9999,9999
+ 32,32,16,16,32,64,9999,9999,9999,9999,9999,9999
};
-static int _noise_start_long_44[11]={
+static int _noise_start_long_44[12]={
/* 128,128,128,256,512,512,9999,9999,9999,9999 */
- 256,128,128,256,512,9999,9999,9999,9999,9999,9999
+// 256,128,128,256,512,9999,9999,9999,9999,9999,9999
+ 256,256,128,128,256,512,9999,9999,9999,9999,9999,9999
};
-static int _noise_part_short_44[11]={
- 8,8,8,8,8,8,8,8,8,8,8
+static int _noise_part_short_44[12]={
+/* 8,8,8,8,8,8,8,8,8,8,8 */
+ 8,8,8,8,8,8,8,8,8,8,8,8
};
-static int _noise_part_long_44[11]={
- 32,32,32,32,32,32,32,32,32,32,32
+static int _noise_part_long_44[12]={
+/* 32,32,32,32,32,32,32,32,32,32,32 */
+ 32,32,32,32,32,32,32,32,32,32,32,32
};
-static double _noise_thresh_44[11]={
+static double _noise_thresh_44[12]={
/* .2,.2,.3,.4,.5,.5,9999.,9999.,9999.,9999., */
- .2,.2,.2,.4,.6,9999.,9999.,9999.,9999.,9999.,9999.,
+// .2,.2,.2,.4,.6,9999.,9999.,9999.,9999.,9999.,9999.,
+ .16,.19,.19,.2,.35,.8,9999.,9999.,9999.,9999.,9999.,9999.,
};
static double _noise_thresh_5only[2]={
.5,.5,
};
+
+/* 32kHz only */
+static int _noise_start_short_32[12]={
+// 40,40,20,20,40,80,9999,9999,9999,9999,9999,9999
+ 48,48,24,24,40,80,9999,9999,9999,9999,9999,9999
+};
+static int _noise_start_long_32[12]={
+// 320,320,160,160,320,640,9999,9999,9999,9999,9999,9999
+ 320,320,160,160,320,640,9999,9999,9999,9999,9999,9999
+};
--- lib/modes/setup_8.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/setup_8.h 2007-08-02 12:25:50.000000000 +0200
@@ -18,32 +18,37 @@
#include "psych_8.h"
#include "residue_8.h"
-static int blocksize_8[2]={
- 512,512
+static int blocksize_8[3]={
+ 512,512,512
};
-static int _floor_mapping_8[2]={
- 6,6,
+static int _floor_mapping_8[3]={
+ 6,6,6
};
-static double rate_mapping_8[3]={
- 6000.,9000.,32000.,
+static double rate_mapping_8[4]={
+// 6000.,9000.,32000.,
+ 5000.,6000.,9000.,32000.,
};
-static double rate_mapping_8_uncoupled[3]={
- 8000.,14000.,42000.,
+static double rate_mapping_8_uncoupled[4]={
+// 8000.,14000.,42000.,
+ 8000.,10000.,14000.,42000.,
};
-static double quality_mapping_8[3]={
- -.1,.0,1.
+static double quality_mapping_8[4]={
+ -.2,-.1,.0,1.
};
-static double _psy_compand_8_mapping[3]={ 0., 1., 1.};
+//static double _psy_compand_8_mapping[3]={ 0., 1., 1.};
+static double _psy_compand_8_mapping[4]={ 0., 1., 2., 2.};
-static double _global_mapping_8[3]={ 1., 2., 3. };
+//static double _global_mapping_8[3]={ 1., 2., 3. };
+static double _global_mapping_8[4]={ 2., 2., 3., 4. };
ve_setup_data_template ve_setup_8_stereo={
- 2,
+// 2,
+ 3,
rate_mapping_8,
quality_mapping_8,
2,
@@ -94,7 +99,8 @@ ve_setup_data_template ve_setup_8_stereo
};
ve_setup_data_template ve_setup_8_uncoupled={
- 2,
+// 2,
+ 3,
rate_mapping_8_uncoupled,
quality_mapping_8,
-1,
--- lib/modes/setup_44.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/setup_44.h 2007-08-02 12:25:50.000000000 +0200
@@ -19,43 +19,47 @@
#include "modes/residue_44.h"
#include "modes/psych_44.h"
-static double rate_mapping_44_stereo[12]={
- 22500.,32000.,40000.,48000.,56000.,64000.,
+static double rate_mapping_44_stereo[13]={
+// 22500.,32000.,40000.,48000.,56000.,64000.,
+ 16000.,24000.,32000.,40000.,48000.,56000.,64000.,
80000.,96000.,112000.,128000.,160000.,250001.
};
-static double quality_mapping_44[12]={
- -.1,.0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1.0
+static double quality_mapping_44[13]={
+ -.2,-.1,.0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1.0
};
-static int blocksize_short_44[11]={
- 512,256,256,256,256,256,256,256,256,256,256
+static int blocksize_short_44[12]={
+ 512,512,256,256,256,256,256,256,256,256,256,256
};
-static int blocksize_long_44[11]={
- 4096,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048
+static int blocksize_long_44[12]={
+ 4096,4096,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048
};
-static double _psy_compand_short_mapping[12]={
- 0.5, 1., 1., 1.3, 1.6, 2., 2., 2., 2., 2., 2., 2.
+static double _psy_compand_short_mapping[13]={
+ 1., 1., 1., 1., 1.3, 1.6, 2., 2., 2., 2., 2., 2., 2.
};
-static double _psy_compand_long_mapping[12]={
- 3.5, 4., 4., 4.3, 4.6, 5., 5., 5., 5., 5., 5., 5.
+static double _psy_compand_long_mapping[13]={
+ 4., 4., 4., 4., 4.3, 4.6, 5., 5., 5., 5., 5., 5., 5.
};
-static double _global_mapping_44[12]={
+static double _global_mapping_44[13]={
/* 1., 1., 1.5, 2., 2., 2.5, 2.7, 3.0, 3.5, 4., 4. */
- 0., 1., 1., 1.5, 2., 2., 2.5, 2.7, 3.0, 3.7, 4., 4.
+// 0., 1., 1., 1.5, 2., 2., 2.5, 2.7, 3.0, 3.7, 4., 4.
+ 0., 1., 2., 2., 2.5, 3., 3., 3.5, 3.7, 4., 4., 5., 5. // low
+// 0., 1., 2., 2., 2.5, 3., 3.2, 4.0, 4.0, 4.0, 4.5, 5., 5. // high
};
-static int _floor_short_mapping_44[11]={
- 1,0,0,2,2,4,5,5,5,5,5
+static int _floor_short_mapping_44[12]={
+ 1,1,0,0,2,2,4,5,5,5,5,5
};
-static int _floor_long_mapping_44[11]={
- 8,7,7,7,7,7,7,7,7,7,7
+static int _floor_long_mapping_44[12]={
+ 8,8,7,7,7,7,7,7,7,7,7,7
};
ve_setup_data_template ve_setup_44_stereo={
- 11,
+// 11,
+ 12,
rate_mapping_44_stereo,
quality_mapping_44,
2,
--- lib/modes/residue_16.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/residue_16.h 2007-08-02 12:25:50.000000000 +0200
@@ -84,7 +84,8 @@ static vorbis_residue_template _res_16s_
&_resbook_16s_2,&_resbook_16s_2}
};
-static vorbis_mapping_template _mapres_template_16_stereo[3]={
+static vorbis_mapping_template _mapres_template_16_stereo[4]={
+ { _map_nominal, _res_16s_0 }, /* -1 */
{ _map_nominal, _res_16s_0 }, /* 0 */
{ _map_nominal, _res_16s_1 }, /* 1 */
{ _map_nominal, _res_16s_2 }, /* 2 */
@@ -156,7 +157,8 @@ static vorbis_residue_template _res_16u_
};
-static vorbis_mapping_template _mapres_template_16_uncoupled[3]={
+static vorbis_mapping_template _mapres_template_16_uncoupled[4]={
+ { _map_nominal_u, _res_16u_0 }, /* -1 */
{ _map_nominal_u, _res_16u_0 }, /* 0 */
{ _map_nominal_u, _res_16u_1 }, /* 1 */
{ _map_nominal_u, _res_16u_2 }, /* 2 */
--- lib/modes/residue_8.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/residue_8.h 2007-08-02 12:25:50.000000000 +0200
@@ -60,7 +60,8 @@ static vorbis_residue_template _res_8s_1
&_resbook_8s_1,&_resbook_8s_1},
};
-static vorbis_mapping_template _mapres_template_8_stereo[2]={
+static vorbis_mapping_template _mapres_template_8_stereo[3]={
+ { _map_nominal, _res_8s_0 }, /* -1 */
{ _map_nominal, _res_8s_0 }, /* 0 */
{ _map_nominal, _res_8s_1 }, /* 1 */
};
@@ -103,7 +104,8 @@ static vorbis_residue_template _res_8u_1
&_resbook_8u_1,&_resbook_8u_1},
};
-static vorbis_mapping_template _mapres_template_8_uncoupled[2]={
+static vorbis_mapping_template _mapres_template_8_uncoupled[3]={
+ { _map_nominal_u, _res_8u_0 }, /* -1 */
{ _map_nominal_u, _res_8u_0 }, /* 0 */
{ _map_nominal_u, _res_8u_1 }, /* 1 */
};
--- lib/modes/setup_44u.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/modes/setup_44u.h 2007-08-02 12:25:50.000000000 +0200
@@ -17,13 +17,15 @@
#include "modes/residue_44u.h"
-static double rate_mapping_44_un[12]={
- 32000.,48000.,60000.,70000.,80000.,86000.,
+static double rate_mapping_44_un[13]={
+// 32000.,48000.,60000.,70000.,80000.,86000.,
+ 28000.,40000.,48000.,60000.,70000.,80000.,86000.,
96000.,110000.,120000.,140000.,160000.,240001.
};
ve_setup_data_template ve_setup_44_uncoupled={
- 11,
+// 11,
+ 12,
rate_mapping_44_un,
quality_mapping_44,
-1,
--- lib/mapping0.c-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/mapping0.c 2007-08-02 12:25:50.000000000 +0200
@@ -246,11 +246,14 @@ static int mapping0_forward(vorbis_block
codec_setup_info *ci=vi->codec_setup;
private_state *b=vb->vd->backend_state;
vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal;
+ vorbis_info_floor1 *vif=ci->floor_param[vb->W];
int n=vb->pcmend;
int i,j,k;
int *nonzero = alloca(sizeof(*nonzero)*vi->channels);
float **gmdct = _vorbis_block_alloc(vb,vi->channels*sizeof(*gmdct));
+ float **gmdct_org = _vorbis_block_alloc(vb,vi->channels*sizeof(*gmdct_org));
+ float **res_org = _vorbis_block_alloc(vb,vi->channels*sizeof(*res_org));
int **ilogmaskch= _vorbis_block_alloc(vb,vi->channels*sizeof(*ilogmaskch));
int ***floor_posts = _vorbis_block_alloc(vb,vi->channels*sizeof(*floor_posts));
@@ -273,6 +276,8 @@ static int mapping0_forward(vorbis_block
float *logfft =pcm;
gmdct[i]=_vorbis_block_alloc(vb,n/2*sizeof(**gmdct));
+ gmdct_org[i]=_vorbis_block_alloc(vb,n/2*sizeof(**gmdct_org));
+ res_org[i]=_vorbis_block_alloc(vb,n/2*sizeof(**res_org));
scale_dB=todB(&scale) + .345; /* + .345 is a hack; the original
todB estimation used on IEEE 754
@@ -311,6 +316,7 @@ static int mapping0_forward(vorbis_block
/* transform the PCM data */
/* only MDCT right now.... */
mdct_forward(b->transform[vb->W][0],pcm,gmdct[i]);
+ memcpy(gmdct_org[i], gmdct[i], n/2*sizeof(**gmdct_org));
/* FFT yields more accurate tonal estimation (not phase sensitive) */
drft_forward(&b->fft_look[vb->W],pcm);
@@ -380,6 +386,11 @@ static int mapping0_forward(vorbis_block
float *logmdct =logfft+n/2;
float *logmask =logfft;
+
+ float *lastmdct = b->nblock+i*128;
+ float *tempmdct = b->tblock+i*128;
+
+ float *lowcomp = b->lownoise_compand_level+i;
vb->mode=modenumber;
@@ -419,7 +430,15 @@ static int mapping0_forward(vorbis_block
us a tonality estimate (the larger the value in the
'noise_depth' vector, the more tonal that area is) */
+ *lowcomp=
+ lb_loudnoise_fix(psy_look,
+ *lowcomp,
+ logmdct,
+ b->lW_modenumber,
+ blocktype, modenumber);
+
_vp_noisemask(psy_look,
+ *lowcomp,
logmdct,
noise); /* noise does not have by-frequency offset
bias applied yet */
@@ -467,7 +486,13 @@ static int mapping0_forward(vorbis_block
1,
logmask,
mdct,
- logmdct);
+ logmdct,
+ lastmdct, tempmdct,
+ *lowcomp,
+ vif->n,
+ blocktype, modenumber,
+ vb->nW,
+ b->lW_blocktype, b->lW_modenumber, b->lW_no);
#if 0
if(vi->channels==2){
@@ -510,7 +535,13 @@ static int mapping0_forward(vorbis_block
2,
logmask,
mdct,
- logmdct);
+ logmdct,
+ lastmdct, tempmdct,
+ *lowcomp,
+ vif->n,
+ blocktype, modenumber,
+ vb->nW,
+ b->lW_blocktype, b->lW_modenumber, b->lW_no);
#if 0
if(vi->channels==2){
@@ -533,7 +564,13 @@ static int mapping0_forward(vorbis_block
0,
logmask,
mdct,
- logmdct);
+ logmdct,
+ lastmdct, tempmdct,
+ *lowcomp,
+ vif->n,
+ blocktype, modenumber,
+ vb->nW,
+ b->lW_blocktype, b->lW_modenumber, b->lW_no);
#if 0
if(vi->channels==2)
@@ -600,11 +637,6 @@ static int mapping0_forward(vorbis_block
psy_look,
info,
mag_memo);
-
- hf_reduction(&ci->psy_g_param,
- psy_look,
- info,
- mag_memo);
}
memset(sortindex,0,sizeof(*sortindex)*vi->channels);
@@ -636,7 +668,9 @@ static int mapping0_forward(vorbis_block
for(i=0;i<vi->channels;i++){
int submap=info->chmuxlist[i];
float *mdct =gmdct[i];
+ float *mdct_org=gmdct_org[i];
float *res =vb->pcm[i];
+ float *resorgch=res_org[i];
int *ilogmask=ilogmaskch[i]=
_vorbis_block_alloc(vb,n/2*sizeof(**gmdct));
@@ -659,6 +693,14 @@ static int mapping0_forward(vorbis_block
res,
ci->psy_g_param.sliding_lowpass[vb->W][k]);
+ /* stereo threshold */
+ _vp_remove_floor(psy_look,
+ mdct_org,
+ ilogmask,
+ resorgch,
+ ci->psy_g_param.sliding_lowpass[vb->W][k]);
+
+
_vp_noise_normalize(psy_look,res,res+n/2,sortindex[i]);
@@ -691,7 +733,8 @@ static int mapping0_forward(vorbis_block
mag_sort,
ilogmaskch,
nonzero,
- ci->psy_g_param.sliding_lowpass[vb->W][k]);
+ ci->psy_g_param.sliding_lowpass[vb->W][k],
+ gmdct, res_org);
}
/* classify and encode by submap */
@@ -717,6 +760,11 @@ static int mapping0_forward(vorbis_block
couple_bundle,NULL,zerobundle,ch_in_bundle,classifications);
}
+ /* set last-window type & number */
+ if((blocktype == b->lW_blocktype) && (modenumber == b->lW_modenumber)) b->lW_no++;
+ else b->lW_no = 1;
+ b->lW_blocktype = blocktype;
+ b->lW_modenumber = modenumber;
/* ok, done encoding. Next protopacket. */
}
--- lib/masking.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/masking.h 2007-08-02 12:25:50.000000000 +0200
@@ -23,16 +23,29 @@
#define MAX_ATH 88
static float ATH[]={
- /*15*/ -51, -52, -53, -54, -55, -56, -57, -58,
- /*31*/ -59, -60, -61, -62, -63, -64, -65, -66,
- /*63*/ -67, -68, -69, -70, -71, -72, -73, -74,
- /*125*/ -75, -76, -77, -78, -80, -81, -82, -83,
- /*250*/ -84, -85, -86, -87, -88, -88, -89, -89,
- /*500*/ -90, -91, -91, -92, -93, -94, -95, -96,
- /*1k*/ -96, -97, -98, -98, -99, -99,-100,-100,
- /*2k*/ -101,-102,-103,-104,-106,-107,-107,-107,
- /*4k*/ -107,-105,-103,-102,-101, -99, -98, -96,
- /*8k*/ -95, -95, -96, -97, -96, -95, -93, -90,
+/* original ATH */
+ /*15*/ // -51, -52, -53, -54, -55, -56, -57, -58,
+ /*31*/ // -59, -60, -61, -62, -63, -64, -65, -66,
+ /*63*/ // -67, -68, -69, -70, -71, -72, -73, -74,
+ /*125*/ // -75, -76, -77, -78, -80, -81, -82, -83,
+ /*250*/ //-84, -85, -86, -87, -88, -88, -89, -89,
+ /*500*/ //-90, -91, -91, -92, -93, -94, -95, -96,
+ /*1k*/ //-96, -97, -98, -98, -99, -99,-100,-100,
+ /*2k*/ //-101,-102,-103,-104,-106,-107,-107,-107,
+ /*4k*/ //-107,-105,-103,-102,-101, -99, -98, -96,
+ /*8k*/ //-95, -95, -96, -97, -96, -95, -93, -90,
+ /*16k*/ //-80, -70, -50, -40, -30, -30, -30, -30
+/*Aoyumi's ATH (v6) */
+ /*15*/ -31, -33, -35, -37, -39, -41, -43, -45,
+ /*31*/ -47, -49, -51, -53, -55, -57, -59, -61,
+ /*63*/ -63, -65, -67, -69, -71, -73, -75, -77,
+ /*125*/ -79, -81, -83, -84, -85, -86, -87, -88,
+ /*250*/ -89, -90, -91, -92, -93, -94, -95, -96,
+ /*500*/ -96, -97, -97, -97, -98, -98, -98, -99,
+ /*1k*/ -98, -97, -97, -98, -99,-100,-101,-101,
+ /*2k*/ -102,-103,-104,-105,-106,-106,-107,-107,
+ /*4k*/ -105,-104,-103,-102,-101, -99, -98, -97,
+ /*8k*/ -96, -95, -95, -96, -97, -97, -93, -89,
/*16k*/ -80, -70, -50, -40, -30, -30, -30, -30
};
--- lib/psy.c-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/psy.c 2007-08-02 12:25:50.000000000 +0200
@@ -30,8 +30,34 @@
#include "misc.h"
#define NEGINF -9999.f
-static double stereo_threshholds[]={0.0, .5, 1.0, 1.5, 2.5, 4.5, 8.5, 16.5, 9e10};
-static double stereo_threshholds_limited[]={0.0, .5, 1.0, 1.5, 2.0, 2.5, 4.5, 8.5, 9e10};
+
+/*
+ rephase = reverse phase limit (postpoint)
+ 0 1 2 3 4 5 6 7 8 */
+static double stereo_threshholds[]= {0.0, 0.5, 1.0, 1.5, 2.5, 4.5, 8.5,16.5, 9e10};
+static double stereo_threshholds_rephase[]= {0.0, 0.5, 0.5, 1.0, 1.5, 1.5, 2.5, 2.5, 9e10};
+
+static double stereo_threshholds_low[]= {0.0, 0.5, 0.5, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0};
+static double stereo_threshholds_high[]= {0.0, 0.5, 0.5, 0.5, 1.0, 3.0, 5.5, 8.5, 0.0};
+
+
+static int m3n32[] = {21,13,10,4};
+static int m3n44[] = {15,9,7,3};
+static int m3n48[] = {14,8,6,3};
+
+static int temp_bfn[128] = {
+ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,
+ 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
+ 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,11,11,11,11,
+12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,
+16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,
+20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,
+24,24,24,24,25,25,25,24,23,22,21,20,19,18,17,16,
+15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,
+};
+
+static float nnmid_th=0.2;
+
vorbis_look_psy_global *_vp_global_look(vorbis_info *vi){
codec_setup_info *ci=vi->codec_setup;
@@ -284,12 +310,56 @@ void _vp_psy_init(vorbis_look_psy *p,vor
p->n=n;
p->rate=rate;
- /* AoTuV HF weighting */
- p->m_val = 1.;
- if(rate < 26000) p->m_val = 0;
- else if(rate < 38000) p->m_val = .94; /* 32kHz */
- else if(rate > 46000) p->m_val = 1.275; /* 48kHz */
-
+ /* AoTuV HF weighting etc. */
+ p->n25p=n/4;
+ p->n33p=n/3;
+ p->n75p=n*3/4;
+ if(rate < 26000){
+ /* below 26kHz */
+ p->m_val = 0;
+ for(i=0; i<4; i++) p->m3n[i] = 0;
+ p->tonecomp_endp=0; // dummy
+ p->tonecomp_thres=.25;
+ p->st_freqlimit=n;
+ p->min_nn_lp=0;
+ }else if(rate < 38000){
+ /* 32kHz */
+ p->m_val = .93;
+ for(i=0; i<4; i++) p->m3n[i] = m3n32[i];
+ if(n==128) { p->tonecomp_endp= 124; p->tonecomp_thres=.5;
+ p->st_freqlimit=n; p->min_nn_lp= 0;}
+ else if(n==256) { p->tonecomp_endp= 248; p->tonecomp_thres=.7;
+ p->st_freqlimit=n; p->min_nn_lp= 0;}
+ else if(n==1024){ p->tonecomp_endp= 992; p->tonecomp_thres=.5;
+ p->st_freqlimit=n; p->min_nn_lp= 832;}
+ else if(n==2048){ p->tonecomp_endp=1984; p->tonecomp_thres=.7;
+ p->st_freqlimit=n; p->min_nn_lp=1664;}
+ }else if(rate > 46000){
+ /* 48kHz */
+ p->m_val = 1.205;
+ for(i=0; i<4; i++) p->m3n[i] = m3n48[i];
+ if(n==128) { p->tonecomp_endp= 83; p->tonecomp_thres=.5;
+ p->st_freqlimit= 89; p->min_nn_lp= 0;}
+ else if(n==256) { p->tonecomp_endp= 166; p->tonecomp_thres=.7;
+ p->st_freqlimit= 178; p->min_nn_lp= 0;}
+ else if(n==1024){ p->tonecomp_endp= 664; p->tonecomp_thres=.5;
+ p->st_freqlimit= 712; p->min_nn_lp= 576;}
+ else if(n==2048){ p->tonecomp_endp=1328; p->tonecomp_thres=.7;
+ p->st_freqlimit=1424; p->min_nn_lp=1152;}
+ }else{
+ /* 44.1kHz */
+ p->m_val = 1.;
+ for(i=0; i<4; i++) p->m3n[i] = m3n44[i];
+ if(n==128) { p->tonecomp_endp= 90; p->tonecomp_thres=.5;
+ p->st_freqlimit= 96; p->min_nn_lp= 0;}
+ else if(n==256) { p->tonecomp_endp= 180; p->tonecomp_thres=.7;
+ p->st_freqlimit= 192; p->min_nn_lp= 0;}
+ else if(n==1024){ p->tonecomp_endp= 720; p->tonecomp_thres=.5;
+ p->st_freqlimit= 768; p->min_nn_lp= 608;}
+ else if(n==2048){ p->tonecomp_endp=1440; p->tonecomp_thres=.7;
+ p->st_freqlimit=1536; p->min_nn_lp=1216;}
+ }
+
/* set up the lookups for a given blocksize and sample rate */
for(i=0,j=0;i<MAX_ATH-1;i++){
@@ -693,70 +763,70 @@ static void bark_noise_hybridmp(int n,co
}
static float FLOOR1_fromdB_INV_LOOKUP[256]={
- 0.F, 8.81683e+06F, 8.27882e+06F, 7.77365e+06F,
- 7.29930e+06F, 6.85389e+06F, 6.43567e+06F, 6.04296e+06F,
- 5.67422e+06F, 5.32798e+06F, 5.00286e+06F, 4.69759e+06F,
- 4.41094e+06F, 4.14178e+06F, 3.88905e+06F, 3.65174e+06F,
- 3.42891e+06F, 3.21968e+06F, 3.02321e+06F, 2.83873e+06F,
- 2.66551e+06F, 2.50286e+06F, 2.35014e+06F, 2.20673e+06F,
- 2.07208e+06F, 1.94564e+06F, 1.82692e+06F, 1.71544e+06F,
- 1.61076e+06F, 1.51247e+06F, 1.42018e+06F, 1.33352e+06F,
- 1.25215e+06F, 1.17574e+06F, 1.10400e+06F, 1.03663e+06F,
- 973377.F, 913981.F, 858210.F, 805842.F,
- 756669.F, 710497.F, 667142.F, 626433.F,
- 588208.F, 552316.F, 518613.F, 486967.F,
- 457252.F, 429351.F, 403152.F, 378551.F,
- 355452.F, 333762.F, 313396.F, 294273.F,
- 276316.F, 259455.F, 243623.F, 228757.F,
- 214798.F, 201691.F, 189384.F, 177828.F,
- 166977.F, 156788.F, 147221.F, 138237.F,
- 129802.F, 121881.F, 114444.F, 107461.F,
- 100903.F, 94746.3F, 88964.9F, 83536.2F,
- 78438.8F, 73652.5F, 69158.2F, 64938.1F,
- 60975.6F, 57254.9F, 53761.2F, 50480.6F,
- 47400.3F, 44507.9F, 41792.0F, 39241.9F,
- 36847.3F, 34598.9F, 32487.7F, 30505.3F,
- 28643.8F, 26896.0F, 25254.8F, 23713.7F,
- 22266.7F, 20908.0F, 19632.2F, 18434.2F,
- 17309.4F, 16253.1F, 15261.4F, 14330.1F,
- 13455.7F, 12634.6F, 11863.7F, 11139.7F,
- 10460.0F, 9821.72F, 9222.39F, 8659.64F,
- 8131.23F, 7635.06F, 7169.17F, 6731.70F,
- 6320.93F, 5935.23F, 5573.06F, 5232.99F,
- 4913.67F, 4613.84F, 4332.30F, 4067.94F,
- 3819.72F, 3586.64F, 3367.78F, 3162.28F,
- 2969.31F, 2788.13F, 2617.99F, 2458.24F,
- 2308.24F, 2167.39F, 2035.14F, 1910.95F,
- 1794.35F, 1684.85F, 1582.04F, 1485.51F,
- 1394.86F, 1309.75F, 1229.83F, 1154.78F,
- 1084.32F, 1018.15F, 956.024F, 897.687F,
- 842.910F, 791.475F, 743.179F, 697.830F,
- 655.249F, 615.265F, 577.722F, 542.469F,
- 509.367F, 478.286F, 449.101F, 421.696F,
- 395.964F, 371.803F, 349.115F, 327.812F,
- 307.809F, 289.026F, 271.390F, 254.830F,
- 239.280F, 224.679F, 210.969F, 198.096F,
- 186.008F, 174.658F, 164.000F, 153.993F,
- 144.596F, 135.773F, 127.488F, 119.708F,
- 112.404F, 105.545F, 99.1046F, 93.0572F,
- 87.3788F, 82.0469F, 77.0404F, 72.3394F,
- 67.9252F, 63.7804F, 59.8885F, 56.2341F,
- 52.8027F, 49.5807F, 46.5553F, 43.7144F,
- 41.0470F, 38.5423F, 36.1904F, 33.9821F,
- 31.9085F, 29.9614F, 28.1332F, 26.4165F,
- 24.8045F, 23.2910F, 21.8697F, 20.5352F,
- 19.2822F, 18.1056F, 17.0008F, 15.9634F,
- 14.9893F, 14.0746F, 13.2158F, 12.4094F,
- 11.6522F, 10.9411F, 10.2735F, 9.64662F,
- 9.05798F, 8.50526F, 7.98626F, 7.49894F,
- 7.04135F, 6.61169F, 6.20824F, 5.82941F,
- 5.47370F, 5.13970F, 4.82607F, 4.53158F,
- 4.25507F, 3.99542F, 3.75162F, 3.52269F,
- 3.30774F, 3.10590F, 2.91638F, 2.73842F,
- 2.57132F, 2.41442F, 2.26709F, 2.12875F,
- 1.99885F, 1.87688F, 1.76236F, 1.65482F,
- 1.55384F, 1.45902F, 1.36999F, 1.28640F,
- 1.20790F, 1.13419F, 1.06499F, 1.F
+ 0.F, 8.81683e+06F, 8.27882e+06F, 7.77365e+06F, // 1-4
+ 7.29930e+06F, 6.85389e+06F, 6.43567e+06F, 6.04296e+06F, // 5-8
+ 5.67422e+06F, 5.32798e+06F, 5.00286e+06F, 4.69759e+06F, // 9-12
+ 4.41094e+06F, 4.14178e+06F, 3.88905e+06F, 3.65174e+06F, // 13-16
+ 3.42891e+06F, 3.21968e+06F, 3.02321e+06F, 2.83873e+06F, // 17-20
+ 2.66551e+06F, 2.50286e+06F, 2.35014e+06F, 2.20673e+06F, // 21-24
+ 2.07208e+06F, 1.94564e+06F, 1.82692e+06F, 1.71544e+06F, // 25-28
+ 1.61076e+06F, 1.51247e+06F, 1.42018e+06F, 1.33352e+06F, // 29-32
+ 1.25215e+06F, 1.17574e+06F, 1.10400e+06F, 1.03663e+06F, // 33-36
+ 973377.F, 913981.F, 858210.F, 805842.F, // 37-40
+ 756669.F, 710497.F, 667142.F, 626433.F, // 41-44
+ 588208.F, 552316.F, 518613.F, 486967.F, // 45-48
+ 457252.F, 429351.F, 403152.F, 378551.F, // 49-52
+ 355452.F, 333762.F, 313396.F, 294273.F, // 53-56
+ 276316.F, 259455.F, 243623.F, 228757.F, // 57-60
+ 214798.F, 201691.F, 189384.F, 177828.F, // 61-64
+ 166977.F, 156788.F, 147221.F, 138237.F, // 65-68
+ 129802.F, 121881.F, 114444.F, 107461.F, // 69-72
+ 100903.F, 94746.3F, 88964.9F, 83536.2F, // 73-76
+ 78438.8F, 73652.5F, 69158.2F, 64938.1F, // 77-80
+ 60975.6F, 57254.9F, 53761.2F, 50480.6F, // 81-84
+ 47400.3F, 44507.9F, 41792.0F, 39241.9F, // 85-88
+ 36847.3F, 34598.9F, 32487.7F, 30505.3F, // 89-92
+ 28643.8F, 26896.0F, 25254.8F, 23713.7F, // 93-96
+ 22266.7F, 20908.0F, 19632.2F, 18434.2F, // 97-100
+ 17309.4F, 16253.1F, 15261.4F, 14330.1F, // 101-104
+ 13455.7F, 12634.6F, 11863.7F, 11139.7F, // 105-108
+ 10460.0F, 9821.72F, 9222.39F, 8659.64F, // 109-112
+ 8131.23F, 7635.06F, 7169.17F, 6731.70F, // 113-116
+ 6320.93F, 5935.23F, 5573.06F, 5232.99F, // 117-120
+ 4913.67F, 4613.84F, 4332.30F, 4067.94F, // 121-124
+ 3819.72F, 3586.64F, 3367.78F, 3162.28F, // 125-128
+ 2969.31F, 2788.13F, 2617.99F, 2458.24F, // 129-132
+ 2308.24F, 2167.39F, 2035.14F, 1910.95F, // 133-136
+ 1794.35F, 1684.85F, 1582.04F, 1485.51F, // 137-140
+ 1394.86F, 1309.75F, 1229.83F, 1154.78F, // 141-144
+ 1084.32F, 1018.15F, 956.024F, 897.687F, // 145-148
+ 842.910F, 791.475F, 743.179F, 697.830F, // 149-152
+ 655.249F, 615.265F, 577.722F, 542.469F, // 153-156
+ 509.367F, 478.286F, 449.101F, 421.696F, // 157-160
+ 395.964F, 371.803F, 349.115F, 327.812F, // 161-164
+ 307.809F, 289.026F, 271.390F, 254.830F, // 165-168
+ 239.280F, 224.679F, 210.969F, 198.096F, // 169-172
+ 186.008F, 174.658F, 164.000F, 153.993F, // 173-176
+ 144.596F, 135.773F, 127.488F, 119.708F, // 177-180
+ 112.404F, 105.545F, 99.1046F, 93.0572F, // 181-184
+ 87.3788F, 82.0469F, 77.0404F, 72.3394F, // 185-188
+ 67.9252F, 63.7804F, 59.8885F, 56.2341F, // 189-192
+ 52.8027F, 49.5807F, 46.5553F, 43.7144F, // 193-196
+ 41.0470F, 38.5423F, 36.1904F, 33.9821F, // 197-200
+ 31.9085F, 29.9614F, 28.1332F, 26.4165F, // 201-204
+ 24.8045F, 23.2910F, 21.8697F, 20.5352F, // 205-208
+ 19.2822F, 18.1056F, 17.0008F, 15.9634F, // 209-212
+ 14.9893F, 14.0746F, 13.2158F, 12.4094F, // 213-216
+ 11.6522F, 10.9411F, 10.2735F, 9.64662F, // 217-220
+ 9.05798F, 8.50526F, 7.98626F, 7.49894F, // 221-224
+ 7.04135F, 6.61169F, 6.20824F, 5.82941F, // 225-228
+ 5.47370F, 5.13970F, 4.82607F, 4.53158F, // 229-232
+ 4.25507F, 3.99542F, 3.75162F, 3.52269F, // 233-236
+ 3.30774F, 3.10590F, 2.91638F, 2.73842F, // 237-240
+ 2.57132F, 2.41442F, 2.26709F, 2.12875F, // 241-244
+ 1.99885F, 1.87688F, 1.76236F, 1.65482F, // 245-248
+ 1.55384F, 1.45902F, 1.36999F, 1.28640F, // 249-252
+ 1.20790F, 1.13419F, 1.06499F, 1.F // 253-256
};
void _vp_remove_floor(vorbis_look_psy *p,
@@ -779,6 +849,7 @@ void _vp_remove_floor(vorbis_look_psy *p
}
void _vp_noisemask(vorbis_look_psy *p,
+ float noise_compand_level,
float *logmdct,
float *logmask){
@@ -817,7 +888,19 @@ void _vp_noisemask(vorbis_look_psy *p,
}
#endif
- for(i=0;i<n;i++){
+ /* aoTuV M5 extension */
+ i=0;
+ if((p->vi->noisecompand_high[NOISE_COMPAND_LEVELS-1] > 1) && (noise_compand_level > 0)){
+ int thter = p->n33p;
+ for(;i<thter;i++){
+ int dB=logmask[i]+.5;
+ if(dB>=NOISE_COMPAND_LEVELS)dB=NOISE_COMPAND_LEVELS-1;
+ if(dB<0)dB=0;
+ logmask[i]= work[i]+p->vi->noisecompand[dB]-
+ ((p->vi->noisecompand[dB]-p->vi->noisecompand_high[dB])*noise_compand_level);
+ }
+ }
+ for(;i<n;i++){
int dB=logmask[i]+.5;
if(dB>=NOISE_COMPAND_LEVELS)dB=NOISE_COMPAND_LEVELS-1;
if(dB<0)dB=0;
@@ -857,18 +940,172 @@ void _vp_offset_and_mix(vorbis_look_psy
int offset_select,
float *logmask,
float *mdct,
- float *logmdct){
- int i,n=p->n;
- float de, coeffi, cx;/* AoTuV */
+ float *logmdct,
+ float *lastmdct, float *tempmdct,
+ float low_compand,
+ int end_block,
+ int blocktype, int modenumber,
+ int nW_modenumber,
+ int lW_blocktype, int lW_modenumber, int lW_no){
+
+ int i,j,n=p->n;
+ int m2_sw=0, padth; /* aoTuV for M2 */
+ int it_sw, *m3n, m3_count; /* aoTuV for M3 */
+ int m4_end, lp_pos, m4_start; /* aoTuV for M4 */
+ float de, coeffi, cx; /* aoTuV for M1 */
+ float toneth; /* aoTuV for M2 */
+ float noise_rate, noise_rate_low, noise_center, rate_mod; /* aoTuV for M3 */
+ float m4_thres; /* aoTuV for M4 */
float toneatt=p->vi->tone_masteratt[offset_select];
cx = p->m_val;
+ m3n = p->m3n;
+ m4_start=p->vi->normal_start;
+ m4_end = p->tonecomp_endp;
+ m4_thres = p->tonecomp_thres;
+ lp_pos=9999;
+
+ end_block+=p->vi->normal_partition;
+ if(end_block>n)end_block=n;
+
+ /* Collapse of low(mid) frequency is prevented. (for 32/44/48kHz q-2) */
+ if(low_compand<0 || toneatt<25.)low_compand=0;
+ else low_compand*=(toneatt-25.);
+
+ /** @ M2 PRE **/
+ if(p->vi->normal_thresh<.48){
+ if((cx > 0.5) && !modenumber && blocktype && (n==128)){
+ if(p->vi->normal_thresh>.35) padth = 10+(int)(p->vi->flacint*100);
+ else padth = 10;
+ m2_sw=1;
+ }
+ }
+
+ /** @ M3 PRE **/
+ m3_count = 3;
+ if(toneatt < 3) m3_count = 2; // q6~
+ if((n == 128) && !modenumber && !blocktype){
+ if(!lW_blocktype && !lW_modenumber){ /* last window "short" - type "impulse" */
+ if(lW_no < 8){
+ /* impulse - @impulse case1 */
+ noise_rate = 0.7-(float)(lW_no-1)/17;
+ noise_center = (float)(lW_no*m3_count);
+ }else{
+ /* impulse - @impulse case2 */
+ noise_rate = 0.3;
+ noise_center = 25;
+ if((lW_no*m3_count) < 24) noise_center = lW_no*m3_count;
+ }
+ if(offset_select == 1){
+ for(i=0; i<128; i++) tempmdct[i] -= 5;
+ }
+ }else{ /* non_impulse - @Short(impulse) case */
+ noise_rate = 0.7;
+ noise_center = 0;
+ if(offset_select == 1){
+ for(i=0; i<128; i++) tempmdct[i] = lastmdct[i] - 5;
+ }
+ }
+ noise_rate_low = 0;
+ it_sw = 1;
+ }else{
+ it_sw = 0;
+ }
+ /** @ M3&M4 PRE **/
+ if(cx < 0.5){
+ it_sw = 0; /* for M3 */
+ m4_end=end_block; /* for M4 */
+ }else if(p->vi->normal_thresh>1.){
+ m4_start = 9999;
+ }else{
+ if(m4_end>end_block)lp_pos=m4_end;
+ else lp_pos=end_block;
+ }
+
for(i=0;i<n;i++){
float val= noise[i]+p->noiseoffset[offset_select][i];
+ float tval= tone[i]+toneatt;
+ if(i<=m4_start)tval-=low_compand;
if(val>p->vi->noisemaxsupp)val=p->vi->noisemaxsupp;
- logmask[i]=max(val,tone[i]+toneatt);
-
+
+ /* AoTuV */
+ /** @ M2 MAIN **
+ floor is pulled below suitably. (padding block only) (#2)
+ by Aoyumi @ 2006/06/14
+ */
+ if(m2_sw){
+ // the conspicuous low level pre-echo of the padding block origin is reduced.
+ if((logmdct[i]-lastmdct[i]) > 20){
+ if(i > m3n[3]) val -= (logmdct[i]-lastmdct[i]-20)/padth;
+ else val -= (logmdct[i]-lastmdct[i]-20)/(padth+padth);
+ }
+ }
+
+ /* AoTuV */
+ /** @ M3 MAIN **
+ Dynamic impulse block noise control. (#4)
+ 48/44.1/32kHz only.
+ by Aoyumi @ 2006/02/02
+ */
+ if(it_sw){
+ for(j=1; j<=temp_bfn[i]; j++){
+ float tempbuf = logmdct[i]-(75/temp_bfn[i]*j)-5;
+ if( (tempmdct[i+j] < tempbuf) && (tempmdct[i+j] < (logmdct[i+j]-5)) )
+ tempmdct[i+j] = logmdct[i+j] - 5;
+ }
+ if(val > tval){
+ if( (val>lastmdct[i]) && (logmdct[i]>(tempmdct[i]+noise_center)) ){
+ float valmask=0;
+ tempmdct[i] = logmdct[i];
+
+ if(logmdct[i]>lastmdct[i]){
+ rate_mod = noise_rate;
+ }else{
+ rate_mod = noise_rate_low;
+ }
+ if(i > m3n[1]){
+ if((val-tval)>30) valmask=((val-tval-30)/10+30)*rate_mod;
+ else valmask=(val-tval)*rate_mod;
+ }else if(i > m3n[2]){
+ if((val-tval)>20) valmask=((val-tval-20)/10+20)*rate_mod;
+ else valmask=(val-tval)*rate_mod;
+ }else if(i > m3n[3]){
+ if((val-tval)>10) valmask=((val-tval-10)/10+10)*rate_mod*0.5;
+ else valmask=(val-tval)*rate_mod*0.5;
+ }else{
+ if((val-tval)>10) valmask=((val-tval-10)/10+10)*rate_mod*0.3;
+ else valmask=(val-tval)*rate_mod*0.3;
+ }
+ if((val-valmask)>lastmdct[i])val-=valmask;
+ else val=lastmdct[i];
+ }
+ }
+ }
+
+ /* This affects calculation of a floor curve. */
+ if(i>=lp_pos)logmdct[i]=-160;
+
+ /* AoTuV */
+ /** @ M4 MAIN **
+ The purpose of this portion is working Noise Normalization more correctly.
+ (There is this in order to prevent extreme boost of floor)
+ m4_start = start point
+ m4_end = end point
+ m4_thres = threshold
+ by Aoyumi @ 2006/03/20
+ */
+ //logmask[i]=max(val,tval);
+ if(val>tval){
+ logmask[i]=val;
+ }else if((i>m4_start) && (i<m4_end) && (logmdct[i]>-140)){
+ if(logmdct[i]>val){
+ if(logmdct[i]<tval)tval-=(tval-val)*m4_thres;
+ }else{
+ if(val<tval)tval-=(tval-val)*m4_thres;
+ }
+ logmask[i]=tval;
+ }else logmask[i]=tval;
/* AoTuV */
/** @ M1 **
@@ -907,6 +1144,24 @@ void _vp_offset_and_mix(vorbis_look_psy
}
}
+
+ /** @ M3 SET lastmdct **/
+ if(offset_select == 1){
+ if(n == 1024){
+ if(!nW_modenumber){
+ for(i=0; i<128; i++){
+ lastmdct[i] = logmdct[i*8];
+ for(j=1; j<8; j++){
+ if(lastmdct[i] > logmdct[i*8+j]){
+ lastmdct[i] = logmdct[i*8+j];
+ }
+ }
+ }
+ }
+ }else if(n == 128){
+ for(i=0; i<128; i++) lastmdct[i] = logmdct[i];
+ }
+ }
}
float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd){
@@ -958,7 +1213,7 @@ static void precomputed_couple_point(flo
int test=(floorA>floorB)-1;
int offset=31-abs(floorA-floorB);
- float floormag=hypot_lookup[((offset<0)-1)&offset]+1.f;
+ float floormag=hypot_lookup[((offset<0)-1)&offset]+1.f; // floormag = 0.990065 ~ 0.707107
floormag*=FLOOR1_fromdB_INV_LOOKUP[(floorB&test)|(floorA&(~test))];
@@ -992,6 +1247,22 @@ static float round_hypot(float a, float
if(-a>b)return -sqrt(a*a+b*b);
return sqrt(b*b+a*a);
}
+/* modified hypot by aoyumi
+ better method should be found. */
+static float min_indemnity_dipole_hypot(float a, float b){
+ float thnor=0.92;
+ float threv=0.84;
+ float a2 = a*a;
+ float b2 = b*b;
+ if(a>0.){
+ if(b>0.)return sqrt(a2+b2*thnor);
+ if(a>-b)return sqrt(a2-b2+b2*threv);
+ return -sqrt(b2-a2+a2*threv);
+ }
+ if(b<0.)return -sqrt(a2+b2*thnor);
+ if(-a>b)return -sqrt(a2-b2+b2*threv);
+ return sqrt(b2-a2+a2*threv);
+}
/* revert to round hypot for now */
float **_vp_quantize_couple_memo(vorbis_block *vb,
@@ -1004,16 +1275,27 @@ float **_vp_quantize_couple_memo(vorbis_
float **ret=_vorbis_block_alloc(vb,vi->coupling_steps*sizeof(*ret));
int limit=g->coupling_pointlimit[p->vi->blockflag][PACKETBLOBS/2];
- for(i=0;i<vi->coupling_steps;i++){
- float *mdctM=mdct[vi->coupling_mag[i]];
- float *mdctA=mdct[vi->coupling_ang[i]];
- ret[i]=_vorbis_block_alloc(vb,n*sizeof(**ret));
- for(j=0;j<limit;j++)
- ret[i][j]=dipole_hypot(mdctM[j],mdctA[j]);
- for(;j<n;j++)
- ret[i][j]=round_hypot(mdctM[j],mdctA[j]);
+ if(1){ // set new hypot
+ for(i=0;i<vi->coupling_steps;i++){
+ float *mdctM=mdct[vi->coupling_mag[i]];
+ float *mdctA=mdct[vi->coupling_ang[i]];
+
+ ret[i]=_vorbis_block_alloc(vb,n*sizeof(**ret));
+ for(j=0;j<n;j++)
+ ret[i][j]=min_indemnity_dipole_hypot(mdctM[j],mdctA[j]);
+ }
+ }else{
+ for(i=0;i<vi->coupling_steps;i++){
+ float *mdctM=mdct[vi->coupling_mag[i]];
+ float *mdctA=mdct[vi->coupling_ang[i]];
+
+ ret[i]=_vorbis_block_alloc(vb,n*sizeof(**ret));
+ for(j=0;j<limit;j++)
+ ret[i][j]=dipole_hypot(mdctM[j],mdctA[j]);
+ for(;j<n;j++)
+ ret[i][j]=round_hypot(mdctM[j],mdctA[j]);
+ }
}
-
return(ret);
}
@@ -1024,12 +1306,130 @@ static int apsort(const void *a, const v
return (f1<f2)-(f1>f2);
}
+/*** optimization of sort (for 8 or 32 element) ***/
+#ifdef OPT_SORT
+#define C(o,a,b)\
+ (fabs(data[o+a])>=fabs(data[o+b]))
+#define O(o,a,b,c,d)\
+ {n[o]=o+a;n[o+1]=o+b;n[o+2]=o+c;n[o+3]=o+d;}
+#define SORT4(o)\
+ if(C(o,2,3))if(C(o,0,1))if(C(o,0,2))if(C(o,1,2))O(o,0,1,2,3)\
+ else if(C(o,1,3))O(o,0,2,1,3)\
+ else O(o,0,2,3,1)\
+ else if(C(o,0,3))if(C(o,1,3))O(o,2,0,1,3)\
+ else O(o,2,0,3,1)\
+ else O(o,2,3,0,1)\
+ else if(C(o,1,2))if(C(o,0,2))O(o,1,0,2,3)\
+ else if(C(o,0,3))O(o,1,2,0,3)\
+ else O(o,1,2,3,0)\
+ else if(C(o,1,3))if(C(o,0,3))O(o,2,1,0,3)\
+ else O(o,2,1,3,0)\
+ else O(o,2,3,1,0)\
+ else if(C(o,0,1))if(C(o,0,3))if(C(o,1,3))O(o,0,1,3,2)\
+ else if(C(o,1,2))O(o,0,3,1,2)\
+ else O(o,0,3,2,1)\
+ else if(C(o,0,2))if(C(o,1,2))O(o,3,0,1,2)\
+ else O(o,3,0,2,1)\
+ else O(o,3,2,0,1)\
+ else if(C(o,1,3))if(C(o,0,3))O(o,1,0,3,2)\
+ else if(C(o,0,2))O(o,1,3,0,2)\
+ else O(o,1,3,2,0)\
+ else if(C(o,1,2))if(C(o,0,2))O(o,3,1,0,2)\
+ else O(o,3,1,2,0)\
+ else O(o,3,2,1,0)
+
+static void sortindex_fix8(int *index,
+ float *data,
+ int offset){
+ int i,j,k,n[8];
+ index+=offset;
+ data+=offset;
+ SORT4(0)
+ SORT4(4)
+ j=0;k=4;
+ for(i=0;i<8;i++)
+ index[i]=n[(k>=8)||(j<4)&&C(0,n[j],n[k])?j++:k++]+offset;
+}
+
+static void sortindex_fix32(int *index,
+ float *data,
+ int offset){
+ int i,j,k,n[32];
+ for(i=0;i<32;i+=8)
+ sortindex_fix8(index,data,offset+i);
+ index+=offset;
+ for(i=j=0,k=8;i<16;i++)
+ n[i]=index[(k>=16)||(j<8)&&C(0,index[j],index[k])?j++:k++];
+ for(i=j=16,k=24;i<32;i++)
+ n[i]=index[(k>=32)||(j<24)&&C(0,index[j],index[k])?j++:k++];
+ for(i=j=0,k=16;i<32;i++)
+ index[i]=n[(k>=32)||(j<16)&&C(0,n[j],n[k])?j++:k++];
+}
+
+static void sortindex_shellsort(int *index,
+ float *data,
+ int offset,
+ int count){
+ int gap,pos,left,right,i,j;
+ index+=offset;
+ for(i=0;i<count;i++)index[i]=i+offset;
+ gap=1;
+ while (gap<=count)gap=gap*3+1;
+ gap/=3;
+ if(gap>=4)gap/=3;
+ while(gap>0){
+ for(pos=gap;pos<count;pos++){
+ for(left=pos-gap;left>=0;left-=gap){
+ i=index[left];j=index[left+gap];
+ if(!C(0,i,j)){
+ index[left]=j;
+ index[left+gap]=i;
+ }else break;
+ }
+ }
+ gap/=3;
+ }
+}
+
+static void sortindex(int *index,
+ float *data,
+ int offset,
+ int count){
+ if(count==8)sortindex_fix8(index,data,offset);
+ else if(count==32)sortindex_fix32(index,data,offset);
+ else sortindex_shellsort(index,data,offset,count);
+}
+
+#undef C
+#undef O
+#undef SORT4
+
+#endif
+/*** OPT_SORT End ***/
+
+
int **_vp_quantize_couple_sort(vorbis_block *vb,
vorbis_look_psy *p,
vorbis_info_mapping0 *vi,
float **mags){
-
+#ifdef OPT_SORT
+ if(p->vi->normal_point_p){
+ int i,j,n=p->n;
+ int **ret=_vorbis_block_alloc(vb,vi->coupling_steps*sizeof(*ret));
+ int partition=p->vi->normal_partition;
+
+ for(i=0;i<vi->coupling_steps;i++){
+ ret[i]=_vorbis_block_alloc(vb,n*sizeof(**ret));
+
+ for(j=0;j<n;j+=partition){
+ sortindex(ret[i],mags[i],j,partition);
+ }
+ }
+ return(ret);
+ }
+ return(NULL);
+#else
if(p->vi->normal_point_p){
int i,j,k,n=p->n;
int **ret=_vorbis_block_alloc(vb,vi->coupling_steps*sizeof(*ret));
@@ -1048,10 +1448,22 @@ int **_vp_quantize_couple_sort(vorbis_bl
return(ret);
}
return(NULL);
+#endif
}
void _vp_noise_normalize_sort(vorbis_look_psy *p,
float *magnitudes,int *sortedindex){
+#ifdef OPT_SORT
+ int j,n=p->n;
+ vorbis_info_psy *vi=p->vi;
+ int partition=vi->normal_partition;
+ int start=vi->normal_start;
+
+ for(j=start;j<n;j+=partition){
+ if(j+partition>n)partition=n-j;
+ sortindex(sortedindex-start,magnitudes,j,partition);
+ }
+#else
int i,j,n=p->n;
vorbis_info_psy *vi=p->vi;
int partition=vi->normal_partition;
@@ -1066,11 +1478,12 @@ void _vp_noise_normalize_sort(vorbis_loo
sortedindex[i+j-start]=work[i]-magnitudes;
}
}
+#endif
}
void _vp_noise_normalize(vorbis_look_psy *p,
float *in,float *out,int *sortedindex){
- int flag=0,i,j=0,n=p->n;
+ int i,j=0,n=p->n,min_energy;
vorbis_info_psy *vi=p->vi;
int partition=vi->normal_partition;
int start=vi->normal_start;
@@ -1084,27 +1497,64 @@ void _vp_noise_normalize(vorbis_look_psy
for(;j+partition<=n;j+=partition){
float acc=0.;
int k;
+ int energy_loss=0;
+ int nn_num=0;
+ int freqband_mid=j+16;
+ int freqband_flag=0;
- for(i=j;i<j+partition;i++)
- acc+=in[i]*in[i];
+ for(i=j;i<j+partition;i++){
+ if(rint(in[i])==0.f){
+ acc+=in[i]*in[i];
+ energy_loss++;
+ }
+ }
+ /* When an energy loss is large, NN processing is carried out in the middle of partition. */
+ /*if(energy_loss==32 && fabs(in[freqband_mid])>nnmid_th){
+ if(in[freqband_mid]*in[freqband_mid]<.25f){
+ i=0;
+ if(acc>=vi->normal_thresh){
+ out[freqband_mid]=unitnorm(in[freqband_mid]);
+ acc-=1.;
+ freqband_flag=1;
+ nn_num++;
+ }
+ }
+ }*/
+ /* NN main */
for(i=0;i<partition;i++){
- k=sortedindex[i+j-start];
-
- if(in[k]*in[k]>=.25f){
- out[k]=rint(in[k]);
- acc-=in[k]*in[k];
- flag=1;
- }else{
- if(acc<vi->normal_thresh)break;
- out[k]=unitnorm(in[k]);
- acc-=1.;
- }
+ k=sortedindex[i+j-start];
+ if(in[k]*in[k]>=.25f){ // or rint(in[k])!=0.f
+ out[k]=rint(in[k]);
+ //acc-=in[k]*in[k];
+ }else{
+ if(acc<vi->normal_thresh)break;
+ if(freqband_flag && freqband_mid==k)continue;
+ out[k]=unitnorm(in[k]);
+ acc-=1.;
+ nn_num++;
+ }
}
+ /* The minimum energy complement */
+ /*min_energy=32-energy_loss+nn_num;
+ if(min_energy<2 || (j<=p->min_nn_lp && min_energy==2)){
+ k=sortedindex[i+j-start];
+ if(freqband_flag && freqband_mid==k){
+ i++;
+ k=sortedindex[i+j-start];
+ }
+ if(!(fabs(in[k])<0.3)){
+ out[k]=unitnorm(in[k]);
+ i++;
+ }
+ }*/
+
+ // The last process
for(;i<partition;i++){
- k=sortedindex[i+j-start];
- out[k]=0.;
+ k=sortedindex[i+j-start];
+ if(freqband_flag && freqband_mid==k)continue;
+ else out[k]=0.;
}
}
}
@@ -1123,7 +1573,8 @@ void _vp_couple(int blobno,
int **mag_sort,
int **ifloor,
int *nonzero,
- int sliding_lowpass){
+ int sliding_lowpass,
+ float **mdct, float **res_org){
int i,j,k,n=p->n;
@@ -1147,39 +1598,196 @@ void _vp_couple(int blobno,
float *rM=res[vi->coupling_mag[i]];
float *rA=res[vi->coupling_ang[i]];
+ float *rMo=res_org[vi->coupling_mag[i]];
+ float *rAo=res_org[vi->coupling_ang[i]];
float *qM=rM+n;
float *qA=rA+n;
+ float *mdctM=mdct[vi->coupling_mag[i]];
+ float *mdctA=mdct[vi->coupling_ang[i]];
int *floorM=ifloor[vi->coupling_mag[i]];
int *floorA=ifloor[vi->coupling_ang[i]];
float prepoint=stereo_threshholds[g->coupling_prepointamp[blobno]];
float postpoint=stereo_threshholds[g->coupling_postpointamp[blobno]];
+ float sth_low=stereo_threshholds_low[g->coupling_prepointamp[blobno]];
+ float sth_high=stereo_threshholds_high[g->coupling_postpointamp[blobno]];
+ float postpoint_backup;
+ float st_thresh;
int partition=(p->vi->normal_point_p?p->vi->normal_partition:p->n);
int limit=g->coupling_pointlimit[p->vi->blockflag][blobno];
int pointlimit=limit;
-
+ int freqlimit=p->st_freqlimit;
+ unsigned char Mc_treshp[2048];
+ unsigned char Ac_treshp[2048];
+ int lof_st;
+ int hif_st;
+ int hif_stcopy;
+ int old_lof_st=0;
+ int old_hif_st=0;
+ int Afreq_num=0;
+ int Mfreq_num=0;
+ int stcont_start=0; // M6 start point
+
nonzero[vi->coupling_mag[i]]=1;
nonzero[vi->coupling_ang[i]]=1;
-
- /* The threshold of a stereo is changed with the size of n */
- if(n > 1000)
- postpoint=stereo_threshholds_limited[g->coupling_postpointamp[blobno]];
-
- for(j=0;j<p->n;j+=partition){
+
+ postpoint_backup=postpoint;
+
+ /** @ M6 PRE **/
+ // lossless only?
+ if(!stereo_threshholds[g->coupling_postpointamp[blobno]])stcont_start=n;
+ else{
+ // exception handling
+ if((postpoint-sth_high)<prepoint)sth_high=postpoint-prepoint;
+ // start point setup
+ for(j=0;j<n;j++){
+ stcont_start=j;
+ if(p->noiseoffset[1][j]>=-2)break;
+ }
+ // start point correction & threshold setup
+ st_thresh=.1;
+ if(p->m_val<.5){
+ // low frequency limit
+ if(stcont_start<limit)stcont_start=limit;
+ }else if(p->vi->normal_thresh>1.)st_thresh=.5;
+ for(j=0;j<=freqlimit;j++){ // or j<n
+ if(fabs(rM[j])<st_thresh)Mc_treshp[j]=1;
+ else Mc_treshp[j]=0;
+ if(fabs(rA[j])<st_thresh)Ac_treshp[j]=1;
+ else Ac_treshp[j]=0;
+ }
+ }
+
+ for(j=0;j<n;j+=partition){
float acc=0.f;
+ float rpacc;
+ int energy_loss=0;
+ int nn_num=0;
for(k=0;k<partition;k++){
int l=k+j;
+ float a=mdctM[l];
+ float b=mdctA[l];
+ float dummypoint;
+ float hypot_reserve;
+ float slow=0.f;
+ float shigh=0.f;
+ float slowM=0.f;
+ float slowA=0.f;
+ float shighM=0.f;
+ float shighA=0.f;
+ float rMs=fabs(rMo[l]);
+ float rAs=fabs(rAo[l]);
+
+ postpoint=postpoint_backup;
+
+ /* AoTuV */
+ /** @ M6 MAIN **
+ The threshold of a stereo is changed dynamically.
+ by Aoyumi @ 2006/06/04
+ */
+ if(l>=stcont_start){
+ int m;
+ int lof_num;
+ int hif_num;
+
+ // (It may be better to calculate this in advance)
+ lof_st=l-(l/2)*.167;
+ hif_st=l+l*.167;
+
+ hif_stcopy=hif_st;
+
+ // limit setting
+ if(hif_st>freqlimit)hif_st=freqlimit;
+
+ if(old_lof_st || old_hif_st){
+ if(hif_st>l){
+ // hif_st, lof_st ...absolute value
+ // lof_num, hif_num ...relative value
+
+ // low freq.(lower)
+ lof_num=lof_st-old_lof_st;
+ if(lof_num==0){
+ Afreq_num+=Ac_treshp[l-1];
+ Mfreq_num+=Mc_treshp[l-1];
+ }else if(lof_num==1){
+ Afreq_num+=Ac_treshp[l-1];
+ Mfreq_num+=Mc_treshp[l-1];
+ Afreq_num-=Ac_treshp[old_lof_st];
+ Mfreq_num-=Mc_treshp[old_lof_st];
+ }//else puts("err. low");
+
+ // high freq.(higher)
+ hif_num=hif_st-old_hif_st;
+ if(hif_num==0){
+ Afreq_num-=Ac_treshp[l];
+ Mfreq_num-=Mc_treshp[l];
+ }else if(hif_num==1){
+ Afreq_num-=Ac_treshp[l];
+ Mfreq_num-=Mc_treshp[l];
+ Afreq_num+=Ac_treshp[hif_st];
+ Mfreq_num+=Mc_treshp[hif_st];
+ }else if(hif_num==2){
+ Afreq_num-=Ac_treshp[l];
+ Mfreq_num-=Mc_treshp[l];
+ Afreq_num+=Ac_treshp[hif_st];
+ Mfreq_num+=Mc_treshp[hif_st];
+ Afreq_num+=Ac_treshp[hif_st-1];
+ Mfreq_num+=Mc_treshp[hif_st-1];
+ }//else puts("err. high");
+ }
+ }else{
+ for(m=lof_st; m<=hif_st; m++){
+ if(m==l)continue;
+ if(Ac_treshp[m]) Afreq_num++;
+ if(Mc_treshp[m]) Mfreq_num++;
+ }
+ }
+ if(l>=limit){
+ shigh=sth_high/(hif_stcopy-lof_st);
+ shighA=shigh*Afreq_num;
+ shighM=shigh*Mfreq_num;
+ if((shighA+rAs)>(shighM+rMs))shigh=shighA;
+ else shigh=shighM;
+ }else{
+ slow=sth_low/(hif_stcopy-lof_st);
+ slowA=slow*Afreq_num;
+ slowM=slow*Mfreq_num;
+ if(p->noiseoffset[1][l]<-1){
+ slowA*=(p->noiseoffset[1][l]+2);
+ slowM*=(p->noiseoffset[1][l]+2);
+ }
+ }
+ old_lof_st=lof_st;
+ old_hif_st=hif_st;
+ }
+ if(l>=limit){
+ postpoint-=shigh;
+ /* The following prevents an extreme reduction of residue. (2ch stereo only) */
+ if( ((a>0.) && (b<0.)) || ((b>0.) && (a<0.)) ){
+ hypot_reserve = fabs(fabs(a)-fabs(b));
+ if(hypot_reserve < 0.001){ // 0~0.000999-
+ dummypoint = stereo_threshholds_rephase[g->coupling_postpointamp[blobno]];
+ dummypoint = dummypoint+((postpoint-dummypoint)*(hypot_reserve*1000));
+ if(postpoint > dummypoint) postpoint = dummypoint;
+ }
+ }
+ }
+
if(l<sliding_lowpass){
- if((l>=limit && fabs(rM[l])<postpoint && fabs(rA[l])<postpoint) ||
- (fabs(rM[l])<prepoint && fabs(rA[l])<prepoint)){
+ if((l>=limit && rMs<postpoint && rAs<postpoint) ||
+ (rMs<(prepoint-slowM) && rAs<(prepoint-slowA))){
precomputed_couple_point(mag_memo[i][l],
floorM[l],floorA[l],
qM+l,qA+l);
- if(rint(qM[l])==0.f)acc+=qM[l]*qM[l];
+ //if(rint(qM[l])==0.f)acc+=qM[l]*qM[l];
+ if(rint(qM[l])==0.f){
+ energy_loss++;
+ if(l>=limit)acc+=qM[l]*qM[l];
+ }
}else{
couple_lossless(rM[l],rA[l],qM+l,qA+l);
}
@@ -1188,40 +1796,106 @@ void _vp_couple(int blobno,
qA[l]=0.;
}
}
-
+
if(p->vi->normal_point_p){
+ int freqband_mid=j+16;
+ int freqband_flag=0;
+ int min_energy;
+
+ rpacc=acc;
+ /* When the energy loss of a partition is large, NN is performed in the middle of partition.
+ for 48/44.1/32kHz */
+ if(energy_loss==32 && fabs(qM[freqband_mid])>nnmid_th && acc>=p->vi->normal_thresh
+ && freqband_mid<sliding_lowpass && freqband_mid>=pointlimit && rint(qM[freqband_mid])==0.f){
+ if( ((mdctM[freqband_mid]>0.) && (mdctA[freqband_mid]<0.)) ||
+ ((mdctA[freqband_mid]>0.) && (mdctM[freqband_mid]<0.)) ){
+ acc-=1.f;
+ rpacc-=1.32;
+ }else{
+ acc-=1.f;
+ rpacc-=1.f;
+ }
+ qM[freqband_mid]=unitnorm(qM[freqband_mid]);
+ freqband_flag=1;
+ nn_num++;
+ }
+ /* NN main (point stereo) */
for(k=0;k<partition && acc>=p->vi->normal_thresh;k++){
- int l=mag_sort[i][j+k];
+ int l;
+ l=mag_sort[i][j+k];
+ if(freqband_mid==l && freqband_flag)continue;
if(l<sliding_lowpass && l>=pointlimit && rint(qM[l])==0.f){
+ if( ((mdctM[l]>0.) && (mdctA[l]<0.)) || ((mdctA[l]>0.) && (mdctM[l]<0.)) ){
+ if(rpacc<p->vi->normal_thresh)continue;
+ acc-=1.f;
+ rpacc-=1.32;
+ }else{
+ acc-=1.f;
+ rpacc-=1.f;
+ }
qM[l]=unitnorm(qM[l]);
- acc-=1.f;
+ nn_num++;
}
- }
+ }
+ /* The minimum energy complement.
+ for 48/44.1/32kHz */
+ min_energy=32-energy_loss+nn_num;
+ if(min_energy<2 || (j<=p->min_nn_lp && min_energy==2)){
+ int l;
+ float ab;
+ for(;k<partition;k++){
+ l=mag_sort[i][j+k];
+ ab=fabs(qM[l]);
+ if(ab<0.04)break;
+ if( ((mdctM[l]>0.) && (mdctA[l]<0.)) || ((mdctA[l]>0.) && (mdctM[l]<0.))
+ && ab<0.11)break; // 0.11
+ if(rint(qM[l])==0.f && l>=pointlimit){
+ qM[l]=unitnorm(qM[l]);
+ break;
+ }
+ }
+ }
}
}
}
}
}
-/* AoTuV */
-/** @ M2 **
- The boost problem by the combination of noise normalization and point stereo is eased.
- However, this is a temporary patch.
- by Aoyumi @ 2004/04/18
+/* aoTuV M5
+ noise_compand_level of low frequency is determined from the level of high frequency.
+ by Aoyumi @ 2005/09/14
+
+ return value
+ [normal compander] 0 <> 1.0 [high compander]
+ -1 @ disable
*/
+float lb_loudnoise_fix(vorbis_look_psy *p,
+ float noise_compand_level,
+ float *logmdct,
+ int lW_modenumber,
+ int blocktype, int modenumber){
-void hf_reduction(vorbis_info_psy_global *g,
- vorbis_look_psy *p,
- vorbis_info_mapping0 *vi,
- float **mdct){
-
- int i,j,n=p->n, de=0.3*p->m_val;
- int limit=g->coupling_pointlimit[p->vi->blockflag][PACKETBLOBS/2];
- int start=p->vi->normal_start;
-
- for(i=0; i<vi->coupling_steps; i++){
- /* for(j=start; j<limit; j++){} // ???*/
- for(j=limit; j<n; j++)
- mdct[i][j] *= (1.0 - de*((float)(j-limit) / (float)(n-limit)));
- }
+ int i, n=p->n, nq1=p->n25p, nq3=p->n75p;
+ double hi_th=0;
+
+ if(p->m_val < 0.5)return(-1); /* 48/44.1/32kHz only */
+ if(p->vi->normal_thresh>.45)return(-1); /* under q3 */
+
+ /* select trans. block(short>>long case). */
+ if(!modenumber)return(-1);
+ if(blocktype || lW_modenumber)return(noise_compand_level);
+
+ /* calculation of a threshold. */
+ for(i=nq1; i<nq3; i++){
+ if(logmdct[i]>-130)hi_th += logmdct[i];
+ else hi_th += -130;
+ }
+ hi_th /= n;
+
+ /* calculation of a high_compand_level */
+ if(hi_th > -40.) noise_compand_level=-1;
+ else if(hi_th < -50.) noise_compand_level=1.;
+ else noise_compand_level=1.-((hi_th+50)/10);
+
+ return(noise_compand_level);
}
--- lib/psy.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/psy.h 2007-08-02 12:25:50.000000000 +0200
@@ -15,6 +15,8 @@
********************************************************************/
+#define OPT_SORT
+
#ifndef _V_PSY_H_
#define _V_PSY_H_
#include "smallft.h"
@@ -54,6 +56,9 @@ typedef struct vorbis_info_psy{
int noisewindowfixed;
float noiseoff[P_NOISECURVES][P_BANDS];
float noisecompand[NOISE_COMPAND_LEVELS];
+ float noisecompand_high[NOISE_COMPAND_LEVELS];
+
+ float flacint;
float max_curve_dB;
@@ -110,7 +115,16 @@ typedef struct {
int total_octave_lines;
long rate; /* cache it */
- float m_val; /* Masking compensation value */
+ int m3n[4]; /* number for M3 */
+ int tonecomp_endp; /* for M4 */
+ int min_nn_lp; /* for M6 */
+ float tonecomp_thres; /* for M4 */
+ float m_val; /* masking compensation value */
+
+ int st_freqlimit; /* for M6 */
+ int n25p;
+ int n33p;
+ int n75p;
} vorbis_look_psy;
@@ -129,6 +143,7 @@ extern void _vp_remove_floor(vorbis_look
int sliding_lowpass);
extern void _vp_noisemask(vorbis_look_psy *p,
+ float noise_compand_level,
float *logmdct,
float *logmask);
@@ -144,7 +159,13 @@ extern void _vp_offset_and_mix(vorbis_lo
int offset_select,
float *logmask,
float *mdct,
- float *logmdct);
+ float *logmdct,
+ float *lastmdct, float *tempmdct,
+ float low_compand,
+ int end_block,
+ int blocktype, int modenumber,
+ int nW_modenumber,
+ int lW_blocktype, int lW_modenumber, int lW_no);
extern float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd);
@@ -163,7 +184,8 @@ extern void _vp_couple(int blobno,
int **mag_sort,
int **ifloor,
int *nonzero,
- int sliding_lowpass);
+ int sliding_lowpass,
+ float **mdct, float **res_org);
extern void _vp_noise_normalize(vorbis_look_psy *p,
float *in,float *out,int *sortedindex);
@@ -176,10 +198,11 @@ extern int **_vp_quantize_couple_sort(vo
vorbis_info_mapping0 *vi,
float **mags);
-extern void hf_reduction(vorbis_info_psy_global *g,
- vorbis_look_psy *p,
- vorbis_info_mapping0 *vi,
- float **mdct);
+extern float lb_loudnoise_fix(vorbis_look_psy *p,
+ float noise_compand_level,
+ float *logmdct,
+ int lW_modenumber,
+ int blocktype, int modenumber);
#endif
--- lib/vorbisenc.c-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/vorbisenc.c 2007-08-02 12:25:50.000000000 +0200
@@ -370,11 +370,16 @@ static void vorbis_encode_tonemask_setup
static void vorbis_encode_compand_setup(vorbis_info *vi,double s,int block,
compandblock *in, double *x){
- int i,is=s;
- double ds=s-is;
+ int i,is=s, ishcm, hcm_stop=5; // high compander limit
+ double ds=s-is, dshcm;
+
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy *p=ci->psy_param[block];
+
+ /* the place was borrowed... */
+ p->flacint=ds;
+ /* interpolate the compander mapping */
ds=x[is]*(1.-ds)+x[is+1]*ds;
is=(int)ds;
ds-=is;
@@ -383,9 +388,32 @@ static void vorbis_encode_compand_setup(
ds=1.;
}
+ /* high compander setup */
+ ishcm = is;
+ dshcm = ds+.3;
+ if(dshcm > 1.0){
+ ishcm++;
+ dshcm=dshcm-1;
+ }
+ if(x[hcm_stop] < ((float)ishcm+dshcm)){
+ ishcm = x[hcm_stop];
+ dshcm = x[hcm_stop]-ishcm;
+ }
+ if(dshcm==0 && ishcm>0){ // the same
+ ishcm--;
+ dshcm=1.;
+ }
+
/* interpolate the compander settings */
for(i=0;i<NOISE_COMPAND_LEVELS;i++)
p->noisecompand[i]=in[is].data[i]*(1.-ds)+in[is+1].data[i]*ds;
+ /* interpolate the high compander settings */
+ if(s < (float)hcm_stop){
+ for(i=0;i<NOISE_COMPAND_LEVELS;i++)
+ p->noisecompand_high[i]=in[ishcm].data[i]*(1.-dshcm)+in[ishcm+1].data[i]*dshcm;
+ }else{ // disable high compander
+ for(i=0;i<NOISE_COMPAND_LEVELS;i++)p->noisecompand_high[i]=0;
+ }
return;
}
--- lib/codec_internal.h-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/codec_internal.h 2007-08-02 12:25:50.000000000 +0200
@@ -82,6 +82,15 @@ typedef struct private_state {
bitrate_manager_state bms;
ogg_int64_t sample_count;
+
+ /* encode only
+ added by aoyumi */
+ float *lownoise_compand_level;
+ float *nblock; /* lW logmdct buffer */
+ float *tblock; /* temporal masking buffer (impulse block) */
+ int lW_blocktype; /* last window block type */
+ int lW_modenumber; /* last window mode number (0=short, 1=long) */
+ int lW_no; /* the number of continuous window blocks (last window) */
} private_state;
/* codec_setup_info contains all the setup information specific to the
--- lib/info.c-dist 2007-07-24 02:09:47.000000000 +0200
+++ lib/info.c 2007-08-02 12:26:53.000000000 +0200
@@ -451,7 +451,7 @@ static int _vorbis_pack_info(oggpack_buf
}
static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){
- char temp[]="Xiph.Org libVorbis I 20070622";
+ char temp[]="AO; aoTuV b5 [20061024] (based on Xiph.Org's I 20070622)";
int bytes = strlen(temp);
/* preamble */
--- aoTuV_technical.txt-dist 2007-08-02 12:25:50.000000000 +0200
+++ aoTuV_technical.txt 2007-08-02 12:25:50.000000000 +0200
@@ -0,0 +1,144 @@
+aoTuV beta5 technical information
+
+
+The differences from the aoTuV beta 4.51...
+
+ 1. In order to work noise normalization correctly, the value of tone
+ masking is compressed under certain conditions. A floor curve approaches
+ the original audio spectrum line as a result. [New M4]
+
+ 2. In order to cut down the bitrate, a part of M2 code of beta4 was
+ deleted.
+
+<2B>@3. The ATH curve was changed slightly.
+
+ 4. Pre-echo decreased slightly. This is based on change of M3 code.
+
+ 5. In order to decrease artifact by collapse of audio energy, noise
+ normalization processing of point stereo was extended. [32/44.1/48kHz only]
+
+ 6. The threshold of channel coupling (lossless <=> point) is changed dynamically. This is a method based on a certain idea. [M6]
+
+...and I tune up many parameters.
+
+
+2006/10/24
+Aoyumi
+
+----------------------------------------------------------------------------
+
+aoTuV beta4.51 technical information
+
+
+The differences from the aoTuV beta 4.5...
+
+ 1. The changed part of "scale.h" of Xiph.Org SVN was reflected in aoTuV.
+ This will solve the problem of the compile by gcc4.
+
+ 2. A part of portion added by beta4.5 had caused memory access violation.
+ Depending on environment, a problem arises in qualiy-1/-2. This problem was
+ corrected.
+
+
+2005/11/17
+Aoyumi
+
+----------------------------------------------------------------------------
+
+aoTuV beta4.5 technical information
+
+
+The differences from the aoTuV beta 4...
+
+ 1. M4 code of beta3 was deleted. M5 is added as what is replaced with it.
+ The advantage of this method is that the result stabilized more is obtained.
+ Instead, the change width of the bit rate becomes large rather than before.
+ [32/44.1/48kHz only]
+
+ 2. New M4 was added. There is this for the same purpose as M1. However,
+ it is tuned up only in the low bit rate region according to work and
+ individual parameters. [32/44.1/48kHz only]
+
+ 3. M2 code was extended. This decreases a specific noise problem.
+ [32/44.1/48kHz only]
+
+...and I mainly tune up tone/noise masking and noise normalization parameters.
+
+The above change is applied below quality3.
+
+
+2005/11/05
+Aoyumi
+
+----------------------------------------------------------------------------
+
+aoTuV beta4 technical information
+
+
+The differences from the aoTuV beta 3...
+
+ 1. Adoption of new hypot (point stereo). This works in general better than
+ dipole/round hypot. And when residue is likely to decrease greatly at the
+ time of a reverse phase, added code is made to increase the ratio of lossless.
+
+ 2. Change of ATH curve. This is not a big change.
+
+ 3. Residue used for threshold calculation of channel coupling is changed.
+ This one seems to be good selection.
+
+ 4. HF reduction code of beta3 was deleted. Now, this is not required.
+
+ 5. The energy deficit of M4 code of beta3 -- correction of a bug Now.
+
+ 6. The code for pulling downward floor of the frequency range which can
+ be easy to be heard was added (New M2). This works by the low bit rate and
+ has a comparatively good trade-off.
+
+ 7. Change of threshold calculation of noise normalization. Moreover, it
+ takes phase information into consideration.
+
+
+...and I mainly tune up tone/noise masking and noise compander parameters.
+
+
+2005/06/18
+Aoyumi
+
+----------------------------------------------------------------------------
+
+aoTuV beta3 technical information
+
+
+The differences from the aoTuV beta 2 and Vorbis 1.1...
+
+ 1. Dynamic impulse block noise control(q0-10). [32/44.1/48kHz only]
+ Conspicuous pre-echo is reduced.
+
+ 2. New ATH curve.
+
+ 3. In order to cancel that a small sound becomes unstable, the noise level
+ of low frequency is lowered under specific conditions. (Only below q3)
+ There is a greatest effect on a piano etc. [32/44.1/48kHz only]
+
+ 4. The rate of lossless stereo is increased in specific conditions. This
+ improves many of conspicuous problems which a point stereo causes. (e.g
+ drumus's hiss/voice, guitar and brass's distortion) [32/44.1/48kHz only]
+
+ 5. The action of the noise normalization of point stereo is corrected. It
+ was set to one of the causes of distortion in a long tone (e.g
+ strings/oboe/high tone voice).
+
+ 6. The HF reduction code was not working normally. This is corrected and
+ it retuned up according to the present condition. [32/44.1/48kHz only]
+
+ 7. The q-2 mode was added in all sampling frequencies. And nominal bitrate
+ of q-1 are changed into a more nearly average value. Although nominal
+ bitrate is more large at a low sampling frequency, average bitrate hardly
+ differs from the former version.
+
+
+...and I mainly tune up tone/noise masking parameters.
+
+
+2004/11/21
+Aoyumi
--- aoTuV_README-1st.txt-dist 2007-08-02 12:25:50.000000000 +0200
+++ aoTuV_README-1st.txt 2007-08-02 12:25:50.000000000 +0200
@@ -0,0 +1,21 @@
+aoTuV Beta 5
+
+"aoTuV" tunes up Xiph.Org's libvorbis uniquely.
+A license is taken as "BSD-style license" as well as original libvorbis.
+
+
+# NOTICE #
+
+ Manuke's patch is used for improvement in the speed of sort processing.
+ When "#define OPT_SORT" of "lib/psy.h" is deleted, the conventional
+ processing method is used.
+ Thanks! Manuke.
+
+
+aoTuV based on <Xiph.Org libvorbis>
+
+Copyright (c) 2002-2005 Xiph.Org Foundation
+Copyright (c) 2003-2006 Aoyumi
+
+
+AUTHOR : aoyumi <aoyumi@gmail.com>
--- COPYING-dist 2004-09-20 23:09:21.000000000 +0200
+++ COPYING 2007-08-02 12:25:50.000000000 +0200
@@ -1,4 +1,5 @@
-Copyright (c) 2002-2004 Xiph.org Foundation
+aoTuV - Copyright (c) 2003-2006 Aoyumi
+libvorbis - Copyright (c) 2002-2005 Xiph.org Foundation
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions