vorbisfile documentation

vorbisfile version 1.25 - 20000615

ov_callbacks

declared in "vorbis/codec.h"

The ov_callbacks structure contains file manipulation function prototypes necessary for opening, closing, seeking, and location.

The ov_callbacks structure does not need to be user-defined if you are working with a standard file. The typical ov_open() call will fill ov_callbacks for you. However, ov_callbacks should be defined if you are using other data sources. In this situation, use ov_open_callbacks() instead of ov_open().

The callbacks are designed following the stdio functions fread, fseek, fclose, and ftell. Except where otherwise noted below, they should work the same as these functions do.

typedef struct {
  size_t (*read_func)  (void *ptr, size_t size, size_t nmemb, void *datasource);
  int    (*seek_func)  (void *datasource, int64_t offset, int whence);
  int    (*close_func) (void *datasource);
  long   (*tell_func)  (void *datasource);
} ov_callbacks;

Relevant Struct Members

read_func
Pointer to custom data reading function. Read up to size*nmemb bytes from the source into the buffer at ptr. Return the number of bytes read successfully. Must return 0 if nothing can be read. Should also set errno if an error occurs, in order to distinguish between error and EOF.
seek_func
Pointer to custom data seeking function. If your data source does not support seeking, you must return -1. Returns 0 on success. Seeks to a position offset bytes from a position defined by whence. If whence is SEEK_SET, seek relative to the file start. If SEEK_CUR, seek is relative to current file position. If SEEK_END, relative to end of file.
close_func
Pointer to custom data source closure function. This should clear any resources used by the data source, such as open files or network sockets. Returns 0.
tell_func
Pointer to custom data location function. Returns the current offset (from the start) of the data stream. If your source is non-seekable, this need not be implemented.



copyright © 2000 vorbis team

Ogg Vorbis
team@vorbis.org

vorbisfile documentation

vorbisfile version 1.25 - 20000615