Index: webkit/plugins/ppapi/content_decryptor_delegate.h |
=================================================================== |
--- webkit/plugins/ppapi/content_decryptor_delegate.h (revision 213561) |
+++ webkit/plugins/ppapi/content_decryptor_delegate.h (working copy) |
@@ -1,195 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef WEBKIT_PLUGINS_PPAPI_CONTENT_DECRYPTOR_DELEGATE_H_ |
-#define WEBKIT_PLUGINS_PPAPI_CONTENT_DECRYPTOR_DELEGATE_H_ |
- |
-#include <queue> |
-#include <string> |
- |
-#include "base/basictypes.h" |
-#include "base/compiler_specific.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/weak_ptr.h" |
-#include "media/base/decryptor.h" |
-#include "media/base/media_keys.h" |
-#include "media/base/sample_format.h" |
-#include "ppapi/c/private/pp_content_decryptor.h" |
-#include "ppapi/c/private/ppp_content_decryptor_private.h" |
-#include "ui/gfx/size.h" |
-#include "webkit/plugins/webkit_plugins_export.h" |
- |
-namespace media { |
-class AudioDecoderConfig; |
-class DecoderBuffer; |
-class VideoDecoderConfig; |
-} |
- |
-namespace webkit { |
-namespace ppapi { |
- |
-class PPB_Buffer_Impl; |
- |
-class WEBKIT_PLUGINS_EXPORT ContentDecryptorDelegate { |
- public: |
- // ContentDecryptorDelegate does not take ownership of |
- // |plugin_decryption_interface|. Therefore |plugin_decryption_interface| |
- // must outlive this object. |
- ContentDecryptorDelegate( |
- PP_Instance pp_instance, |
- const PPP_ContentDecryptor_Private* plugin_decryption_interface); |
- |
- void Initialize(const std::string& key_system); |
- |
- void SetKeyEventCallbacks(const media::KeyAddedCB& key_added_cb, |
- const media::KeyErrorCB& key_error_cb, |
- const media::KeyMessageCB& key_message_cb); |
- |
- // Provides access to PPP_ContentDecryptor_Private. |
- bool GenerateKeyRequest(const std::string& type, |
- const uint8* init_data, |
- int init_data_length); |
- bool AddKey(const std::string& session_id, |
- const uint8* key, |
- int key_length, |
- const uint8* init_data, |
- int init_data_length); |
- bool CancelKeyRequest(const std::string& session_id); |
- bool Decrypt(media::Decryptor::StreamType stream_type, |
- const scoped_refptr<media::DecoderBuffer>& encrypted_buffer, |
- const media::Decryptor::DecryptCB& decrypt_cb); |
- bool CancelDecrypt(media::Decryptor::StreamType stream_type); |
- bool InitializeAudioDecoder( |
- const media::AudioDecoderConfig& decoder_config, |
- const media::Decryptor::DecoderInitCB& decoder_init_cb); |
- bool InitializeVideoDecoder( |
- const media::VideoDecoderConfig& decoder_config, |
- const media::Decryptor::DecoderInitCB& decoder_init_cb); |
- // TODO(tomfinegan): Add callback args for DeinitializeDecoder() and |
- // ResetDecoder() |
- bool DeinitializeDecoder(media::Decryptor::StreamType stream_type); |
- bool ResetDecoder(media::Decryptor::StreamType stream_type); |
- // Note: These methods can be used with unencrypted data. |
- bool DecryptAndDecodeAudio( |
- const scoped_refptr<media::DecoderBuffer>& encrypted_buffer, |
- const media::Decryptor::AudioDecodeCB& audio_decode_cb); |
- bool DecryptAndDecodeVideo( |
- const scoped_refptr<media::DecoderBuffer>& encrypted_buffer, |
- const media::Decryptor::VideoDecodeCB& video_decode_cb); |
- |
- // PPB_ContentDecryptor_Private dispatching methods. |
- // TODO(ddorwin): Remove this method. |
- void NeedKey(PP_Var key_system, PP_Var session_id, PP_Var init_data); |
- // TODO(ddorwin): Remove key_system_var parameter from these methods. |
- void KeyAdded(PP_Var key_system, PP_Var session_id); |
- void KeyMessage(PP_Var key_system, |
- PP_Var session_id, |
- PP_Var message, |
- PP_Var default_url); |
- void KeyError(PP_Var key_system, |
- PP_Var session_id, |
- int32_t media_error, |
- int32_t system_code); |
- void DeliverBlock(PP_Resource decrypted_block, |
- const PP_DecryptedBlockInfo* block_info); |
- void DecoderInitializeDone(PP_DecryptorStreamType decoder_type, |
- uint32_t request_id, |
- PP_Bool success); |
- void DecoderDeinitializeDone(PP_DecryptorStreamType decoder_type, |
- uint32_t request_id); |
- void DecoderResetDone(PP_DecryptorStreamType decoder_type, |
- uint32_t request_id); |
- void DeliverFrame(PP_Resource decrypted_frame, |
- const PP_DecryptedFrameInfo* frame_info); |
- void DeliverSamples(PP_Resource audio_frames, |
- const PP_DecryptedBlockInfo* block_info); |
- |
- private: |
- // Cancels the pending decrypt-and-decode callback for |stream_type|. |
- void CancelDecode(media::Decryptor::StreamType stream_type); |
- |
- // Fills |resource| with a PPB_Buffer_Impl and copies the data from |
- // |encrypted_buffer| into the buffer resource. This method reuses |
- // |audio_input_resource_| and |video_input_resource_| to reduce the latency |
- // in requesting new PPB_Buffer_Impl resources. The caller must make sure that |
- // |audio_input_resource_| or |video_input_resource_| is available before |
- // calling this method. |
- // |
- // An end of stream |encrypted_buffer| is represented as a null |resource|. |
- // |
- // Returns true upon success and false if any error happened. |
- bool MakeMediaBufferResource( |
- media::Decryptor::StreamType stream_type, |
- const scoped_refptr<media::DecoderBuffer>& encrypted_buffer, |
- scoped_refptr<PPB_Buffer_Impl>* resource); |
- |
- void FreeBuffer(uint32_t buffer_id); |
- |
- void SetBufferToFreeInTrackingInfo(PP_DecryptTrackingInfo* tracking_info); |
- |
- // Deserializes audio data stored in |audio_frames| into individual audio |
- // buffers in |frames|. Returns true upon success. |
- bool DeserializeAudioFrames(PP_Resource audio_frames, |
- size_t data_size, |
- media::Decryptor::AudioBuffers* frames); |
- |
- const PP_Instance pp_instance_; |
- const PPP_ContentDecryptor_Private* const plugin_decryption_interface_; |
- |
- // TODO(ddorwin): Remove after updating the Pepper API to not use key system. |
- std::string key_system_; |
- |
- // Callbacks for firing key events. |
- media::KeyAddedCB key_added_cb_; |
- media::KeyErrorCB key_error_cb_; |
- media::KeyMessageCB key_message_cb_; |
- |
- gfx::Size natural_size_; |
- |
- // Request ID for tracking pending content decryption callbacks. |
- // Note that zero indicates an invalid request ID. |
- // TODO(xhwang): Add completion callbacks for Reset/Stop and remove the use |
- // of request IDs. |
- uint32_t next_decryption_request_id_; |
- |
- uint32_t pending_audio_decrypt_request_id_; |
- media::Decryptor::DecryptCB pending_audio_decrypt_cb_; |
- |
- uint32_t pending_video_decrypt_request_id_; |
- media::Decryptor::DecryptCB pending_video_decrypt_cb_; |
- |
- uint32_t pending_audio_decoder_init_request_id_; |
- media::Decryptor::DecoderInitCB pending_audio_decoder_init_cb_; |
- |
- uint32_t pending_video_decoder_init_request_id_; |
- media::Decryptor::DecoderInitCB pending_video_decoder_init_cb_; |
- |
- uint32_t pending_audio_decode_request_id_; |
- media::Decryptor::AudioDecodeCB pending_audio_decode_cb_; |
- |
- uint32_t pending_video_decode_request_id_; |
- media::Decryptor::VideoDecodeCB pending_video_decode_cb_; |
- |
- // Cached audio and video input buffers. See MakeMediaBufferResource. |
- scoped_refptr<PPB_Buffer_Impl> audio_input_resource_; |
- scoped_refptr<PPB_Buffer_Impl> video_input_resource_; |
- |
- std::queue<uint32_t> free_buffers_; |
- |
- base::WeakPtrFactory<ContentDecryptorDelegate> weak_ptr_factory_; |
- base::WeakPtr<ContentDecryptorDelegate> weak_this_; |
- |
- // Keep track of audio parameters. |
- media::SampleFormat audio_sample_format_; |
- int audio_samples_per_second_; |
- int audio_channel_count_; |
- int audio_bytes_per_frame_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ContentDecryptorDelegate); |
-}; |
- |
-} // namespace ppapi |
-} // namespace webkit |
- |
-#endif // WEBKIT_PLUGINS_PPAPI_CONTENT_DECRYPTOR_DELEGATE_H_ |