Stop previous stream when a new one starts; ease animations
Starting a movie now closes the current decode engine and bumps a playback generation so the stale video/audio threads stop themselves (they were overlapping the movie's canvas and audio). PlaybackEngine.close is idempotent. Animation records now honor their accelMode (linear/accel/decel easing).
This commit is contained in:
@@ -8,21 +8,40 @@ 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.
|
||||
> **Status:** playable. Opens a UMD Video ISO, plays the real RCO menu (rendered
|
||||
> from the disc), and plays the movie (H.264 video + ATRAC3+ audio).
|
||||
|
||||
## Build
|
||||
|
||||
Requires JDK 21 (Gradle auto-provisions it via the Foojay toolchain resolver).
|
||||
Requires JDK 21 (Gradle auto-provisions it).
|
||||
|
||||
```sh
|
||||
./gradlew build
|
||||
```
|
||||
|
||||
## Run
|
||||
## Run the player
|
||||
|
||||
```sh
|
||||
./gradlew cli:run --args="dump /path/to/disc.iso"
|
||||
./gradlew ui:run --args="/path/to/disc.iso"
|
||||
```
|
||||
|
||||
Controls:
|
||||
|
||||
- **↑ ↓ ← →** — navigate the menu
|
||||
- **Enter** — select
|
||||
- **M** — back to the menu
|
||||
- **S** — skip the current intro/track
|
||||
- **Space / P** — pause
|
||||
- **F11** — fullscreen
|
||||
|
||||
## CLI
|
||||
|
||||
The `cli` module has inspection/debug commands:
|
||||
|
||||
```sh
|
||||
./gradlew cli:run --args="dump /path/to/disc.iso" # metadata + playlist
|
||||
./gradlew cli:run --args="rco <iso> UMD_VIDEO/RESOURCE/EN100000.RCO" # menu data
|
||||
./gradlew cli:run --args="play <iso> <streamName>" # headless A/V sync test
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
Reference in New Issue
Block a user