Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2ee09856dcfda8b1b4237947f991ff7d8f77894b
      
https://github.com/WebKit/WebKit/commit/2ee09856dcfda8b1b4237947f991ff7d8f77894b
  Author: Jean-Yves Avenard <j...@apple.com>
  Date:   2025-09-11 (Thu, 11 Sep 2025)

  Changed paths:
    M Source/WebCore/platform/graphics/AudioVideoRenderer.h
    M Source/WebCore/platform/graphics/avfoundation/AudioVideoRendererAVFObjC.h
    M Source/WebCore/platform/graphics/avfoundation/AudioVideoRendererAVFObjC.mm
    M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm
    M Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.h
    M Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.mm

  Log Message:
  -----------
  Add supports for scenarios where WebCoreDecompression can't be used to 
AudioVideoRendererAVFObjC
https://bugs.webkit.org/show_bug.cgi?id=298177
rdar://159572175

Reviewed by Jer Noble and Youenn Fablet.

When the WebCoreDecompressionSession isn't in used in the 
VideoMediaSampleRenderer,
operations such as switching from protected<->clear, docking the video
or switching from an AVSampleBufferDisplayLayer to AVSampleBufferVideoRenderer
requires to first flush the renderer and re-enqueue content.
This change handles those scenarios. It is similar to what the
MediaPlayerPrivateMediaSourceAVFObjC is already doing but we allow for
simplifications as the AudioVideoRenderer only has to deal with a single
VideoMediaSampleRenderer.

Manually tested by disabling the decompressionsession in the WebM player.

No change in observable behaviour.

* Source/WebCore/platform/graphics/AudioVideoRenderer.h:
(WebCore::TracksRendererManager::setPreferences):
(WebCore::TracksRendererManager::setHasProtectedVideoContent):
* Source/WebCore/platform/graphics/avfoundation/AudioVideoRendererAVFObjC.h:
* Source/WebCore/platform/graphics/avfoundation/AudioVideoRendererAVFObjC.mm:
(WebCore::AudioVideoRendererAVFObjC::AudioVideoRendererAVFObjC):
(WebCore::AudioVideoRendererAVFObjC::~AudioVideoRendererAVFObjC):
(WebCore::AudioVideoRendererAVFObjC::setPreferences):
(WebCore::AudioVideoRendererAVFObjC::setHasProtectedVideoContent):
(WebCore::AudioVideoRendererAVFObjC::notifyWhenHasAvailableVideoFrame):
(WebCore::AudioVideoRendererAVFObjC::setVideoRenderer):
(WebCore::AudioVideoRendererAVFObjC::canUseDecompressionSession const):
(WebCore::AudioVideoRendererAVFObjC::isUsingDecompressionSession const):
(WebCore::AudioVideoRendererAVFObjC::willUseDecompressionSessionIfNeeded const):
(WebCore::AudioVideoRendererAVFObjC::stageVideoRenderer):
(WebCore::AudioVideoRendererAVFObjC::flushVideo):
(WebCore::AudioVideoRendererAVFObjC::notifyRequiresFlushToResume):
* Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm:
(WebCore::MediaPlayerPrivateWebM::MediaPlayerPrivateWebM):
(WebCore::MediaPlayerPrivateWebM::play):
(WebCore::MediaPlayerPrivateWebM::flushVideoIfNeeded):
(WebCore::MediaPlayerPrivateWebM::setLayerRequiresFlush):
* Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.h:
* Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.mm:
(WebCore::VideoMediaSampleRenderer::~VideoMediaSampleRenderer):
(WebCore::VideoMediaSampleRenderer::changeRenderer):
(WebCore::VideoMediaSampleRenderer::flush):
(WebCore::VideoMediaSampleRenderer::shutdown):

Canonical link: https://commits.webkit.org/299875@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to