[webkit-changes] [WebKit/WebKit] 884664: WebCodecs decode/encode/flush callbacks should not...

youennf noreply at github.com
Thu Aug 29 04:30:11 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 884664eacfb98acbbed4575a7c4a46a955c45cbb
      https://github.com/WebKit/WebKit/commit/884664eacfb98acbbed4575a7c4a46a955c45cbb
  Author: Youenn Fablet <youenn at apple.com>
  Date:   2024-08-29 (Thu, 29 Aug 2024)

  Changed paths:
    M Source/WebCore/Modules/webcodecs/WebCodecsAudioDecoder.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsAudioDecoder.h
    M Source/WebCore/Modules/webcodecs/WebCodecsAudioEncoder.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsAudioEncoder.h
    A Source/WebCore/Modules/webcodecs/WebCodecsBaseClass.h
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.h
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.h
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj

  Log Message:
  -----------
  WebCodecs decode/encode/flush callbacks should not take a pending activity
https://bugs.webkit.org/show_bug.cgi?id=278849
rdar://134917736

Reviewed by Jean-Yves Avenard.

The WebCodecs decode/encode/flush callbacks are not guaranteed to be called and may be destroyed in a different thread than the thread they were created on.
We should therefore not take a pending activity as it is ref counted.
Instead, we introduce a WebCodecsBaseClass and a pending activity counter which is thread safe.
We take a ref to this counter in the callbacks and use the counter in virtualHasPendingActivity.

* Source/WebCore/Modules/webcodecs/WebCodecsAudioDecoder.cpp:
(WebCore::WebCodecsAudioDecoder::decode):
(WebCore::WebCodecsAudioDecoder::flush):
(WebCore::WebCodecsAudioDecoder::virtualHasPendingActivity const):
* Source/WebCore/Modules/webcodecs/WebCodecsAudioDecoder.h:
* Source/WebCore/Modules/webcodecs/WebCodecsAudioEncoder.cpp:
(WebCore::WebCodecsAudioEncoder::configure):
(WebCore::WebCodecsAudioEncoder::encode):
(WebCore::WebCodecsAudioEncoder::flush):
(WebCore::WebCodecsAudioEncoder::virtualHasPendingActivity const):
* Source/WebCore/Modules/webcodecs/WebCodecsAudioEncoder.h:
* Source/WebCore/Modules/webcodecs/WebCodecsBaseClass.h: Added.
(WebCore::WebCodecsBaseClass::PendingActivityCounter::create):
(WebCore::WebCodecsBaseClass::WebCodecsBaseClass):
(WebCore::WebCodecsBaseClass::takePendingWebCodecActivity):
(WebCore::WebCodecsBaseClass::hasPendingWebCodecActivity const):
* Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.cpp:
(WebCore::WebCodecsVideoDecoder::decode):
(WebCore::WebCodecsVideoDecoder::flush):
(WebCore::WebCodecsVideoDecoder::virtualHasPendingActivity const):
* Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.h:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp:
(WebCore::WebCodecsVideoEncoder::configure):
(WebCore::WebCodecsVideoEncoder::encode):
(WebCore::WebCodecsVideoEncoder::flush):
(WebCore::WebCodecsVideoEncoder::virtualHasPendingActivity const):
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.h:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:

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



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


More information about the webkit-changes mailing list