Add MPS demuxer and FFmpeg H.264 video decode

- MpsDemuxer parses MPEG-PS packs (0x1BA) into video (0x1E0-0x1EF) and
  audio (0x1BD) PES packets with PTS/DTS at the 90kHz clock.
- VideoDecoder decodes Annex-B H.264 via JavaCPP FFmpeg 8.1.2, splitting
  the stream into access units (one slice NAL per packet) so each send
  yields a frame.
- CLI 'decode' command dumps frame metadata (720x480 YUVJ420P).
- Validated against Batman Begins: 72 frames decoded.
This commit is contained in:
2026-09-15 21:59:26 -04:00
parent f40fa604a3
commit 4821267d0e
7 changed files with 211 additions and 14 deletions
+2 -1
View File
@@ -5,7 +5,7 @@ assertj = "3.27.3"
slf4j = "2.0.16"
logback = "1.5.16"
javafx = "21.0.5"
ffmpeg = "7.1.1-1.5.11"
ffmpeg = "8.1.2-1.5.14"
[libraries]
junit-bom = { module = "org.junit:junit-bom", version.ref = "junit" }
@@ -15,4 +15,5 @@ assertj-core = { module = "org.assertj:assertj-core", version.ref = "assertj" }
slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" }
logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" }
javafx-controls = { module = "org.openjfx:javafx-controls", version.ref = "javafx" }
ffmpeg = { module = "org.bytedeco:ffmpeg", version.ref = "ffmpeg" }
ffmpeg-platform = { module = "org.bytedeco:ffmpeg-platform", version.ref = "ffmpeg" }