X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fvorbisfile_example.c;h=d15bc4cb09c4489723dd122499028277f48a27db;hb=c8e0bf6620499100402ddd823c1dc07d339808a0;hp=488bf09a5a27e908acbe71ef0972439853b8b8ea;hpb=b71261a0a63f1687e62a539c9da263bf73fdd14b;p=platform%2Fupstream%2Flibvorbis.git diff --git a/examples/vorbisfile_example.c b/examples/vorbisfile_example.c index 488bf09..d15bc4c 100644 --- a/examples/vorbisfile_example.c +++ b/examples/vorbisfile_example.c @@ -1,17 +1,16 @@ /******************************************************************** * * * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * - * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH * - * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * + * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: simple example decoder using vorbisfile - last mod: $Id: vorbisfile_example.c,v 1.4 2001/02/02 03:51:53 xiphmont Exp $ ********************************************************************/ @@ -32,19 +31,19 @@ char pcmout[4096]; /* take 4k out of the data segment, not the stack */ -int main(int argc, char **argv){ +int main(){ OggVorbis_File vf; int eof=0; int current_section; #ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */ - /* 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 ); #endif - if(ov_open(stdin, &vf, NULL, 0) < 0) { + if(ov_open_callbacks(stdin, &vf, NULL, 0, OV_CALLBACKS_NOCLOSE) < 0) { fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n"); exit(1); } @@ -60,29 +59,33 @@ int main(int argc, char **argv){ } fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate); fprintf(stderr,"\nDecoded length: %ld samples\n", - (long)ov_pcm_total(&vf,-1)); + (long)ov_pcm_total(&vf,-1)); fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor); } - + while(!eof){ long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,¤t_section); if (ret == 0) { /* EOF */ eof=1; } else if (ret < 0) { - /* error in the stream. Not a problem, just reporting it in - case we (the app) cares. In this case, we don't. */ + if(ret==OV_EBADLINK){ + fprintf(stderr,"Corrupt bitstream section! Exiting.\n"); + exit(1); + } + + /* some other error in the stream. Not a problem, just reporting it in + case we (the app) cares. In this case, we don't. */ } else { /* we don't bother dealing with sample rate changes, etc, but - you'll have to*/ + you'll have to*/ fwrite(pcmout,1,ret,stdout); } } /* cleanup */ ov_clear(&vf); - + fprintf(stderr,"Done.\n"); return(0); } -