mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
scePsmfPlayerGetVideoData() keeps going at end.
Even if the video has ended, this happily returns the last frame (with the same pts value) over and over. Audio or no audio. It only returns no data when it's called too early.
This commit is contained in:
parent
e79d700bf0
commit
a2031cdc62
1 changed files with 8 additions and 10 deletions
|
@ -1493,22 +1493,20 @@ int scePsmfPlayerGetVideoData(u32 psmfPlayer, u32 videoDataAddr)
|
|||
}
|
||||
}
|
||||
|
||||
if (!doVideoStep || psmfplayer->mediaengine->stepVideo(videoPixelMode)) {
|
||||
int displaybufSize = psmfplayer->mediaengine->writeVideoImage(videoData->displaybuf, videoData->frameWidth, videoPixelMode);
|
||||
gpu->InvalidateCache(videoData->displaybuf, displaybufSize, GPU_INVALIDATE_SAFE);
|
||||
if (doVideoStep) {
|
||||
psmfplayer->mediaengine->stepVideo(videoPixelMode);
|
||||
}
|
||||
|
||||
// Always write the video frame, even after the video has ended.
|
||||
int displaybufSize = psmfplayer->mediaengine->writeVideoImage(videoData->displaybuf, videoData->frameWidth, videoPixelMode);
|
||||
gpu->InvalidateCache(videoData->displaybuf, displaybufSize, GPU_INVALIDATE_SAFE);
|
||||
__PsmfUpdatePts(psmfplayer, videoData);
|
||||
}
|
||||
|
||||
_PsmfPlayerFillRingbuffer(psmfplayer);
|
||||
int ret = psmfplayer->mediaengine->IsVideoEnd() ? (int)ERROR_PSMFPLAYER_NO_MORE_DATA : 0;
|
||||
|
||||
DEBUG_LOG(ME, "%08x=scePsmfPlayerGetVideoData(%08x, %08x)", ret, psmfPlayer, videoDataAddr);
|
||||
if (ret != 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
return hleDelayResult(ret, "psmfPlayer video decode", 3000);
|
||||
DEBUG_LOG(ME, "%08x=scePsmfPlayerGetVideoData(%08x, %08x)", 0, psmfPlayer, videoDataAddr);
|
||||
return hleDelayResult(0, "psmfPlayer video decode", 3000);
|
||||
}
|
||||
|
||||
int scePsmfPlayerGetAudioData(u32 psmfPlayer, u32 audioDataAddr)
|
||||
|
|
Loading…
Add table
Reference in a new issue