Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 12dd6bd4eb2d527989f4502c701e01f5121e8d75
      
https://github.com/WebKit/WebKit/commit/12dd6bd4eb2d527989f4502c701e01f5121e8d75
  Author: Timothy Hatcher <timo...@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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to