mirror of
https://github.com/GTAmodding/re3.git
synced 2024-12-24 19:05:40 +00:00
Fix MP3 player
This commit is contained in:
parent
bf7280b55b
commit
139c6bfcf3
2 changed files with 176 additions and 196 deletions
|
@ -2046,141 +2046,131 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream)
|
|||
bool
|
||||
cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream)
|
||||
{
|
||||
int i = 0;
|
||||
uint32 position = nPos;
|
||||
char filename[MAX_PATH];
|
||||
|
||||
if ( m_bInitialised && nFile < TOTAL_STREAMED_SOUNDS )
|
||||
if ( !m_bInitialised || nFile >= TOTAL_STREAMED_SOUNDS )
|
||||
return false;
|
||||
|
||||
if ( mp3Stream[nStream] )
|
||||
{
|
||||
if ( mp3Stream[nStream] )
|
||||
AIL_pause_stream(mp3Stream[nStream], 1);
|
||||
AIL_close_stream(mp3Stream[nStream]);
|
||||
}
|
||||
if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER )
|
||||
{
|
||||
do
|
||||
{
|
||||
AIL_pause_stream(mp3Stream[nStream], 1);
|
||||
AIL_close_stream(mp3Stream[nStream]);
|
||||
}
|
||||
|
||||
if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER )
|
||||
{
|
||||
uint32 i = 0;
|
||||
do {
|
||||
if(i != 0 || _bIsMp3Active) {
|
||||
if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0;
|
||||
// Just switched to MP3 player
|
||||
if ( !_bIsMp3Active && i == 0 )
|
||||
{
|
||||
if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] )
|
||||
position = 0;
|
||||
tMP3Entry *e = _pMP3List;
|
||||
|
||||
_CurMP3Pos = 0;
|
||||
|
||||
tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index);
|
||||
|
||||
if(mp3) {
|
||||
mp3 = _pMP3List;
|
||||
if(mp3 == NULL) {
|
||||
_bIsMp3Active = false;
|
||||
nFile = 0;
|
||||
strcpy(filename, m_szCDRomRootPath);
|
||||
strcat(filename, StreamedNameTable[nFile]);
|
||||
|
||||
mp3Stream[nStream] =
|
||||
AIL_open_stream(DIG, filename, 0);
|
||||
if(mp3Stream[nStream]) {
|
||||
AIL_set_stream_loop_count(
|
||||
mp3Stream[nStream], 1);
|
||||
AIL_set_stream_ms_position(
|
||||
mp3Stream[nStream], position);
|
||||
AIL_pause_stream(mp3Stream[nStream],
|
||||
0);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(mp3->pLinkPath != NULL)
|
||||
mp3Stream[nStream] =
|
||||
AIL_open_stream(DIG, mp3->pLinkPath, 0);
|
||||
else {
|
||||
strcpy(filename, _mp3DirectoryPath);
|
||||
strcat(filename, mp3->aFilename);
|
||||
|
||||
mp3Stream[nStream] =
|
||||
AIL_open_stream(DIG, filename, 0);
|
||||
}
|
||||
|
||||
if(mp3Stream[nStream]) {
|
||||
// Try to continue from previous song, if already started
|
||||
if(!_GetMP3PosFromStreamPos(&position, &e) && !e) {
|
||||
nFile = 0;
|
||||
strcpy(filename, m_szCDRomRootPath);
|
||||
strcat(filename, StreamedNameTable[nFile]);
|
||||
|
||||
mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
|
||||
if ( mp3Stream[nStream] )
|
||||
{
|
||||
AIL_set_stream_loop_count(mp3Stream[nStream], 1);
|
||||
AIL_set_stream_ms_position(mp3Stream[nStream], 0);
|
||||
AIL_set_stream_ms_position(mp3Stream[nStream], position);
|
||||
AIL_pause_stream(mp3Stream[nStream], 0);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
_bIsMp3Active = false;
|
||||
continue;
|
||||
}
|
||||
if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] )
|
||||
position = 0;
|
||||
} else {
|
||||
if ( e->pLinkPath != NULL )
|
||||
mp3Stream[nStream] = AIL_open_stream(DIG, e->pLinkPath, 0);
|
||||
else {
|
||||
strcpy(filename, _mp3DirectoryPath);
|
||||
strcat(filename, e->aFilename);
|
||||
|
||||
mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
|
||||
}
|
||||
|
||||
if ( mp3Stream[nStream] ) {
|
||||
AIL_set_stream_loop_count(mp3Stream[nStream], 1);
|
||||
AIL_set_stream_ms_position(mp3Stream[nStream], position);
|
||||
AIL_pause_stream(mp3Stream[nStream], 0);
|
||||
|
||||
_bIsMp3Active = true;
|
||||
|
||||
tMP3Entry *e;
|
||||
if ( !_GetMP3PosFromStreamPos(&position, &e) )
|
||||
return true;
|
||||
}
|
||||
// fall through, start playing from another song
|
||||
}
|
||||
} else {
|
||||
if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0;
|
||||
|
||||
_CurMP3Pos = 0;
|
||||
|
||||
tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index);
|
||||
if ( !mp3 )
|
||||
{
|
||||
if ( e == NULL )
|
||||
mp3 = _pMP3List;
|
||||
if ( !_pMP3List )
|
||||
{
|
||||
nFile = 0;
|
||||
_bIsMp3Active = 0;
|
||||
strcpy(filename, m_szCDRomRootPath);
|
||||
strcat(filename, StreamedNameTable[nFile]);
|
||||
mp3Stream[nStream] =
|
||||
AIL_open_stream(DIG, filename, 0);
|
||||
if(mp3Stream[nStream]) {
|
||||
AIL_set_stream_loop_count(
|
||||
mp3Stream[nStream], 1);
|
||||
AIL_set_stream_ms_position(
|
||||
mp3Stream[nStream], position);
|
||||
|
||||
mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
|
||||
if ( mp3Stream[nStream] )
|
||||
{
|
||||
AIL_set_stream_loop_count(mp3Stream[nStream], 1);
|
||||
AIL_set_stream_ms_position(mp3Stream[nStream], position);
|
||||
AIL_pause_stream(mp3Stream[nStream], 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( e->pLinkPath != NULL )
|
||||
mp3Stream[nStream] = AIL_open_stream(DIG, e->pLinkPath, 0);
|
||||
else
|
||||
{
|
||||
if(mp3->pLinkPath != NULL)
|
||||
mp3Stream[nStream] = AIL_open_stream(DIG, mp3->pLinkPath, 0);
|
||||
else {
|
||||
strcpy(filename, _mp3DirectoryPath);
|
||||
strcat(filename, e->aFilename);
|
||||
|
||||
mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
|
||||
strcat(filename, mp3->aFilename);
|
||||
|
||||
mp3Stream[nStream] =
|
||||
AIL_open_stream(DIG, filename, 0);
|
||||
}
|
||||
|
||||
if ( mp3Stream[nStream] )
|
||||
{
|
||||
|
||||
if(mp3Stream[nStream]) {
|
||||
AIL_set_stream_loop_count(mp3Stream[nStream], 1);
|
||||
AIL_set_stream_ms_position(mp3Stream[nStream], position);
|
||||
AIL_set_stream_ms_position(mp3Stream[nStream], 0);
|
||||
AIL_pause_stream(mp3Stream[nStream], 0);
|
||||
|
||||
#ifdef FIX_BUGS
|
||||
_bIsMp3Active = true;
|
||||
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
_bIsMp3Active = false;
|
||||
|
||||
} while(++i < nNumMP3s);
|
||||
|
||||
position = 0;
|
||||
nFile = 0;
|
||||
}
|
||||
|
||||
strcpy(filename, m_szCDRomRootPath);
|
||||
strcat(filename, StreamedNameTable[nFile]);
|
||||
|
||||
mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
|
||||
if ( mp3Stream[nStream] )
|
||||
{
|
||||
AIL_set_stream_loop_count(mp3Stream[nStream], 1);
|
||||
AIL_set_stream_ms_position(mp3Stream[nStream], position);
|
||||
AIL_pause_stream(mp3Stream[nStream], 0);
|
||||
return true;
|
||||
}
|
||||
_bIsMp3Active = 0;
|
||||
}
|
||||
while ( ++i < nNumMP3s );
|
||||
position = 0;
|
||||
nFile = 0;
|
||||
}
|
||||
strcpy(filename, m_szCDRomRootPath);
|
||||
strcat(filename, StreamedNameTable[nFile]);
|
||||
|
||||
mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
|
||||
if ( mp3Stream[nStream] )
|
||||
{
|
||||
AIL_set_stream_loop_count(mp3Stream[nStream], 1);
|
||||
AIL_set_stream_ms_position(mp3Stream[nStream], position);
|
||||
AIL_pause_stream(mp3Stream[nStream], 0);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -730,8 +730,6 @@ _FindMP3s(void)
|
|||
delete aStream[0];
|
||||
aStream[0] = NULL;
|
||||
|
||||
OutputDebugString(fd.cFileName);
|
||||
|
||||
pList->pNext = new tMP3Entry;
|
||||
|
||||
tMP3Entry *e = pList->pNext;
|
||||
|
@ -1706,91 +1704,91 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream)
|
|||
bool
|
||||
cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream)
|
||||
{
|
||||
int i = 0;
|
||||
uint32 position = nPos;
|
||||
char filename[256];
|
||||
|
||||
ASSERT( nStream < MAX_STREAMS );
|
||||
|
||||
if ( nFile < TOTAL_STREAMED_SOUNDS )
|
||||
char filename[MAX_PATH];
|
||||
|
||||
if ( nFile >= TOTAL_STREAMED_SOUNDS )
|
||||
return false;
|
||||
|
||||
if ( aStream[nStream] )
|
||||
{
|
||||
if ( aStream[nStream] )
|
||||
delete aStream[nStream];
|
||||
aStream[nStream] = NULL;
|
||||
}
|
||||
if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER )
|
||||
{
|
||||
do
|
||||
{
|
||||
delete aStream[nStream];
|
||||
aStream[nStream] = NULL;
|
||||
}
|
||||
|
||||
if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER )
|
||||
{
|
||||
uint32 i = 0;
|
||||
do {
|
||||
if(i != 0 || _bIsMp3Active) {
|
||||
if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0;
|
||||
// Switched to MP3 player just now
|
||||
if ( !_bIsMp3Active && i == 0 )
|
||||
{
|
||||
if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] )
|
||||
position = 0;
|
||||
tMP3Entry *e = _pMP3List;
|
||||
|
||||
_CurMP3Pos = 0;
|
||||
// Try to continue from previous song, if already started
|
||||
if(!_GetMP3PosFromStreamPos(&position, &e) && !e) {
|
||||
nFile = 0;
|
||||
strcpy(filename, StreamedNameTable[nFile]);
|
||||
|
||||
CStream* stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
|
||||
|
||||
tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index);
|
||||
aStream[nStream] = stream;
|
||||
|
||||
if(mp3) {
|
||||
mp3 = _pMP3List;
|
||||
if(mp3 == NULL) {
|
||||
_bIsMp3Active = false;
|
||||
nFile = 0;
|
||||
strcat(filename, StreamedNameTable[nFile]);
|
||||
if (stream->Setup()) {
|
||||
if (position != 0)
|
||||
stream->SetPosMS(position);
|
||||
|
||||
CStream* stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
|
||||
ASSERT(stream != NULL);
|
||||
stream->Start();
|
||||
|
||||
aStream[nStream] = stream;
|
||||
|
||||
if (stream->Setup()) {
|
||||
if (position != 0)
|
||||
stream->SetPosMS(position);
|
||||
|
||||
stream->Start();
|
||||
|
||||
return true;
|
||||
} else {
|
||||
delete stream;
|
||||
aStream[nStream] = NULL;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
delete stream;
|
||||
aStream[nStream] = NULL;
|
||||
}
|
||||
return false;
|
||||
|
||||
if (mp3->pLinkPath != NULL)
|
||||
aStream[nStream] = new CStream(mp3->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
|
||||
} else {
|
||||
if ( e->pLinkPath != NULL )
|
||||
aStream[nStream] = new CStream(e->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
|
||||
else {
|
||||
strcpy(filename, _mp3DirectoryPath);
|
||||
strcat(filename, mp3->aFilename);
|
||||
|
||||
aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
|
||||
strcat(filename, e->aFilename);
|
||||
|
||||
aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream]);
|
||||
}
|
||||
|
||||
|
||||
if (aStream[nStream]->Setup()) {
|
||||
if (position != 0)
|
||||
aStream[nStream]->SetPosMS(position);
|
||||
|
||||
aStream[nStream]->Start();
|
||||
|
||||
_bIsMp3Active = true;
|
||||
return true;
|
||||
} else {
|
||||
delete aStream[nStream];
|
||||
aStream[nStream] = NULL;
|
||||
}
|
||||
|
||||
_bIsMp3Active = false;
|
||||
continue;
|
||||
// fall through, start playing from another song
|
||||
}
|
||||
if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] )
|
||||
position = 0;
|
||||
|
||||
tMP3Entry *e;
|
||||
if ( !_GetMP3PosFromStreamPos(&position, &e) )
|
||||
} else {
|
||||
if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0;
|
||||
|
||||
_CurMP3Pos = 0;
|
||||
|
||||
tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index);
|
||||
if ( !mp3 )
|
||||
{
|
||||
if ( e == NULL )
|
||||
mp3 = _pMP3List;
|
||||
if ( !_pMP3List )
|
||||
{
|
||||
nFile = 0;
|
||||
strcat(filename, StreamedNameTable[nFile]);
|
||||
_bIsMp3Active = 0;
|
||||
strcpy(filename, StreamedNameTable[nFile]);
|
||||
|
||||
CStream* stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
|
||||
ASSERT(stream != NULL);
|
||||
|
||||
aStream[nStream] = stream;
|
||||
|
||||
|
@ -1805,61 +1803,53 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream)
|
|||
delete stream;
|
||||
aStream[nStream] = NULL;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (e->pLinkPath != NULL)
|
||||
aStream[nStream] = new CStream(e->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
|
||||
if(mp3->pLinkPath != NULL)
|
||||
aStream[nStream] = new CStream(mp3->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
|
||||
else {
|
||||
strcpy(filename, _mp3DirectoryPath);
|
||||
strcat(filename, e->aFilename);
|
||||
strcat(filename, mp3->aFilename);
|
||||
|
||||
aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream]);
|
||||
}
|
||||
|
||||
if (aStream[nStream]->Setup()) {
|
||||
if (position != 0)
|
||||
aStream[nStream]->SetPosMS(position);
|
||||
|
||||
aStream[nStream]->Start();
|
||||
|
||||
#ifdef FIX_BUGS
|
||||
_bIsMp3Active = true;
|
||||
#endif
|
||||
return true;
|
||||
} else {
|
||||
delete aStream[nStream];
|
||||
aStream[nStream] = NULL;
|
||||
}
|
||||
|
||||
_bIsMp3Active = false;
|
||||
|
||||
} while(++i < nNumMP3s);
|
||||
|
||||
position = 0;
|
||||
nFile = 0;
|
||||
}
|
||||
|
||||
strcpy(filename, StreamedNameTable[nFile]);
|
||||
|
||||
CStream *stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
|
||||
ASSERT(stream != NULL);
|
||||
|
||||
aStream[nStream] = stream;
|
||||
|
||||
if ( stream->Setup() ) {
|
||||
if (position != 0)
|
||||
stream->SetPosMS(position);
|
||||
|
||||
stream->Start();
|
||||
|
||||
return true;
|
||||
} else {
|
||||
delete stream;
|
||||
aStream[nStream] = NULL;
|
||||
}
|
||||
_bIsMp3Active = 0;
|
||||
}
|
||||
while ( ++i < nNumMP3s );
|
||||
position = 0;
|
||||
nFile = 0;
|
||||
}
|
||||
strcpy(filename, StreamedNameTable[nFile]);
|
||||
|
||||
CStream *stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
|
||||
|
||||
aStream[nStream] = stream;
|
||||
|
||||
if ( stream->Setup() ) {
|
||||
if (position != 0)
|
||||
stream->SetPosMS(position);
|
||||
|
||||
stream->Start();
|
||||
|
||||
return true;
|
||||
} else {
|
||||
delete stream;
|
||||
aStream[nStream] = NULL;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue