Fix Audio

This commit is contained in:
eray orçunus 2020-10-05 13:59:40 +03:00
parent 49ae7da5ce
commit 6f3f581d8a
3 changed files with 12 additions and 12 deletions

View file

@ -161,10 +161,10 @@ cMusicManager::SetStartingTrackPositions(uint8 isNewGameTimer)
if (i < STREAMED_SOUND_CITY_AMBIENT && isNewGameTimer) if (i < STREAMED_SOUND_CITY_AMBIENT && isNewGameTimer)
m_aTracks[i].m_nPosition = NewGameRadioTimers[i]; m_aTracks[i].m_nPosition = NewGameRadioTimers[i];
else if (i < STREAMED_SOUND_ANNOUNCE_BRIDGE_CLOSED) else if (i < STREAMED_SOUND_ANNOUNCE_BRIDGE_CLOSED)
m_aTracks[i].m_nPosition = pos * AudioManager.GetRandomNumber(i % 5) % m_aTracks[i].m_nLength; m_aTracks[i].m_nPosition = (pos * AudioManager.GetRandomNumber(i % 5)) % m_aTracks[i].m_nLength;
else else
m_aTracks[i].m_nPosition = 0; m_aTracks[i].m_nPosition = 0;
m_aTracks[i].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); m_aTracks[i].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
} }
} }
@ -1311,4 +1311,4 @@ cMusicManager::ChangeRadioChannel()
// these two are empty // these two are empty
void cMusicManager::Enable() {} void cMusicManager::Enable() {}
void cMusicManager::Disable() {} void cMusicManager::Disable() {}

View file

@ -162,13 +162,13 @@ public:
void Seek(uint32 milliseconds) void Seek(uint32 milliseconds)
{ {
if ( !IsOpened() ) return; if ( !IsOpened() ) return;
mpg123_seek(m_pMH, ms2samples(milliseconds)*GetSampleSize(), SEEK_SET); mpg123_seek(m_pMH, ms2samples(milliseconds), SEEK_SET);
} }
uint32 Tell() uint32 Tell()
{ {
if ( !IsOpened() ) return 0; if ( !IsOpened() ) return 0;
return samples2ms(mpg123_tell(m_pMH)/GetSampleSize()); return samples2ms(mpg123_tell(m_pMH));
} }
uint32 Decode(void *buffer) uint32 Decode(void *buffer)
@ -254,13 +254,13 @@ public:
void Seek(uint32 milliseconds) void Seek(uint32 milliseconds)
{ {
if ( !IsOpened() ) return; if ( !IsOpened() ) return;
op_pcm_seek(m_FileH, ms2samples(milliseconds) * GetSampleSize()); op_pcm_seek(m_FileH, ms2samples(milliseconds) / GetChannels());
} }
uint32 Tell() uint32 Tell()
{ {
if ( !IsOpened() ) return 0; if ( !IsOpened() ) return 0;
return samples2ms(op_pcm_tell(m_FileH)/GetSampleSize()); return samples2ms(op_pcm_tell(m_FileH) * GetChannels());
} }
uint32 Decode(void *buffer) uint32 Decode(void *buffer)
@ -515,8 +515,8 @@ uint32 CStream::GetPosMS()
alGetSourcei(m_alSource, AL_BYTE_OFFSET, &offset); alGetSourcei(m_alSource, AL_BYTE_OFFSET, &offset);
return m_pSoundFile->Tell() return m_pSoundFile->Tell()
- m_pSoundFile->samples2ms(m_pSoundFile->GetBufferSamples() * (NUM_STREAMBUFFERS-1)) - m_pSoundFile->samples2ms(m_pSoundFile->GetBufferSamples() * (NUM_STREAMBUFFERS-1)) / m_pSoundFile->GetChannels()
+ m_pSoundFile->samples2ms(offset/m_pSoundFile->GetSampleSize()); + m_pSoundFile->samples2ms(offset/m_pSoundFile->GetSampleSize()) / m_pSoundFile->GetChannels();
} }
uint32 CStream::GetLengthMS() uint32 CStream::GetLengthMS()

View file

@ -24,12 +24,12 @@ public:
uint32 ms2samples(uint32 ms) uint32 ms2samples(uint32 ms)
{ {
return float(ms) / 1000.0f * float(GetChannels()) * float(GetSampleRate()); return float(ms) / 1000.0f * float(GetSampleRate());
} }
uint32 samples2ms(uint32 sm) uint32 samples2ms(uint32 sm)
{ {
return float(sm) * 1000.0f / float(GetChannels()) / float(GetSampleRate()); return float(sm) * 1000.0f / float(GetSampleRate());
} }
uint32 GetBufferSamples() uint32 GetBufferSamples()
@ -108,4 +108,4 @@ public:
void ProviderTerm(); void ProviderTerm();
}; };
#endif #endif