[RFC,wayland-protocols,v3,2/2] Add HDCP security protocol

Submitted by Scott Anderson on Dec. 3, 2018, 6:14 a.m.

Details

Message ID 20181203061451.7327-3-scott.anderson@collabora.com
State New
Series "Series without cover letter"
Headers show

Commit Message

Scott Anderson Dec. 3, 2018, 6:14 a.m.
From: Scott Anderson <scott.anderson@collabora.com>

This is an extension to the secure output protocol for clients that
specifically want to control properties related to HDCP.

Signed-off-by: Scott Anderson <scott.anderson@collabora.com>
---
 .../secure-output-hdcp-unstable-v1.xml        | 120 ++++++++++++++++++
 1 file changed, 120 insertions(+)
 create mode 100644 unstable/secure-output/secure-output-hdcp-unstable-v1.xml

Patch hide | download patch | download mbox

diff --git a/unstable/secure-output/secure-output-hdcp-unstable-v1.xml b/unstable/secure-output/secure-output-hdcp-unstable-v1.xml
new file mode 100644
index 0000000..ad62ca1
--- /dev/null
+++ b/unstable/secure-output/secure-output-hdcp-unstable-v1.xml
@@ -0,0 +1,120 @@ 
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="hdcp_security_unstable_v1">
+
+  <copyright>
+    Copyright 2018 Collabora, Ltd.
+    Copyright 2018 Intel Corporation
+
+    Permission is hereby granted, free of charge, to any person obtaining a
+    copy of this software and associated documentation files (the "Software"),
+    to deal in the Software without restriction, including without limitation
+    the rights to use, copy, modify, merge, publish, distribute, sublicense,
+    and/or sell copies of the Software, and to permit persons to whom the
+    Software is furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice (including the next
+    paragraph) shall be included in all copies or substantial portions of the
+    Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+    DEALINGS IN THE SOFTWARE.
+  </copyright>
+
+  <description summary="Protocol for providing secure output">
+    This protocol specifies an implementation for a wp_security object,
+    providing content protection via the High-bandwith Digital Content
+    Protection protocol.
+
+    Warning! The protocol described in this file is experimental and backward
+    incompatible changes may be made. Backward compatible changes may be added
+    together with the corresponding interface version bump. Backward
+    incompatible changes are done by bumping the version number in the protocol
+    and interface names and resetting the interface version. Once the protocol
+    is to be declared stable, the 'z' prefix and the version number in the
+    protocol and interface names are removed and the interface version number is
+    reset.
+  </description>
+
+  <interface name="zwp_hdcp_secure_output_v1" version="1">
+    <description summary="HDCP content protection">
+      The global interface exposing secure output capabilities is used
+      to instantiate an interface extension for a wl_surface object.
+      This extended interface will then allow surfaces to be marked as
+      as only visible on secure outputs.
+    </description>
+
+    <request name="destroy" type="destructor">
+      <description summary="unbind from the secure output interface">
+        Informs the server that the client will not be using this
+        protocol object anymore. This does not affect any other objects,
+        security objects included.
+      </description>
+    </request>
+
+    <enum name="error">
+      <entry name="implementation" value="0" 
+             summary="the wp_security already has an implementation"/>
+    </enum>
+
+    <request name="get_hdcp_security">
+      <description summary="set wp_security implementation">
+        Creates an object representing HDCP protection for a surface's
+        contents.
+
+        This will set the implementation of the security object and fail if
+        the security object already has an implementation.
+
+        The wp_hdcp_security object must be destroyed before the wp_security
+        object that is is associated with.
+      </description>
+      <arg name="id" type="new_id" interface="zwp_hdcp_security_v1"
+           summary="the new security interface id"/>
+      <arg name="security" type="object" interface="zwp_security_v1"
+           summary="the security object"/>
+    </request>
+  </interface>
+
+  <interface name="zwp_hdcp_security_v1" version="1">
+    <description summary="HDCP security interface to a wl_surface">
+      A protocol object representing an HDCP wp_security implementation.
+      It provides a set of functionality related to protecting content
+      with HDCP.
+
+      If the wl_surface associated with this object is destroyed, the HDCP
+      security object becomes inert.
+    </description>
+
+    <enum name="content_type">
+      <entry name="0" value="0" summary="Type-0"/>
+      <entry name="1" value="1" summary="Type-1"/>
+    </enum>
+
+    <request name="destroy" type="destructor">
+      <description summary="destroy zwp_hdcp_security_v1">
+        Destroy the zwp_hdcp_security_v1 object.
+        An wp_security must only be destroyed after its implementation is
+        destroyed.
+      </description>
+    </request>
+
+    <request name="set_content_type">
+      <description summary="set HDCP content type">
+        Sets the HDCP content type for this security object. See the HDCP
+        specification for the meaning of content types.
+
+        The initial content type value is Type-0.
+
+        The content type state is double-buffered and will be applied
+        on the next wl_surface.commit.
+      </description>
+      <arg name="content_type" type="uint" enum="content_type"
+           summary="the content type"/>
+    </request>
+  </interface>
+
+</protocol>