| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ppapi/cpp/private/content_decryptor_private.h" | 5 #include "ppapi/cpp/private/content_decryptor_private.h" |
| 6 | 6 |
| 7 #include <cstring> // memcpy | 7 #include <cstring> // memcpy |
| 8 | 8 |
| 9 #include "ppapi/c/ppb_var.h" | 9 #include "ppapi/c/ppb_var.h" |
| 10 #include "ppapi/c/private/ppb_content_decryptor_private.h" | 10 #include "ppapi/c/private/ppb_content_decryptor_private.h" |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 if (!object) | 98 if (!object) |
| 99 return; | 99 return; |
| 100 | 100 |
| 101 pp::Buffer_Dev encrypted_block(pp::PassRef(), encrypted_resource); | 101 pp::Buffer_Dev encrypted_block(pp::PassRef(), encrypted_resource); |
| 102 | 102 |
| 103 static_cast<ContentDecryptor_Private*>(object)->Decrypt( | 103 static_cast<ContentDecryptor_Private*>(object)->Decrypt( |
| 104 encrypted_block, | 104 encrypted_block, |
| 105 *encrypted_block_info); | 105 *encrypted_block_info); |
| 106 } | 106 } |
| 107 | 107 |
| 108 void DeinitializeDecoder(PP_Instance instance, |
| 109 PP_StreamType decoder_type, |
| 110 uint32_t request_id) { |
| 111 void* object = |
| 112 Instance::GetPerInstanceObject(instance, kPPPContentDecryptorInterface); |
| 113 if (!object) |
| 114 return; |
| 115 static_cast<ContentDecryptor_Private*>(object)->DeinitializeDecoder( |
| 116 decoder_type, |
| 117 request_id); |
| 118 } |
| 119 |
| 120 void ResetDecoder(PP_Instance instance, |
| 121 PP_StreamType decoder_type, |
| 122 uint32_t request_id) { |
| 123 void* object = |
| 124 Instance::GetPerInstanceObject(instance, kPPPContentDecryptorInterface); |
| 125 if (!object) |
| 126 return; |
| 127 static_cast<ContentDecryptor_Private*>(object)->ResetDecoder(decoder_type, |
| 128 request_id); |
| 129 } |
| 130 |
| 108 void DecryptAndDecodeFrame( | 131 void DecryptAndDecodeFrame( |
| 109 PP_Instance instance, | 132 PP_Instance instance, |
| 110 PP_Resource encrypted_resource, | 133 PP_Resource encrypted_resource, |
| 111 const PP_EncryptedVideoFrameInfo* encrypted_video_frame_info) { | 134 const PP_EncryptedVideoFrameInfo* encrypted_video_frame_info) { |
| 112 void* object = | 135 void* object = |
| 113 Instance::GetPerInstanceObject(instance, kPPPContentDecryptorInterface); | 136 Instance::GetPerInstanceObject(instance, kPPPContentDecryptorInterface); |
| 114 if (!object) | 137 if (!object) |
| 115 return; | 138 return; |
| 116 | 139 |
| 117 pp::Buffer_Dev encrypted_frame(pp::PassRef(), encrypted_resource); | 140 pp::Buffer_Dev encrypted_frame(pp::PassRef(), encrypted_resource); |
| 118 | 141 |
| 119 static_cast<ContentDecryptor_Private*>(object)->DecryptAndDecodeFrame( | 142 static_cast<ContentDecryptor_Private*>(object)->DecryptAndDecodeFrame( |
| 120 encrypted_frame, | 143 encrypted_frame, |
| 121 *encrypted_video_frame_info); | 144 *encrypted_video_frame_info); |
| 122 } | 145 } |
| 123 | 146 |
| 124 const PPP_ContentDecryptor_Private ppp_content_decryptor = { | 147 const PPP_ContentDecryptor_Private ppp_content_decryptor = { |
| 125 &GenerateKeyRequest, | 148 &GenerateKeyRequest, |
| 126 &AddKey, | 149 &AddKey, |
| 127 &CancelKeyRequest, | 150 &CancelKeyRequest, |
| 128 &Decrypt, | 151 &Decrypt, |
| 152 &DeinitializeDecoder, |
| 153 &ResetDecoder, |
| 129 &DecryptAndDecodeFrame | 154 &DecryptAndDecodeFrame |
| 130 }; | 155 }; |
| 131 | 156 |
| 132 template <> const char* interface_name<PPB_ContentDecryptor_Private>() { | 157 template <> const char* interface_name<PPB_ContentDecryptor_Private>() { |
| 133 return PPB_CONTENTDECRYPTOR_PRIVATE_INTERFACE; | 158 return PPB_CONTENTDECRYPTOR_PRIVATE_INTERFACE; |
| 134 } | 159 } |
| 135 | 160 |
| 136 } // namespace | 161 } // namespace |
| 137 | 162 |
| 138 ContentDecryptor_Private::ContentDecryptor_Private(Instance* instance) | 163 ContentDecryptor_Private::ContentDecryptor_Private(Instance* instance) |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 pp::Buffer_Dev decrypted_block, | 238 pp::Buffer_Dev decrypted_block, |
| 214 const PP_DecryptedBlockInfo& decrypted_block_info) { | 239 const PP_DecryptedBlockInfo& decrypted_block_info) { |
| 215 if (has_interface<PPB_ContentDecryptor_Private>()) { | 240 if (has_interface<PPB_ContentDecryptor_Private>()) { |
| 216 get_interface<PPB_ContentDecryptor_Private>()->DeliverBlock( | 241 get_interface<PPB_ContentDecryptor_Private>()->DeliverBlock( |
| 217 associated_instance_.pp_instance(), | 242 associated_instance_.pp_instance(), |
| 218 decrypted_block.pp_resource(), | 243 decrypted_block.pp_resource(), |
| 219 &decrypted_block_info); | 244 &decrypted_block_info); |
| 220 } | 245 } |
| 221 } | 246 } |
| 222 | 247 |
| 248 void ContentDecryptor_Private::DecoderDeinitializeDone( |
| 249 PP_StreamType decoder_type, |
| 250 uint32_t request_id) { |
| 251 if (has_interface<PPB_ContentDecryptor_Private>()) { |
| 252 get_interface<PPB_ContentDecryptor_Private>()->DecoderDeinitializeDone( |
| 253 associated_instance_.pp_instance(), |
| 254 decoder_type, |
| 255 request_id); |
| 256 } |
| 257 } |
| 258 |
| 259 void ContentDecryptor_Private::DecoderResetDone(PP_StreamType decoder_type, |
| 260 uint32_t request_id) { |
| 261 if (has_interface<PPB_ContentDecryptor_Private>()) { |
| 262 get_interface<PPB_ContentDecryptor_Private>()->DecoderResetDone( |
| 263 associated_instance_.pp_instance(), |
| 264 decoder_type, |
| 265 request_id); |
| 266 } |
| 267 } |
| 268 |
| 223 void ContentDecryptor_Private::DeliverFrame( | 269 void ContentDecryptor_Private::DeliverFrame( |
| 224 pp::Buffer_Dev decrypted_frame, | 270 pp::Buffer_Dev decrypted_frame, |
| 225 const PP_DecryptedFrameInfo& decrypted_frame_info) { | 271 const PP_DecryptedFrameInfo& decrypted_frame_info) { |
| 226 if (has_interface<PPB_ContentDecryptor_Private>()) { | 272 if (has_interface<PPB_ContentDecryptor_Private>()) { |
| 227 get_interface<PPB_ContentDecryptor_Private>()->DeliverFrame( | 273 get_interface<PPB_ContentDecryptor_Private>()->DeliverFrame( |
| 228 associated_instance_.pp_instance(), | 274 associated_instance_.pp_instance(), |
| 229 decrypted_frame.pp_resource(), | 275 decrypted_frame.pp_resource(), |
| 230 &decrypted_frame_info); | 276 &decrypted_frame_info); |
| 231 } | 277 } |
| 232 } | 278 } |
| 233 | 279 |
| 234 void ContentDecryptor_Private::DeliverSamples( | 280 void ContentDecryptor_Private::DeliverSamples( |
| 235 pp::Buffer_Dev decrypted_samples, | 281 pp::Buffer_Dev decrypted_samples, |
| 236 const PP_DecryptedBlockInfo& decrypted_block_info) { | 282 const PP_DecryptedBlockInfo& decrypted_block_info) { |
| 237 if (has_interface<PPB_ContentDecryptor_Private>()) { | 283 if (has_interface<PPB_ContentDecryptor_Private>()) { |
| 238 get_interface<PPB_ContentDecryptor_Private>()->DeliverSamples( | 284 get_interface<PPB_ContentDecryptor_Private>()->DeliverSamples( |
| 239 associated_instance_.pp_instance(), | 285 associated_instance_.pp_instance(), |
| 240 decrypted_samples.pp_resource(), | 286 decrypted_samples.pp_resource(), |
| 241 &decrypted_block_info); | 287 &decrypted_block_info); |
| 242 } | 288 } |
| 243 } | 289 } |
| 244 | 290 |
| 245 } // namespace pp | 291 } // namespace pp |
| OLD | NEW |