- 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.
26 lines
572 B
Markdown
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). |