mirror of
https://github.com/zeldaret/ss
synced 2026-08-07 02:05:54 -04:00
snd_StrmPlayer OK
This commit is contained in:
@@ -48,7 +48,7 @@
|
||||
namespace nw4r { namespace snd { namespace detail
|
||||
{
|
||||
// .bss
|
||||
byte_t StrmPlayer::sLoadBuffer[LOAD_BUFFER_SIZE];
|
||||
byte_t ALIGN_DECL(32) StrmPlayer::sLoadBuffer[LOAD_BUFFER_SIZE];
|
||||
OSMutex StrmPlayer::sLoadBufferMutex;
|
||||
|
||||
// .sbss
|
||||
@@ -375,10 +375,61 @@ void StrmPlayer::Pause(bool flag)
|
||||
UpdatePauseStatus();
|
||||
}
|
||||
|
||||
void float_order_snd_StrmPlayer() {
|
||||
0.0f;
|
||||
int zero = 0;
|
||||
unsigned uzero = 0;
|
||||
f32 z = zero;
|
||||
z = uzero;
|
||||
}
|
||||
#if 0
|
||||
// Some functions in between idk
|
||||
DECOMP_FORCE(0.0f);
|
||||
DECOMP_FORCE(SI2D_CONSTANT);
|
||||
DECOMP_FORCE(UI2D_CONSTANT);
|
||||
#endif
|
||||
|
||||
bool StrmPlayer::ReadStrmDataInfo(StrmDataInfo* info) const
|
||||
{
|
||||
SoundThread::AutoLock lock;
|
||||
|
||||
if (!mPreparedFlag)
|
||||
return false;
|
||||
|
||||
info->loopFlag = mStrmInfo.loopFlag != 0;
|
||||
info->sampleRate = mStrmInfo.sampleRate;
|
||||
info->loopStart = mStrmInfo.loopStart;
|
||||
info->loopEnd = mStrmInfo.loopEnd;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
u32 StrmPlayer::GetPlaySamplePosition() const
|
||||
{
|
||||
SoundThread::AutoLock lock;
|
||||
|
||||
if (!mActiveFlag)
|
||||
return -1;
|
||||
|
||||
if (!mTracks[0].mActiveFlag)
|
||||
return -1;
|
||||
|
||||
if (!mPreparedFlag)
|
||||
return 0;
|
||||
|
||||
u32 sample = 0;
|
||||
u32 t1;
|
||||
{
|
||||
ut::AutoInterruptLock lock2;
|
||||
|
||||
if (mTracks[0].mVoice)
|
||||
sample = mTracks[0].mVoice->GetCurrentPlayingSample();
|
||||
|
||||
t1 = mPlayingDataBlockIndex - mPlayingBufferBlockIndex;
|
||||
}
|
||||
u32 t2 = t1 * mStrmInfo.blockSamples;
|
||||
return t2 + sample;
|
||||
}
|
||||
|
||||
void StrmPlayer::InitParam()
|
||||
{
|
||||
@@ -836,6 +887,10 @@ void StrmPlayer::UpdateVoiceParams(StrmTrack *track)
|
||||
fxsend[i] += GetFxSend(static_cast<AuxBus>(i));
|
||||
}
|
||||
|
||||
f32 remoteOutVolume[4];
|
||||
for (int i = 0; i < 4; i++)
|
||||
remoteOutVolume[i] = GetRemoteOutVolume(i);
|
||||
|
||||
ut::AutoInterruptLock lock;
|
||||
|
||||
if (Voice *voice = track->mVoice)
|
||||
@@ -857,6 +912,9 @@ void StrmPlayer::UpdateVoiceParams(StrmTrack *track)
|
||||
voice->SetFxSend(bus, fxsend[i]);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
voice->SetRemoteOutVolume(i, remoteOutVolume[i]);
|
||||
|
||||
for (int i = 0; i < mVoiceOutCount; i++)
|
||||
voice->SetVoiceOutParam(i, GetVoiceOutParam(i));
|
||||
}
|
||||
@@ -893,6 +951,9 @@ void StrmPlayer::UpdateBuffer()
|
||||
if (!voice)
|
||||
return;
|
||||
|
||||
if (!voice->IsRun())
|
||||
return;
|
||||
|
||||
if (CheckDiskDriveError())
|
||||
{
|
||||
mLoadWaitFlag = true;
|
||||
|
||||
Reference in New Issue
Block a user