Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

#ifndef __BASSLOADER_H__
#define __BASSLOADER_H__

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>

#include "bass.h"

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
namespace Sexy
{

struct BASS_INSTANCE
{
        BASS_INSTANCE(const char *dllName);
        virtual ~BASS_INSTANCE();

        BOOL BASS_MusicSetAmplify(HMUSIC handle, DWORD amp);
        BOOL BASS_MusicPlay(HMUSIC handle);
        BOOL BASS_MusicPlayEx(HMUSIC handle, DWORD pos, int flags, BOOL reset);
        BOOL BASS_ChannelResume(DWORD handle);
        BOOL BASS_StreamPlay(HSTREAM handle, BOOL flush, DWORD flags);



    HMODULE         mModule;
        bool                    mVersion2;

        DWORD(WINAPI *BASS_GetVersion)();

        BOOL(WINAPI *BASS_Init)(int device, DWORD freq, DWORD flags, HWND win);
        BOOL(WINAPI *BASS_Init2)(int device, DWORD freq, DWORD flags, HWND win, GUID* clsid);
        void(WINAPI *BASS_Free)();
        BOOL(WINAPI *BASS_Stop)();
        BOOL(WINAPI *BASS_Start)();
        void(WINAPI *BASS_SetGlobalVolumes)(int musvol, int samvol, int strvol);
        BOOL(WINAPI *BASS_SetVolume)(DWORD volume);
        BOOL(WINAPI *BASS_GetVolume)();
        BOOL(WINAPI *BASS_GetInfo)(BASS_INFO* info);

        DWORD(WINAPI *BASS_SetConfig)(DWORD option, DWORD value);
        DWORD(WINAPI *BASS_GetConfig)(DWORD option);

        BOOL(WINAPI *BASS_ChannelStop)(DWORD handle);
        BOOL(WINAPI *BASS_ChannelPlay)(DWORD handle, BOOL restart);
        BOOL(WINAPI *BASS_ChannelPause)(DWORD handle);
        BOOL(WINAPI *BASS_ChannelSetAttributes)(DWORD handle, int freq, int volume, int pan);
        BOOL(WINAPI *BASS_ChannelGetAttributes)(DWORD handle, DWORD* freq, DWORD* volume, int* pan);
        BOOL(WINAPI *BASS_ChannelSetPosition)(DWORD handle, QWORD pos);
        QWORD(WINAPI *BASS_ChannelGetPosition)(DWORD handle);
        BOOL (WINAPI *BASS_ChannelSetFlags)(DWORD handle, DWORD flags);
        DWORD(WINAPI *BASS_ChannelIsActive)(DWORD handle);
        BOOL (WINAPI *BASS_ChannelSlideAttributes)(DWORD handle, int freq, int volume, int pan, DWORD time);
        DWORD (WINAPI *BASS_ChannelIsSliding)(DWORD handle);
        DWORD (WINAPI *BASS_ChannelGetLevel)(DWORD handle);
        HFX (WINAPI *BASS_ChannelSetFX)(DWORD handle, DWORD theType, int priority);
        BOOL (WINAPI *BASS_ChannelRemoveFX)(DWORD handle, HFX fx);
        QWORD (WINAPI *BASS_ChannelGetLength)(DWORD handle);
        DWORD (WINAPI *BASS_ChannelGetData)(DWORD handle, void* buffer, DWORD length);
        BOOL (WINAPI *BASS_ChannelPreBuf)(DWORD handle, DWORD length);
        HSYNC (WINAPI *BASS_ChannelSetSync)(DWORD handle, DWORD theType, QWORD theParam, SYNCPROC* proc, DWORD user);
        BOOL (WINAPI *BASS_ChannelRemoveSync)(DWORD handle, HSYNC sync);
       
        HMUSIC(WINAPI *BASS_MusicLoad)(BOOL mem, void *file, DWORD offset, DWORD length, DWORD flags);
        HMUSIC(WINAPI *BASS_MusicLoad2)(BOOL mem, void *file, DWORD offset, DWORD length, DWORD flags, DWORD freq);
        void(WINAPI *BASS_MusicFree)(HMUSIC handle);

        HSTREAM(WINAPI *BASS_StreamCreateFile)(BOOL mem, void *file, DWORD offset, DWORD length, DWORD flags);
        void(WINAPI *BASS_StreamFree)(HSTREAM handle);

        BOOL (WINAPI *BASS_FXSetParameters)(HFX handle, void *par);
        BOOL (WINAPI *BASS_FXGetParameters)(HFX handle, void *par);

        DWORD(WINAPI *BASS_MusicGetAttribute)(DWORD handle, DWORD attrib);
        void(WINAPI *BASS_MusicSetAttribute)(DWORD handle, DWORD attrib,DWORD value);

        DWORD (WINAPI *BASS_MusicGetOrders)(HMUSIC handle);
        DWORD (WINAPI *BASS_MusicGetOrderPosition)(HMUSIC handle);

        HPLUGIN (WINAPI *BASS_PluginLoad)(char *file, DWORD flags);

        HSAMPLE (WINAPI *BASS_SampleLoad)(BOOL mem, void *file, DWORD offset, DWORD length, DWORD max, DWORD flags);
        BOOL (WINAPI *BASS_SampleFree)(HSAMPLE handle);
        BOOL (WINAPI *BASS_SampleSetInfo)(HSAMPLE handle, BASS_SAMPLE *info);
        BOOL (WINAPI *BASS_SampleGetInfo)(HSAMPLE handle, BASS_SAMPLE *info);
        HCHANNEL (WINAPI *BASS_SampleGetChannel)(HSAMPLE handle, BOOL onlynew);
        BOOL (WINAPI *BASS_SampleStop)(HSAMPLE handle);

        int (WINAPI *BASS_ErrorGetCode)();
};


extern BASS_INSTANCE *gBass;

BASS_INSTANCE* BASS_CreateInstance(char *dllName);
void BASS_FreeInstance(BASS_INSTANCE *instance);
void LoadBassDLL(); // exits on failure
void FreeBassDLL();

} // namespace Sexy

#endif