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 #ifndef CONTENT_RENDERER_PEPPER_CONTENT_DECRYPTOR_DELEGATE_H_ | 5 #ifndef CONTENT_RENDERER_PEPPER_CONTENT_DECRYPTOR_DELEGATE_H_ |
6 #define CONTENT_RENDERER_PEPPER_CONTENT_DECRYPTOR_DELEGATE_H_ | 6 #define CONTENT_RENDERER_PEPPER_CONTENT_DECRYPTOR_DELEGATE_H_ |
7 | 7 |
8 #include <queue> | 8 #include <queue> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 void DecoderInitializeDone(PP_DecryptorStreamType decoder_type, | 96 void DecoderInitializeDone(PP_DecryptorStreamType decoder_type, |
97 uint32_t request_id, | 97 uint32_t request_id, |
98 PP_Bool success); | 98 PP_Bool success); |
99 void DecoderDeinitializeDone(PP_DecryptorStreamType decoder_type, | 99 void DecoderDeinitializeDone(PP_DecryptorStreamType decoder_type, |
100 uint32_t request_id); | 100 uint32_t request_id); |
101 void DecoderResetDone(PP_DecryptorStreamType decoder_type, | 101 void DecoderResetDone(PP_DecryptorStreamType decoder_type, |
102 uint32_t request_id); | 102 uint32_t request_id); |
103 void DeliverFrame(PP_Resource decrypted_frame, | 103 void DeliverFrame(PP_Resource decrypted_frame, |
104 const PP_DecryptedFrameInfo* frame_info); | 104 const PP_DecryptedFrameInfo* frame_info); |
105 void DeliverSamples(PP_Resource audio_frames, | 105 void DeliverSamples(PP_Resource audio_frames, |
106 const PP_DecryptedBlockInfo* block_info); | 106 const PP_DecryptedSampleInfo* sample_info); |
107 | 107 |
108 private: | 108 private: |
109 // Cancels the pending decrypt-and-decode callback for |stream_type|. | 109 // Cancels the pending decrypt-and-decode callback for |stream_type|. |
110 void CancelDecode(media::Decryptor::StreamType stream_type); | 110 void CancelDecode(media::Decryptor::StreamType stream_type); |
111 | 111 |
112 // Fills |resource| with a PPB_Buffer_Impl and copies the data from | 112 // Fills |resource| with a PPB_Buffer_Impl and copies the data from |
113 // |encrypted_buffer| into the buffer resource. This method reuses | 113 // |encrypted_buffer| into the buffer resource. This method reuses |
114 // |audio_input_resource_| and |video_input_resource_| to reduce the latency | 114 // |audio_input_resource_| and |video_input_resource_| to reduce the latency |
115 // in requesting new PPB_Buffer_Impl resources. The caller must make sure that | 115 // in requesting new PPB_Buffer_Impl resources. The caller must make sure that |
116 // |audio_input_resource_| or |video_input_resource_| is available before | 116 // |audio_input_resource_| or |video_input_resource_| is available before |
117 // calling this method. | 117 // calling this method. |
118 // | 118 // |
119 // An end of stream |encrypted_buffer| is represented as a null |resource|. | 119 // An end of stream |encrypted_buffer| is represented as a null |resource|. |
120 // | 120 // |
121 // Returns true upon success and false if any error happened. | 121 // Returns true upon success and false if any error happened. |
122 bool MakeMediaBufferResource( | 122 bool MakeMediaBufferResource( |
123 media::Decryptor::StreamType stream_type, | 123 media::Decryptor::StreamType stream_type, |
124 const scoped_refptr<media::DecoderBuffer>& encrypted_buffer, | 124 const scoped_refptr<media::DecoderBuffer>& encrypted_buffer, |
125 scoped_refptr<PPB_Buffer_Impl>* resource); | 125 scoped_refptr<PPB_Buffer_Impl>* resource); |
126 | 126 |
127 void FreeBuffer(uint32_t buffer_id); | 127 void FreeBuffer(uint32_t buffer_id); |
128 | 128 |
129 void SetBufferToFreeInTrackingInfo(PP_DecryptTrackingInfo* tracking_info); | 129 void SetBufferToFreeInTrackingInfo(PP_DecryptTrackingInfo* tracking_info); |
130 | 130 |
131 // Deserializes audio data stored in |audio_frames| into individual audio | 131 // Deserializes audio data stored in |audio_frames| into individual audio |
132 // buffers in |frames|. Returns true upon success. | 132 // buffers in |frames|. Returns true upon success. |
133 bool DeserializeAudioFrames(PP_Resource audio_frames, | 133 bool DeserializeAudioFrames(PP_Resource audio_frames, |
134 size_t data_size, | 134 size_t data_size, |
| 135 media::SampleFormat sample_format, |
135 media::Decryptor::AudioBuffers* frames); | 136 media::Decryptor::AudioBuffers* frames); |
136 | 137 |
137 const PP_Instance pp_instance_; | 138 const PP_Instance pp_instance_; |
138 const PPP_ContentDecryptor_Private* const plugin_decryption_interface_; | 139 const PPP_ContentDecryptor_Private* const plugin_decryption_interface_; |
139 | 140 |
140 // TODO(ddorwin): Remove after updating the Pepper API to not use key system. | 141 // TODO(ddorwin): Remove after updating the Pepper API to not use key system. |
141 std::string key_system_; | 142 std::string key_system_; |
142 | 143 |
143 // Callbacks for firing key events. | 144 // Callbacks for firing key events. |
144 media::KeyAddedCB key_added_cb_; | 145 media::KeyAddedCB key_added_cb_; |
(...skipping 26 matching lines...) Expand all Loading... |
171 uint32_t pending_video_decode_request_id_; | 172 uint32_t pending_video_decode_request_id_; |
172 media::Decryptor::VideoDecodeCB pending_video_decode_cb_; | 173 media::Decryptor::VideoDecodeCB pending_video_decode_cb_; |
173 | 174 |
174 // Cached audio and video input buffers. See MakeMediaBufferResource. | 175 // Cached audio and video input buffers. See MakeMediaBufferResource. |
175 scoped_refptr<PPB_Buffer_Impl> audio_input_resource_; | 176 scoped_refptr<PPB_Buffer_Impl> audio_input_resource_; |
176 scoped_refptr<PPB_Buffer_Impl> video_input_resource_; | 177 scoped_refptr<PPB_Buffer_Impl> video_input_resource_; |
177 | 178 |
178 std::queue<uint32_t> free_buffers_; | 179 std::queue<uint32_t> free_buffers_; |
179 | 180 |
180 // Keep track of audio parameters. | 181 // Keep track of audio parameters. |
181 media::SampleFormat audio_sample_format_; | |
182 int audio_samples_per_second_; | 182 int audio_samples_per_second_; |
183 int audio_channel_count_; | 183 int audio_channel_count_; |
184 int audio_bytes_per_frame_; | |
185 | 184 |
186 base::WeakPtr<ContentDecryptorDelegate> weak_this_; | 185 base::WeakPtr<ContentDecryptorDelegate> weak_this_; |
187 base::WeakPtrFactory<ContentDecryptorDelegate> weak_ptr_factory_; | 186 base::WeakPtrFactory<ContentDecryptorDelegate> weak_ptr_factory_; |
188 | 187 |
189 DISALLOW_COPY_AND_ASSIGN(ContentDecryptorDelegate); | 188 DISALLOW_COPY_AND_ASSIGN(ContentDecryptorDelegate); |
190 }; | 189 }; |
191 | 190 |
192 } // namespace content | 191 } // namespace content |
193 | 192 |
194 #endif // CONTENT_RENDERER_PEPPER_CONTENT_DECRYPTOR_DELEGATE_H_ | 193 #endif // CONTENT_RENDERER_PEPPER_CONTENT_DECRYPTOR_DELEGATE_H_ |
OLD | NEW |