Changeset 236104 in webkit
- Timestamp:
- Sep 18, 2018 2:14:31 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r236096 r236104 1 2018-09-18 Xabier Rodriguez Calvar <calvaris@igalia.com> 2 3 [EME][GStreamer] The current EME implementation doesn't support the waitingforkey event 4 https://bugs.webkit.org/show_bug.cgi?id=185590 5 6 Reviewed by Philippe Normand. 7 8 Updated status of 9 imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.https 10 and expectations. 11 12 * platform/wpe/TestExpectations: 13 * platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.https-expected.txt: 14 1 15 2018-09-17 Ryan Haddad <ryanhaddad@apple.com> 2 16 -
trunk/LayoutTests/platform/wpe/TestExpectations
r236064 r236104 1212 1212 1213 1213 #"waitingforkey" event is not supported yet 1214 webkit.org/b/185590 imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-readyState.https.html [ Failure ] 1215 webkit.org/b/185590 imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.https.html [ Failure ] 1216 webkit.org/b/185590 imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.https.html [ Failure ] 1217 webkit.org/b/185590 imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-waiting-for-a-key.https.html [ Failure ] 1214 webkit.org/b/189618 imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-readyState.https.html [ Failure ] 1215 webkit.org/b/189618 imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.https.html [ Failure ] 1216 webkit.org/b/189619 imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-waiting-for-a-key.https.html [ Failure ] 1218 1217 1219 1218 webkit.org/b/185594 imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-clear-encrypted.https.html [ Failure ] -
trunk/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.https-expected.txt
r232345 r236104 1 1 2 P assorg.w3.clearkey, successful playback, temporary, mp4, waitingforkey event, 1 key2 PASS org.w3.clearkey, successful playback, temporary, mp4, waitingforkey event, 1 key 3 3 -
trunk/Source/WebCore/ChangeLog
r236103 r236104 1 2018-09-18 Xabier Rodriguez Calvar <calvaris@igalia.com> 2 3 [EME][GStreamer] The current EME implementation doesn't support the waitingforkey event 4 https://bugs.webkit.org/show_bug.cgi?id=185590 5 6 Reviewed by Philippe Normand. 7 8 When decryptors are blocked waiting for the key, instruct the 9 player to run the Wait for key algorithm. As per spec, if we run 10 out of blocks pending to decrypt because we don't have the key, we 11 request running the algorithm again. 12 13 Test: imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.https.html. 14 15 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: 16 (WebCore::MediaPlayerPrivateGStreamer::handleMessage): 17 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: 18 (WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered): 19 (WebCore::MediaPlayerPrivateGStreamerBase::reportWaitingForKey): 20 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: 21 * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp: 22 (webkitMediaCommonEncryptionDecryptTransformInPlace): 23 (webkitMediaCommonEncryptionDecryptSinkEventHandler): 24 1 25 2018-09-12 Ryosuke Niwa <rniwa@webkit.org> 2 26 -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
r235971 r236104 1309 1309 gst_structure_get(structure, "event", GST_TYPE_EVENT, &event.outPtr(), nullptr); 1310 1310 handleProtectionEvent(event.get()); 1311 } else if (gst_structure_has_name(structure, "drm-waiting-for-key")) { 1312 GST_DEBUG("drm-waiting-for-key message from %s", GST_MESSAGE_SRC_NAME(message)); 1313 reportWaitingForKey(); 1311 1314 } else if (gst_structure_has_name(structure, "drm-cdm-instance-needed")) { 1312 1315 GST_DEBUG("drm-cdm-instance-needed message from %s", GST_MESSAGE_SRC_NAME(message)); -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp
r235598 r236104 1261 1261 void MediaPlayerPrivateGStreamerBase::initializationDataEncountered(GstEvent* event) 1262 1262 { 1263 // FIXME: Inform that we are waiting for a key.1264 1263 const char* eventKeySystemUUID = nullptr; 1265 1264 GstBuffer* data = nullptr; … … 1351 1350 initializationDataEncountered(event); 1352 1351 } 1352 1353 void MediaPlayerPrivateGStreamerBase::reportWaitingForKey() 1354 { 1355 GST_TRACE("waiting for key"); 1356 m_player->waitingForKey(); 1357 } 1353 1358 #endif 1354 1359 -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h
r234688 r236104 153 153 void dispatchCDMInstance(); 154 154 void initializationDataEncountered(GstEvent*); 155 void reportWaitingForKey(); 155 156 #endif 156 157 -
trunk/Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp
r235971 r236104 35 35 36 36 bool keyReceived; 37 bool waitingForKey { false }; 37 38 Lock mutex; 38 39 Condition condition; … … 198 199 return GST_FLOW_NOT_SUPPORTED; 199 200 } 200 // Send "drm-cdm-instance-needed" message to the player to resend the CDMInstance if available .201 // Send "drm-cdm-instance-needed" message to the player to resend the CDMInstance if available and inform we are waiting for key. 201 202 gst_element_post_message(GST_ELEMENT(self), gst_message_new_element(GST_OBJECT(self), gst_structure_new_empty("drm-cdm-instance-needed"))); 203 priv->waitingForKey = true; 204 gst_element_post_message(GST_ELEMENT(self), gst_message_new_element(GST_OBJECT(self), gst_structure_new_empty("drm-waiting-for-key"))); 202 205 203 206 priv->condition.waitFor(priv->mutex, Seconds(5), [priv] { … … 304 307 GST_DEBUG_OBJECT(self, "key received"); 305 308 priv->keyReceived = true; 309 priv->waitingForKey = false; 306 310 priv->condition.notifyOne(); 311 } else if (priv->waitingForKey) { 312 GST_DEBUG_OBJECT(self, "still waiting for key, reposting"); 313 gst_element_post_message(GST_ELEMENT(self), gst_message_new_element(GST_OBJECT(self), gst_structure_new_empty("drm-waiting-for-key"))); 307 314 } 308 315
Note: See TracChangeset
for help on using the changeset viewer.