X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=lib%2Fblock.c;h=5e7c8879bf10be1b1f295db0a27fd830db233c06;hb=e825a4e82b7a4c94725e1769bdc688fb815c9f04;hp=5517672675b7f222068feb5c384c4d64e90e5340;hpb=669884bb7b74880a5ace7f7a46ec858943ecc35d;p=platform%2Fupstream%2Flibvorbis.git diff --git a/lib/block.c b/lib/block.c index 5517672..5e7c887 100644 --- a/lib/block.c +++ b/lib/block.c @@ -11,7 +11,7 @@ ******************************************************************** function: PCM data vector blocking, windowing and dis/reassembly - last mod: $Id: block.c,v 1.54 2001/12/21 14:52:35 segher Exp $ + last mod: $Id: block.c,v 1.55 2001/12/23 11:53:52 xiphmont Exp $ Handle windowing, overlap-add, etc of the PCM vectors. This is made more amusing by Vorbis' current two allowed block sizes. @@ -502,7 +502,6 @@ int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){ if(bp==-1)return(0); /* not enough data currently to search for a full long block */ v->nW=bp; - /*v->nW=0;*/ }else v->nW=0; @@ -551,35 +550,31 @@ int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){ } vb->vd=v; - vb->sequence=v->sequence; + vb->sequence=v->sequence++; vb->granulepos=v->granulepos; vb->pcmend=ci->blocksizes[v->W]; - /* copy the vectors; this uses the local storage in vb */ - { - vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal; - - /* this tracks 'strongest peak' for later psychoacoustics */ - /* moved to the global psy state; clean this mess up */ - if(vbi->ampmax>g->ampmax)g->ampmax=vbi->ampmax; - g->ampmax=_vp_ampmax_decay(g->ampmax,v); - vbi->ampmax=g->ampmax; - - vb->pcm=_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels); - vbi->pcmdelay=_vorbis_block_alloc(vb,sizeof(*vbi->pcmdelay)*vi->channels); - for(i=0;ichannels;i++){ - vbi->pcmdelay[i]= - _vorbis_block_alloc(vb,(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i])); - memcpy(vbi->pcmdelay[i],v->pcm[i],(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i])); - vb->pcm[i]=vbi->pcmdelay[i]+beginW; - - /* before we added the delay - vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i])); - memcpy(vb->pcm[i],v->pcm[i]+beginW,ci->blocksizes[v->W]*sizeof(*vb->pcm[i])); - */ - } + /* this tracks 'strongest peak' for later psychoacoustics */ + /* moved to the global psy state; clean this mess up */ + if(vbi->ampmax>g->ampmax)g->ampmax=vbi->ampmax; + g->ampmax=_vp_ampmax_decay(g->ampmax,v); + vbi->ampmax=g->ampmax; + + vb->pcm=_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels); + vbi->pcmdelay=_vorbis_block_alloc(vb,sizeof(*vbi->pcmdelay)*vi->channels); + for(i=0;ichannels;i++){ + vbi->pcmdelay[i]= + _vorbis_block_alloc(vb,(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i])); + memcpy(vbi->pcmdelay[i],v->pcm[i],(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i])); + vb->pcm[i]=vbi->pcmdelay[i]+beginW; + + /* before we added the delay + vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i])); + memcpy(vb->pcm[i],v->pcm[i]+beginW,ci->blocksizes[v->W]*sizeof(*vb->pcm[i])); + */ + } /* handle eof detection: eof==0 means that we've not yet received EOF @@ -613,8 +608,6 @@ int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){ v->W=v->nW; v->centerW=new_centerNext; - v->sequence++; - if(v->eofflag){ v->eofflag-=movementW; /* do not add padding to end of stream! */