ImDebugger: list the sceVideocodec contexts alongside sceAudiocodec

Same shape as the audio table: one row per open context, with its EDRAM block
and frame buffer allocation. Both are in ME memory, so the addresses shown are
in that space, not in PSP RAM.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Henrik Rydgård
2026-09-12 12:53:13 -06:00
co-authored by Claude Opus 5
parent ad7cfefd49
commit 9dfce3ec2f
3 changed files with 80 additions and 0 deletions
+34
View File
@@ -47,6 +47,7 @@
#include "Core/HLE/sceAtrac.h"
#include "Core/HLE/sceAudio.h"
#include "Core/HLE/sceAudiocodec.h"
#include "Core/HLE/sceVideocodec.h"
#include "Core/HLE/sceMp3.h"
#include "Core/HLE/AtracCtx.h"
#include "Core/HLE/sceSas.h"
@@ -1577,6 +1578,39 @@ void DrawMediaDecodersView(ImConfig &cfg, ImControl &control) {
}
}
std::vector<VideocodecCtxInfo> videoCtxs;
VideocodecGetCtxInfo(&videoCtxs);
if (ImGui::CollapsingHeaderWithCount("sceVideocodec", (int)videoCtxs.size(), ImGuiTreeNodeFlags_DefaultOpen)) {
if (ImGui::BeginTable("videocodecs", 7, ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersH)) {
ImGui::TableSetupColumn("CtxAddr", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("Type", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("Size", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("Frames", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("Decoder", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("EDRAM", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("Frame buffers", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableHeadersRow();
for (const VideocodecCtxInfo &ctx : videoCtxs) {
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::Text("%08x", ctx.ctxAddr);
ImGui::TableNextColumn();
ImGui::Text("H.264 (%d)", ctx.type);
ImGui::TableNextColumn();
ImGui::Text("%dx%d", ctx.width, ctx.height);
ImGui::TableNextColumn();
ImGui::Text("%d", ctx.frameCount);
ImGui::TableNextColumn();
ImGui::TextUnformatted(ctx.hasDecoder ? "open" : "-");
ImGui::TableNextColumn();
ImGui::Text("%08x (%d)", ctx.edramToken, ctx.edramSize);
ImGui::TableNextColumn();
ImGui::Text("%08x (%d)", ctx.frameBuffers, ctx.frameBuffersSize);
}
ImGui::EndTable();
}
}
ImGui::End();
}