Note:
This API doc is automatically generated from the current development version that you can get via Subversion or as a daily snapshot from
http://mpg123.org/snapshot.
There may be differences (additions) compared to the latest stable release. See
NEWS.libmpg123 and the overall
NEWS file on libmpg123 versions and important changes between them.
Let me emphasize that the policy for libmpg123 is to always stay backwards compatible -- only
additions are planned (and it's not yet planned to change the plans;-).
mpg123 low level I/O
|
Functions |
| int | mpg123_replace_buffer (mpg123_handle *mh, unsigned char *data, size_t size) |
| size_t | mpg123_outblock (mpg123_handle *mh) |
| int | mpg123_replace_reader (mpg123_handle *mh, ssize_t(*r_read)(int, void *, size_t), off_t(*r_lseek)(int, off_t, int)) |
| int | mpg123_replace_reader_handle (mpg123_handle *mh, ssize_t(*r_read)(void *, void *, size_t), off_t(*r_lseek)(void *, off_t, int), void(*cleanup)(void *)) |
Detailed Description
You may want to do tricky stuff with I/O that does not work with mpg123's default file access or you want to make it decode into your own pocket...
Function Documentation
| int mpg123_replace_buffer |
( |
mpg123_handle * |
mh, |
|
|
unsigned char * |
data, |
|
|
size_t |
size | |
|
) |
| | |
Replace default internal buffer with user-supplied buffer. Instead of working on it's own private buffer, mpg123 will directly use the one you provide for storing decoded audio.
The max size of one frame's decoded output with current settings. Use that to determine an appropriate minimum buffer size for decoding one frame.
| int mpg123_replace_reader |
( |
mpg123_handle * |
mh, |
|
|
ssize_t(*)(int, void *, size_t) |
r_read, |
|
|
off_t(*)(int, off_t, int) |
r_lseek | |
|
) |
| | |
Replace low-level stream access functions; read and lseek as known in POSIX. You can use this to make any fancy file opening/closing yourself, using mpg123_open_fd() to set the file descriptor for your read/lseek (doesn't need to be a "real" file descriptor...). Setting a function to NULL means that the default internal read is used (active from next mpg123_open call on). Note: As it would be troublesome to mess with this while having a file open, this implies mpg123_close().
| int mpg123_replace_reader_handle |
( |
mpg123_handle * |
mh, |
|
|
ssize_t(*)(void *, void *, size_t) |
r_read, |
|
|
off_t(*)(void *, off_t, int) |
r_lseek, |
|
|
void(*)(void *) |
cleanup | |
|
) |
| | |
Replace I/O functions with your own ones operating on some kind of handle instead of integer descriptors. The handle is a void pointer, so you can pass any data you want... mpg123_open_handle() is the call you make to use the I/O defined here. There is no fallback to internal read/seek here. Note: As it would be troublesome to mess with this while having a file open, this mpg123_close() is implied here.
- Parameters:
-
| r_read | The callback for reading (behaviour like posix read). |
| r_lseek | The callback for seeking (like posix lseek). |
| cleanup | A callback to clean up an I/O handle on mpg123_close, can be NULL for none (you take care of cleaning your handles). |