[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