> * Replaced `qtdemux` with a Media Foundation-based MP4 demuxer on Windows. > * The Media Foundation-based MP4 demuxer supports **pull mode only** due to > the design of the Media Foundation APIs. For fragmented MP4 (fMP4) segments, > each segment is demuxed independently because of API limitations. After > processing each segment, the demuxer internally creates a new Source Reader. > * **HLSConnectionHolder:** Headers are now sent with every segment because > the MP4 demuxer reloads the Source Reader for each segment. Headers are > intentionally not cached to avoid unnecessary connections. Additionally, HLS > streams with separate audio renditions now seek to the last segment when > seeking to the end of the stream, matching the behavior of standard HLS > streams. > * **JavaSource:** Removed the unused `update` flag and moved caps setting > into a dedicated switch case. > * Added trace support for Media Foundation-based plugins (both the demuxer > and decoder). The tracing infrastructure is still a work in progress and will > be expanded as needed for debugging. It is disabled by default and can only > be enabled at compile time. > * H.264 video from MP4 and fMP4 (HLS) is now decoded using Media Foundation > instead of DirectShow. H.264 video in TS-based HLS streams continues to use > DirectShow. This change avoids several DirectShow issues encountered with the > new MP4 demuxer and reduces implementation complexity. > * Updated `MFWrapper` to properly support H.264 decoding. Unlike H.265, H.264 > requires using the display aperture for the display resolution, does not > signal frame availability, requires handling format changes, and must fully > drain output before accepting new input samples. > * Modified the cache implementation to support pull mode for the HLS progress > buffer. > * Added pull mode support to the HLS progress buffer. > * Changed `progressbuffer` to use a static source pad instead of a dynamic > one, simplifying pipeline construction. The need for a dynamic source pad is > unclear. > * Performed minor cleanup by removing dead and obsolete code. > * The progress buffer is now forced when `JavaSource` does not support pull > mode (for example, with `jar` and `jrt` protocols). This provides a simple > workaround until native pull mode support is implemented for these protocols. > In particular, `jar` does not provide true random access at the Java layer > anyway. > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai).
Alexander Matveev has updated the pull request incrementally with one additional commit since the last revision: 8305842: Replace qtdemux with MP4 demux based on Media Foundation [v4] ------------- Changes: - all: https://git.openjdk.org/jfx/pull/2206/files - new: https://git.openjdk.org/jfx/pull/2206/files/57b35bef..aa3a7a77 Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=2206&range=01 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=2206&range=00-01 Stats: 6 lines in 1 file changed: 6 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jfx/pull/2206.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/2206/head:pull/2206 PR: https://git.openjdk.org/jfx/pull/2206
