Files
tww/include/JSystem/JAudio/JAIStreamMgr.h
T

216 lines
6.2 KiB
C++

#ifndef JAISTREAMMGR_H
#define JAISTREAMMGR_H
#include "JSystem/JAudio/JAISound.h"
#include "dolphin/dvd/dvd.h"
#include "JSystem/JAudio/JAIGlobalParameter.h"
#include "JSystem/JAudio/JAISoundParams.h"
#include "JSystem/JAudio/JASHeapCtrl.h"
class JAISound;
namespace JASystem {
class TDSPChannel;
namespace DSPInterface {
class DSPBuffer;
}
}
namespace JAInter {
class Actor;
struct StreamUpdateData {
StreamUpdateData() { mpSound = NULL; }
void init() {
field_0x0 = 0;
field_0x1 = 0;
field_0x4 = 1.0f;
field_0x8 = 1.0f;
field_0xc = 0.5f;
mActiveTrackFlag = SOUNDACTIVE_Unk0;
mpSound = NULL;
}
/* 0x00 */ u8 field_0x0;
/* 0x01 */ u8 field_0x1;
/* 0x02 */ u8 mPrepareFlag;
/* 0x04 */ f32 field_0x4;
/* 0x08 */ f32 field_0x8;
/* 0x0C */ f32 field_0xc;
/* 0x10 */ u32 mActiveTrackFlag;
/* 0x14 */ JAISound* mpSound;
};
struct streamList_t {
/* 0x00 */ u8 field_0x00[0x10 - 0x00];
/* 0x10 */ char field_0x10[0x10];
/* 0x20 */ u8 field_0x20[0x10];
};
class StreamParameter {
public:
void init() {
mPauseMode = 0;
field_0x4 = 0;
mVolumeFlags = 0;
mPitchFlags = 0;
mPanFlags = 0;
for (u32 i = 0; i < 20; i++) {
MoveParaSet* movePara = &mVolumes[i];
movePara->init(1.0f);
}
u32 i = 0;
for (u32 i = 0; i < JAIGlobalParameter::getParamStreamParameterLines(); i++) {
pitch[i].init(1.0f);
pan[i].init(0.5f);
}
}
/* 0x000 */ u8 mPauseMode;
/* 0x004 */ int field_0x4;
/* 0x008 */ u32 mVolumeFlags;
/* 0x00C */ u32 mPitchFlags;
/* 0x010 */ u32 mPanFlags;
/* 0x014 */ JAInter::MoveParaSet mVolumes[20];
/* 0x154 */ JAInter::MoveParaSet* pitch;
/* 0x158 */ JAInter::MoveParaSet* pan;
/* 0x15C */ StreamUpdateData* mUpdateData;
};
namespace StreamMgr {
void init();
void storeStreamBuffer(JAISound**, Actor*, u32, u32, u8, void*);
void releaseStreamBuffer(JAISound*, u32);
void processGFrameStream();
void checkEntriedStream();
void checkWaitStream();
void checkRequestStream();
void checkPlayingStream();
struct flags_t {
u16 flag1 : 1;
u16 flag2 : 1;
u16 flag3 : 1;
u16 flag4 : 1;
u16 flag5 : 1;
u16 flag6 : 1;
u16 flag7 : 1;
u16 flag8 : 1;
u16 flag9 : 1;
};
extern LinkSound streamControl;
extern flags_t flags;
extern StreamUpdateData* streamUpdate;
extern streamList_t* streamList;
extern void* initOnCodeStrm;
inline StreamUpdateData* getUpdateInfo() { return streamUpdate; }
}
struct StreamHeaderInner { // fake name
int field_0x00;
int field_0x04;
};
struct StreamHeader_ {
int field_0x0;
int field_0x4;
u16 field_0x8;
u16 field_0xa;
u16 field_0xc;
u16 field_0xe;
u32 field_0x10;
u32 field_0x14;
StreamHeaderInner field_0x18;
};
namespace StreamLib {
void Play_DirectPCM(JASystem::TDSPChannel*, s16*, u16, u32, s16, u16);
u32 Get_DirectPCM_LoopRemain(JASystem::DSPInterface::DSPBuffer*);
u32 Get_DirectPCM_Remain(JASystem::DSPInterface::DSPBuffer*);
void init(bool);
void allocBuffer(void*, s32);
bool deallocBuffer();
u32 getNeedBufferSize();
void setAllocBufferCallback(void (*)(void));
void setDeallocBufferCallback(void (*)(void));
void sync(s32);
void __DecodePCM();
void __DecodeADPCM();
void __Decode();
void __LoadFin(s32, DVDFileInfo*);
void LoadADPCM();
void setVolume(f32);
void setPitch(f32);
void setPan(f32 param_1);
void stop();
void setPauseFlag(u8 param_1);
void clearPauseFlag(u8 param_1);
void setPrepareFlag(u8 param_1);
void setOutputMode(u32 param_1);
u8 getPlayingFlag();
void setDecodedBufferBlocks(u32 i_blockCount);
void LoopInit();
s32 directPlayWait(void* param_1);
void start(char* param_1, u32 param_2, void* param_3);
void __start();
s32 callBack(void* param_1);
extern s16 filter_table[];
extern s16 table4[];
extern DVDFileInfo finfo;
extern StreamHeader_ header;
extern char Filename[];
extern JASystem::Kernel::TSolidHeap streamHeap;
extern u32 LOOP_BLOCKS;
extern int LOOP_SAMPLESIZE;
extern u32 outputmode;
extern u32 adpcm_remain;
extern u32 adpcm_loadpoint;
extern u32 loadsize;
extern s16* adpcm_buffer;
extern s16*** loop_buffer;
extern s16** store_buffer;
extern JASystem::TDSPChannel* assign_ch[2];
extern u32 playside;
extern int playback_samples;
extern int loadup_samples;
extern u32 adpcmbuf_state;
extern u32 movieframe;
extern bool stopflag;
extern bool stopflag2;
extern u8 playflag;
extern u8 playflag2;
extern u8 prepareflag;
extern u8 dspch_deallockflag;
extern f32 outvolume;
extern f32 outpitch;
extern f32 outpan;
extern f32 stackvolume;
extern f32 stackpitch;
extern f32 stackpan;
extern u8 outflag_volume;
extern bool outflag_pan;
extern bool outflag_pitch;
extern u32 loop_start_flag;
extern int outpause;
extern u32 playmode;
extern u32 shift_sample;
extern u32 extra_sample;
extern int DvdLoadFlag;
extern u32 startInitFlag;
extern int Mode;
extern int sFillBlockSize;
extern void* Head;
extern bool bufferMode;
extern u8 allocFlag;
extern u8 dspFinishFlag;
extern void (*allocCallback)();
extern void (*deallocCallback)();
}
}
#endif /* JAISTREAMMGR_H */