[16] | 1 | <html> |
---|
| 2 | |
---|
| 3 | <head> |
---|
| 4 | <title>Vorbisfile - datatype - OggVorbis_File</title> |
---|
| 5 | <link rel=stylesheet href="style.css" type="text/css"> |
---|
| 6 | </head> |
---|
| 7 | |
---|
| 8 | <body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff"> |
---|
| 9 | <table border=0 width=100%> |
---|
| 10 | <tr> |
---|
| 11 | <td><p class=tiny>Vorbisfile documentation</p></td> |
---|
| 12 | <td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td> |
---|
| 13 | </tr> |
---|
| 14 | </table> |
---|
| 15 | |
---|
| 16 | <h1>OggVorbis_File</h1> |
---|
| 17 | |
---|
| 18 | <p><i>declared in "vorbis/vorbisfile.h"</i></p> |
---|
| 19 | |
---|
| 20 | <p> |
---|
| 21 | The OggVorbis_File structure defines an Ogg Vorbis file. |
---|
| 22 | <p> |
---|
| 23 | |
---|
| 24 | This structure is used in all libvorbisfile routines. Before it can |
---|
| 25 | be used, it must be initialized by <a |
---|
| 26 | href="ov_open.html">ov_open()</a>, <a |
---|
| 27 | href="ov_fopen.html">ov_fopen()</a>, or <a |
---|
| 28 | href="ov_open_callbacks.html">ov_open_callbacks()</a>. <em>Important |
---|
| 29 | Note:</em> The use of <a href="ov_open.html">ov_open()</a> is |
---|
| 30 | discouraged under Windows due to a peculiarity of Windows linking |
---|
| 31 | convention; use <a href="ov_fopen.html">ov_fopen()</a> or <a |
---|
| 32 | href="ov_open_callbacks.html">ov_open_callbacks()</a> instead. This |
---|
| 33 | caution only applies to Windows; use of <a |
---|
| 34 | href="ov_open.html">ov_open()</a> is appropriate for all other |
---|
| 35 | platforms. See the <a href="ov_open.html">ov_open()</a> page for more |
---|
| 36 | information. |
---|
| 37 | |
---|
| 38 | <p> |
---|
| 39 | After use, the OggVorbis_File structure must be deallocated with a |
---|
| 40 | call to <a href="ov_clear.html">ov_clear()</a>. |
---|
| 41 | |
---|
| 42 | <p> |
---|
| 43 | Note that once a file handle is passed to a successful <a |
---|
| 44 | href="ov_open.html">ov_open()</a> call, the handle is owned by |
---|
| 45 | libvorbisfile and will be closed by libvorbisfile later during the |
---|
| 46 | call to <a href="ov_clear.html">ov_clear()</a>. The handle should not |
---|
| 47 | be used or closed outside of the libvorbisfile API. Similarly, files |
---|
| 48 | opened by <a href="ov_fopen.html">ov_fopen()</a> will also be closed |
---|
| 49 | internally by vorbisfile in <a href="ov_clear.html">ov_clear()</a>.<p> |
---|
| 50 | |
---|
| 51 | <a href="ov_open_callbacks.html">ov_open_callbacks()</a> allows the |
---|
| 52 | application to choose whether libvorbisfile will or will not close the |
---|
| 53 | handle in <a href="ov_clear.html">ov_clear()</a>; see the <a |
---|
| 54 | href="ov_open_callbacks.html">ov_open_callbacks()</a> page for more information.<p> |
---|
| 55 | |
---|
| 56 | If a call to <a href="ov_open.html">ov_open()</a> or <a |
---|
| 57 | href="ov_open_callbacks.html">ov_open_callbacks()</a> <b>fails</b>, |
---|
| 58 | libvorbisfile does <b>not</b> assume ownership of the handle and the |
---|
| 59 | application is expected to close it if necessary. A failed <a |
---|
| 60 | href="ov_fopen.html">ov_fopen()</a> call will internally close the |
---|
| 61 | file handle if the open process fails.<p> |
---|
| 62 | |
---|
| 63 | <br><br> |
---|
| 64 | <table border=0 width=100% color=black cellspacing=0 cellpadding=7> |
---|
| 65 | <tr bgcolor=#cccccc> |
---|
| 66 | <td> |
---|
| 67 | <pre><b>typedef struct { |
---|
| 68 | void *datasource; /* Pointer to a FILE *, etc. */ |
---|
| 69 | int seekable; |
---|
| 70 | ogg_int64_t offset; |
---|
| 71 | ogg_int64_t end; |
---|
| 72 | ogg_sync_state oy; |
---|
| 73 | |
---|
| 74 | /* If the FILE handle isn't seekable (eg, a pipe), only the current |
---|
| 75 | stream appears */ |
---|
| 76 | int links; |
---|
| 77 | ogg_int64_t *offsets; |
---|
| 78 | ogg_int64_t *dataoffsets; |
---|
| 79 | long *serialnos; |
---|
| 80 | ogg_int64_t *pcmlengths; |
---|
| 81 | vorbis_info *vi; |
---|
| 82 | vorbis_comment *vc; |
---|
| 83 | |
---|
| 84 | /* Decoding working state local storage */ |
---|
| 85 | ogg_int64_t pcm_offset; |
---|
| 86 | int ready_state; |
---|
| 87 | long current_serialno; |
---|
| 88 | int current_link; |
---|
| 89 | |
---|
| 90 | ogg_int64_t bittrack; |
---|
| 91 | ogg_int64_t samptrack; |
---|
| 92 | |
---|
| 93 | ogg_stream_state os; /* take physical pages, weld into a logical |
---|
| 94 | stream of packets */ |
---|
| 95 | vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ |
---|
| 96 | vorbis_block vb; /* local working space for packet->PCM decode */ |
---|
| 97 | |
---|
| 98 | <a href="ov_callbacks.html">ov_callbacks</a> callbacks; |
---|
| 99 | |
---|
| 100 | } OggVorbis_File;</b></pre> |
---|
| 101 | </td> |
---|
| 102 | </tr> |
---|
| 103 | </table> |
---|
| 104 | |
---|
| 105 | <h3>Relevant Struct Members</h3> |
---|
| 106 | <dl> |
---|
| 107 | <dt><i>datasource</i></dt> |
---|
| 108 | |
---|
| 109 | <dd>Pointer to file or other ogg source. When using stdio based |
---|
| 110 | file/stream access, this field contains a <tt>FILE</tt> pointer. When using |
---|
| 111 | custom IO via callbacks, libvorbisfile treats this void pointer as a |
---|
| 112 | black box only to be passed to the callback routines provided by the |
---|
| 113 | application.</dd> |
---|
| 114 | |
---|
| 115 | <dt><i>seekable</i></dt> |
---|
| 116 | <dd>Read-only int indicating whether file is seekable. E.g., a physical file is seekable, a pipe isn't.</dd> |
---|
| 117 | <dt><i>links</i></dt> |
---|
| 118 | <dd>Read-only int indicating the number of logical bitstreams within the physical bitstream.</dd> |
---|
| 119 | <dt><i>ov_callbacks</i></dt> |
---|
| 120 | <dd>Collection of file manipulation routines to be used on this data source. When using stdio/FILE access via <a href="ov_open.html">ov_open()</a>, the callbacks will be filled in with stdio calls or wrappers to stdio calls.</dd> |
---|
| 121 | </dl> |
---|
| 122 | |
---|
| 123 | <br><br> |
---|
| 124 | <hr noshade> |
---|
| 125 | <table border=0 width=100%> |
---|
| 126 | <tr valign=top> |
---|
| 127 | <td><p class=tiny>copyright © 2007 Xiph.org</p></td> |
---|
| 128 | <td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td> |
---|
| 129 | </tr><tr> |
---|
| 130 | <td><p class=tiny>Vorbisfile documentation</p></td> |
---|
| 131 | <td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td> |
---|
| 132 | </tr> |
---|
| 133 | </table> |
---|
| 134 | |
---|
| 135 | </body> |
---|
| 136 | |
---|
| 137 | </html> |
---|