Skip to content

feat(vdecsw): implement queued AVC decoding and picture metadata - #1881

Closed
Albaloola wants to merge 1 commit into
boykopovar:mainfrom
Albaloola:contribution/vdecsw-avc
Closed

Albaloola wants to merge 1 commit into
boykopovar:mainfrom
Albaloola:contribution/vdecsw-avc

Conversation

@Albaloola

Copy link
Copy Markdown

What

Implement the 13 existing Vdecsw exports for queued progressive 8-bit 4:2:0 AVC using the existing FFmpeg dependency. Own padded access-unit copies, provide completion/output queues, enforce memory and output bounds, and support drain/reset/deletion. An original bounded H.264 parser snapshots SPS/PPS/slice/VUI/SEI metadata per input; FFmpeg retains it through B-frame reordering so timestamps and picture information remain attached to the correct frame.

ABI references are pinned SharpProspero/shadPS4 declarations. Parsing follows ITU-T H.264 (08/2021), with exact clauses and limitations in TechnicalDebt. No third-party decoder-wrapper implementation was copied.

Tested

Windows x86-64, WinLibs MinGW-w64 GCC 15.2.0, Release. This topic is based on upstream main ce64d8e. Runtime results below come from the integrated checkout; the isolated source checks are described separately. The final integrated Release build and library target passed, with 504/506 CTests passing: only the pre-existing shader_clock and vopc_compare_table GPU failures remain. No new failures were observed.

guest_avplayer, guest_videodec2, guest_avc_metadata and guest_vdecsw all pass (4/4). Synthetic fixtures check decoded pixel hashes, B-frame ordering, timestamps/crop metadata, input ownership, queue limits, reset under backpressure, lifetime races, structure canaries and malformed metadata. Parser boundary and mutation regressions pass. Full build/libs, conventions, registration and export inspection pass; only 13 guest APIs are exported.

HEVC, VP9, interlace and extended configurations remain explicit errors. Caller memory queries cover HLE objects; FFmpeg dynamic allocations are host-owned. Console queue policies, full profile/level conformance and allocation-size parity remain unverified. No PS5 hardware, retail title or Linux runtime validation was performed.

Isolated publication-source check: all 5 affected production/test compile configurations pass with this branch's own core headers, excluding neighboring local topics. Conventions, diff checks and source/test registration review also pass. Dependency headers and generated configuration come from the existing pinned build; a new full configure/link/runtime run was not performed for this isolation check.

Checklist

  • Based on current main; isolated source, diff and conventions checks pass (runtime scope above)
  • Open-PR overlap screened; prerequisite contributions are disclosed above
  • One topic per PR; follow-up work is separate
  • No investigation notes or images added to repository source
  • Unsupported paths remain explicit failures; limitations are recorded in TechnicalDebt
  • New third-party dependencies, if any, are pinned submodules built from source
  • Generic behavior, not specific to one title
  • Depends on: none
  • AI-assisted: yes, with OpenAI Codex; the PR author remains responsible for the submitted changes

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown

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.

Pull request Conflicting files (lines on main) Same exports Same new files
#1605 docs/dev/TechnicalDebt.md L238
#1613 docs/dev/TechnicalDebt.md L238
#1823 docs/dev/TechnicalDebt.md L238
#1824 docs/dev/TechnicalDebt.md L238
#1873 docs/dev/TechnicalDebt.md L238

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant