summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty <xiphmont@xiph.org>2001-12-06 12:47:34 +0000
committerMonty <xiphmont@xiph.org>2001-12-06 12:47:34 +0000
commit8aac2b8150aaab71c3abec9d615feaa2068e11ce (patch)
treeeaf9a4adcd095ccd54f619eef85f426e6c208022
parent34b47f195fa6ca2b812b4e973d058ccd6db9ac63 (diff)
downloadlibvorbis-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.h4
-rw-r--r--lib/vorbisenc.c43
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);
}