From eff9bd1fc3032892acb8404e5deaa5545bc2c700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Wed, 19 Mar 2025 09:37:51 +0100 Subject: [PATCH] mpeg: Minor cleanup --- Core/HLE/AtracCtx2.cpp | 2 +- Core/HLE/sceMpeg.cpp | 37 +++++++++++++++++++------------------ Core/HLE/scePsmf.cpp | 2 +- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/Core/HLE/AtracCtx2.cpp b/Core/HLE/AtracCtx2.cpp index 9a1d3410a5..03c24d539b 100644 --- a/Core/HLE/AtracCtx2.cpp +++ b/Core/HLE/AtracCtx2.cpp @@ -168,7 +168,7 @@ int Atrac2::RemainingFrames() const { Atrac2::Atrac2(u32 contextAddr, int codecType) { if (contextAddr) { context_ = PSPPointer::Create(contextAddr); - // First-time initialization. + // First-time initialization. The rest is initialized in SetData. SceAtracIdInfo &info = context_->info; info.codec = codecType; info.state = ATRAC_STATUS_NO_DATA; diff --git a/Core/HLE/sceMpeg.cpp b/Core/HLE/sceMpeg.cpp index 6f8857ba6d..e0c331a5c0 100644 --- a/Core/HLE/sceMpeg.cpp +++ b/Core/HLE/sceMpeg.cpp @@ -284,23 +284,6 @@ static MpegContext *getMpegCtx(u32 mpegAddr) { return res; } -static void InitRingbuffer(SceMpegRingBuffer *buf, int packets, int data, int size, int callback_addr, int callback_args) { - buf->packets = packets; - buf->packetsRead = 0; - buf->packetsWritePos = 0; - buf->packetsAvail = 0; - buf->packetSize = 2048; - buf->data = data; - buf->callback_addr = callback_addr; - buf->callback_args = callback_args; - buf->dataUpperBound = data + packets * 2048; - buf->semaID = 0; - buf->mpeg = 0; - // This isn't in ver 0104, but it is in 0105. - if (mpegLibVersion >= 0x0105) - buf->gp = __KernelGetModuleGP(__KernelGetCurThreadModuleId()); -} - static u32 convertTimestampToDate(u32 ts) { return ts; // TODO } @@ -497,7 +480,25 @@ static u32 sceMpegRingbufferConstruct(u32 ringbufferAddr, u32 numPackets, u32 da } auto ring = PSPPointer::Create(ringbufferAddr); - InitRingbuffer(ring, numPackets, data, size, callbackAddr, callbackArg); + + ring->packets = numPackets; + ring->packetsRead = 0; + ring->packetsWritePos = 0; + ring->packetsAvail = 0; + ring->packetSize = 2048; + ring->data = data; + ring->callback_addr = callbackAddr; + ring->callback_args = callbackArg; + ring->dataUpperBound = data + numPackets * 2048; + if (ring->semaID != 0) { + // I'm starting to think this is just padding or something. + // It's not written by this function. + WARN_LOG(Log::ME, "Detected semaID %d", ring->semaID); + } + ring->mpeg = 0; + // This isn't in ver 0104, but it is in 0105. + if (mpegLibVersion >= 0x0105) + ring->gp = __KernelGetModuleGP(__KernelGetCurThreadModuleId()); return hleLogDebug(Log::ME, 0); } diff --git a/Core/HLE/scePsmf.cpp b/Core/HLE/scePsmf.cpp index 24ecbd067a..60106c786a 100644 --- a/Core/HLE/scePsmf.cpp +++ b/Core/HLE/scePsmf.cpp @@ -1680,7 +1680,7 @@ static u32 scePsmfPlayerGetCurrentPts(u32 psmfPlayer, u32 currentPtsAddr) if (Memory::IsValidAddress(currentPtsAddr)) { Memory::Write_U32(psmfplayer->psmfPlayerAvcAu.pts, currentPtsAddr); } - return hleLogDebug(Log::ME, 0); + return hleLogDebug(Log::ME, 0, "pts: %d", psmfplayer->psmfPlayerAvcAu.pts); } static u32 scePsmfPlayerGetPsmfInfo(u32 psmfPlayer, u32 psmfInfoAddr, u32 widthAddr, u32 heightAddr) {