Tremor - datatype - OggVorbis_File

Tremor documentation | Tremor version 1.0 - 20020403

# OggVorbis_File

declared in "ivorbisfile.h"

The OggVorbis_File structure defines an Ogg Vorbis file.

This structure is used in all libvorbisidec routines. Before it can be used, it must be initialized by ov_open() or ov_open_callbacks().

After use, the OggVorbis_File structure must be deallocated with a call to ov_clear().

Once a file or data source is opened successfully by libvorbisidec (using ov_open() or ov_open_callbacks()), it is owned by libvorbisidec. The file should not be used by any other applications or functions outside of the libvorbisidec API. The file must not be closed directly by the application at any time after a successful open; libvorbisidec expects to close the file within ov_clear().

If the call to ov_open() or ov_open_callbacks() fails, libvorbisidec does not assume ownership of the file and the application is expected to close it if necessary.

    typedef struct {
      void             *datasource; /* Pointer to a FILE *, etc. */
      int              seekable;
      ogg_int64_t      offset;
      ogg_int64_t      end;
      ogg_sync_state   oy;

      /* If the FILE handle isn't seekable (eg, a pipe), only the current
         stream appears */
      int              links;
      ogg_int64_t      *offsets;
      ogg_int64_t      *dataoffsets;
      long             *serialnos;
      ogg_int64_t      *pcmlengths;
      vorbis_info      *vi;
      vorbis_comment   *vc;

      /* Decoding working state local storage */
      ogg_int64_t      pcm_offset;
      int              ready_state;
      long             current_serialno;
      int              current_link;

      ogg_int64_t      bittrack;
      ogg_int64_t      samptrack;

      ogg_stream_state os; /* take physical pages, weld into a logical
                              stream of packets */
      vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
      vorbis_block     vb; /* local working space for packet->PCM decode */

      ov_callbacks callbacks;

    } OggVorbis_File;

### Relevant Struct Members

datasource
  Pointer to file or other ogg source. When using stdio based file/stream access, this field contains a `FILE` pointer. When using custom IO via callbacks, libvorbisidec treats this void pointer as a black box only to be passed to the callback routines provided by the application.
seekable
  Read-only int indicating whether file is seekable. E.g., a physical file is seekable, a pipe isn't.
links
  Read-only int indicating the number of logical bitstreams within the physical bitstream.
ov_callbacks
  Collection of file manipulation routines to be used on this data source. When using stdio/FILE access via ov_open(), the callbacks will be filled in with stdio calls or wrappers to stdio calls.

### Notes

Tremor requires a native 64 bit integer type to compile and function; The GNU build system will locate and typedef `ogg_int64_t` to the appropriate native type. If not using the GNU build tools, you will need to define `ogg_int64_t` as a 64-bit type inside your system's project file/Makefile, etc. On win32, for example, this should be defined as `__int64`.

copyright © 2002 Xiph.org | Ogg Vorbis
Tremor documentation | Tremor version 1.0 - 20020403