1 /********************************************************************
3 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
4 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
5 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
6 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
9 * by the Xiph.Org Foundation http://www.xiph.org/ *
11 ********************************************************************
13 function: illustrate simple use of chained bitstream and vorbisfile.a
14 last mod: $Id: chaining_example.c 16243 2009-07-10 02:49:31Z xiphmont $
16 ********************************************************************/
19 #include <vorbis/codec.h>
20 #include <vorbis/vorbisfile.h>
22 #ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
31 #ifdef _WIN32 /* We need to set stdin to binary mode. Damn windows. */
32 /* Beware the evil ifdef. We avoid these where we can, but this one we
33 cannot. Don't add any more, you'll probably go to hell if you do. */
34 _setmode( _fileno( stdin
), _O_BINARY
);
37 /* open the file/pipe on stdin */
38 if(ov_open_callbacks(stdin
,&ov
,NULL
,-1,OV_CALLBACKS_NOCLOSE
)<0){
39 printf("Could not open input as an OggVorbis file.\n\n");
43 /* print details about each logical bitstream in the input */
45 printf("Input bitstream contained %ld logical bitstream section(s).\n",
47 printf("Total bitstream samples: %ld\n\n",
48 (long)ov_pcm_total(&ov
,-1));
49 printf("Total bitstream playing time: %ld seconds\n\n",
50 (long)ov_time_total(&ov
,-1));
53 printf("Standard input was not seekable.\n"
54 "First logical bitstream information:\n\n");
57 for(i
=0;i
<ov_streams(&ov
);i
++){
58 vorbis_info
*vi
=ov_info(&ov
,i
);
59 printf("\tlogical bitstream section %d information:\n",i
+1);
60 printf("\t\t%ldHz %d channels bitrate %ldkbps serial number=%ld\n",
61 vi
->rate
,vi
->channels
,ov_bitrate(&ov
,i
)/1000,
62 ov_serialnumber(&ov
,i
));
63 printf("\t\theader length: %ld bytes\n",(long)
64 (ov
.dataoffsets
[i
]-ov
.offsets
[i
]));
65 printf("\t\tcompressed length: %ld bytes\n",(long)(ov_raw_total(&ov
,i
)));
66 printf("\t\tplay time: %lds\n",(long)ov_time_total(&ov
,i
));