diff options
author | Monty <xiphmont@xiph.org> | 2001-12-06 12:47:34 +0000 |
---|---|---|
committer | Monty <xiphmont@xiph.org> | 2001-12-06 12:47:34 +0000 |
commit | 8aac2b8150aaab71c3abec9d615feaa2068e11ce (patch) | |
tree | eaf9a4adcd095ccd54f619eef85f426e6c208022 | |
parent | 34b47f195fa6ca2b812b4e973d058ccd6db9ac63 (diff) | |
download | libvorbis-git-8aac2b8150aaab71c3abec9d615feaa2068e11ce.tar.gz |
fix more 'first time around' bugs found in testing
svn path=/branches/branch_monty_20011009/vorbis/; revision=2425
-rw-r--r-- | lib/modes/residue_44.h | 4 | ||||
-rw-r--r-- | lib/vorbisenc.c | 43 |
2 files changed, 26 insertions, 21 deletions
diff --git a/lib/modes/residue_44.h b/lib/modes/residue_44.h index a03f8090..4dd4a127 100644 --- a/lib/modes/residue_44.h +++ b/lib/modes/residue_44.h @@ -11,7 +11,7 @@ ******************************************************************** function: toplevel residue templates for 32/44.1/48kHz - last mod: $Id: residue_44.h,v 1.1.2.3 2001/12/06 09:58:56 xiphmont Exp $ + last mod: $Id: residue_44.h,v 1.1.2.4 2001/12/06 12:47:34 xiphmont Exp $ ********************************************************************/ @@ -109,7 +109,7 @@ static vorbis_residue_template _residue_template_44_stereo[11]={ {{0}}, /* 6dB (2.5) stereo */ {{0}}, /* 12dB (4.5) stereo */ {{0}}, /* 17dB (7.5) stereo */ - {{0,0,&44c0_s0_p1_0},{0,0,&44c0_s0_p2_0},{0,0,&44c0_s0_p3_0},{&44c0_s0_p4_0,&44c0_p4_1}, + {{0},{0,0,&44c0_s0_p1_0},{0,0,&44c0_s0_p2_0},{0,0,&44c0_s0_p3_0},{&44c0_s0_p4_0,&44c0_p4_1}, {0,0,&44c0_s1_p5_0},{0,0,&44c0_s1_p6_0},{0,0,&44c0_s2_p7_0},{&44c0_s4_p8_0,&44c0_s4_p8_1}, {&44c0_s4_p9_0,&44c0_s4_p9_1,&44c0_s4_p9_2}}, /* 22dB (12.5) stereo */ {{0}}, /* 27dB (22.5) stereo */ diff --git a/lib/vorbisenc.c b/lib/vorbisenc.c index eaa620d8..72094727 100644 --- a/lib/vorbisenc.c +++ b/lib/vorbisenc.c @@ -11,7 +11,7 @@ ******************************************************************** function: simple programmatic interface for encoder mode setup - last mod: $Id: vorbisenc.c,v 1.17.2.5 2001/12/06 09:58:56 xiphmont Exp $ + last mod: $Id: vorbisenc.c,v 1.17.2.6 2001/12/06 12:47:33 xiphmont Exp $ ********************************************************************/ @@ -408,6 +408,28 @@ static int vorbis_encode_residue_init(vorbis_info *vi,double q,int block, /* for uncoupled, we use type 1, else type 2 */ if(coupled_p){ + ci->residue_type[block]=2; + }else{ + ci->residue_type[block]=1; + } + + switch(ci->residue_type[block]){ + case 1: + n=r->end=ci->blocksizes[block?1:0]>>1; /* to be adjusted by lowpass later */ + partition_position=rint((double)c[iq]*1000/(vi->rate/2)*n/r->grouping); + res_position=partition_position*r->grouping; + break; + case 2: + n=r->end=ci->blocksizes[block?1:0]>>1*vi->channels; /* to be adjusted by lowpass later */ + partition_position=rint((double)c[iq]*1000/(vi->rate/2)*n/r->grouping); + res_position=partition_position*r->grouping/vi->channels; + break; + } + + for(i=0;i<r->partitions;i++) + if(r->blimit[i]<0)r->blimit[i]=partition_position; + + if(coupled_p){ int k; vorbis_info_mapping0 *map=ci->map_param[block]; @@ -415,8 +437,6 @@ static int vorbis_encode_residue_init(vorbis_info *vi,double q,int block, map->coupling_mag[0]=0; map->coupling_ang[0]=1; - ci->residue_type[block]=2; - psy->couple_pass[0].granulem=1.; psy->couple_pass[0].igranulem=1.; @@ -424,7 +444,7 @@ static int vorbis_encode_residue_init(vorbis_info *vi,double q,int block, psy->couple_pass[0].couple_pass[0].outofphase_redundant_flip_p=1; psy->couple_pass[0].couple_pass[0].outofphase_requant_limit=9e10; psy->couple_pass[0].couple_pass[0].amppost_point=0; - psy->couple_pass[0].couple_pass[0].limit=9999; + psy->couple_pass[0].couple_pass[1].limit=9999; psy->couple_pass[0].couple_pass[1].outofphase_redundant_flip_p=1; psy->couple_pass[0].couple_pass[1].outofphase_requant_limit=9e10; psy->couple_pass[0].couple_pass[1].amppost_point=stereo_threshholds[a[iq]]; @@ -476,8 +496,6 @@ static int vorbis_encode_residue_init(vorbis_info *vi,double q,int block, memcpy(ci->psy_param[block+1],psy,sizeof(*psy)); }else{ - ci->residue_type[block]=1; - ci->passlimit[0]=3; if(residue_backfill_p){ @@ -521,19 +539,6 @@ static int vorbis_encode_residue_init(vorbis_info *vi,double q,int block, } } - switch(ci->residue_type[block]){ - case 1: - n=r->end=ci->blocksizes[block?1:0]>>1; /* to be adjusted by lowpass later */ - break; - case 2: - n=r->end=ci->blocksizes[block?1:0]; /* to be adjusted by lowpass later */ - break; - } - - partition_position=rint((double)c[iq]*1000/(vi->rate/2)*n/r->grouping); - for(i=0;i<r->partitions;i++) - if(r->blimit[i]<0)r->blimit[i]=partition_position; - return(0); } |