Oggz parses Ogg bitstreams, forming ogg_packet structures, and calling your OggzReadPacket callback(s).
More...
|
typedef int(* | OggzReadPacket )(OGGZ *oggz, oggz_packet *packet, long serialno, void *user_data) |
| This is the signature of a callback which you must provide for Oggz to call whenever it finds a new packet in the Ogg stream associated with oggz. More...
|
|
typedef int(* | OggzReadPage )(OGGZ *oggz, const ogg_page *og, long serialno, void *user_data) |
| This is the signature of a callback which you must provide for Oggz to call whenever it finds a new page in the Ogg stream associated with oggz. More...
|
|
|
int | oggz_set_read_callback (OGGZ *oggz, long serialno, OggzReadPacket read_packet, void *user_data) |
| Set a callback for Oggz to call when a new Ogg packet is found in the stream. More...
|
|
int | oggz_set_read_page (OGGZ *oggz, long serialno, OggzReadPage read_page, void *user_data) |
| Set a callback for Oggz to call when a new Ogg page is found in the stream. More...
|
|
long | oggz_read (OGGZ *oggz, long n) |
| Read n bytes into oggz, calling any read callbacks on the fly. More...
|
|
long | oggz_read_input (OGGZ *oggz, unsigned char *buf, long n) |
| Input data into oggz. More...
|
|
Oggz parses Ogg bitstreams, forming ogg_packet structures, and calling your OggzReadPacket callback(s).
You provide Ogg data to Oggz with oggz_read() or oggz_read_input(), and independently process it in OggzReadPacket callbacks. It is possible to set a different callback per serialno (ie. for each logical bitstream in the Ogg bitstream - see the Ogg basics section for more detail).
When using an OGGZ* opened with the OGGZ_AUTO flag set, Oggz will internally calculate the granulepos for each packet, even though these are not all recorded in the file: only the last packet ending on a page will have its granulepos recorded in the page header. Within a OggzReadPacket callback, calling oggz_tell_granulepos() will retrieve the calculated granulepos.
See Oggz Seek API for information on seeking on interleaved Ogg data, and for working with calculated granulepos values.
typedef int(* OggzReadPacket)(OGGZ *oggz, oggz_packet *packet, long serialno, void *user_data) |
This is the signature of a callback which you must provide for Oggz to call whenever it finds a new packet in the Ogg stream associated with oggz.
- Parameters
-
oggz | The OGGZ handle |
packet | The packet, including its position in the stream. |
serialno | Identify the logical bistream in oggz that contains packet |
user_data | A generic pointer you have provided earlier |
- Returns
- 0 to continue, non-zero to instruct Oggz to stop.
- Note
- It is possible to provide different callbacks per logical bitstream – see oggz_set_read_callback() for more information.
typedef int(* OggzReadPage)(OGGZ *oggz, const ogg_page *og, long serialno, void *user_data) |
This is the signature of a callback which you must provide for Oggz to call whenever it finds a new page in the Ogg stream associated with oggz.
- Parameters
-
oggz | The OGGZ handle |
op | The full ogg_page (see <ogg/ogg.h>) |
user_data | A generic pointer you have provided earlier |
- Returns
- 0 to continue, non-zero to instruct Oggz to stop.
long oggz_read |
( |
OGGZ * |
oggz, |
|
|
long |
n |
|
) |
| |
Read n bytes into oggz, calling any read callbacks on the fly.
- Parameters
-
oggz | An OGGZ handle previously opened for reading |
n | A count of bytes to ingest |
- Return values
-
> 0 | The number of bytes successfully ingested. |
0 | End of file |
OGGZ_ERR_BAD_OGGZ | oggz does not refer to an existing OGGZ |
OGGZ_ERR_INVALID | Operation not suitable for this OGGZ |
OGGZ_ERR_SYSTEM | System error; check errno for details |
OGGZ_ERR_STOP_OK | Reading was stopped by a user callback returning OGGZ_STOP_OK |
OGGZ_ERR_STOP_ERR | Reading was stopped by a user callback returning OGGZ_STOP_ERR |
OGGZ_ERR_HOLE_IN_DATA | Hole (sequence number gap) detected in input data |
OGGZ_ERR_OUT_OF_MEMORY | Out of memory |
long oggz_read_input |
( |
OGGZ * |
oggz, |
|
|
unsigned char * |
buf, |
|
|
long |
n |
|
) |
| |
Input data into oggz.
- Parameters
-
oggz | An OGGZ handle previously opened for reading |
buf | A memory buffer |
n | A count of bytes to input |
- Return values
-
> 0 | The number of bytes successfully ingested. |
OGGZ_ERR_BAD_OGGZ | oggz does not refer to an existing OGGZ |
OGGZ_ERR_INVALID | Operation not suitable for this OGGZ |
OGGZ_ERR_STOP_OK | Reading was stopped by a user callback returning OGGZ_STOP_OK |
OGGZ_ERR_STOP_ERR | Reading was stopped by a user callback returning OGGZ_STOP_ERR |
OGGZ_ERR_HOLE_IN_DATA | Hole (sequence number gap) detected in input data |
OGGZ_ERR_OUT_OF_MEMORY | Out of memory |
int oggz_set_read_callback |
( |
OGGZ * |
oggz, |
|
|
long |
serialno, |
|
|
OggzReadPacket |
read_packet, |
|
|
void * |
user_data |
|
) |
| |
Set a callback for Oggz to call when a new Ogg packet is found in the stream.
- Parameters
-
oggz | An OGGZ handle previously opened for reading |
serialno | Identify the logical bitstream in oggz to attach this callback to, or -1 to attach this callback to all unattached logical bitstreams in oggz. |
read_packet | Your callback function |
user_data | Arbitrary data you wish to pass to your callback |
- Return values
-
0 | Success |
OGGZ_ERR_BAD_SERIALNO | serialno does not identify an existing logical bitstream in oggz. |
OGGZ_ERR_BAD_OGGZ | oggz does not refer to an existing OGGZ |
OGGZ_ERR_INVALID | Operation not suitable for this OGGZ |
OGGZ_ERR_OUT_OF_MEMORY | Out of memory |
- Note
- Values of serialno other than -1 allows you to specify different callback functions for each logical bitstream.
-
It is safe to call this callback from within an OggzReadPacket function, in order to specify that subsequent packets should be handled by a different OggzReadPacket function.
int oggz_set_read_page |
( |
OGGZ * |
oggz, |
|
|
long |
serialno, |
|
|
OggzReadPage |
read_page, |
|
|
void * |
user_data |
|
) |
| |
Set a callback for Oggz to call when a new Ogg page is found in the stream.
- Parameters
-
oggz | An OGGZ handle previously opened for reading |
serialno | Identify the logical bitstream in oggz to attach this callback to, or -1 to attach this callback to all unattached logical bitstreams in oggz. |
read_page | Your OggzReadPage callback function |
user_data | Arbitrary data you wish to pass to your callback |
- Return values
-
0 | Success |
OGGZ_ERR_BAD_OGGZ | oggz does not refer to an existing OGGZ |
OGGZ_ERR_INVALID | Operation not suitable for this OGGZ |
OGGZ_ERR_OUT_OF_MEMORY | Out of memory |
- Note
- Values of serialno other than -1 allows you to specify different callback functions for each logical bitstream.
-
It is safe to call this callback from within an OggzReadPage function, in order to specify that subsequent pages should be handled by a different OggzReadPage function.