Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 56c5d5123c3d8d413cce7ac3d7a859e0032e6ff2
      
https://github.com/WebKit/WebKit/commit/56c5d5123c3d8d413cce7ac3d7a859e0032e6ff2
  Author: Youenn Fablet <[email protected]>
  Date:   2026-09-23 (Wed, 23 Sep 2026)

  Changed paths:
    A 
LayoutTests/http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any-expected.txt
    A 
LayoutTests/http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.html
    A 
LayoutTests/http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.js
    A 
LayoutTests/http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.worker-expected.txt
    A 
LayoutTests/http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.worker.html
    M Source/WebKit/GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in

  Log Message:
  -----------
  WebCodecs video encoder may buffer too many
frames
rdar://188029698
https://bugs.webkit.org/show_bug.cgi?id=324827

Reviewed by Per Arne Vollan and Jean-Yves Avenard.

On macOS 27, VideoToolbox probes the AVCEncoderChromaFormat property to decide 
which H.264 encoder to select (SW or HW).
The GPU process sandbox denied this property, so VT chooses the software H264 
encoder.

This has an impact on performance but also caused the issue that the webcodecs 
H264 encoder was stalling.
This is due to the fact that the software encoder buffers more than 4 frames 
(up to 16 actually), which is over the current webcodecs queue max size.

We allow the AVCEncoderChromaFormat property so that we are back to using the 
HW H264 encoder.
As a follow-up, we will need to fix the current webcodecs queue max size so 
that the SW H264 encoder works fine..

Covered by 
http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.html and its 
worker variant, which encode 30 frames with latencyMode="quality" and then call
flush().

Covered by 
http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.html and its 
worker variant, which tries to encode 30 frames non realtime, and then calls 
flush.

Tests: http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.html
       
http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.worker.html

* 
LayoutTests/http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any-expected.txt:
 Added.
* 
LayoutTests/http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.html:
 Added.
* 
LayoutTests/http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.js:
 Added.
(async testProfile):
* 
LayoutTests/http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.worker-expected.txt:
 Added.
* 
LayoutTests/http/wpt/webcodecs/h264-encoder-quality-latency-profiles.https.any.worker.html:
 Added.
* Source/WebKit/GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:

Canonical link:
https://flagged.apple.com:443/proxy?t2=Df8I3C7Qp9&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzIxNzAwQG1haW4=&emid=5d7c2d30-43ce-4adf-a2ee-937c9a7bc0e0&c=11



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to