summaryrefslogtreecommitdiff
path: root/omx/openmax/NVOMX_DrmExtensions.h
diff options
context:
space:
mode:
Diffstat (limited to 'omx/openmax/NVOMX_DrmExtensions.h')
-rw-r--r--omx/openmax/NVOMX_DrmExtensions.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/omx/openmax/NVOMX_DrmExtensions.h b/omx/openmax/NVOMX_DrmExtensions.h
new file mode 100644
index 0000000..e626095
--- /dev/null
+++ b/omx/openmax/NVOMX_DrmExtensions.h
@@ -0,0 +1,154 @@
+/* Copyright (c) 2009 NVIDIA Corporation. All rights reserved.
+ *
+ * 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 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.
+ */
+
+/**
+ * @file
+ * <b>NVIDIA Tegra: OpenMAX Container Extension Interface</b>
+ *
+ */
+
+#ifndef NVOMX_DrmExtensions_h_
+#define NVOMX_DrmExtensions_h_
+
+/** @} */
+
+/**
+ * @defgroup nv_omx_il_parser_drm Types
+ *
+ * This is the NVIDIA OpenMAX DRM class extension interface.
+ *
+ * These extensions include types of DRM, get and set license info
+ * and cleaning teh license store and more.
+ *
+ * @ingroup nvomx_container_extension
+ * @{
+ */
+
+typedef enum
+{
+ NvxDRMType_WMDRM10= 1,
+ NvxDRMType_PlayReady,
+ NvxDRMType_Force32 = 0x7FFFFFFF
+} EDrmType;
+
+#define DRM_INDEX_CONFIG_SET_SURFACE "DRM.index.config.setsurface"
+typedef struct DRM_CONFIG_SET_SURFACE{
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_U32 displayWidth; // display width of display area
+ OMX_U32 displayHeight; // display height of display area
+ OMX_U32 displayX; // display X coordinate of top left corner of display area
+ OMX_U32 displayY; // display Y coordinate of top left corner of display area
+ OMX_U32 componentNameSize; // (actual data size send from IL component to IL Client)
+ OMX_U8 componentName[1]; // Variable length array of component name(send from IL client to IL component)
+}DRM_CONFIG_SET_SURFACE;
+
+
+/** @} */
+
+/** Get license URL and challange config
+ * See ::DRM_INDEX_CONFIG_LICENSE_CHALLENGE
+ */
+#define DRM_INDEX_CONFIG_LICENSE_CHALLENGE "DRM.index.config.licensechallenge"
+/** Holds url data and challenge.query */
+typedef struct DRM_CONFIG_LICENSE_CHALLENGE
+{
+ OMX_U32 nSize; /**< Size of the structure in bytes */
+ OMX_VERSIONTYPE nVersion; /**< NVX extensions specification version information */
+ EDrmType DrmType; /**< Type of DRM */
+ union
+ {
+ OMX_U32 nPsiObjectSize; /**< actual data size send from IL client to Il component*/
+ OMX_U32 nLicenseQuerySize; /**< actual data size send from IL component to IL Client */
+ }size;
+ union
+ {
+ OMX_U8 pPsiObject[1]; /**< PSI object data*/
+ OMX_U8 pLicenseQuery[1]; /**< challenge query to be sent to the license server */
+ }data;
+}DRM_CONFIG_LICENSE_CHALLENGE;
+
+/** @} */
+
+/** Process license response config
+ * See ::DRM_INDEX_CONFIG_LICENSE_RESPONSE
+ */
+#define DRM_INDEX_CONFIG_LICENSE_RESPONSE "DRM.index.config.licenseresponse"
+/** Holds the license response recieved from license server */
+typedef struct DRM_CONFIG_LICENSE_RESPONSE
+{
+ OMX_U32 nSize; /**< Size of the structure in bytes */
+ OMX_VERSIONTYPE nVersion; /**< NVX extensions specification version information */
+ EDrmType DrmType; /**< Type of DRM */
+ OMX_U32 pLicenseHandle; /**< Handle to the license */
+ OMX_U32 nResponseSize; /**< Size of Response */
+ OMX_U8 pLicenseResponse[1]; /**< Response recieved from license server */
+}DRM_CONFIG_LICENSE_RESPONSE;
+
+
+/** Delete a license config
+ * See ::DRM_INDEX_CONFIG_DELETE_LICENSE
+ */
+#define DRM_INDEX_CONFIG_DELETE_LICENSE "DRM.index.config.deletelicense"
+/** Holds the license info to be deleted */
+typedef struct DRM_CONFIG_DELETE_LICENSE
+{
+ OMX_U32 nSize; /**< Size of the structure in bytes */
+ OMX_VERSIONTYPE nVersion; /**< NVX extensions specification version information */
+ EDrmType DrmType; /**< Type of DRM */
+ OMX_U32 pLicenseHandle; /**< Handle to the license */
+}DRM_CONFIG_DELETE_LICENSE;
+
+/** Setting InitializationVector config
+ * See ::DRM_BUFFER_HEADER_EXTRADATA_INITIALIZATION_VECTOR
+ */
+#define DRM_BUFFER_HEADER_EXTRADATA_INITIALIZATION_VECTOR "DRM.buffer.header.extradata.initializationvector"
+typedef struct DRM_IVDATA
+{
+ OMX_U64 qwInitializationVector;
+ OMX_U64 qwBlockOffset;
+ OMX_U8 bByteOffset;
+}DRM_IVDATA;
+
+/** Setting Decryptr offset config
+ * See ::DRM_BUFFER_HEADER_EXTRADATA_ENCRYPTION
+ */
+#define DRM_BUFFER_HEADER_EXTRADATA_ENCRYPTION_OFFSET "DRM.buffer.header.extradata.encryptionoffset"
+typedef struct DRM_ENCRYPTION_OFFSET
+{
+ OMX_U32 encryptionOffset;
+}DRM_ENCRYPTION_OFFSET;
+
+/** Setting Decryptr offset config
+ * See ::DRM_BUFFER_HEADER_EXTRADATA_ENCRYPTION_METADATA
+ */
+#define DRM_BUFFER_HEADER_EXTRADATA_ENCRYPTION_METADATA "DRM.buffer.header.extradata.encryptionmetadata"
+typedef struct DRM_EXTRADATA_ENCRYPTION_METADATA
+{
+ OMX_U32 encryptionOffset;
+ OMX_U32 encryptionSize;
+ DRM_IVDATA ivData;
+}DRM_EXTRADATA_ENCRYPTION_METADATA;
+
+/** @} */
+
+#endif
+/* File EOF */