[webkit-changes] [WebKit/WebKit] 14becf: Stop using CMSampleBuffer in MediaRecorderPrivateW...

Jean-Yves Avenard noreply at github.com
Wed Dec 18 01:08:41 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 14becf89d9ce9dc33b74d5aa778b1dd21d162ef1
      https://github.com/WebKit/WebKit/commit/14becf89d9ce9dc33b74d5aa778b1dd21d162ef1
  Author: Jean-Yves Avenard <jya at apple.com>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M Source/WebCore/platform/mediarecorder/MediaRecorderPrivateEncoder.cpp
    M Source/WebCore/platform/mediarecorder/MediaRecorderPrivateEncoder.h
    M Source/WebCore/platform/mediarecorder/MediaRecorderPrivateWriter.cpp
    M Source/WebCore/platform/mediarecorder/MediaRecorderPrivateWriter.h
    M Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterAVFObjC.h
    M Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterAVFObjC.mm
    M Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterWebM.cpp
    M Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterWebM.h

  Log Message:
  -----------
  Stop using CMSampleBuffer in MediaRecorderPrivateWriter
https://bugs.webkit.org/show_bug.cgi?id=284700
rdar://141498525

Reviewed by Youenn Fablet and Eric Carlson.

CMSampleBuffer and its CMFormatDescription aren't serialisable over IPC. They also
have a fairly high memory requirement due to their complexity.

We move over to the platform-agnostic MediaSamplesBlock (CMSampleBuffer replacement)
and TrackInfo (CMFormatDescription replacement). Those two objects can be serialised
to be transmitted over IPC. They were currently in use by the WeBM SourceBufferParser,
we now use them in both the MediaRecorderPrivateEncoder and its MediaRecorderPrivateWriter.
For storage in the MediaRecorderPrivateEncoder we use Vector of UniqueRef<MediaRecorderPrivateEncoder>
so that they can be moved between queues with less complexity.

No change in observable behaviour, covered by existing tests.

* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateEncoder.cpp:
(WebCore::MediaRecorderPrivateEncoder::audioSamplesDescriptionChanged):
(WebCore::MediaRecorderPrivateEncoder::enqueueCompressedAudioSampleBuffers):
(WebCore::MediaRecorderPrivateEncoder::maybeStartWriter):
(WebCore::MediaRecorderPrivateEncoder::processVideoEncoderActiveConfiguration):
(WebCore::MediaRecorderPrivateEncoder::enqueueCompressedVideoFrame):
(WebCore::MediaRecorderPrivateEncoder::waitForMatchingAudio):
(WebCore::MediaRecorderPrivateEncoder::flushToEndSegment):
(WebCore::MediaRecorderPrivateEncoder::interleaveAndEnqueueNextFrame):
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateEncoder.h:
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateWriter.cpp:
(WebCore::MediaRecorderPrivateWriter::create):
(WebCore::MediaRecorderPrivateWriter::writeFrames):
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateWriter.h:
* Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterAVFObjC.h:
* Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterAVFObjC.mm:
(WebCore::MediaRecorderPrivateWriterAVFObjC::addAudioTrack):
(WebCore::MediaRecorderPrivateWriterAVFObjC::addVideoTrack):
(WebCore::MediaRecorderPrivateWriterAVFObjC::writeFrame):
* Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterWebM.cpp:
(WebCore::mkvCodeIcForMediaVideoCodecId): Move method at the top as it needs to be declared before its users.
(WebCore::MediaRecorderPrivateWriterWebMDelegate::addAudioTrack):
(WebCore::MediaRecorderPrivateWriterWebMDelegate::addVideoTrack):
(WebCore::MediaRecorderPrivateWriterWebM::addAudioTrack):
(WebCore::MediaRecorderPrivateWriterWebM::addVideoTrack):
(WebCore::MediaRecorderPrivateWriterWebM::writeFrame):
* Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterWebM.h:

Canonical link: https://commits.webkit.org/287994@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