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

26 lines
572 B
Markdown

# 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).
```sh
./gradlew build
```
## Run
```sh
./gradlew cli:run --args="dump /path/to/disc.iso"
```
## License
GPL-3.0-or-later — see [LICENSE](LICENSE).