From c03f6c23ed4958e95f931c38f0eaf35597fca1ba Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 17 Jan 2016 00:22:46 -0800 Subject: [PATCH] Mpeg: Return errors when no audio is available. Before, we were only returning an error once, in an effort to log only once. This meant sometimes games would not realize they needed to add packets. --- Core/HLE/sceMpeg.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Core/HLE/sceMpeg.cpp b/Core/HLE/sceMpeg.cpp index abf7ca70b284..7a30c6d3759b 100644 --- a/Core/HLE/sceMpeg.cpp +++ b/Core/HLE/sceMpeg.cpp @@ -1602,12 +1602,18 @@ static int sceMpegGetAtracAu(u32 mpeg, u32 streamId, u32 auAddr, u32 attrAddr) if (ctx->mediaengine->IsVideoEnd()) { INFO_LOG(ME, "video end reach. pts: %i dts: %i", (int)atracAu.pts, (int)ctx->mediaengine->getLastTimeStamp()); ringbuffer->packetsAvail = 0; + // TODO: Is this correct? + if (!ctx->mediaengine->IsNoAudioData()) { + WARN_LOG_REPORT(ME, "Video end without audio end, potentially skipping some audio?"); + } result = ERROR_MPEG_NO_DATA; } if (ctx->atracRegistered && ctx->mediaengine->IsNoAudioData() && !ctx->endOfAudioReached) { WARN_LOG(ME, "Audio end reach. pts: %i dts: %i", (int)atracAu.pts, (int)ctx->mediaengine->getLastTimeStamp()); ctx->endOfAudioReached = true; + } + if (ctx->mediaengine->IsNoAudioData()) { result = ERROR_MPEG_NO_DATA; }