From: Monty Date: Wed, 8 Jul 2009 06:43:49 +0000 (+0000) Subject: analysis output / trailing whitespace cleanup X-Git-Tag: v1.3.3~132 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=321cfc8e0ed3fddba45ec8a68f053d7e22fb9fd2;p=platform%2Fupstream%2Flibvorbis.git analysis output / trailing whitespace cleanup svn path=/trunk/vorbis/; revision=16226 --- diff --git a/lib/analysis.c b/lib/analysis.c index ed1eba1..9609cd5 100644 --- a/lib/analysis.c +++ b/lib/analysis.c @@ -26,8 +26,6 @@ #include "os.h" #include "misc.h" -int analysis_noisy=1; - /* decides between modes, dispatches to the appropriate mapping. */ int vorbis_analysis(vorbis_block *vb, ogg_packet *op){ int ret,i; @@ -41,7 +39,7 @@ int vorbis_analysis(vorbis_block *vb, ogg_packet *op){ /* first things first. Make sure encode is ready */ for(i=0;ipacketblob[i]); - + /* we only have one mapping type (0), and we let the mapping code itself figure out what soft mode to use. This allows easier bitrate management */ @@ -54,7 +52,7 @@ int vorbis_analysis(vorbis_block *vb, ogg_packet *op){ /* The app is using a bitmanaged mode... but not using the bitrate management interface. */ return(OV_EINVAL); - + op->packet=oggpack_get_buffer(&vb->opb); op->bytes=oggpack_bytes(&vb->opb); op->b_o_s=0; @@ -65,43 +63,42 @@ int vorbis_analysis(vorbis_block *vb, ogg_packet *op){ return(0); } +#ifdef ANALYSIS +int analysis_noisy=1; + /* there was no great place to put this.... */ void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB,ogg_int64_t off){ -#if 0 int j; FILE *of; char buffer[80]; - /* if(i==5870){*/ - sprintf(buffer,"%s_%d.m",base,i); - of=fopen(buffer,"w"); - - if(!of)perror("failed to open data dump file"); - - for(j=0;jdatasource){ + if(vf->datasource){ if(!(vf->callbacks.seek_func)|| (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET) == -1) return OV_EREAD; @@ -109,7 +109,7 @@ static ogg_int64_t _get_next_page(OggVorbis_File *vf,ogg_page *og, if(boundary>0 && vf->offset>=boundary)return(OV_FALSE); more=ogg_sync_pageseek(&vf->oy,og); - + if(more<0){ /* skipped n bytes */ vf->offset-=more; @@ -128,7 +128,7 @@ static ogg_int64_t _get_next_page(OggVorbis_File *vf,ogg_page *og, ogg_int64_t ret=vf->offset; vf->offset+=more; return(ret); - + } } } @@ -190,7 +190,7 @@ static void _add_serialno(ogg_page *og,long **serialno_list, int *n){ }else{ *serialno_list = _ogg_malloc(sizeof(**serialno_list)); } - + (*serialno_list)[(*n)-1] = s; } @@ -250,7 +250,7 @@ static ogg_int64_t _get_prev_page_serial(OggVorbis_File *vf, if(ret_serialno == *serialno){ prefoffset=ret; *granpos=ret_gran; - } + } if(!_lookup_serialno(ret_serialno,serial_list,serial_n)){ /* we fell off the end of the link, which means we seeked @@ -306,7 +306,7 @@ static int _fetch_headers(OggVorbis_File *vf,vorbis_info *vi,vorbis_comment *vc, ret=OV_EBADHEADER; goto bail_header; } - + _add_serialno(og_ptr,serialno_list,serialno_n); } @@ -340,12 +340,12 @@ static int _fetch_headers(OggVorbis_File *vf,vorbis_info *vi,vorbis_comment *vc, } /* if this page also belongs to our vorbis stream, submit it and break */ - if(vf->ready_state==STREAMSET && + if(vf->ready_state==STREAMSET && vf->os.serialno == ogg_page_serialno(og_ptr)){ ogg_stream_pagein(&vf->os,og_ptr); break; - } - } + } + } } if(vf->ready_state!=STREAMSET){ @@ -354,37 +354,37 @@ static int _fetch_headers(OggVorbis_File *vf,vorbis_info *vi,vorbis_comment *vc, } while(1){ - + i=0; while(i<2){ /* get a page loop */ - + while(i<2){ /* get a packet loop */ - + int result=ogg_stream_packetout(&vf->os,&op); if(result==0)break; if(result==-1){ ret=OV_EBADHEADER; goto bail_header; } - + if((ret=vorbis_synthesis_headerin(vi,vc,&op))) goto bail_header; - + i++; } - + while(i<2){ if(_get_next_page(vf,og_ptr,CHUNKSIZE)<0){ ret=OV_EBADHEADER; goto bail_header; } - + /* if this page belongs to the correct stream, go parse it */ if(vf->os.serialno == ogg_page_serialno(og_ptr)){ ogg_stream_pagein(&vf->os,og_ptr); break; } - + /* if we never see the final vorbis headers before the link ends, abort */ if(ogg_page_bos(og_ptr)){ @@ -394,12 +394,12 @@ static int _fetch_headers(OggVorbis_File *vf,vorbis_info *vi,vorbis_comment *vc, }else allbos=1; } - + /* otherwise, keep looking */ } } - - return 0; + + return 0; } bail_header: @@ -425,10 +425,10 @@ static ogg_int64_t _initial_pcmoffset(OggVorbis_File *vf, vorbis_info *vi){ ogg_packet op; if(_get_next_page(vf,&og,-1)<0) break; /* should not be possible unless the file is truncated/mangled */ - + if(ogg_page_bos(&og)) break; if(ogg_page_serialno(&og)!=serialno) continue; - + /* count blocksizes of all frames in the page */ ogg_stream_pagein(&vf->os,&og); while((result=ogg_stream_packetout(&vf->os,&op))){ @@ -450,7 +450,7 @@ static ogg_int64_t _initial_pcmoffset(OggVorbis_File *vf, vorbis_info *vi){ /* less than zero? This is a stream with samples trimmed off the beginning, a normal occurrence; set the offset to zero */ if(accumulated<0)accumulated=0; - + return accumulated; } @@ -476,9 +476,9 @@ static int _bisect_forward_serialno(OggVorbis_File *vf, ogg_int64_t ret,last; int serialno = vf->os.serialno; - /* invariants: + /* invariants: we have the headers and serialnos for the link beginning at 'begin' - we have the offset and granpos of the last page in the file (potentially + we have the offset and granpos of the last page in the file (potentially not a page we care about) */ @@ -489,7 +489,7 @@ static int _bisect_forward_serialno(OggVorbis_File *vf, down to (or just started with) a single link. Now we need to find the last vorbis page belonging to the first vorbis stream for this link. */ - + while(endserial != serialno){ endserial = serialno; vf->offset=_get_prev_page_serial(vf,currentno_list,currentnos,&endserial,&endgran); @@ -509,10 +509,10 @@ static int _bisect_forward_serialno(OggVorbis_File *vf, vf->offsets[m+1]=end; vf->offsets[m]=begin; - vf->pcmlengths[m*2+1]=endgran; + vf->pcmlengths[m*2+1]=endgran; }else{ - + long *next_serialno_list=NULL; int next_serialnos=0; vorbis_info vi; @@ -522,13 +522,13 @@ static int _bisect_forward_serialno(OggVorbis_File *vf, first pages of two links. */ while(searchedoffset,end,endgran,endserial, next_serialno_list,next_serialnos,m+1); if(ret)return(ret); - + if(next_serialno_list)_ogg_free(next_serialno_list); - + vf->offsets[m+1]=next; vf->serialnos[m+1]=serialno; vf->dataoffsets[m+1]=dataoffset; @@ -598,7 +598,7 @@ static int _make_decode_ready(OggVorbis_File *vf){ }else{ if(vorbis_synthesis_init(&vf->vd,vf->vi)) return OV_EBADLINK; - } + } vorbis_block_init(&vf->vd,&vf->vb); vf->ready_state=INITSET; vf->bittrack=0.f; @@ -636,7 +636,7 @@ static int _open_seekable2(OggVorbis_File *vf){ /* now determine bitstream structure recursively */ if(_bisect_forward_serialno(vf,0,dataoffset,vf->offset,endgran,endserial, - vf->serialnos+2,vf->serialnos[1],0)<0)return(OV_EREAD); + vf->serialnos+2,vf->serialnos[1],0)<0)return(OV_EREAD); vf->offsets[0]=0; vf->serialnos[0]=serialno; @@ -647,7 +647,7 @@ static int _open_seekable2(OggVorbis_File *vf){ return(ov_raw_seek(vf,dataoffset)); } -/* clear out the current logical bitstream decoder */ +/* clear out the current logical bitstream decoder */ static void _decode_clear(OggVorbis_File *vf){ vorbis_dsp_clear(&vf->vd); vorbis_block_clear(&vf->vb); @@ -658,11 +658,11 @@ static void _decode_clear(OggVorbis_File *vf){ bitstream boundary and dumps the decoding machine. If the decoding machine is unloaded, it loads it. It also keeps pcm_offset up to date (seek and read both use this. seek uses a special hack with - readp). + readp). return: <0) error, OV_HOLE (lost packet) or OV_EOF 0) need more data (only if readp==0) - 1) got a packet + 1) got a packet */ static int _fetch_and_process_packet(OggVorbis_File *vf, @@ -674,7 +674,7 @@ static int _fetch_and_process_packet(OggVorbis_File *vf, /* handle one packet. Try to fetch it from current stream state */ /* extract packets from page */ while(1){ - + /* process a packet if we can. If the machine isn't loaded, neither is a page */ if(vf->ready_state==INITSET){ @@ -703,17 +703,17 @@ static int _fetch_and_process_packet(OggVorbis_File *vf, /* for proper use of libvorbis within libvorbisfile, oldsamples will always be zero. */ if(oldsamples)return(OV_EFAULT); - + vorbis_synthesis_blockin(&vf->vd,&vf->vb); vf->samptrack+=vorbis_synthesis_pcmout(&vf->vd,NULL)-oldsamples; vf->bittrack+=op_ptr->bytes*8; } - + /* update the pcm offset. */ if(granulepos!=-1 && !op_ptr->e_o_s){ int link=(vf->seekable?vf->current_link:0); int i,samples; - + /* this packet has a pcm_offset on it (the last packet completed on a page carries the offset) After processing (above), we know the pcm position of the *last* sample @@ -735,7 +735,7 @@ static int _fetch_and_process_packet(OggVorbis_File *vf, is very broken */ samples=vorbis_synthesis_pcmout(&vf->vd,NULL); - + granulepos-=samples; for(i=0;ipcmlengths[i*2+1]; @@ -744,21 +744,21 @@ static int _fetch_and_process_packet(OggVorbis_File *vf, return(1); } } - else + else break; } } if(vf->ready_state>=OPENED){ ogg_int64_t ret; - - while(1){ + + while(1){ /* the loop is not strictly necessary, but there's no sense in doing the extra checks of the larger loop for the common case in a multiplexed bistream where the page is simply part of a different logical bitstream; keep reading until we get one with the correct serialno */ - + if(!readp)return(0); if((ret=_get_next_page(vf,&og,-1))<0){ return(OV_EOF); /* eof. leave unitialized */ @@ -767,21 +767,21 @@ static int _fetch_and_process_packet(OggVorbis_File *vf, /* bitrate tracking; add the header's bytes here, the body bytes are done by packet above */ vf->bittrack+=og.header_len*8; - + if(vf->ready_state==INITSET){ if(vf->current_serialno!=ogg_page_serialno(&og)){ - - /* two possibilities: + + /* two possibilities: 1) our decoding just traversed a bitstream boundary 2) another stream is multiplexed into this logical section */ - + if(ogg_page_bos(&og)){ /* boundary case */ if(!spanp) return(OV_EOF); - + _decode_clear(vf); - + if(!vf->seekable){ vorbis_info_clear(vf->vi); vorbis_comment_clear(vf->vc); @@ -798,7 +798,7 @@ static int _fetch_and_process_packet(OggVorbis_File *vf, } /* Do we need to load a new machine before submitting the page? */ - /* This is different in the seekable and non-seekable cases. + /* This is different in the seekable and non-seekable cases. In the seekable case, we already have all the header information loaded and cached; we just initialize the machine @@ -809,7 +809,7 @@ static int _fetch_and_process_packet(OggVorbis_File *vf, we're now nominally at the header of the next bitstream */ - if(vf->ready_state!=INITSET){ + if(vf->ready_state!=INITSET){ int link; if(vf->ready_statecurrent_serialno=serialno; vf->current_link=link; - + ogg_stream_reset_serialno(&vf->os,vf->current_serialno); vf->ready_state=STREAMSET; - + }else{ /* we're streaming */ /* fetch the three header packets, build the info struct */ - + int ret=_fetch_headers(vf,vf->vi,vf->vc,NULL,NULL,&og); if(ret)return(ret); vf->current_serialno=vf->os.serialno; @@ -844,7 +844,7 @@ static int _fetch_and_process_packet(OggVorbis_File *vf, link=0; } } - + { int ret=_make_decode_ready(vf); if(ret<0)return ret; @@ -871,7 +871,7 @@ static int _ov_open1(void *f,OggVorbis_File *vf,char *initial, long *serialno_list=NULL; int serialno_list_size=0; int ret; - + memset(vf,0,sizeof(*vf)); vf->datasource=f; vf->callbacks = callbacks; @@ -912,7 +912,7 @@ static int _ov_open1(void *f,OggVorbis_File *vf,char *initial, vf->serialnos[0]=vf->current_serialno; vf->serialnos[1]=serialno_list_size; memcpy(vf->serialnos+2,serialno_list,serialno_list_size*sizeof(*vf->serialnos)); - + vf->offsets=_ogg_calloc(1,sizeof(*vf->offsets)); vf->dataoffsets=_ogg_calloc(1,sizeof(*vf->dataoffsets)); vf->offsets[0]=0; @@ -948,7 +948,7 @@ int ov_clear(OggVorbis_File *vf){ vorbis_block_clear(&vf->vb); vorbis_dsp_clear(&vf->vd); ogg_stream_clear(&vf->os); - + if(vf->vi && vf->links){ int i; for(i=0;ilinks;i++){ @@ -975,7 +975,7 @@ int ov_clear(OggVorbis_File *vf){ /* inspects the OggVorbis file and finds/documents all the logical bitstreams contained in it. Tries to be tolerant of logical - bitstream sections that are truncated/woogie. + bitstream sections that are truncated/woogie. return: -1) error 0) OK @@ -1009,10 +1009,10 @@ int ov_fopen(char *path,OggVorbis_File *vf){ return ret; } - + /* cheap hack for game usage where downsampling is desirable; there's no need for SRC as we can just do it cheaply in libvorbis. */ - + int ov_halfrate(OggVorbis_File *vf,int flag){ int i; if(vf->vi==NULL)return OV_EINVAL; @@ -1023,7 +1023,7 @@ int ov_halfrate(OggVorbis_File *vf,int flag){ for now dumping the decode machine is needed to reinit the MDCT lookups. 1.1 libvorbis is planned to be able to switch on the fly */ - + for(i=0;ilinks;i++){ if(vorbis_synthesis_halfrate(vf->vi+i,flag)){ ov_halfrate(vf,0); @@ -1059,7 +1059,7 @@ int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes){ return ov_test_callbacks((void *)f, vf, initial, ibytes, callbacks); } - + int ov_test_open(OggVorbis_File *vf){ if(vf->ready_state!=PARTOPEN)return(OV_EINVAL); return _ov_open2(vf); @@ -1124,7 +1124,7 @@ long ov_bitrate(OggVorbis_File *vf,int i){ /* returns the actual bitrate since last call. returns -1 if no additional data to offer since last call (or at beginning of stream), - EINVAL if stream is only partially open + EINVAL if stream is only partially open */ long ov_bitrate_instant(OggVorbis_File *vf){ int link=(vf->seekable?vf->current_link:0); @@ -1170,7 +1170,7 @@ ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i){ /* returns: total PCM length (samples) of content if i==-1 PCM length (samples) of that logical bitstream for i==0 to n OV_EINVAL if the stream is not seekable (we can't know the - length) or only partially open + length) or only partially open */ ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i){ if(vf->ready_stateready_stateos, vf->current_serialno); /* must set serialno */ vorbis_synthesis_restart(&vf->vd); - + ret=_seek_helper(vf,pos); if(ret)goto seek_error; @@ -1241,12 +1241,12 @@ int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){ So, a hack. We use two stream states; a local scratch state and the shared vf->os stream state. We use the local state to - scan, and the shared state as a buffer for later decode. + scan, and the shared state as a buffer for later decode. Unfortuantely, on the last page we still advance to last packet because the granulepos on the last page is not necessarily on a packet boundary, and we need to make sure the granpos is - correct. + correct. */ { @@ -1255,7 +1255,7 @@ int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){ int lastblock=0; int accblock=0; int thisblock=0; - int eosflag=0; + int eosflag=0; ogg_stream_init(&work_os,vf->current_serialno); /* get the memory ready */ ogg_stream_reset(&work_os); /* eliminate the spurious OV_HOLE @@ -1266,7 +1266,7 @@ int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){ if(vf->ready_state>=STREAMSET){ /* snarf/scan a packet if we can */ int result=ogg_stream_packetout(&work_os,&op); - + if(result>0){ if(vf->vi[vf->current_link].codec_setup){ @@ -1275,18 +1275,18 @@ int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){ ogg_stream_packetout(&vf->os,NULL); thisblock=0; }else{ - + if(eosflag) ogg_stream_packetout(&vf->os,NULL); else if(lastblock)accblock+=(lastblock+thisblock)>>2; - } + } if(op.granulepos!=-1){ int i,link=vf->current_link; ogg_int64_t granulepos=op.granulepos-vf->pcmlengths[link*2]; if(granulepos<0)granulepos=0; - + for(i=0;ipcmlengths[i*2+1]; vf->pcm_offset=granulepos-accblock; @@ -1298,7 +1298,7 @@ int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){ ogg_stream_packetout(&vf->os,NULL); } } - + if(!lastblock){ if(_get_next_page(vf,&og,-1)<0){ vf->pcm_offset=ov_pcm_total(vf,-1); @@ -1309,15 +1309,15 @@ int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){ vf->pcm_offset=-1; break; } - + /* has our decoding just traversed a bitstream boundary? */ if(vf->ready_state>=STREAMSET){ if(vf->current_serialno!=ogg_page_serialno(&og)){ - - /* two possibilities: + + /* two possibilities: 1) our decoding just traversed a bitstream boundary 2) another stream is multiplexed into this logical section? */ - + if(ogg_page_bos(&og)){ /* we traversed */ _decode_clear(vf); /* clear out stream state */ @@ -1339,11 +1339,11 @@ int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){ vf->current_link=link; vf->current_serialno=serialno; ogg_stream_reset_serialno(&vf->os,serialno); - ogg_stream_reset_serialno(&work_os,serialno); + ogg_stream_reset_serialno(&work_os,serialno); vf->ready_state=STREAMSET; - + } - + ogg_stream_pagein(&vf->os,&og); ogg_stream_pagein(&work_os,&og); eosflag=ogg_page_eos(&og); @@ -1373,12 +1373,12 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ int link=-1; ogg_int64_t result=0; ogg_int64_t total=ov_pcm_total(vf,-1); - + if(vf->ready_stateseekable)return(OV_ENOSEEK); if(pos<0 || pos>total)return(OV_EINVAL); - + /* which bitstream section does this pcm offset occur in? */ for(link=vf->links-1;link>=0;link--){ total-=vf->pcmlengths[link*2+1]; @@ -1399,11 +1399,11 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ ogg_int64_t endtime = vf->pcmlengths[link*2+1]+begintime; ogg_int64_t target=pos-total+begintime; ogg_int64_t best=begin; - + ogg_page og; while(beginoffset); if(result==OV_EREAD) goto seek_error; @@ -1439,12 +1439,12 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ granulepos=ogg_page_granulepos(&og); if(granulepos==-1)continue; - + if(granuleposoffset; /* raw offset of next page */ begintime=granulepos; - + if(target-begintime>44100)break; bisect=begin; /* *not* begin + 1 */ }else{ @@ -1473,22 +1473,22 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ { ogg_page og; ogg_packet op; - + /* seek */ result=_seek_helper(vf,best); vf->pcm_offset=-1; if(result) goto seek_error; result=_get_next_page(vf,&og,-1); if(result<0) goto seek_error; - + if(link!=vf->current_link){ /* Different link; dump entire decode machine */ - _decode_clear(vf); - + _decode_clear(vf); + vf->current_link=link; vf->current_serialno=vf->serialnos[link]; vf->ready_state=STREAMSET; - + }else{ vorbis_synthesis_restart(&vf->vd); } @@ -1504,10 +1504,10 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ preceeding page. Keep fetching previous pages until we get one with a granulepos or without the 'continued' flag set. Then just use raw_seek for simplicity. */ - + result=_seek_helper(vf,best); if(result<0) goto seek_error; - + while(1){ result=_get_prev_page(vf,&og); if(result<0) goto seek_error; @@ -1520,7 +1520,7 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ } } if(result<0){ - result = OV_EBADPACKET; + result = OV_EBADPACKET; goto seek_error; } if(op.granulepos!=-1){ @@ -1533,7 +1533,7 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ } } } - + /* verify result */ if(vf->pcm_offset>pos || pos>ov_pcm_total(vf,-1)){ result=OV_EFAULT; @@ -1542,7 +1542,7 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ vf->bittrack=0.f; vf->samptrack=0.f; return(0); - + seek_error: /* dump machine so we're in a known state */ vf->pcm_offset=-1; @@ -1550,7 +1550,7 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ return (int)result; } -/* seek to a sample offset relative to the decompressed pcm stream +/* seek to a sample offset relative to the decompressed pcm stream returns zero on success, nonzero on failure */ int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){ @@ -1574,20 +1574,20 @@ int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){ continue; /* non audio packet */ } if(lastblock)vf->pcm_offset+=(lastblock+thisblock)>>2; - + if(vf->pcm_offset+((thisblock+ vorbis_info_blocksize(vf->vi,1))>>2)>=pos)break; - + /* remove the packet from packet queue and track its granulepos */ ogg_stream_packetout(&vf->os,NULL); vorbis_synthesis_trackonly(&vf->vb,&op); /* set up a vb with only tracking, no pcm_decode */ - vorbis_synthesis_blockin(&vf->vd,&vf->vb); - + vorbis_synthesis_blockin(&vf->vd,&vf->vb); + /* end of logical stream case is hard, especially with exact length positioning. */ - + if(op.granulepos>-1){ int i; /* always believe the stream markers */ @@ -1596,28 +1596,28 @@ int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){ for(i=0;icurrent_link;i++) vf->pcm_offset+=vf->pcmlengths[i*2+1]; } - + lastblock=thisblock; - + }else{ if(ret<0 && ret!=OV_HOLE)break; - + /* suck in a new page */ if(_get_next_page(vf,&og,-1)<0)break; if(ogg_page_bos(&og))_decode_clear(vf); - + if(vf->ready_statelinks;link++) if(vf->serialnos[link]==serialno)break; - if(link==vf->links) continue; + if(link==vf->links) continue; vf->current_link=link; - - vf->ready_state=STREAMSET; + + vf->ready_state=STREAMSET; vf->current_serialno=ogg_page_serialno(&og); - ogg_stream_reset_serialno(&vf->os,serialno); + ogg_stream_reset_serialno(&vf->os,serialno); ret=_make_decode_ready(vf); if(ret)return ret; lastblock=0; @@ -1638,7 +1638,7 @@ int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){ if(samples>target)samples=target; vorbis_synthesis_read(&vf->vd,samples); vf->pcm_offset+=samples; - + if(samplespcm_offset=ov_pcm_total(vf,-1); /* eof */ @@ -1646,7 +1646,7 @@ int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){ return 0; } -/* seek to a playback time relative to the decompressed pcm stream +/* seek to a playback time relative to the decompressed pcm stream returns zero on success, nonzero on failure */ int ov_time_seek(OggVorbis_File *vf,double seconds){ /* translate time to PCM position and call ov_pcm_seek */ @@ -1658,7 +1658,7 @@ int ov_time_seek(OggVorbis_File *vf,double seconds){ if(vf->ready_stateseekable)return(OV_ENOSEEK); if(seconds<0)return(OV_EINVAL); - + /* which bitstream section does this time offset occur in? */ for(link=0;linklinks;link++){ double addsec = ov_time_total(vf,link); @@ -1676,7 +1676,7 @@ int ov_time_seek(OggVorbis_File *vf,double seconds){ } } -/* page-granularity version of ov_time_seek +/* page-granularity version of ov_time_seek returns zero on success, nonzero on failure */ int ov_time_seek_page(OggVorbis_File *vf,double seconds){ /* translate time to PCM position and call ov_pcm_seek */ @@ -1688,7 +1688,7 @@ int ov_time_seek_page(OggVorbis_File *vf,double seconds){ if(vf->ready_stateseekable)return(OV_ENOSEEK); if(seconds<0)return(OV_EINVAL); - + /* which bitstream section does this time offset occur in? */ for(link=0;linklinks;link++){ double addsec = ov_time_total(vf,link); @@ -1724,12 +1724,12 @@ double ov_time_tell(OggVorbis_File *vf){ int link=0; ogg_int64_t pcm_total=0; double time_total=0.f; - + if(vf->ready_stateseekable){ pcm_total=ov_pcm_total(vf,-1); time_total=ov_time_total(vf,-1); - + /* which bitstream section does this time offset occur in? */ for(link=vf->links-1;link>=0;link--){ pcm_total-=vf->pcmlengths[link*2+1]; @@ -1744,7 +1744,7 @@ double ov_time_tell(OggVorbis_File *vf){ /* link: -1) return the vorbis_info struct for the bitstream section currently being decoded 0-n) to request information for a specific bitstream section - + In the case of a non-seekable bitstream, any call returns the current bitstream. NULL in the case that the machine is not initialized */ @@ -1815,7 +1815,7 @@ static int host_is_big_endian() { length) the byte length requested to be placed into buffer bigendianp) should the data be packed LSB first (0) or MSB first (1) - word) word size for output. currently 1 (byte) or + word) word size for output. currently 1 (byte) or 2 (16 bit short) return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL) @@ -1856,9 +1856,9 @@ long ov_read_filter(OggVorbis_File *vf,char *buffer,int length, } if(samples>0){ - + /* yay! proceed to pack data into the byte buffer */ - + long channels=ov_info(vf,-1)->channels; long bytespersample=word * channels; vorbis_fpu_control fpu; @@ -1866,7 +1866,7 @@ long ov_read_filter(OggVorbis_File *vf,char *buffer,int length, if(samples <= 0) return OV_EINVAL; - + /* Here. */ if(filter) filter(pcm,channels,samples,filter_param); @@ -1887,10 +1887,10 @@ long ov_read_filter(OggVorbis_File *vf,char *buffer,int length, vorbis_fpu_restore(fpu); }else{ int off=(sgned?0:32768); - + if(host_endian==bigendianp){ if(sgned){ - + vorbis_fpu_setround(&fpu); for(i=0;i>8); } - vorbis_fpu_restore(fpu); - + vorbis_fpu_restore(fpu); + } } } - + vorbis_synthesis_read(&vf->vd,samples); vf->pcm_offset+=samples; if(bitstream)*bitstream=vf->current_link; @@ -2013,8 +2013,6 @@ long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int length, } extern float *vorbis_window(vorbis_dsp_state *v,int W); -extern void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB, - ogg_int64_t off); static void _ov_splice(float **pcm,float **lappcm, int n1, int n2, @@ -2050,7 +2048,7 @@ static void _ov_splice(float **pcm,float **lappcm, } } - + /* make sure vf is INITSET */ static int _ov_initset(OggVorbis_File *vf){ while(1){ @@ -2072,13 +2070,13 @@ static int _ov_initprime(OggVorbis_File *vf){ while(1){ if(vf->ready_state==INITSET) if(vorbis_synthesis_pcmout(vd,NULL))break; - + /* suck in another packet */ { int ret=_fetch_and_process_packet(vf,NULL,1,0); if(ret<0 && ret!=OV_HOLE)return(ret); } - } + } return 0; } @@ -2165,12 +2163,15 @@ int ov_crosslap(OggVorbis_File *vf1, OggVorbis_File *vf2){ buffer of vf2 */ /* consolidate and expose the buffer. */ vorbis_synthesis_lapout(&vf2->vd,&pcm); + +#if 0 _analysis_output_always("pcmL",0,pcm[0],n1*2,0,0,0); _analysis_output_always("pcmR",0,pcm[1],n1*2,0,0,0); +#endif /* splice */ _ov_splice(pcm,lappcm,n1,n2,vi1->channels,vi2->channels,w1,w2); - + /* done */ return(0); } @@ -2189,7 +2190,7 @@ static int _ov_64_seek_lap(OggVorbis_File *vf,ogg_int64_t pos, if(ret)return(ret); vi=ov_info(vf,-1); hs=ov_halfrate_p(vf); - + ch1=vi->channels; n1=vorbis_info_blocksize(vi,0)>>(1+hs); w1=vorbis_window(&vf->vd,0); /* window arrays from libvorbis are