[webkit-changes] [WebKit/WebKit] 12dd6b: [Cocoa] EME with encrypted MPEG2-TS fails to begin...

Timothy Hatcher noreply at github.com
Fri Feb 9 00:57:17 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 12dd6bd4eb2d527989f4502c701e01f5121e8d75
      https://github.com/WebKit/WebKit/commit/12dd6bd4eb2d527989f4502c701e01f5121e8d75
  Author: Timothy Hatcher <timothy at apple.com>
  Date:   2024-02-09 (Fri, 09 Feb 2024)

  Changed paths:
    A LayoutTests/http/tests/media/fairplay/content/elementary-stream-video-keyid-1.ts
    A LayoutTests/http/tests/media/fairplay/fps-mse-unmuxed-mpts-expected.txt
    A LayoutTests/http/tests/media/fairplay/fps-mse-unmuxed-mpts.html
    M LayoutTests/platform/mac/TestExpectations
    M Source/WTF/wtf/PlatformHave.h
    M Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.cpp
    M Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.h
    M Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm
    M Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm
    M Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm

  Log Message:
  -----------
  [Cocoa] EME with encrypted MPEG2-TS fails to begin playback
https://bugs.webkit.org/show_bug.cgi?id=268948
rdar://122030589

Reviewed by Andy Estes.

When encrypted samples are parsed from containers by AVStreamDataParser, those samples have
their associated initialization data attached to their CMFormatDescription as extensions.
WebKit then reads those initialization data from the format description to determine the
keyID needed to decrypt that key. For MPEG2-TS files, the initialization data is stored
in a different key/value pair. Explicitly support this initData type as 'mpts'.

* LayoutTests/http/tests/media/fairplay/content/elementary-stream-video-keyid-1.ts: Added.
* LayoutTests/http/tests/media/fairplay/fps-mse-unmuxed-mpts.html: Added.
* Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsSinf):
(WebCore::CDMPrivateFairPlayStreaming::mptsName):
(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsMpts):
(WebCore::CDMPrivateFairPlayStreaming::sanitizeMpts):
(WebCore::CDMPrivateFairPlayStreaming::mptsKeyIDs):
(WebCore::validInitDataTypes):
(WebCore::CDMFactory::platformRegisterFactories):
(WebCore::CDMPrivateFairPlayStreaming::supportsInitData const):
* Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.h:
* Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::keyIDsForRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestLicense):
* Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
(WebCore::MediaSampleAVFObjC::commonInit):
* Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):

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




More information about the webkit-changes mailing list