> * 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

Reply via email to