[webkit-changes] [WebKit/WebKit] 5296cf: Add variable frame size support in Opus and Vorbis...

Jean-Yves Avenard noreply at github.com
Thu Sep 28 08:02:08 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5296cfc10b4df1a6040139f4ca8d82f1343b30bf
      https://github.com/WebKit/WebKit/commit/5296cfc10b4df1a6040139f4ca8d82f1343b30bf
  Author: Jean-Yves Avenard <jya at apple.com>
  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/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/ios/TestExpectations:
* LayoutTests/platform/mac-wk2/TestExpectations:
* LayoutTests/platform/mac/TestExpectations:
* Source/WTF/wtf/PlatformHave.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/268588@main




More information about the webkit-changes mailing list