Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(347)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ExternalVideoSurfaceDelegate.java

Issue 132233042: Enable the embedded L1/EME support in WebView. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added ExternalVideoSurfaceDelegate.java. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/browser/ExternalVideoSurfaceDelegate.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ExternalVideoSurfaceDelegate.java b/content/public/android/java/src/org/chromium/content/browser/ExternalVideoSurfaceDelegate.java
new file mode 100644
index 0000000000000000000000000000000000000000..2c418f40fc9f8618f8b065ca0e9c60c98e0d2070
--- /dev/null
+++ b/content/public/android/java/src/org/chromium/content/browser/ExternalVideoSurfaceDelegate.java
@@ -0,0 +1,65 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.content.browser;
+
+/**
+ * Interface to be implemented by the embedder to handle video hole punching.
+ *
+ * The expected behavior of the media player on the video hole punching is as follows.
+ * 1) If it requests the surface, it will call onRequestExternalVideoSurface().
+ * When the resolution of the video is changed, it'll call onRequestExternalVideoSurface().
+ * 2) Whenever the size or the position of the video element is changed, it'll notify through
+ * onExternalVideoSurfacePositionChanged().
+ * 3) Whenever the page that contains the video element is scrolled or zoomed,
+ * onExternalVideoSurfaceRenderCoordinatesChanged() will be called.
+ * 4) Usually steps 1) ~ 3) are repeated during the playback.
+ * 5) If the player no longer needs the surface any more, it'll call
+ * onReleaseExternalVideoSurface().
+ *
+ * After onRequestExternalVideoSurface() is called, when the surface is created and visible,
+ * calling ContentViewCore.attachExternalVideoSurface() is expected to associate the surface
+ * with the player.
+ * Before onReleaseExternalVideoSurface() is finished or when the surface is invisible,
+ * calling ContentViewCore.detachExternalVideoSurface() is expected to release the association.
+ *
+ * Please contact ycheo@chromium.org (or wonsik@) if you have any questions for this interface.
+ *
+ */
+public interface ExternalVideoSurfaceDelegate {
+
+ /**
+ * Called when a media player wants to request an external video surface.
+ * @param playerId The ID of the media player.
+ */
+ void requestExternalVideoSurface(int playerId);
+
+ /**
+ * Called when a media player wants to release an external video surface.
+ * @param playerId The ID of the media player.
+ */
+ void releaseExternalVideoSurface(int playerId);
+
+ /**
+ * Called when the position of the video element which uses the external
+ * video surface is changed.
+ * @param playerId The ID of the media player.
+ * @param left The absolute CSS X coordinate of the left side of the video element.
+ * @param top The absolute CSS Y coordinate of the top side of the video element.
+ * @param right The absolute CSS X coordinate of the right side of the video element.
+ * @param bottom The absolute CSS Y coordinate of the bottom side of the video element.
+ */
+ void onExternalVideoSurfacePositionChanged(
+ int playerId, float left, float top, float right, float bottom);
+
+ /**
+ * Called when RenderCoordinates are updated.
+ */
+ void onRenderCoordinatesChanged();
+
+ /**
+ * Destory the object.
+ */
+ void destroy();
+}

Powered by Google App Engine
This is Rietveld 408576698