Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 587602e420de43c48d5fd31e7095ce4dec1dc244
      
https://github.com/WebKit/WebKit/commit/587602e420de43c48d5fd31e7095ce4dec1dc244
  Author: Jean-Yves Avenard <[email protected]>
  Date:   2024-12-16 (Mon, 16 Dec 2024)

  Changed paths:
    M Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.cpp
    M Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.h
    M Source/WebCore/platform/MediaSample.h
    M Source/WebCore/platform/graphics/cocoa/CMUtilities.h
    M Source/WebCore/platform/graphics/cocoa/CMUtilities.mm
    M Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp
    M Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.h
    M Source/WebCore/platform/mediarecorder/MediaRecorderPrivateEncoder.cpp

  Log Message:
  -----------
  Add methods to convert CMSampleBuffer and CMFormatDescription to 
MediaSamplesBlock and TrackInfo
https://bugs.webkit.org/show_bug.cgi?id=284701
rdar://141498917

Reviewed by Youenn Fablet.

Add createAudioInfoFromFormatDescription and samplesBlockFromCMSampleBuffer.
MediaSamplesBlock created share the CMSampleBuffer's CMBlockBuffer, no new 
memory is allocated.

We remove support for the UseByteRange variant in MediaSamplesBlock and 
SourceBufferParserWebM
as it was only usd by the MediaFormatReader plugin which got removed in 
282704@main.

New methods aren't used yet and will be used in a follow-up change.
No change in behaviours, covered by existing tests.

* Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.cpp:
* Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.h:
* Source/WebCore/platform/MediaSample.h:
Make MediaSamplesBlock use FastMalloc so that it can be allocated by 
makeUniqueRef.
Change MediaSampleItem's trimDuration to trimInterval so that it allows 1:1
compatible with CMSampleBuffer's kCMSampleBufferAttachmentKey_TrimDurationAtEnd.
Remote unused profile and extendedProfile members; we use the FourCC codecName 
instead.
Change flags type to uint32_t to prepare for IPC serialisation.
Add various utility methods to replicate MediaSample ones (presentationTime, 
presentationEndTime, duration, isSync).
Sured RefPtr<SharedBuffer> instead of RefPtr<const SharedBuffer> as the IPC 
serialisation
doesn't handle const type properly.

(WebCore::MediaSamplesBlock::MediaSampleItem::isSync const):
(WebCore::MediaSamplesBlock::MediaSamplesBlock):
(WebCore::MediaSamplesBlock::presentationTime const):
(WebCore::MediaSamplesBlock::duration const):
(WebCore::MediaSamplesBlock::presentationEndTime const):
(WebCore::MediaSamplesBlock::isSync const):
(WebCore::MediaSamplesBlock::trackID const): Change type to TrackID for 
consistency.
* Source/WebCore/platform/graphics/cocoa/CMUtilities.h:
* Source/WebCore/platform/graphics/cocoa/CMUtilities.mm:
(WebCore::audioStreamDescriptionFromAudioInfo):
(WebCore::createAudioFormatDescription):
(WebCore::createFormatDescriptionFromTrackInfo):
(WebCore::createAudioInfoFromFormatDescription):
(WebCore::toCMSampleBuffer):
(WebCore::samplesBlockFromCMSampleBuffer):
(WebCore::getPacketDescriptions):
(WebCore::ensureContiguousBlockBuffer):
(WebCore::sharedBufferFromCMBlockBuffer): Utility method to create a 
SharedBuffer from a
CMBlockBuffer. The memory is referenced in place, no copy is performed.
* Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:
(WebCore::WebMParser::OnTrackEntry):
(WebCore::WebMParser::TrackData::readFrameData):
(WebCore::WebMParser::VideoTrackData::consumeFrameData):
(WebCore::WebMParser::AudioTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::parsedMediaData):
(WebCore::SourceBufferParserWebM::returnSamples):
(WebCore::SourceBufferParserWebM::flushPendingAudioSamples):
(WebCore::WebMParser::createByteRangeSamples): Deleted.
* Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.h:
(WebCore::WebMParser::TrackData::createByteRangeSamples): Deleted.
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateEncoder.cpp:
(WebCore::MediaRecorderPrivateEncoder::enqueueCompressedVideoFrame): Update 
method
to use C++20 designated initialisers.

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



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

Reply via email to