Title: [290526] trunk/Source/WebCore
Revision
290526
Author
[email protected]
Date
2022-02-25 14:18:16 -0800 (Fri, 25 Feb 2022)

Log Message

[Cocoa] HLS + Modern EME key rotation causes playback to stall indefinitely
https://bugs.webkit.org/show_bug.cgi?id=237214
<rdar://89372801>

Reviewed by Eric Carlson.

In r275916, Ref was changed to perform pointer equality in its operator==. This caused
takeUnexpectedKeyRequestForInitializationData() to fail to find key requests matching
the initData passed in through MediaKeySession.

Fix the equality test by calling .get() on the Ref, which causes the `==` to resolve to
FragmentedSharedBuffer::operator==().

* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::takeUnexpectedKeyRequestForInitializationData):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (290525 => 290526)


--- trunk/Source/WebCore/ChangeLog	2022-02-25 21:01:41 UTC (rev 290525)
+++ trunk/Source/WebCore/ChangeLog	2022-02-25 22:18:16 UTC (rev 290526)
@@ -1,3 +1,21 @@
+2022-02-25  Jer Noble  <[email protected]>
+
+        [Cocoa] HLS + Modern EME key rotation causes playback to stall indefinitely
+        https://bugs.webkit.org/show_bug.cgi?id=237214
+        <rdar://89372801>
+
+        Reviewed by Eric Carlson.
+
+        In r275916, Ref was changed to perform pointer equality in its operator==. This caused 
+        takeUnexpectedKeyRequestForInitializationData() to fail to find key requests matching
+        the initData passed in through MediaKeySession.
+
+        Fix the equality test by calling .get() on the Ref, which causes the `==` to resolve to
+        FragmentedSharedBuffer::operator==().
+
+        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
+        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::takeUnexpectedKeyRequestForInitializationData):
+
 2022-02-25  Alex Christensen  <[email protected]>
 
         Re-add YouTubePluginReplacement, removed in r285252

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm (290525 => 290526)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm	2022-02-25 21:01:41 UTC (rev 290525)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm	2022-02-25 22:18:16 UTC (rev 290526)
@@ -275,7 +275,7 @@
         auto& request = *requestIter;
         auto requestType = initTypeForRequest(request.get());
         auto requestInitData = initializationDataForRequest(request.get());
-        if (initDataType != requestType || initData != requestInitData)
+        if (initDataType != requestType || initData != requestInitData.get())
             continue;
 
         return m_unexpectedKeyRequests.take(requestIter);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to