On Sat, 11 Jul 2026 02:30:13 GMT, Alexander Matveev <[email protected]> wrote:
>> * 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://op... > > 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] 8305842: Replace qtdemux with MP4 demux based on Media Foundation [v4] - Fixed mimetype issue on Linux. qtdemux only accepts `video/quicktime`, so we need to map `video/mp4` and `video/x-m4v` to `video/quicktime`. ------------- PR Comment: https://git.openjdk.org/jfx/pull/2206#issuecomment-4941941119
