Repository navigation
fix(libSceVideodec2): answer the generic picture query for VP9 pictures - #8839
Conversation
sceVideodec2GetPictureInfo writes the decoder's own picture layout. For a VP9 decoder it now writes the 88-byte VP9 layout that sceVideodec2GetVp9PictureInfo returns, instead of throwing. Mortal Shell 2 (PPSA34008) calls the generic query with that structure for its intro movie. HEVC pictures still throw. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Linux data point:
The title runs very slowly here (0.1-0.2 FPS), which is unrelated to this change. |
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
Bring-up discussion for this title: #8844. |
|
Overlap with #8119: both edit the last sentence of the |
|
Independent Windows run of this PR (data only). Environment: Windows 10 Pro 10.0.19045, Ryzen 7 5800X3D, WinLibs GCC 15.2.0 r7 (MinGW-w64 UCRT), Release, BUILD_TESTING=ON. Merge-tree of the PR head against Results (3 runs each):
Not run: other platforms, the other tests in the same family, the full repository CTest, and any title or console run. AI-assisted (Claude Code). |
What
Mortal Shell 2 (PPSA34008) plays its intro movie through a VP9 Videodec2 decoder (
[videodec2] decoder 1: codec=2382845 max 3840x2160) and asks for each picture's metadata with the genericsceVideodec2GetPictureInfo(NtXRa3dRzU0), notsceVideodec2GetVp9PictureInfo. Onmainthe generic query throws for anything but H.264, and the title aborts 88.7 s in:A gdb breakpoint on the export shows the call:
output thisSize=56 pictureCount=1 first thisSize=88 second=nullptr. 88 bytes issizeof(Vp9PictureInfo).sceVideodec2GetPictureInfonow writes the decoder's own layout for a VP9 picture: the same 88-byte VP9 structuresceVideodec2GetVp9PictureInforeturns, checked againstthisSize. shadPS4'svideodec2.cpphandles the generic query the same way, copying the decoder's own picture-info layout sized by the caller'sthisSize. H.264 is unchanged. HEVC pictures still throw: no title calling the HEVC layout has been seen (as when #2161 was closed).Tested
Windows 11 22621, AMD Radeon RX 6700 XT, WinLibs GCC 15.2 UCRT r7, Release, on
main6c12024.guest_videodec2: the VP9 clip now also calls the generic query with a guarded 88-byte structure and checks that every field equalssceVideodec2GetVp9PictureInfo's result and that the guard after it is intact. It fails without the library change (Videodec2: picture info is only implemented for H.264) and passes with it.ctest -j 32: 1817 of 1819 pass. The other two fail the same way onmain:agc_driver_image_array_window_past_layer_limit(does not build on MinGW, test(agc): align the array window test's texels at run time #8310/test(agc): match array sample expectations to the view #8361) andagc_driver_tessellation(reported on feat(agc): run registered merged hull programs (binary type 3) #6679).libSceVideodec2.prx; both runs usedAPS5_LOOP_GUARD=1to get past an unrelated GPU timeout (Windows TDR) that ends unguarded runs at about 25 s. That setting caps every shader loop at one evaluation, so the rendering in these runs is not representative; it does not touch video decoding, which runs on the CPU through FFmpeg:tools/check_conventions.py: no errors, one warning.docs/dev/debt/libSceVideodec2.md:11is over the 1000-character debt length. That entry is 2072 characters onmainand 1967 here; it had to change because it said the generic query throws for VP9.tools/pr_overlap.py: no overlap with open pull requests.Independent contributor validation: @xXPBSXx reports
guest_videodec2passing 3/3 on Windows 10 Pro 10.0.19045, Ryzen 7 5800X3D, WinLibs GCC 15.2.0 r7 (MinGW-w64 UCRT), Release withBUILD_TESTING=ON. Keeping this PR's test and restoring onlylibSceVideodec2/Export.cppfrom merge base6c12024f7dmakes it fail 3/3; the PR's files were restored afterward. Onlyguest_videodec2_testswas built and one CTest test listed. The contributor did not run other tests, a title or console, or another platform; no exact PR-head SHA was supplied. These are attributed contributor results, not a locally repeated run.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code