Wire menu play calls to the playback engine
The CLI 'rco' command now runs the full pipeline headlessly: parse RCO, execute the VSMX script, invoke onAutoPlay, and decode the selected stream via PlaybackEngine. Batman Begins autoplays playlist 3 (the anti-piracy warning) and decodes 23 frames from stream 00003.
This commit is contained in:
@@ -432,8 +432,23 @@ public final class Main {
|
|||||||
@Override
|
@Override
|
||||||
public void playMovie(int playListNumber, int chapterNumber, int videoNumber, int audioNumber,
|
public void playMovie(int playListNumber, int chapterNumber, int videoNumber, int audioNumber,
|
||||||
int audioFlag, int subtitleNumber, int subtitleFlag) {
|
int audioFlag, int subtitleNumber, int subtitleFlag) {
|
||||||
playCalls.add(String.format("play(playList=%d, chapter=%d, video=%d, audio=%d, audioFlag=%d, subtitle=%d, subtitleFlag=%d)",
|
String call = String.format("play(playList=%d, chapter=%d, video=%d, audio=%d, audioFlag=%d, subtitle=%d, subtitleFlag=%d)",
|
||||||
playListNumber, chapterNumber, videoNumber, audioNumber, audioFlag, subtitleNumber, subtitleFlag));
|
playListNumber, chapterNumber, videoNumber, audioNumber, audioFlag, subtitleNumber, subtitleFlag);
|
||||||
|
String streamName = String.format("%05d", playListNumber);
|
||||||
|
try (PlaybackEngine engine = PlaybackEngine.open(iso, streamName, 0)) {
|
||||||
|
int frames = 0;
|
||||||
|
PlaybackEngine.VideoFrame frame;
|
||||||
|
while ((frame = engine.nextVideoFrame()) != null) {
|
||||||
|
frames++;
|
||||||
|
if (frame.pts() >= 2L * PlaybackEngine.MPEG_TIMESTAMP) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
call += String.format(" -> stream %s: %d frames decoded", streamName, frames);
|
||||||
|
} catch (IOException e) {
|
||||||
|
call += " -> stream " + streamName + ": " + e.getMessage();
|
||||||
|
}
|
||||||
|
playCalls.add(call);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user