Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b41ec215a5167f97c2297bb8d08ae0390444dc06
https://github.com/WebKit/WebKit/commit/b41ec215a5167f97c2297bb8d08ae0390444dc06
Author: Jean-Yves Avenard <[email protected]>
Date: 2023-09-28 (Thu, 28 Sep 2023)
Changed paths:
A LayoutTests/media/content/opus_variable.webm
A LayoutTests/media/media-webm-opus-variable-length-expected.txt
A LayoutTests/media/media-webm-opus-variable-length.html
M LayoutTests/platform/ios-16/TestExpectations
M LayoutTests/platform/mac/TestExpectations
M Source/WTF/wtf/PlatformHave.h
M Source/WebCore/PAL/pal/spi/cocoa/AudioToolboxSPI.h
M Source/WebCore/platform/SharedBuffer.cpp
M Source/WebCore/platform/SharedBuffer.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/graphics/cocoa/WebMAudioUtilitiesCocoa.h
M Source/WebCore/platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm
Log Message:
-----------
Add variable frame size support in Opus and Vorbis webm file
https://bugs.webkit.org/show_bug.cgi?id=261953
rdar://99712672
Reviewed by Eric Carlson
Adopt new CoreMedia support for variable size packets.
This is done by creating different magic cookies for Opus and Vorbis
stream.
And we then calculate the packet's frame size by parsing the first byte
of each packets according to the specs.
As this is only supported in iOS 17 and macOS Sonoma we keep the previous
way, which was just assuming all streams never changed.
Test added, on cocoa platforms, requires Sonoma or iOS 17.
* LayoutTests/media/content/opus_variable.webm: Added.
* LayoutTests/media/media-webm-opus-variable-length-expected.txt: Added.
* LayoutTests/media/media-webm-opus-variable-length.html: Added.
* LayoutTests/platform/ios-16/TestExpectations:
* LayoutTests/platform/mac/TestExpectations:
* Source/WTF/wtf/PlatformHave.h:
* Source/WebCore/PAL/pal/spi/cocoa/AudioToolboxSPI.h:
* Source/WebCore/platform/SharedBuffer.cpp:
(WebCore::SharedBuffer::operator[] const):
* Source/WebCore/platform/SharedBuffer.h:
* Source/WebCore/platform/graphics/cocoa/CMUtilities.h:
* Source/WebCore/platform/graphics/cocoa/CMUtilities.mm:
(WebCore::createFormatDescriptionFromTrackInfo):
(WebCore::PacketDurationParser::PacketDurationParser):
(WebCore::PacketDurationParser::framesInPacket):
(WebCore::PacketDurationParser::reset):
* Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:
(WebCore::WebMParser::AudioTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::setLogger):
* Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.h:
* Source/WebCore/platform/graphics/cocoa/WebMAudioUtilitiesCocoa.h:
* Source/WebCore/platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm:
(WebCore::opusConfigToFrameDuration):
(WebCore::parseOpusTOCData):
(WebCore::parseOpusPrivateData):
(WebCore::cookieFromOpusCookieContents):
(WebCore::createOpusAudioInfo):
(WebCore::cookieFromVorbisCodecPrivate):
(WebCore::registerVorbisDecoderIfNeeded):
(WebCore::createVorbisAudioInfo):
Canonical link: https://commits.webkit.org/268625@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes