Add playback engine with A/V timestamping

- AnnexBSplitter incrementally splits the Annex-B stream into access
  units, holding partial slices across packet feeds.
- VideoDecoder exposes feedAccessUnit and the decoded frame rate.
- PlaybackEngine demuxes and decodes in lockstep, tagging video frames
  and audio chunks with 90 kHz PTS (audio from PES headers, video from
  PES anchors interpolated by decoder frame rate).
- CLI 'play' command runs the engine headlessly and reports A/V drift.
- Validated against Batman Begins: 95 frames in 4.0s, max drift -78.6 ms
  (video trails audio at stream start), avg frame duration 3833.6 ticks.
- Tests for AnnexBSplitter.
This commit is contained in:
2026-09-15 22:17:49 -04:00
parent 8267750207
commit 3768e50603
6 changed files with 440 additions and 52 deletions
+1 -3
View File
@@ -1,8 +1,6 @@
# useless-umd-player
umd video player to enjoy limited dvd menus in 720x480 pixels
A standalone player for PSP UMD Video ISO images: open a disc, render its real
a standalone player for PSP UMD Video ISO images: open a disc, render its real
menu, and play the movie (H.264 video + ATRAC3+ audio) with mouse and
keyboard/media-key controls.