NW4F Snd
Loading...
Searching...
No Matches
snd_SoundArchivePlayer.h
Go to the documentation of this file.
1#ifndef NW_SND_SOUND_ARCHIVE_PLAYER_H_
2#define NW_SND_SOUND_ARCHIVE_PLAYER_H_
3
4#include <nw/snd/snd_SoundStartable.h>
5#include <nw/snd/snd_NoteOnCallback.h>
6#include <nw/snd/snd_SequenceSoundPlayer.h>
7#include <nw/snd/snd_SequenceSound.h>
8#include <nw/snd/snd_WaveSound.h>
9#include <nw/snd/snd_StreamSound.h>
10#include <nw/snd/snd_MmlSequenceTrackAllocator.h>
11#include <nw/snd/snd_MmlParser.h>
12
13namespace nw { namespace snd {
14
15class SoundPlayer;
16class SoundDataManager;
17
18namespace internal {
19
20class PlayerHeap;
21class SoundArchiveFilesHook;
22
23} // namespace nw::snd::internal
24
26{
27private:
29 {
31
32 public:
37
38 void Initialize(const SoundArchivePlayer& player)
39 {
40 m_pSoundArchivePlayer = &player;
41 }
42
44 internal::driver::SequenceSoundPlayer* seqPlayer,
45 u8 bankIndex,
46 const internal::driver::NoteOnInfo& noteOnInfo
47 );
48
49 private:
51 };
52 static_assert(sizeof(SequenceNoteOnCallback) == 8);
54
55public:
58
59 size_t GetRequiredMemSize(const SoundArchive* arc, size_t userParamSizePerSound = 0) const;
61
63 const SoundArchive* arc,
64 const SoundDataManager* manager,
65 void* buffer,
66 u32 size,
67 void* strmBuffer,
68 u32 strmBufferSize,
69 size_t userParamSizePerSound = 0
70 );
71
97 static_assert(sizeof(InitializeParam) == 0x24);
98
99 size_t GetRequiredStreamCacheSize(const SoundArchive* arc, size_t cacheSizePerSound) const;
100
101 bool Initialize(const InitializeParam& param);
102
103 void Finalize();
104
105 bool IsAvailable() const;
106
107 void Update();
108
110
111 SoundPlayer& GetSoundPlayer(SoundArchive::ItemId playerId);
112 const SoundPlayer& GetSoundPlayer(SoundArchive::ItemId playerId) const;
113
115 SoundHandle* handle,
116 u32 soundId,
117 internal::BasicSound::AmbientInfo* ambientArgInfo,
118 SoundActor* actor,
119 bool holdFlag,
120 const StartInfo* startInfo
121 );
122
123 virtual SoundArchive::ItemId detail_GetItemId(const char* pString)
124 {
125 //NW_NULL_ASSERT( m_pSoundArchive );
126 return m_pSoundArchive->GetItemId( pString );
127 }
128
129protected:
131 SoundHandle* handle,
132 u32 soundId,
133 bool holdFlag,
134 const StartInfo* startInfo
135 );
136
137private:
139 internal::SequenceSound* sound,
140 const SoundArchive::SoundInfo* commonInfo,
141 const SoundArchive::SequenceSoundInfo* info,
142 SoundStartable::StartInfo::StartOffsetType startOffsetType,
143 int startOffset,
144 const StartInfo::SeqSoundInfo* externalSeqInfo
145 );
146
148 internal::StreamSound* sound,
149 const SoundArchive::SoundInfo* commonInfo,
150 const SoundArchive::StreamSoundInfo* info,
151 SoundStartable::StartInfo::StartOffsetType startOffsetType,
152 int startOffset,
153 const StartInfo::StreamSoundInfo* externalStrmInfo
154 );
155
157 internal::WaveSound* sound,
158 const SoundArchive::SoundInfo* commonInfo,
159 const SoundArchive::WaveSoundInfo* info,
160 SoundStartable::StartInfo::StartOffsetType startOffsetType,
161 int startOffset,
162 const StartInfo::WaveSoundInfo* externalWsdInfo
163 );
164
165 internal::PlayerHeap* CreatePlayerHeap(void** ppBuffer, const void* pEndAddress, size_t heapSize);
166
167 bool SetupMram(const SoundArchive* arc, void* buffer, size_t size, size_t userParamSizePerSound);
168 bool SetupSoundPlayer(const SoundArchive* arc, void** buffer, const void* endp);
169 bool SetupSequenceSound(int numSounds, void** buffer, const void* endp);
170 bool SetupSequenceTrack(int numTracks, void** buffer, const void* endp);
171 bool SetupWaveSound(int numSounds, void** buffer, const void* endp);
172 bool SetupStreamSound(int numSounds, void** buffer, const void* endp);
173 bool SetupStreamBuffer(const SoundArchive* arc, void* buffer, size_t size);
175 const SoundArchive::SoundArchivePlayerInfo& info, void** buffer, const void* endp,
176 size_t userParamSizePerSound
177 );
178
180
181private:
183
187
189 SoundPlayer* m_pSoundPlayers;
190
194
197
199
201
204
206
207 const SoundDataManager* m_pSoundDataManager;
208
209 internal::SoundArchiveFilesHook* m_pSoundArchiveFilesHook;
210
212};
213static_assert(sizeof(SoundArchivePlayer) == 0xC4);
214
215} } // namespace nw::snd
216
217#endif // NW_SND_SOUND_ARCHIVE_PLAYER_H_
Definition snd_SoundActor.h:13
Definition snd_SoundArchivePlayer.h:29
SequenceNoteOnCallback()
Definition snd_SoundArchivePlayer.h:33
const SoundArchivePlayer * m_pSoundArchivePlayer
Definition snd_SoundArchivePlayer.h:50
void Initialize(const SoundArchivePlayer &player)
Definition snd_SoundArchivePlayer.h:38
virtual internal::driver::Channel * NoteOn(internal::driver::SequenceSoundPlayer *seqPlayer, u8 bankIndex, const internal::driver::NoteOnInfo &noteOnInfo)
Definition snd_SoundArchivePlayer.h:26
internal::WaveSoundInstanceManager m_WaveSoundInstanceManager
Definition snd_SoundArchivePlayer.h:192
bool m_IsEnableWarningPrint
Definition snd_SoundArchivePlayer.h:211
StartResult PrepareSequenceSoundImpl(internal::SequenceSound *sound, const SoundArchive::SoundInfo *commonInfo, const SoundArchive::SequenceSoundInfo *info, SoundStartable::StartInfo::StartOffsetType startOffsetType, int startOffset, const StartInfo::SeqSoundInfo *externalSeqInfo)
StartResult detail_SetupSoundImpl(SoundHandle *handle, u32 soundId, internal::BasicSound::AmbientInfo *ambientArgInfo, SoundActor *actor, bool holdFlag, const StartInfo *startInfo)
StartResult PrepareWaveSoundImpl(internal::WaveSound *sound, const SoundArchive::SoundInfo *commonInfo, const SoundArchive::WaveSoundInfo *info, SoundStartable::StartInfo::StartOffsetType startOffsetType, int startOffset, const StartInfo::WaveSoundInfo *externalWsdInfo)
internal::driver::MmlSequenceTrackAllocator m_MmlSequenceTrackAllocator
Definition snd_SoundArchivePlayer.h:196
const SoundPlayer & GetSoundPlayer(SoundArchive::ItemId playerId) const
internal::PlayerHeap * CreatePlayerHeap(void **ppBuffer, const void *pEndAddress, size_t heapSize)
internal::driver::StreamBufferPool m_StreamBufferPool
Definition snd_SoundArchivePlayer.h:198
bool Initialize(const InitializeParam &param)
bool Initialize(const SoundArchive *arc, const SoundDataManager *manager, void *buffer, u32 size, void *strmBuffer, u32 strmBufferSize, size_t userParamSizePerSound=0)
SequenceUserprocCallback m_SequenceUserprocCallback
Definition snd_SoundArchivePlayer.h:185
internal::driver::SequenceTrackAllocator * m_pSequenceTrackAllocator
Definition snd_SoundArchivePlayer.h:195
internal::SequenceSoundInstanceManager m_SequenceSoundInstanceManager
Definition snd_SoundArchivePlayer.h:191
bool SetupSequenceTrack(int numTracks, void **buffer, const void *endp)
void * m_pSequenceUserprocCallbackArg
Definition snd_SoundArchivePlayer.h:186
SoundPlayer & GetSoundPlayer(SoundArchive::ItemId playerId)
size_t m_SoundUserParamSize
Definition snd_SoundArchivePlayer.h:205
bool SetupUserParamForBasicSound(const SoundArchive::SoundArchivePlayerInfo &info, void **buffer, const void *endp, size_t userParamSizePerSound)
size_t GetRequiredStreamBufferSize(const SoundArchive *arc) const
void * m_pSetupBufferAddress
Definition snd_SoundArchivePlayer.h:202
bool SetupStreamBuffer(const SoundArchive *arc, void *buffer, size_t size)
u32 m_SoundPlayerCount
Definition snd_SoundArchivePlayer.h:188
bool SetupSoundPlayer(const SoundArchive *arc, void **buffer, const void *endp)
internal::driver::MmlParser m_MmlParser
Definition snd_SoundArchivePlayer.h:200
SoundPlayer * m_pSoundPlayers
Definition snd_SoundArchivePlayer.h:189
const SoundArchive * m_pSoundArchive
Definition snd_SoundArchivePlayer.h:182
size_t GetRequiredStreamCacheSize(const SoundArchive *arc, size_t cacheSizePerSound) const
void SetCommonSoundParam(internal::BasicSound *sound, const SoundArchive::SoundInfo *commonInfo)
bool SetupWaveSound(int numSounds, void **buffer, const void *endp)
const SoundArchive & GetSoundArchive() const
virtual StartResult detail_SetupSound(SoundHandle *handle, u32 soundId, bool holdFlag, const StartInfo *startInfo)
virtual SoundArchive::ItemId detail_GetItemId(const char *pString)
Definition snd_SoundArchivePlayer.h:123
internal::SoundArchiveFilesHook * m_pSoundArchiveFilesHook
Definition snd_SoundArchivePlayer.h:209
size_t GetRequiredMemSize(const SoundArchive *arc, size_t userParamSizePerSound=0) const
StartResult PrepareStreamSoundImpl(internal::StreamSound *sound, const SoundArchive::SoundInfo *commonInfo, const SoundArchive::StreamSoundInfo *info, SoundStartable::StartInfo::StartOffsetType startOffsetType, int startOffset, const StartInfo::StreamSoundInfo *externalStrmInfo)
bool SetupStreamSound(int numSounds, void **buffer, const void *endp)
u32 m_SetupBufferSize
Definition snd_SoundArchivePlayer.h:203
bool SetupMram(const SoundArchive *arc, void *buffer, size_t size, size_t userParamSizePerSound)
const SoundDataManager * m_pSoundDataManager
Definition snd_SoundArchivePlayer.h:207
SequenceNoteOnCallback m_SequenceCallback
Definition snd_SoundArchivePlayer.h:184
bool SetupSequenceSound(int numSounds, void **buffer, const void *endp)
internal::StreamSoundInstanceManager m_StreamSoundInstanceManager
Definition snd_SoundArchivePlayer.h:193
Definition snd_SoundArchive.h:11
ItemId GetItemId(const char *pLabel) const
u32 ItemId
Definition snd_SoundArchive.h:13
Definition snd_SoundHandle.h:10
Definition snd_SoundStartable.h:14
Definition snd_SoundStartable.h:11
Definition snd_BasicSound.h:146
Definition snd_SequenceSound.h:9
Definition snd_StreamSound.h:10
Definition snd_WaveSound.h:9
Definition snd_Channel.h:9
Definition snd_MmlParser.h:11
Definition snd_MmlSequenceTrackAllocator.h:13
Definition snd_NoteOnCallback.h:25
Definition snd_SequenceTrackAllocator.h:12
Definition snd_StreamBufferPool.h:9
Definition snd_BasicSound.h:136
Definition snd_BasicSound.cpp:3
SoundInstanceManager< WaveSound > WaveSoundInstanceManager
Definition snd_WaveSound.h:13
SoundInstanceManager< SequenceSound > SequenceSoundInstanceManager
Definition snd_SequenceSound.h:13
SoundInstanceManager< StreamSound > StreamSoundInstanceManager
Definition snd_StreamSound.h:14
Definition snd_BasicSound.cpp:3
void(* SequenceUserprocCallback)(u16 procId, SequenceUserprocCallbackParam *param, void *arg)
Definition snd_SequenceSoundPlayer.h:17
Definition snd_SoundArchivePlayer.h:73
InitializeParam()
Definition snd_SoundArchivePlayer.h:84
size_t userParamSizePerSound
Definition snd_SoundArchivePlayer.h:82
u32 streamCacheSize
Definition snd_SoundArchivePlayer.h:81
const SoundArchive * soundArchive
Definition snd_SoundArchivePlayer.h:74
void * streamCacheBuffer
Definition snd_SoundArchivePlayer.h:80
u32 streamBufferSize
Definition snd_SoundArchivePlayer.h:79
const SoundDataManager * soundDataManager
Definition snd_SoundArchivePlayer.h:75
void * setupBuffer
Definition snd_SoundArchivePlayer.h:76
u32 setupBufferSize
Definition snd_SoundArchivePlayer.h:77
void * streamBuffer
Definition snd_SoundArchivePlayer.h:78
Definition snd_SoundArchive.h:38
Definition snd_SoundArchive.h:111
Definition snd_SoundArchive.h:20
Definition snd_SoundArchive.h:81
Definition snd_SoundArchive.h:95
Definition snd_SoundStartable.h:92
Definition snd_SoundStartable.h:108
Definition snd_SoundStartable.h:121
Definition snd_SoundStartable.h:70
StartOffsetType
Definition snd_SoundStartable.h:84
Definition snd_BasicSound.h:163
Definition snd_NoteOnCallback.h:11