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)/** 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the <code>PPP_ContentDecryptor_Private</code> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * interface. Note: This is a special interface, only to be used for Content 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Decryption Modules, not normal plugins. 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)label Chrome { 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) M36 = 0.12 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPP_ContentDecryptor_Private</code> structure contains the function 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * pointers the decryption plugin must implement to provide services needed by 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the browser. This interface provides the plugin side support for the Content 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * Decryption Module (CDM) for Encrypted Media Extensions: 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * http://www.w3.org/TR/encrypted-media/ 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)interface PPP_ContentDecryptor_Private { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * Initialize for the specified key system. 2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * @param[in] key_system A <code>PP_Var</code> of type 2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code> containing the name of the key system. 2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) */ 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void Initialize( 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) [in] PP_Instance instance, 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) [in] PP_Var key_system); 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) /** 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Provides a server certificate to be used to encrypt messages to the 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * license server. 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] promise_id A reference for the promise that gets resolved or 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * rejected depending upon the success or failure of setting the certificate. 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] server_certificate A <code>PP_Var</code> of type 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * <code>PP_VARTYPE_ARRAYBUFFER</code> containing the certificate to be used. 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetServerCertificate( 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [in] PP_Instance instance, 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [in] uint32_t promise_id, 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [in] PP_Var server_certificate); 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * Creates a session. <code>init_data_type</code> contains the MIME type of 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>init_data</code>. <code>init_data</code> is a data buffer 51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * containing data for use in generating the request. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Note: <code>CreateSession()</code> must create a web session ID and provide 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * it to the browser via <code>SessionCreated()</code> on the 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] promise_id A reference for the promise that gets resolved or 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * rejected depending upon the success or failure when creating the session. 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] init_data_type A <code>PP_Var</code> of type 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code> containing the MIME type for init_data. 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] init_data A <code>PP_Var</code> of type 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_VARTYPE_ARRAYBUFFER</code> containing container specific 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * initialization data. 66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * 67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] session_type A <code>PP_SessionType</code> that indicates the 68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * type of session to be created. 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void CreateSession( 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Instance instance, 72f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) [in] uint32_t promise_id, 73f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) [in] PP_Var init_data_type, 74f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) [in] PP_Var init_data, 75f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) [in] PP_SessionType session_type); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Loads a session whose web session ID is <code>web_session_id</code>. 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Note: After the session is successfully loaded, the CDM must call 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>SessionCreated()</code> with <code>web_session_id</code> on the 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 84f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] promise_id A reference for the promise that gets resolved or 85f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * rejected depending upon the success or failure of loading the session. 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] web_session_id A <code>PP_Var</code> of type 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code> containing the web session ID of the session 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * to load. 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void LoadSession( 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) [in] PP_Instance instance, 93f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) [in] uint32_t promise_id, 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) [in] PP_Var web_session_id); 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 97a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * Provides a license or other message to the decryptor. 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 99a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * When the CDM needs more information, it must call 100a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>SessionMessage()</code> on the 101a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface, and the browser 102a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * must notify the web application. When the CDM has finished processing 103a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>response</code> and needs no more information, it must call 104a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>SessionReady()</code> on the 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface, and the browser 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * must notify the web application. 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 108f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] promise_id A reference for the promise that gets resolved or 109f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * rejected depending upon the success or failure of updating the session. 110f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * 111f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] web_session_id A <code>PP_Var</code> of type 112f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code> containing the web session ID of the session 113f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * to be updated. 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * @param[in] response A <code>PP_Var</code> of type 116a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>PP_VARTYPE_ARRAYBUFFER</code> containing the license or other 117a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * message for the given session ID. 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void UpdateSession( 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Instance instance, 121f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) [in] uint32_t promise_id, 122f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) [in] PP_Var web_session_id, 123a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) [in] PP_Var response); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Close the specified session and related resources. 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] promise_id A reference for the promise that gets resolved or 1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * rejected depending upon the success or failure of closing the session. 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] web_session_id A <code>PP_Var</code> of type 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * <code>PP_VARTYPE_STRING</code> containing the web session ID of the session 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * to be closed. 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void CloseSession( 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [in] PP_Instance instance, 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [in] uint32_t promise_id, 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [in] PP_Var web_session_id); 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Remove stored data associated with this session. 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] promise_id A reference for the promise that gets resolved or 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * rejected depending upon the success or failure of removing the session 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * data. 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param[in] web_session_id A <code>PP_Var</code> of type 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * <code>PP_VARTYPE_STRING</code> containing the web session ID of the session 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * to be removed. 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void RemoveSession( 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [in] PP_Instance instance, 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [in] uint32_t promise_id, 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [in] PP_Var web_session_id); 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Get the key IDs for keys in the session that the CDM knows are currently 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * usable to decrypt media data. 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 162f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] promise_id A reference for the promise that gets resolved or 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * rejected depending upon the success or failure of obtaining the key IDs. 164f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * 165f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param[in] web_session_id A <code>PP_Var</code> of type 166f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code> containing the web session ID of the session 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * to be queried. 168f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void GetUsableKeyIds( 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Instance instance, 172f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) [in] uint32_t promise_id, 173f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) [in] PP_Var web_session_id); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Decrypts the block and returns the unencrypted block via 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DeliverBlock()</code> on the 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. The returned block 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contains encoded data. 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_Buffer_Dev</code> resource that contains an encrypted data 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * block. 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] encrypted_block_info A <code>PP_EncryptedBlockInfo</code> that 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contains all auxiliary information needed for decryption of the 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>encrypted_block</code>. 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Decrypt( 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Instance instance, 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Resource encrypted_block, 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_EncryptedBlockInfo encrypted_block_info); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Initializes the audio decoder using codec and settings in 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>decoder_config</code>, and returns the result of the initialization 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * request to the browser using the <code>DecoderInitializeDone()</code> method 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * on the <code>PPB_ContentDecryptor_Private</code> interface. 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] decoder_config A <code>PP_AudioDecoderConfig</code> that 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contains audio decoder settings and a request ID. The request ID is passed 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to the <code>DecoderInitializeDone()</code> method on the 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface to allow clients to 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * associate the result with a audio decoder initialization request. 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] codec_extra_data A <code>PP_Resource</code> corresponding to a 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_Buffer_Dev</code> resource containing codec setup data required 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * by some codecs. It should be set to 0 when the codec being initialized 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * does not require it. 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void InitializeAudioDecoder( 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Instance instance, 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_AudioDecoderConfig decoder_config, 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Resource codec_extra_data); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Initializes the video decoder using codec and settings in 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>decoder_config</code>, and returns the result of the initialization 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * request to the browser using the <code>DecoderInitializeDone()</code> 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * method on the <code>PPB_ContentDecryptor_Private</code> interface. 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] decoder_config A <code>PP_VideoDecoderConfig</code> that 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contains video decoder settings and a request ID. The request ID is passed 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to the <code>DecoderInitializeDone()</code> method on the 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface to allow clients to 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * associate the result with a video decoder initialization request. 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] codec_extra_data A <code>PP_Resource</code> corresponding to a 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_Buffer_Dev</code> resource containing codec setup data required 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * by some codecs. It should be set to 0 when the codec being initialized 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * does not require it. 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void InitializeVideoDecoder( 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Instance instance, 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_VideoDecoderConfig decoder_config, 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Resource codec_extra_data); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * De-initializes the decoder for the <code>PP_DecryptorStreamType</code> 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specified by <code>decoder_type</code> and sets it to an uninitialized 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * state. The decoder can be re-initialized after de-initialization completes 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * by calling <code>InitializeAudioDecoder</code> or 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>InitializeVideoDecoder</code>. 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * De-initialization completion is reported to the browser using the 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DecoderDeinitializeDone()</code> method on the 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] decoder_type A <code>PP_DecryptorStreamType</code> that 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specifies the decoder to de-initialize. 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] request_id A request ID that allows the browser to associate a 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * request to de-initialize a decoder with the corresponding call to the 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DecoderDeinitializeDone()</code> method on the 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DeinitializeDecoder( 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Instance instance, 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_DecryptorStreamType decoder_type, 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] uint32_t request_id); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Resets the decoder for the <code>PP_DecryptorStreamType</code> specified 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * by <code>decoder_type</code> to an initialized clean state. Reset 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * completion is reported to the browser using the 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DecoderResetDone()</code> method on the 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. This method can be 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * used to signal a discontinuity in the encoded data stream, and is safe to 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * call multiple times. 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] decoder_type A <code>PP_DecryptorStreamType</code> that 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specifies the decoder to reset. 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] request_id A request ID that allows the browser to associate a 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * request to reset the decoder with a corresponding call to the 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DecoderResetDone()</code> method on the 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ResetDecoder( 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Instance instance, 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_DecryptorStreamType decoder_type, 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] uint32_t request_id); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Decrypts encrypted_buffer, decodes it, and returns the unencrypted 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * uncompressed (decoded) data to the browser via the 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>DeliverFrame()</code> or <code>DeliverSamples()</code> method on the 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_ContentDecryptor_Private</code> interface. 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] decoder_type A <code>PP_DecryptorStreamType</code> that 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specifies the decoder to use after <code>encrypted_buffer</code> is 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * decrypted. 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] encrypted_buffer A <code>PP_Resource</code> corresponding to a 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_Buffer_Dev</code> resource that contains encrypted media data. 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] encrypted_block_info A <code>PP_EncryptedBlockInfo</code> that 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contains all auxiliary information needed for decryption of the 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>encrypted_block</code>. 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DecryptAndDecode( 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Instance instance, 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_DecryptorStreamType decoder_type, 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_Resource encrypted_buffer, 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_EncryptedBlockInfo encrypted_block_info); 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 307