44 lines
1.8 KiB
C
44 lines
1.8 KiB
C
|
|
/*
|
||
|
|
lfs_wrap: I/O wrapper code
|
||
|
|
|
||
|
|
copyright 2010-2023 by the mpg123 project
|
||
|
|
free software under the terms of the LGPL 2.1
|
||
|
|
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||
|
|
initially written by Thomas Orgis (after code from Michael Hipp)
|
||
|
|
|
||
|
|
This is the interface to the implementation of internal reading/seeking
|
||
|
|
as well as wrapping of client callbacks to the one and only 64 bit
|
||
|
|
callback API on opaque handles.
|
||
|
|
|
||
|
|
Code outside of this shall not be concerned with I/O details, and
|
||
|
|
code inside of this shall not be concerned with other
|
||
|
|
libmpg123 internals. Just the public portable API interface.
|
||
|
|
*/
|
||
|
|
|
||
|
|
|
||
|
|
// This is to be offered by libmpg123 code that has access to frame struct
|
||
|
|
// details. It returns the address to load/store the pointer to the
|
||
|
|
// wrapper handle from/into. A little hack to keep things disentangled.
|
||
|
|
void ** INT123_wrap_handle(mpg123_handle *mh);
|
||
|
|
// Set error code in the mpg123 handle and return MPG123_ERR.
|
||
|
|
int INT123_set_err(mpg123_handle *mh, int err);
|
||
|
|
|
||
|
|
// These are offered by the source associated with this header.
|
||
|
|
|
||
|
|
// This is one open routine for all ways. One of the given resource arguments is active:
|
||
|
|
// 1. handle: if path == NULL && fd < 0
|
||
|
|
// 2. path: if path != NULL
|
||
|
|
// 3. fd: if fd >= 0
|
||
|
|
// In case of 64 bit handle setup, this does nothing.
|
||
|
|
// Return values:
|
||
|
|
// 0: setup for wrapped I/O successful.
|
||
|
|
// 1: use user-supplied 64 bit I/O handle directly, no internal wrappery
|
||
|
|
// <0: error
|
||
|
|
#define LFS_WRAP_NONE 1
|
||
|
|
int INT123_wrap_open(mpg123_handle *mh, void *handle, const char *path, int fd, long timeout, int quiet);
|
||
|
|
// Deallocate all associated resources and handle memory itself.
|
||
|
|
void INT123_wrap_destroy(void * handle);
|
||
|
|
|
||
|
|
// The bulk of functions are implementations of the non-portable
|
||
|
|
// libmpg123 API declared or implied in the main header.
|