X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fencoder_example.c;h=d46a051a2dcdee553088b993527d4cadc2f0feda;hb=1ffc217cb77636d1a06939638d14c583e1e89525;hp=95cfe552cc16407aef7bd600813f533cd1ecfa5b;hpb=700cd11616fe7d2c331020e04239dcc0460b5fc6;p=platform%2Fupstream%2Flibvorbis.git diff --git a/examples/encoder_example.c b/examples/encoder_example.c index 95cfe55..d46a051 100644 --- a/examples/encoder_example.c +++ b/examples/encoder_example.c @@ -11,7 +11,6 @@ ******************************************************************** function: simple example encoder - last mod: $Id$ ********************************************************************/ @@ -41,12 +40,12 @@ signed char readbuffer[READ*4+44]; /* out of the data segment, not the stack */ int main(){ ogg_stream_state os; /* take physical pages, weld into a logical - stream of packets */ + stream of packets */ ogg_page og; /* one Ogg bitstream page. Vorbis packets are inside */ ogg_packet op; /* one raw packet of data for decode */ - + vorbis_info vi; /* struct that stores all the static vorbis bitstream - settings */ + settings */ vorbis_comment vc; /* struct that stores all the user comments */ vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ @@ -62,14 +61,14 @@ int main(){ /* this also lets the user set stdin and stdout */ #endif - /* we cheat on the WAV header; we just bypass 44 bytes and never - verify that it matches 16bit/stereo/44.1kHz. This is just an - example, after all. */ + /* we cheat on the WAV header; we just bypass 44 bytes (simplest WAV + header is 44 bytes) and assume that the data is 44.1khz, stereo, 16 bit + little endian pcm samples. This is just an example, after all. */ #ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */ /* if we were reading/writing a file, it would also need to in binary mode, eg, fopen("file.wav","wb"); */ - /* Beware the evil ifdef. We avoid these where we can, but this one we + /* Beware the evil ifdef. We avoid these where we can, but this one we cannot. Don't add any more, you'll probably go to hell if you do. */ _setmode( _fileno( stdin ), _O_BINARY ); _setmode( _fileno( stdout ), _O_BINARY ); @@ -85,8 +84,7 @@ int main(){ { fread(readbuffer,1,2,stdin); - if ( ! strncmp((char*)readbuffer, "da", 2) ) - { + if ( ! strncmp((char*)readbuffer, "da", 2) ){ founddata = 1; fread(readbuffer,1,6,stdin); break; @@ -103,15 +101,15 @@ int main(){ /********************************************************************* Encoding using a VBR quality mode. The usable range is -.1 (lowest quality, smallest file) to 1. (highest quality, largest file). - Example quality mode .4: 44kHz stereo coupled, roughly 128kbps VBR - + Example quality mode .4: 44kHz stereo coupled, roughly 128kbps VBR + ret = vorbis_encode_init_vbr(&vi,2,44100,.4); --------------------------------------------------------------------- Encoding using an average bitrate mode (ABR). - example: 44kHz stereo coupled, average 128kbps VBR - + example: 44kHz stereo coupled, average 128kbps VBR + ret = vorbis_encode_init(&vi,2,44100,-1,128000,-1); --------------------------------------------------------------------- @@ -141,7 +139,7 @@ int main(){ /* set up the analysis state and auxiliary encoding storage */ vorbis_analysis_init(&vd,&vi); vorbis_block_init(&vd,&vb); - + /* set up our packet->stream encoder */ /* pick a random serial number; that way we can more likely build chained streams just by concatenation */ @@ -162,22 +160,22 @@ int main(){ vorbis_analysis_headerout(&vd,&vc,&header,&header_comm,&header_code); ogg_stream_packetin(&os,&header); /* automatically placed in its own - page */ + page */ ogg_stream_packetin(&os,&header_comm); ogg_stream_packetin(&os,&header_code); - /* This ensures the actual - * audio data will start on a new page, as per spec - */ - while(!eos){ - int result=ogg_stream_flush(&os,&og); - if(result==0)break; - fwrite(og.header,1,og.header_len,stdout); - fwrite(og.body,1,og.body_len,stdout); - } + /* This ensures the actual + * audio data will start on a new page, as per spec + */ + while(!eos){ + int result=ogg_stream_flush(&os,&og); + if(result==0)break; + fwrite(og.header,1,og.header_len,stdout); + fwrite(og.body,1,og.body_len,stdout); + } } - + while(!eos){ long i; long bytes=fread(readbuffer,1,READ*4,stdin); /* stereo hardwired here */ @@ -194,15 +192,15 @@ int main(){ /* expose the buffer to submit data */ float **buffer=vorbis_analysis_buffer(&vd,READ); - + /* uninterleave samples */ for(i=0;i