free(vb->pcm[i]);
free(vb->pcm);
}
+ if(vb->lpc){
+ for(i=0;i<vb->floor_channels;i++)
+ free(vb->lpc[i]);
+ free(vb->lpc);
+ }
+ if(vb->lsp){
+ for(i=0;i<vb->floor_channels;i++)
+ free(vb->lsp[i]);
+ free(vb->lsp);
+ }
+ if(vb->amp)free(vb->amp);
if(vb->vd)
if(vb->vd->analysisp)
_oggpack_writeclear(&vb->opb);
/* extract the initial header from the first page and verify that the
Ogg bitstream is in fact Vorbis data */
+ vorbis_info_clear(vi);
vorbis_info_init(vi);
i=0;
goto bail_header;
}
}
+ ogg_stream_clear(&vf->os);
return 0;
bail_header:
ogg_page og;
int i,ret;
- vf->vi=malloc(vf->links*sizeof(vorbis_info));
+ vf->vi=calloc(vf->links,sizeof(vorbis_info));
vf->dataoffsets=malloc(vf->links*sizeof(long));
vf->pcmlengths=malloc(vf->links*sizeof(size64));
vf->serialnos=malloc(vf->links*sizeof(long));
ogg_page og;
/* is this even vorbis...? */
+ memset(&initial,0,sizeof(vorbis_info));
ret=_fetch_headers(vf,&initial,&serialno);
dataoffset=vf->offset;
ogg_stream_clear(&vf->os);
}
_seek_helper(vf,bisect);
- ret=_get_next_page(vf,&og,-1);
+ ret=_get_next_page(vf,&og,end-bisect);
if(ret==-1){
end=bisect;
}else{
size64 frameno=ogg_page_frameno(&og);
- if(ogg_page_serialno(&og)==vf->serialnos[link] && frameno<target){
+ if(frameno<target){
best=ret; /* raw offset of packet with frameno */
begin=vf->offset; /* raw offset of next packet */
}else{