[webkit-changes] [WebKit/WebKit] 00c67b: Cherry-pick 261070 at main (c9a7acf64ee3). https://bu...

Xabier Rodríguez noreply at github.com
Wed Apr 12 15:12:31 PDT 2023


  Branch: refs/heads/webkitglib/2.38
  Home:   https://github.com/WebKit/WebKit
  Commit: 00c67b617cdbdf4d3b24d01af5e4e2048aef261c
      https://github.com/WebKit/WebKit/commit/00c67b617cdbdf4d3b24d01af5e4e2048aef261c
  Author: Philippe Normand <philn at igalia.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h

  Log Message:
  -----------
  Cherry-pick 261070 at main (c9a7acf64ee3). https://bugs.webkit.org/show_bug.cgi?id=253237

    [GStreamer] GRefPtr template specialization for GstDeviceMonitor
    https://bugs.webkit.org/show_bug.cgi?id=253237

    Reviewed by Xabier Rodriguez-Calvar.

    We're (hopefully) not fixing a leak here, since without specialization the generic
    g_object_ref/unref would be called. But having a specialization for this object is still a good
    thing, allowing for instance the GStreamer leak tracer to correctly track lifetime of device
    monitors.

    Also, drive-by, stop the monitor only if it was successfully started, similarily to the
    CaptureDeviceManager implementation.

    * Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:
    (WebCore::maximumNumberOfOutputChannels):
    * Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp:
    (WTF::adoptGRef):
    (WTF::refGPtr<GstDeviceMonitor>):
    (WTF::derefGPtr<GstDeviceMonitor>):
    * Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h:

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


  Commit: 6669ecccd1c806bc6a468f707c7fa33f848b1c9e
      https://github.com/WebKit/WebKit/commit/6669ecccd1c806bc6a468f707c7fa33f848b1c9e
  Author: Philippe Normand <philn at igalia.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerWebRTCUtils.h
    M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp
    M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingVideoSourceGStreamer.cpp

  Log Message:
  -----------
  Cherry-pick 261074 at main (7878d72b0fd7). https://bugs.webkit.org/show_bug.cgi?id=251428

    [GStreamer][WebRTC] Implement GstMappedRtpBuffer
    https://bugs.webkit.org/show_bug.cgi?id=251428

    Reviewed by Xabier Rodriguez-Calvar.

    With this new RAII object for mapping RTP buffers we don't need to manually unmap anymore.

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


  Commit: e909ba0172e76c48108d85d129334b62064691c2
      https://github.com/WebKit/WebKit/commit/e909ba0172e76c48108d85d129334b62064691c2
  Author: Enrique Ocaña González <eocanha at igalia.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M Source/WebCore/Modules/mediasource/SourceBuffer.cpp

  Log Message:
  -----------
  Cherry-pick 261328 at main (1581c8aa2d3c). https://bugs.webkit.org/show_bug.cgi?id=253074

    [MSE] Skip initial buffering rate computation
    https://bugs.webkit.org/show_bug.cgi?id=253074

    Reviewed by Jer Noble.

    m_timeOfBufferingMonitor is initialized in SourceBuffer at creation
    time. If the first call to monitorBufferingRate() takes too much to
    happen for whatever reason (eg: because the webpage takes too much to
    perform the first append), the computed interval is already going to be
    too big and generate an artificially low m_averageBufferRate.

    To mitigate this, I've added code to initialize m_timeOfBufferingMonitor
    to zero, detect that special value in monitorBufferingRate() and skip
    the first time that the rate computation is done (just assigning the
    "now" time to m_timeOfBufferingMonitor, so when the next update is done,
    the interval is most realistic).

    However, since monitorBufferingRate() calls are only done from
    canPlayThroughRange() and that call might happen only once in some
    layout tests and production scenarios, m_averageBufferRate might not
    reach accurate values on time and make the test fail. To mitigate that,
    I've also added extra calls every time a buffer is appended and every
    time the append completes.

    See: https://github.com/WebPlatformForEmbedded/WPEWebKit/issues/928#issuecomment-1327746356

    * Source/WebCore/Modules/mediasource/SourceBuffer.cpp: Initialize m_timeOfBufferingMonitor to zero, meaning "never updated before".
    (WebCore::SourceBuffer::appendBuffer): Update monitorBufferingRate.
    (WebCore::SourceBuffer::sourceBufferPrivateAppendComplete): UpdateMonitorBufferingRate.
    (WebCore::SourceBuffer::monitorBufferingRate): Skip first m_averageBufferRate update.

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


  Commit: 6cd3e03d4a4fd5de1422552d5c7201928be1ec00
      https://github.com/WebKit/WebKit/commit/6cd3e03d4a4fd5de1422552d5c7201928be1ec00
  Author: Xabier Rodriguez-Calvar <calvaris at igalia.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h

  Log Message:
  -----------
  Cherry-pick 261571 at main (c5cfffe19659). https://bugs.webkit.org/show_bug.cgi?id=252310

    [GStreamer] Try to detect and recover inconsistent playing state
    https://bugs.webkit.org/show_bug.cgi?id=252310

    Reviewed by Philippe Normand.

    A series of buffer flushings could leave pipeline in an inconsistent state: top-level bin in playing with sinks in
    paused. This happens if flush is triggered in the middle of paused-to-playing transition which was started by gst bin
    async handling of ASYNC_DONE message.

    * Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
    (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
    (WebCore::areAllSinksPlayingForBin):
    (WebCore::MediaPlayerPrivateGStreamer::checkPlayingConsistency):
    * Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

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


  Commit: bb3a2cb3c1b4b511617c318d6412177338f88245
      https://github.com/WebKit/WebKit/commit/bb3a2cb3c1b4b511617c318d6412177338f88245
  Author: Philippe Normand <philn at igalia.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h

  Log Message:
  -----------
  Cherry-pick 261626 at main (e2ccf6b69511). https://bugs.webkit.org/show_bug.cgi?id=253833

    [GStreamer][WebRTC] Ensure end-point pipeline is stopped when destroying
    https://bugs.webkit.org/show_bug.cgi?id=253833

    Reviewed by Xabier Rodriguez-Calvar.

    As subject says, make sure the pipeline is teared down during disposal of the EndPoint.

    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:
    (WebCore::GStreamerMediaEndpoint::~GStreamerMediaEndpoint):
    (WebCore::GStreamerMediaEndpoint::teardownPipeline):
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h:

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


  Commit: 4b8a3b3ac654f8a303fd658015bf691f163da996
      https://github.com/WebKit/WebKit/commit/4b8a3b3ac654f8a303fd658015bf691f163da996
  Author: Philippe Normand <philn at igalia.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerStatsCollector.cpp

  Log Message:
  -----------
  Cherry-pick 261681 at main (2e8371efc38c). https://bugs.webkit.org/show_bug.cgi?id=253955

    [GStreamer][WebRTC] StatsCollector: Update GStreamer version checks
    https://bugs.webkit.org/show_bug.cgi?id=253955

    Reviewed by Xabier Rodriguez-Calvar.

    GStreamer 1.22 is out so no need to check 1.21 anymore.

    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerStatsCollector.cpp:
    (WebCore::fillReportCallback):

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


  Commit: 709e9ac3beb721c55e23dc03fc7173977c7575ff
      https://github.com/WebKit/WebKit/commit/709e9ac3beb721c55e23dc03fc7173977c7575ff
  Author: Philippe Normand <philn at igalia.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerDataChannelHandler.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerDataChannelHandler.h

  Log Message:
  -----------
  Cherry-pick 261683 at main (758056c72f5c). https://bugs.webkit.org/show_bug.cgi?id=253954

    [GStreamer][WebRTC] Improve DataChannel logs
    https://bugs.webkit.org/show_bug.cgi?id=253954

    Reviewed by Xabier Rodriguez-Calvar.

    The logs now mention one unique identifier per data-channel. This works only when building against
    GStreamer 1.22 though because it requires new macros.

    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerDataChannelHandler.cpp:
    (WebCore::GStreamerDataChannelHandler::GStreamerDataChannelHandler):
    (WebCore::GStreamerDataChannelHandler::~GStreamerDataChannelHandler):
    (WebCore::GStreamerDataChannelHandler::setClient):
    (WebCore::GStreamerDataChannelHandler::sendStringData):
    (WebCore::GStreamerDataChannelHandler::sendRawData):
    (WebCore::GStreamerDataChannelHandler::close):
    (WebCore::GStreamerDataChannelHandler::checkState):
    (WebCore::GStreamerDataChannelHandler::bufferedAmountChanged):
    (WebCore::GStreamerDataChannelHandler::onMessageData):
    (WebCore::GStreamerDataChannelHandler::onMessageString):
    (WebCore::GStreamerDataChannelHandler::onError):
    (WebCore::GStreamerDataChannelHandler::onClose):
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerDataChannelHandler.h:

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


  Commit: 9d1936ad77d3cf5cf75f8acec942e6aa9402d54b
      https://github.com/WebKit/WebKit/commit/9d1936ad77d3cf5cf75f8acec942e6aa9402d54b
  Author: Philippe Normand <philn at igalia.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp
    M Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.h
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/eme/WebKitThunderDecryptorGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp

  Log Message:
  -----------
  Cherry-pick 261684 at main (8f08fa82eddb). https://bugs.webkit.org/show_bug.cgi?id=253000

    [GStreamer][EME] Added support to check support of cryptoblockformat
    https://bugs.webkit.org/show_bug.cgi?id=253000

    Reviewed by Xabier Rodriguez-Calvar.

    Inspired from downstream WPE 2.22 patch:
    https://github.com/WebPlatformForEmbedded/WPEWebKit/commit/e5b91c2bb7732e1047e3f52aa6f6651e0e1f02da

    Fixes YT cert test: "Format Support Tests" -> "1. isTypeSupported cryptoblockformat"

    Also drive-by change suggested by Xabier, remove the application/x-cbcs check in the Thunder
    decryptor as that is now cenc with a cypher-mode.

    * Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:
    (WebCore::GStreamerRegistryScanner::isContentTypeSupported const):

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


  Commit: 6da9beff894ff1d9cc55e5bc85ab7b25ea29dc6d
      https://github.com/WebKit/WebKit/commit/6da9beff894ff1d9cc55e5bc85ab7b25ea29dc6d
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M Source/WebCore/platform/mediastream/RealtimeMediaSource.h
    M Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h

  Log Message:
  -----------
  Cherry-pick 261785 at main (8684905426f0). https://bugs.webkit.org/show_bug.cgi?id=254018

    Expose RealtimeMediaSource fitnessScore as a double
    https://bugs.webkit.org/show_bug.cgi?id=254018
    rdar://problem/106801067

    Reviewed by Eric Carlson.

    We should not silently cast double into unsigned, especially since we are doing comparison on the values.

    * Source/WebCore/platform/mediastream/RealtimeMediaSource.h:
    * Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h:

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


  Commit: 5be482d525255ee3d3fe4bfca0ae86577df5cb6b
      https://github.com/WebKit/WebKit/commit/5be482d525255ee3d3fe4bfca0ae86577df5cb6b
  Author: Jean-Yves Avenard <jya at apple.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M Source/WebCore/Modules/mediasource/MediaSource.cpp
    M Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.cpp

  Log Message:
  -----------
  Cherry-pick 261830 at main (8575978fe5ef). https://bugs.webkit.org/show_bug.cgi?id=254076

    MediaSource duration change algorithm incorrectly update the duration
    https://bugs.webkit.org/show_bug.cgi?id=254076
    rdar://106858912

    Reviewed by Jer Noble.

    Will be covered by existing tests once the MockMediaSource will be
    runnin in the GPU process.

    * Source/WebCore/Modules/mediasource/MediaSource.cpp:
    (WebCore::MediaSource::setDurationInternal):
    * Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.cpp:
    (WebCore::MockMediaSourcePrivate::durationChanged):

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


  Commit: a840ee764381e5c8ddcd555ca010956a38fe79bf
      https://github.com/WebKit/WebKit/commit/a840ee764381e5c8ddcd555ca010956a38fe79bf
  Author: Xabier Rodriguez-Calvar <calvaris at igalia.com>
  Date:   2023-04-13 (Thu, 13 Apr 2023)

  Changed paths:
    M Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp

  Log Message:
  -----------
  Cherry-pick 261914 at main (71eaa127b96b). https://bugs.webkit.org/show_bug.cgi?id=254159

    [GStreamer][PlayReady] Accept init data as sanitized
    https://bugs.webkit.org/show_bug.cgi?id=254159

    Reviewed by Carlos Garcia Campos.

    When getting init datas from adaptive streaming technologies, it can happen that information does not come in pssh form
    and we need to parse it in a custom way.

    * Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp:
    (WebCore::isPlayReadySanitizedInitializationData):
    (WebCore::InitDataRegistry::sanitizeCenc):

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


Compare: https://github.com/WebKit/WebKit/compare/1133b3d3a727...a840ee764381


More information about the webkit-changes mailing list