Files
useless-umd-player/README.md
T
quoije 3768e50603 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.
2026-09-15 22:17:49 -04:00

572 B

useless-umd-player

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.

Status: early development. Currently implemented: ISO 9660/UMD reading, param.sfo metadata parsing, and file listing.

Build

Requires JDK 21 (Gradle auto-provisions it via the Foojay toolchain resolver).

./gradlew build

Run

./gradlew cli:run --args="dump /path/to/disc.iso"

License

GPL-3.0-or-later — see LICENSE.