Commit e9edd7c6 authored by j's avatar j

- aoTuV Beta5 (2006/10/24)

 # The action of noise normalization has been improved.  This has an effect in the sound roughness and tremor problem etc. in the low bitrate.
 # The threshold of a stereo mode change was calculated dynamically.  Some of problems which originate in channel coupling by this will improve. 
 # Noise control of an impulse block was changed (quality 0-10 / 32-48kHz). And pre-echo decreased slightly. 
 # Tuning of each part was redone according to above-mentioned changed part and additional part.
 

svn path=/branches/vorbis-aotuv/; revision=12033
parent 752a05c9
aoTuV Release 1
aoTuV Beta 5
"aoTuV" tunes up Xiph.Org's libvorbis uniquely.
A license is taken as "BSD-style license" as well as original libvorbis.
......@@ -11,8 +11,6 @@ A license is taken as "BSD-style license" as well as original libvorbis.
processing method is used.
Thanks! Manuke.
This version is the same contents as aoTuV beta4.51.
aoTuV based on <Xiph.Org libvorbis>
......
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.
@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.
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.
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
......@@ -18,11 +50,17 @@ 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]
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]
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]
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.
......
......@@ -416,7 +416,7 @@ static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){
}
static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){
char temp[]="AO; aoTuV r1 [20051117] (based on Xiph.Org's libVorbis)";
char temp[]="AO; aoTuV b5 [20061024] (based on Xiph.Org's libVorbis)";
int bytes = strlen(temp);
/* preamble */
......
......@@ -246,6 +246,7 @@ static int mapping0_forward(vorbis_block *vb){
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;
......@@ -487,6 +488,8 @@ static int mapping0_forward(vorbis_block *vb){
mdct,
logmdct,
lastmdct, tempmdct,
*lowcomp,
vif->n,
blocktype, modenumber,
vb->nW,
b->lW_blocktype, b->lW_modenumber, b->lW_no);
......@@ -534,6 +537,8 @@ static int mapping0_forward(vorbis_block *vb){
mdct,
logmdct,
lastmdct, tempmdct,
*lowcomp,
vif->n,
blocktype, modenumber,
vb->nW,
b->lW_blocktype, b->lW_modenumber, b->lW_no);
......@@ -561,6 +566,8 @@ static int mapping0_forward(vorbis_block *vb){
mdct,
logmdct,
lastmdct, tempmdct,
*lowcomp,
vif->n,
blocktype, modenumber,
vb->nW,
b->lW_blocktype, b->lW_modenumber, b->lW_no);
......@@ -727,8 +734,6 @@ static int mapping0_forward(vorbis_block *vb){
ilogmaskch,
nonzero,
ci->psy_g_param.sliding_lowpass[vb->W][k],
blocktype, modenumber,
b->lW_blocktype, b->lW_modenumber,
gmdct, res_org);
}
......
......@@ -35,7 +35,7 @@ static float ATH[]={
/*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 (v5) */
/*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,
......@@ -44,8 +44,8 @@ static float ATH[]={
/*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,-102,-101,-100, -99, -98, -97,
/*8k*/ -96, -95, -95, -96, -97, -97, -93, -88,
/*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
};
......
......@@ -15,19 +15,19 @@
********************************************************************/
static double _psy_lowpass_11[4]={4,4.5,5.5,30.,};
static double _psy_lowpass_11[4]={4.1,4.5,5.5,30.,};
static att3 _psy_tone_masteratt_11[4]={
{{ 30, 25, 12}, 0, 0}, /* -2 */
{{ 30, 25, 12}, 0, 0}, /* -1 */
{{ 30, 25, 12}, 0, 0}, /* 0 */
{{ 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[4]={
/* adjust for mode zero */
/* 63 125 250 500 1 2 4 8 16 */
{{-16,-16,-16,-16,-16,-16,-10,-8,-4, 0, 0, 0, 5, 5,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 */
......@@ -36,8 +36,8 @@ static vp_adjblock _vp_tonemask_adj_11[4]={
static noise3 _psy_noisebias_11[4]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
{{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 10, 10, 12, 12, 12, 99, 99, 99},
{-12,-12,-12,-12,-10,-10, -3, 0, 2, 4, 4, 5, 5, 10, 99, 99, 99},
{{{-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},
......
......@@ -19,7 +19,7 @@
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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 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},
......@@ -43,9 +43,9 @@ static adj_stereo _psy_stereo_modes_16[5]={
static double _psy_lowpass_16[5]={6.,6.5,8,30.,99.};
static att3 _psy_tone_masteratt_16[5]={
{{ 30, 25, 12}, 0, 0}, /* -2 */
{{ 30, 25, 12}, 0, 0}, /* -1 */
{{ 25, 22, 12}, 0, 0}, /* 0.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 */
};
......@@ -63,15 +63,15 @@ static vp_adjblock _vp_tonemask_adj_16[5]={
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},
{-12,-12,-12,-12,-12, -7, -4, -2, 3, 3, 4, 5, 5, 6, 8, 8, 15},
{{{-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, 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}}},
......@@ -86,15 +86,15 @@ static noise3 _psy_noisebias_16_short[5]={
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},
{-12,-12,-12,-12,-12, -7, -4, -2, 3, 3, 4, 5, 5, 6, 8, 8, 15},
{{{-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, 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}}},
......@@ -110,7 +110,7 @@ static noise3 _psy_noisebias_16_impulse[5]={
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, 3, 3, 3, 4, 5, 6, 8, 8, 15},
{-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},
......
This diff is collapsed.
......@@ -16,26 +16,26 @@
********************************************************************/
static att3 _psy_tone_masteratt_8[4]={
{{ 32, 25, 12}, 0, 0}, /* -2 */
{{ 32, 25, 12}, 0, 0}, /* -1 */
{{ 30, 25, 12}, 0, 0}, /* 0 */
{{ 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[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, 0, 5, 5,99,99,99}}, /* -2 */
{{-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, 0, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 0 */
{{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 10 */
{{-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[4]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
{{{-10,-10,-10,-10, -5, -5, -5, 2, 4, 8, 8, 8, 10, 10, 99, 99, 99},
{-10,-10,-10,-10, -5, -4, -2, 2, 3, 4, 4, 4, 7, 8, 99, 99, 99},
{{{-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},
......@@ -55,7 +55,7 @@ static noise3 _psy_noisebias_8[4]={
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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 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},
......
......@@ -23,13 +23,13 @@ static double rate_mapping_32[13]={
static double rate_mapping_32_un[13]={
// 30000.,42000.,52000.,64000.,72000.,78000.,
24000.,32000.,42000.,52000.,64000.,72000.,78000.,
26000.,32000.,42000.,52000.,64000.,72000.,78000.,
86000.,92000.,110000.,120000.,140000.,190000.,
};
static double _psy_lowpass_32[13]={
// 12.3,13.,13.,14.,15.,99.,99.,99.,99.,99.,99.,99.
12.,12.6,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={
......
......@@ -19,7 +19,7 @@
static double rate_mapping_44_un[13]={
// 32000.,48000.,60000.,70000.,80000.,86000.,
26000.,32000.,48000.,60000.,70000.,80000.,86000.,
28000.,40000.,48000.,60000.,70000.,80000.,86000.,
96000.,110000.,120000.,140000.,160000.,240001.
};
......
This diff is collapsed.
......@@ -116,7 +116,15 @@ typedef struct {
long rate; /* cache it */
int m3n[4]; /* number for M3 */
float m_val; /* Masking compensation value */
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;
......@@ -153,6 +161,8 @@ extern void _vp_offset_and_mix(vorbis_look_psy *p,
float *mdct,
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);
......@@ -175,8 +185,6 @@ extern void _vp_couple(int blobno,
int **ifloor,
int *nonzero,
int sliding_lowpass,
int blocktype, int modenumber,
int lW_blocktype, int lW_modenumber,
float **mdct, float **res_org);
extern void _vp_noise_normalize(vorbis_look_psy *p,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment