BASS_FILEOPENPROCS structure

Table of callback functions used with BASS_CONFIG_FILEOPENPROCS.

typedef struct {
    FILECLOSEPROC *close;
    FILELENPROC *length;
    FILEREADPROC *read;
    FILESEEKPROC *seek;
    FILEOPENPROC *open;
} BASS_FILEOPENPROCS;

Members

closeCallback function to close a file.
lengthCallback function to get the length of a file.
readCallback function to read from a file.
seekCallback function to seek in a file.
openCallback function to open a file.

Example

Use standard file stream functions to handle local file reading.
void CALLBACK MyFileCloseProc(void *user)
{
    fclose(user); // close the file
}

QWORD CALLBACK MyFileLenProc(void *user)
{
    struct stat s;
    fstat(fileno(user), &s);
    return s.st_size; // return the file length
}

DWORD CALLBACK MyFileReadProc(void *buffer, DWORD length, void *user)
{
    return fread(buffer, 1, length, user); // read from file
}

BOOL CALLBACK MyFileSeekProc(QWORD offset, void *user)
{
    return !fseek(user, offset, SEEK_SET); // seek to offset
}

void *CALLBACK MyFileOpenProc(const char *filename, DWORD flags)
{
    FILE *f;
#ifdef _WIN32
    if (flags & BASS_UNICODE) f = _wfopen((WCHAR*)filename, L"rb"); // open the file (unicode)
    else
#endif
    f = fopen(filename, "rb"); // open the file
    if (!f) return (void*)-1; // failed (could return 0 to let BASS try itself)
    return f;
}

...

BASS_FILEOPENPROCS fileopenprocs = { MyFileCloseProc, MyFileLenProc, MyFileReadProc, MyFileSeekProc, MyFileOpenProc }; // callback table
BASS_SetConfigPtr(BASS_CONFIG_FILEOPENPROCS, &fileopenprocs); // set the callbacks

See also

BASS_CONFIG_FILEOPENPROCS