+ vb->pcmend=v->block_size[v->W];
+ vb->multend=vb->pcmend / v->samples_per_envelope_step;
+
+ if(v->pcm_channels!=vb->pcm_channels ||
+ v->block_size[1]!=vb->pcm_storage ||
+ v->envelope_channels!=vb->mult_channels){
+
+ /* Storage not initialized or initilized for some other codec
+ instance with different settings */
+
+ vorbis_block_clear(vb);
+ vorbis_block_init(v,vb);
+ }
+
+ /* copy the vectors */
+ for(i=0;i<v->pcm_channels;i++)
+ memcpy(vb->pcm[i],v->pcm[i]+beginW,v->block_size[v->W]*sizeof(double));
+ for(i=0;i<v->envelope_channels;i++)
+ memcpy(vb->mult[i],v->multipliers[i]+beginM,v->block_size[v->W]/
+ v->samples_per_envelope_step*sizeof(int));
+
+ vb->frameno=v->frame;
+
+ /* handle eof detection: eof==0 means that we've not yet received EOF
+ eof>0 marks the last 'real' sample in pcm[]
+ eof<0 'no more to do'; doesn't get here */
+
+ if(v->eofflag){
+ long endW=beginW+v->block_size[v->W];
+ if(endW>=v->eofflag){
+ v->eofflag=-1;
+ vb->eofflag=1;
+ }
+ }