15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* From private/ppp_content_decryptor_private.idl, 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * modified Mon Aug 25 14:02:40 2014. 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PRIVATE_PPP_CONTENT_DECRYPTOR_PRIVATE_H_ 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PRIVATE_PPP_CONTENT_DECRYPTOR_PRIVATE_H_ 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_var.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/private/pp_content_decryptor.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define PPP_CONTENTDECRYPTOR_PRIVATE_INTERFACE_0_12 \ 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) "PPP_ContentDecryptor_Private;0.12" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPP_CONTENTDECRYPTOR_PRIVATE_INTERFACE \ 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) PPP_CONTENTDECRYPTOR_PRIVATE_INTERFACE_0_12 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the <code>PPP_ContentDecryptor_Private</code> 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * interface. Note: This is a special interface, only to be used for Content 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Decryption Modules, not normal plugins. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Interfaces 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPP_ContentDecryptor_Private</code> structure contains the function 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * pointers the decryption plugin must implement to provide services needed by 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the browser. This interface provides the plugin side support for the Content 42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * Decryption Module (CDM) for Encrypted Media Extensions: 43a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * http://www.w3.org/TR/encrypted-media/ 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)struct PPP_ContentDecryptor_Private_0_12 { 4668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) /** 4768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * Initialize for the specified key system. 4868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * 4968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * @param[in] key_system A <code>PP_Var</code> of type 5068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code> containing the name of the key system. 5168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) */ 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void (*Initialize)(PP_Instance instance, struct PP_Var key_system); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Provides a server certificate to be used to encrypt messages to the 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * license server. 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] promise_id A reference for the promise that gets resolved or 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * rejected depending upon the success or failure of setting the certificate. 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] server_certificate A <code>PP_Var</code> of type 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * <code>PP_VARTYPE_ARRAYBUFFER</code> containing the certificate to be used. 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void (*SetServerCertificate)(PP_Instance instance, 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint32_t promise_id, 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci struct PP_Var server_certificate); 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * Creates a session. <code>init_data_type</code> contains the MIME type of 68a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>init_data</code>. <code>init_data</code> is a data buffer 69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * containing data for use in generating the request. 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Note: <code>CreateSession()</code> must create a web session ID and provide 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * it to the browser via <code>SessionCreated()</code> on the 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 75f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] promise_id A reference for the promise that gets resolved or 76f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * rejected depending upon the success or failure when creating the session. 77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 78f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] init_data_type A <code>PP_Var</code> of type 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code> containing the MIME type for init_data. 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] init_data A <code>PP_Var</code> of type 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_VARTYPE_ARRAYBUFFER</code> containing container specific 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * initialization data. 84f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * 85f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] session_type A <code>PP_SessionType</code> that indicates the 86f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * type of session to be created. 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 88a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void (*CreateSession)(PP_Instance instance, 89f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) uint32_t promise_id, 90f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) struct PP_Var init_data_type, 91f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) struct PP_Var init_data, 92f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) PP_SessionType session_type); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Loads a session whose web session ID is <code>web_session_id</code>. 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Note: After the session is successfully loaded, the CDM must call 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>SessionCreated()</code> with <code>web_session_id</code> on the 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 100f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] promise_id A reference for the promise that gets resolved or 101f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * rejected depending upon the success or failure of loading the session. 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] web_session_id A <code>PP_Var</code> of type 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code> containing the web session ID of the session 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * to load. 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void (*LoadSession)(PP_Instance instance, 108f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) uint32_t promise_id, 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) struct PP_Var web_session_id); 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * Provides a license or other message to the decryptor. 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 113a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * When the CDM needs more information, it must call 114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>SessionMessage()</code> on the 115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface, and the browser 116a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * must notify the web application. When the CDM has finished processing 117a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>response</code> and needs no more information, it must call 118a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>SessionReady()</code> on the 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface, and the browser 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * must notify the web application. 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 122f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] promise_id A reference for the promise that gets resolved or 123f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * rejected depending upon the success or failure of updating the session. 124f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * 125f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] web_session_id A <code>PP_Var</code> of type 126f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code> containing the web session ID of the session 127f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * to be updated. 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 129a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * @param[in] response A <code>PP_Var</code> of type 130a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>PP_VARTYPE_ARRAYBUFFER</code> containing the license or other 131a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * message for the given session ID. 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 133a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void (*UpdateSession)(PP_Instance instance, 134f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) uint32_t promise_id, 135f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) struct PP_Var web_session_id, 136a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) struct PP_Var response); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Close the specified session and related resources. 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] promise_id A reference for the promise that gets resolved or 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * rejected depending upon the success or failure of closing the session. 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] web_session_id A <code>PP_Var</code> of type 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * <code>PP_VARTYPE_STRING</code> containing the web session ID of the session 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * to be closed. 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void (*CloseSession)(PP_Instance instance, 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint32_t promise_id, 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci struct PP_Var web_session_id); 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Remove stored data associated with this session. 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] promise_id A reference for the promise that gets resolved or 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * rejected depending upon the success or failure of removing the session 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * data. 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] web_session_id A <code>PP_Var</code> of type 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * <code>PP_VARTYPE_STRING</code> containing the web session ID of the session 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * to be removed. 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void (*RemoveSession)(PP_Instance instance, 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint32_t promise_id, 1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci struct PP_Var web_session_id); 1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Get the key IDs for keys in the session that the CDM knows are currently 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * usable to decrypt media data. 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 170f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] promise_id A reference for the promise that gets resolved or 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * rejected depending upon the success or failure of obtaining the key IDs. 172f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * 173f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] web_session_id A <code>PP_Var</code> of type 174f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code> containing the web session ID of the session 1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * to be queried. 176f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void (*GetUsableKeyIds)(PP_Instance instance, 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint32_t promise_id, 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci struct PP_Var web_session_id); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Decrypts the block and returns the unencrypted block via 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DeliverBlock()</code> on the 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. The returned block 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contains encoded data. 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_Buffer_Dev</code> resource that contains an encrypted data 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * block. 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] encrypted_block_info A <code>PP_EncryptedBlockInfo</code> that 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contains all auxiliary information needed for decryption of the 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>encrypted_block</code>. 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void (*Decrypt)(PP_Instance instance, 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource encrypted_block, 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const struct PP_EncryptedBlockInfo* encrypted_block_info); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Initializes the audio decoder using codec and settings in 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>decoder_config</code>, and returns the result of the initialization 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * request to the browser using the <code>DecoderInitializeDone( 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) )</code> method 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * on the <code>PPB_ContentDecryptor_Private</code> interface. 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] decoder_config A <code>PP_AudioDecoderConfig</code> that 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contains audio decoder settings and a request ID. The request ID is passed 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to the <code>DecoderInitializeDone()</code> method on the 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface to allow clients to 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * associate the result with a audio decoder initialization request. 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] codec_extra_data A <code>PP_Resource</code> corresponding to a 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_Buffer_Dev</code> resource containing codec setup data required 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * by some codecs. It should be set to 0 when the codec being initialized 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * does not require it. 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void (*InitializeAudioDecoder)( 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Instance instance, 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const struct PP_AudioDecoderConfig* decoder_config, 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource codec_extra_data); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Initializes the video decoder using codec and settings in 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>decoder_config</code>, and returns the result of the initialization 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * request to the browser using the <code>DecoderInitializeDone()</code> 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * method on the <code>PPB_ContentDecryptor_Private</code> interface. 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] decoder_config A <code>PP_VideoDecoderConfig</code> that 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contains video decoder settings and a request ID. The request ID is passed 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to the <code>DecoderInitializeDone()</code> method on the 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface to allow clients to 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * associate the result with a video decoder initialization request. 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] codec_extra_data A <code>PP_Resource</code> corresponding to a 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_Buffer_Dev</code> resource containing codec setup data required 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * by some codecs. It should be set to 0 when the codec being initialized 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * does not require it. 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void (*InitializeVideoDecoder)( 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Instance instance, 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const struct PP_VideoDecoderConfig* decoder_config, 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource codec_extra_data); 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * De-initializes the decoder for the <code>PP_DecryptorStreamType</code> 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specified by <code>decoder_type</code> and sets it to an uninitialized 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * state. The decoder can be re-initialized after de-initialization completes 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * by calling <code>InitializeAudioDecoder</code> or 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>InitializeVideoDecoder</code>. 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * De-initialization completion is reported to the browser using the 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DecoderDeinitializeDone()</code> method on the 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] decoder_type A <code>PP_DecryptorStreamType</code> that 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specifies the decoder to de-initialize. 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] request_id A request ID that allows the browser to associate a 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * request to de-initialize a decoder with the corresponding call to the 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DecoderDeinitializeDone()</code> method on the 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void (*DeinitializeDecoder)(PP_Instance instance, 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_DecryptorStreamType decoder_type, 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t request_id); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Resets the decoder for the <code>PP_DecryptorStreamType</code> specified 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * by <code>decoder_type</code> to an initialized clean state. Reset 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * completion is reported to the browser using the 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DecoderResetDone()</code> method on the 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. This method can be 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * used to signal a discontinuity in the encoded data stream, and is safe to 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * call multiple times. 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] decoder_type A <code>PP_DecryptorStreamType</code> that 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specifies the decoder to reset. 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] request_id A request ID that allows the browser to associate a 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * request to reset the decoder with a corresponding call to the 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DecoderResetDone()</code> method on the 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void (*ResetDecoder)(PP_Instance instance, 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_DecryptorStreamType decoder_type, 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t request_id); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Decrypts encrypted_buffer, decodes it, and returns the unencrypted 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * uncompressed (decoded) data to the browser via the 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DeliverFrame()</code> or <code>DeliverSamples()</code> method on the 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] decoder_type A <code>PP_DecryptorStreamType</code> that 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specifies the decoder to use after <code>encrypted_buffer</code> is 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * decrypted. 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] encrypted_buffer A <code>PP_Resource</code> corresponding to a 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_Buffer_Dev</code> resource that contains encrypted media data. 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] encrypted_block_info A <code>PP_EncryptedBlockInfo</code> that 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contains all auxiliary information needed for decryption of the 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>encrypted_block</code>. 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void (*DecryptAndDecode)( 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Instance instance, 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_DecryptorStreamType decoder_type, 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource encrypted_buffer, 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const struct PP_EncryptedBlockInfo* encrypted_block_info); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 307f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)typedef struct PPP_ContentDecryptor_Private_0_12 PPP_ContentDecryptor_Private; 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PPAPI_C_PRIVATE_PPP_CONTENT_DECRYPTOR_PRIVATE_H_ */ 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 314