Mercurial > hg > sv-dependency-builds
comparison src/libvorbis-1.3.3/examples/chaining_example.c @ 86:98c1576536ae
Bring in flac, ogg, vorbis
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Tue, 19 Mar 2013 17:37:49 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
85:545efbb81310 | 86:98c1576536ae |
---|---|
1 /******************************************************************** | |
2 * * | |
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. * | |
7 * * | |
8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * | |
9 * by the Xiph.Org Foundation http://www.xiph.org/ * | |
10 * * | |
11 ******************************************************************** | |
12 | |
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 $ | |
15 | |
16 ********************************************************************/ | |
17 | |
18 #include <stdlib.h> | |
19 #include <vorbis/codec.h> | |
20 #include <vorbis/vorbisfile.h> | |
21 | |
22 #ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */ | |
23 #include <io.h> | |
24 #include <fcntl.h> | |
25 #endif | |
26 | |
27 int main(){ | |
28 OggVorbis_File ov; | |
29 int i; | |
30 | |
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 ); | |
35 #endif | |
36 | |
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"); | |
40 exit(1); | |
41 } | |
42 | |
43 /* print details about each logical bitstream in the input */ | |
44 if(ov_seekable(&ov)){ | |
45 printf("Input bitstream contained %ld logical bitstream section(s).\n", | |
46 ov_streams(&ov)); | |
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)); | |
51 | |
52 }else{ | |
53 printf("Standard input was not seekable.\n" | |
54 "First logical bitstream information:\n\n"); | |
55 } | |
56 | |
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)); | |
67 } | |
68 | |
69 ov_clear(&ov); | |
70 return 0; | |
71 } | |
72 |