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

Reply via email to