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

Reply via email to