Add __isPlayingStatus() check

This commit is contained in:
raven02 2014-02-05 22:55:46 +08:00
parent a71039351f
commit 78f980e1c3

View file

@ -1051,6 +1051,13 @@ int scePsmfPlayerDelete(u32 psmfPlayer)
return 0;
}
bool isPlayingStatus(u32 status) {
if (status != PSMF_PLAYER_STATUS_PLAYING && status != PSMF_PLAYER_STATUS_PLAYING_FINISHED) {
return false;
}
return true;
}
int scePsmfPlayerUpdate(u32 psmfPlayer)
{
PsmfPlayer *psmfplayer = getPsmfPlayer(psmfPlayer);
@ -1059,15 +1066,20 @@ int scePsmfPlayerUpdate(u32 psmfPlayer)
return ERROR_PSMF_NOT_FOUND;
}
bool psmfplayerstatus = isPlayingStatus(psmfplayer->status);
if (!psmfplayerstatus) {
ERROR_LOG(ME, "scePsmfPlayerUpdate(%08x): psmf not playing", psmfPlayer);
return ERROR_PSMF_NOT_INITIALIZED;
}
DEBUG_LOG(ME, "scePsmfPlayerUpdate(%08x)", psmfPlayer);
if (psmfplayer->psmfPlayerAvcAu.pts > 0) {
if (psmfplayer->mediaengine->IsVideoEnd()) {
INFO_LOG(ME, "video end reached");
psmfplayer->psmfPlayerAvcAu.pts = -1;
psmfplayer->psmfPlayerAvcAu.dts = -1;
psmfplayer->status = PSMF_PLAYER_STATUS_PLAYING_FINISHED;
}
}
return 0;
}
@ -1088,6 +1100,12 @@ int scePsmfPlayerGetVideoData(u32 psmfPlayer, u32 videoDataAddr)
return ERROR_PSMF_NOT_FOUND;
}
bool psmfplayerstatus = isPlayingStatus(psmfplayer->status);
if (!psmfplayerstatus) {
ERROR_LOG(ME, "scePsmfPlayerGetVideoData(%08x): psmf not playing", psmfPlayer);
return ERROR_PSMF_NOT_INITIALIZED;
}
DEBUG_LOG(ME, "scePsmfPlayerGetVideoData(%08x, %08x)", psmfPlayer, videoDataAddr);
if (Memory::IsValidAddress(videoDataAddr)) {
int frameWidth = Memory::Read_U32(videoDataAddr);
@ -1122,6 +1140,12 @@ int scePsmfPlayerGetAudioData(u32 psmfPlayer, u32 audioDataAddr)
return ERROR_PSMF_NOT_FOUND;
}
bool psmfplayerstatus = isPlayingStatus(psmfplayer->status);
if (!psmfplayerstatus) {
ERROR_LOG(ME, "scePsmfPlayerGetAudioData(%08x): psmf not playing", psmfPlayer);
return ERROR_PSMF_NOT_INITIALIZED;
}
DEBUG_LOG(ME, "scePsmfPlayerGetAudioData(%08x, %08x)", psmfPlayer, audioDataAddr);
if (Memory::IsValidAddress(audioDataAddr)) {
Memory::Memset(audioDataAddr, 0, audioSamplesBytes);