End the video when we run out of packets.

If there are no audio or video packets left, even if we haven't hit the
pts, the video is over.
Fixes #6135, hanging in Chinese translation of Clannad.
This commit is contained in:
Unknown W. Brackets 2014-05-25 18:44:36 -07:00
parent 548d27e95c
commit df22d0609f

View file

@ -1395,7 +1395,8 @@ int scePsmfPlayerUpdate(u32 psmfPlayer)
}
DEBUG_LOG(ME, "scePsmfPlayerUpdate(%08x)", psmfPlayer);
if ((s64)psmfplayer->psmfPlayerAvcAu.pts >= (s64)psmfplayer->totalDurationTimestamp - VIDEO_FRAME_DURATION_TS) {
bool videoPtsEnd = (s64)psmfplayer->psmfPlayerAvcAu.pts >= (s64)psmfplayer->totalDurationTimestamp - VIDEO_FRAME_DURATION_TS;
if (videoPtsEnd || (psmfplayer->mediaengine->IsVideoEnd() && psmfplayer->mediaengine->IsNoAudioData())) {
if (videoLoopStatus == PSMF_PLAYER_CONFIG_NO_LOOP && psmfplayer->videoStep >= 1) {
if (psmfplayer->status != PSMF_PLAYER_STATUS_PLAYING_FINISHED) {
psmfplayer->ScheduleFinish(psmfPlayer);