Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Side by Side Diff: media/mojo/services/mojo_decryptor.cc

Issue 1977173002: Rename media::interfaces to media::mojom. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: android + chromeos files Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/mojo/services/mojo_decryptor.h ('k') | media/mojo/services/mojo_decryptor_service.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "media/mojo/services/mojo_decryptor.h" 5 #include "media/mojo/services/mojo_decryptor.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/numerics/safe_conversions.h" 13 #include "base/numerics/safe_conversions.h"
14 #include "media/base/audio_buffer.h" 14 #include "media/base/audio_buffer.h"
15 #include "media/base/decoder_buffer.h" 15 #include "media/base/decoder_buffer.h"
16 #include "media/base/video_frame.h" 16 #include "media/base/video_frame.h"
17 #include "media/mojo/common/media_type_converters.h" 17 #include "media/mojo/common/media_type_converters.h"
18 #include "media/mojo/common/mojo_shared_buffer_video_frame.h" 18 #include "media/mojo/common/mojo_shared_buffer_video_frame.h"
19 #include "media/mojo/interfaces/decryptor.mojom.h" 19 #include "media/mojo/interfaces/decryptor.mojom.h"
20 #include "services/shell/public/cpp/connect.h" 20 #include "services/shell/public/cpp/connect.h"
21 21
22 namespace media { 22 namespace media {
23 23
24 MojoDecryptor::MojoDecryptor(interfaces::DecryptorPtr remote_decryptor) 24 MojoDecryptor::MojoDecryptor(mojom::DecryptorPtr remote_decryptor)
25 : remote_decryptor_(std::move(remote_decryptor)), weak_factory_(this) { 25 : remote_decryptor_(std::move(remote_decryptor)), weak_factory_(this) {
26 DVLOG(1) << __FUNCTION__; 26 DVLOG(1) << __FUNCTION__;
27 CreateDataPipes(); 27 CreateDataPipes();
28 } 28 }
29 29
30 MojoDecryptor::~MojoDecryptor() { 30 MojoDecryptor::~MojoDecryptor() {
31 DVLOG(1) << __FUNCTION__; 31 DVLOG(1) << __FUNCTION__;
32 DCHECK(thread_checker_.CalledOnValidThread()); 32 DCHECK(thread_checker_.CalledOnValidThread());
33 } 33 }
34 34
(...skipping 12 matching lines...) Expand all
47 } 47 }
48 } 48 }
49 49
50 void MojoDecryptor::Decrypt(StreamType stream_type, 50 void MojoDecryptor::Decrypt(StreamType stream_type,
51 const scoped_refptr<DecoderBuffer>& encrypted, 51 const scoped_refptr<DecoderBuffer>& encrypted,
52 const DecryptCB& decrypt_cb) { 52 const DecryptCB& decrypt_cb) {
53 DVLOG(3) << __FUNCTION__; 53 DVLOG(3) << __FUNCTION__;
54 DCHECK(thread_checker_.CalledOnValidThread()); 54 DCHECK(thread_checker_.CalledOnValidThread());
55 55
56 remote_decryptor_->Decrypt( 56 remote_decryptor_->Decrypt(
57 static_cast<interfaces::DemuxerStream::Type>(stream_type), 57 static_cast<mojom::DemuxerStream::Type>(stream_type),
58 TransferDecoderBuffer(encrypted), 58 TransferDecoderBuffer(encrypted),
59 base::Bind(&MojoDecryptor::OnBufferDecrypted, weak_factory_.GetWeakPtr(), 59 base::Bind(&MojoDecryptor::OnBufferDecrypted, weak_factory_.GetWeakPtr(),
60 decrypt_cb)); 60 decrypt_cb));
61 } 61 }
62 62
63 void MojoDecryptor::CancelDecrypt(StreamType stream_type) { 63 void MojoDecryptor::CancelDecrypt(StreamType stream_type) {
64 DVLOG(1) << __FUNCTION__; 64 DVLOG(1) << __FUNCTION__;
65 DCHECK(thread_checker_.CalledOnValidThread()); 65 DCHECK(thread_checker_.CalledOnValidThread());
66 66
67 remote_decryptor_->CancelDecrypt( 67 remote_decryptor_->CancelDecrypt(
68 static_cast<interfaces::DemuxerStream::Type>(stream_type)); 68 static_cast<mojom::DemuxerStream::Type>(stream_type));
69 } 69 }
70 70
71 void MojoDecryptor::InitializeAudioDecoder(const AudioDecoderConfig& config, 71 void MojoDecryptor::InitializeAudioDecoder(const AudioDecoderConfig& config,
72 const DecoderInitCB& init_cb) { 72 const DecoderInitCB& init_cb) {
73 DVLOG(1) << __FUNCTION__; 73 DVLOG(1) << __FUNCTION__;
74 DCHECK(thread_checker_.CalledOnValidThread()); 74 DCHECK(thread_checker_.CalledOnValidThread());
75 75
76 remote_decryptor_->InitializeAudioDecoder( 76 remote_decryptor_->InitializeAudioDecoder(
77 interfaces::AudioDecoderConfig::From(config), init_cb); 77 mojom::AudioDecoderConfig::From(config), init_cb);
78 } 78 }
79 79
80 void MojoDecryptor::InitializeVideoDecoder(const VideoDecoderConfig& config, 80 void MojoDecryptor::InitializeVideoDecoder(const VideoDecoderConfig& config,
81 const DecoderInitCB& init_cb) { 81 const DecoderInitCB& init_cb) {
82 DVLOG(1) << __FUNCTION__; 82 DVLOG(1) << __FUNCTION__;
83 DCHECK(thread_checker_.CalledOnValidThread()); 83 DCHECK(thread_checker_.CalledOnValidThread());
84 84
85 remote_decryptor_->InitializeVideoDecoder( 85 remote_decryptor_->InitializeVideoDecoder(
86 interfaces::VideoDecoderConfig::From(config), init_cb); 86 mojom::VideoDecoderConfig::From(config), init_cb);
87 } 87 }
88 88
89 void MojoDecryptor::DecryptAndDecodeAudio( 89 void MojoDecryptor::DecryptAndDecodeAudio(
90 const scoped_refptr<DecoderBuffer>& encrypted, 90 const scoped_refptr<DecoderBuffer>& encrypted,
91 const AudioDecodeCB& audio_decode_cb) { 91 const AudioDecodeCB& audio_decode_cb) {
92 DVLOG(3) << __FUNCTION__; 92 DVLOG(3) << __FUNCTION__;
93 DCHECK(thread_checker_.CalledOnValidThread()); 93 DCHECK(thread_checker_.CalledOnValidThread());
94 94
95 remote_decryptor_->DecryptAndDecodeAudio( 95 remote_decryptor_->DecryptAndDecodeAudio(
96 TransferDecoderBuffer(encrypted), 96 TransferDecoderBuffer(encrypted),
(...skipping 11 matching lines...) Expand all
108 TransferDecoderBuffer(encrypted), 108 TransferDecoderBuffer(encrypted),
109 base::Bind(&MojoDecryptor::OnVideoDecoded, weak_factory_.GetWeakPtr(), 109 base::Bind(&MojoDecryptor::OnVideoDecoded, weak_factory_.GetWeakPtr(),
110 video_decode_cb)); 110 video_decode_cb));
111 } 111 }
112 112
113 void MojoDecryptor::ResetDecoder(StreamType stream_type) { 113 void MojoDecryptor::ResetDecoder(StreamType stream_type) {
114 DVLOG(1) << __FUNCTION__; 114 DVLOG(1) << __FUNCTION__;
115 DCHECK(thread_checker_.CalledOnValidThread()); 115 DCHECK(thread_checker_.CalledOnValidThread());
116 116
117 remote_decryptor_->ResetDecoder( 117 remote_decryptor_->ResetDecoder(
118 static_cast<interfaces::DemuxerStream::Type>(stream_type)); 118 static_cast<mojom::DemuxerStream::Type>(stream_type));
119 } 119 }
120 120
121 void MojoDecryptor::DeinitializeDecoder(StreamType stream_type) { 121 void MojoDecryptor::DeinitializeDecoder(StreamType stream_type) {
122 DVLOG(1) << __FUNCTION__; 122 DVLOG(1) << __FUNCTION__;
123 DCHECK(thread_checker_.CalledOnValidThread()); 123 DCHECK(thread_checker_.CalledOnValidThread());
124 124
125 remote_decryptor_->DeinitializeDecoder( 125 remote_decryptor_->DeinitializeDecoder(
126 static_cast<interfaces::DemuxerStream::Type>(stream_type)); 126 static_cast<mojom::DemuxerStream::Type>(stream_type));
127 } 127 }
128 128
129 void MojoDecryptor::OnKeyAdded() { 129 void MojoDecryptor::OnKeyAdded() {
130 DVLOG(1) << __FUNCTION__; 130 DVLOG(1) << __FUNCTION__;
131 DCHECK(thread_checker_.CalledOnValidThread()); 131 DCHECK(thread_checker_.CalledOnValidThread());
132 132
133 if (!new_audio_key_cb_.is_null()) 133 if (!new_audio_key_cb_.is_null())
134 new_audio_key_cb_.Run(); 134 new_audio_key_cb_.Run();
135 135
136 if (!new_video_key_cb_.is_null()) 136 if (!new_video_key_cb_.is_null())
137 new_video_key_cb_.Run(); 137 new_video_key_cb_.Run();
138 } 138 }
139 139
140 void MojoDecryptor::OnBufferDecrypted(const DecryptCB& decrypt_cb, 140 void MojoDecryptor::OnBufferDecrypted(const DecryptCB& decrypt_cb,
141 interfaces::Decryptor::Status status, 141 mojom::Decryptor::Status status,
142 interfaces::DecoderBufferPtr buffer) { 142 mojom::DecoderBufferPtr buffer) {
143 DVLOG_IF(1, status != interfaces::Decryptor::Status::SUCCESS) 143 DVLOG_IF(1, status != mojom::Decryptor::Status::SUCCESS)
144 << __FUNCTION__ << "(" << status << ")"; 144 << __FUNCTION__ << "(" << status << ")";
145 DVLOG_IF(3, status == interfaces::Decryptor::Status::SUCCESS) << __FUNCTION__; 145 DVLOG_IF(3, status == mojom::Decryptor::Status::SUCCESS) << __FUNCTION__;
146 DCHECK(thread_checker_.CalledOnValidThread()); 146 DCHECK(thread_checker_.CalledOnValidThread());
147 147
148 if (buffer.is_null()) { 148 if (buffer.is_null()) {
149 decrypt_cb.Run(static_cast<Decryptor::Status>(status), nullptr); 149 decrypt_cb.Run(static_cast<Decryptor::Status>(status), nullptr);
150 return; 150 return;
151 } 151 }
152 152
153 decrypt_cb.Run(static_cast<Decryptor::Status>(status), 153 decrypt_cb.Run(static_cast<Decryptor::Status>(status),
154 ReadDecoderBuffer(std::move(buffer))); 154 ReadDecoderBuffer(std::move(buffer)));
155 } 155 }
156 156
157 void MojoDecryptor::OnAudioDecoded( 157 void MojoDecryptor::OnAudioDecoded(
158 const AudioDecodeCB& audio_decode_cb, 158 const AudioDecodeCB& audio_decode_cb,
159 interfaces::Decryptor::Status status, 159 mojom::Decryptor::Status status,
160 mojo::Array<interfaces::AudioBufferPtr> audio_buffers) { 160 mojo::Array<mojom::AudioBufferPtr> audio_buffers) {
161 DVLOG_IF(1, status != interfaces::Decryptor::Status::SUCCESS) 161 DVLOG_IF(1, status != mojom::Decryptor::Status::SUCCESS)
162 << __FUNCTION__ << "(" << status << ")"; 162 << __FUNCTION__ << "(" << status << ")";
163 DVLOG_IF(3, status == interfaces::Decryptor::Status::SUCCESS) << __FUNCTION__; 163 DVLOG_IF(3, status == mojom::Decryptor::Status::SUCCESS) << __FUNCTION__;
164 DCHECK(thread_checker_.CalledOnValidThread()); 164 DCHECK(thread_checker_.CalledOnValidThread());
165 165
166 Decryptor::AudioFrames audio_frames; 166 Decryptor::AudioFrames audio_frames;
167 for (size_t i = 0; i < audio_buffers.size(); ++i) 167 for (size_t i = 0; i < audio_buffers.size(); ++i)
168 audio_frames.push_back(audio_buffers[i].To<scoped_refptr<AudioBuffer>>()); 168 audio_frames.push_back(audio_buffers[i].To<scoped_refptr<AudioBuffer>>());
169 169
170 audio_decode_cb.Run(static_cast<Decryptor::Status>(status), audio_frames); 170 audio_decode_cb.Run(static_cast<Decryptor::Status>(status), audio_frames);
171 } 171 }
172 172
173 void MojoDecryptor::OnVideoDecoded(const VideoDecodeCB& video_decode_cb, 173 void MojoDecryptor::OnVideoDecoded(const VideoDecodeCB& video_decode_cb,
174 interfaces::Decryptor::Status status, 174 mojom::Decryptor::Status status,
175 interfaces::VideoFramePtr video_frame) { 175 mojom::VideoFramePtr video_frame) {
176 DVLOG_IF(1, status != interfaces::Decryptor::Status::SUCCESS) 176 DVLOG_IF(1, status != mojom::Decryptor::Status::SUCCESS)
177 << __FUNCTION__ << "(" << status << ")"; 177 << __FUNCTION__ << "(" << status << ")";
178 DVLOG_IF(3, status == interfaces::Decryptor::Status::SUCCESS) << __FUNCTION__; 178 DVLOG_IF(3, status == mojom::Decryptor::Status::SUCCESS) << __FUNCTION__;
179 DCHECK(thread_checker_.CalledOnValidThread()); 179 DCHECK(thread_checker_.CalledOnValidThread());
180 180
181 if (video_frame.is_null()) { 181 if (video_frame.is_null()) {
182 video_decode_cb.Run(static_cast<Decryptor::Status>(status), nullptr); 182 video_decode_cb.Run(static_cast<Decryptor::Status>(status), nullptr);
183 return; 183 return;
184 } 184 }
185 185
186 scoped_refptr<VideoFrame> frame(video_frame.To<scoped_refptr<VideoFrame>>()); 186 scoped_refptr<VideoFrame> frame(video_frame.To<scoped_refptr<VideoFrame>>());
187 187
188 // If using shared memory, ensure that ReleaseSharedBuffer() is called when 188 // If using shared memory, ensure that ReleaseSharedBuffer() is called when
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 221
222 // Keep one end of each pipe. 222 // Keep one end of each pipe.
223 producer_handle_ = std::move(write_pipe.producer_handle); 223 producer_handle_ = std::move(write_pipe.producer_handle);
224 consumer_handle_ = std::move(read_pipe.consumer_handle); 224 consumer_handle_ = std::move(read_pipe.consumer_handle);
225 225
226 // Pass the other end of each pipe to |remote_decryptor_|. 226 // Pass the other end of each pipe to |remote_decryptor_|.
227 remote_decryptor_->Initialize(std::move(write_pipe.consumer_handle), 227 remote_decryptor_->Initialize(std::move(write_pipe.consumer_handle),
228 std::move(read_pipe.producer_handle)); 228 std::move(read_pipe.producer_handle));
229 } 229 }
230 230
231 interfaces::DecoderBufferPtr MojoDecryptor::TransferDecoderBuffer( 231 mojom::DecoderBufferPtr MojoDecryptor::TransferDecoderBuffer(
232 const scoped_refptr<DecoderBuffer>& encrypted) { 232 const scoped_refptr<DecoderBuffer>& encrypted) {
233 interfaces::DecoderBufferPtr buffer = 233 mojom::DecoderBufferPtr buffer = mojom::DecoderBuffer::From(encrypted);
234 interfaces::DecoderBuffer::From(encrypted);
235 if (encrypted->end_of_stream()) 234 if (encrypted->end_of_stream())
236 return buffer; 235 return buffer;
237 236
238 // Serialize the data section of the DecoderBuffer into our pipe. 237 // Serialize the data section of the DecoderBuffer into our pipe.
239 uint32_t num_bytes = base::checked_cast<uint32_t>(encrypted->data_size()); 238 uint32_t num_bytes = base::checked_cast<uint32_t>(encrypted->data_size());
240 DCHECK_GT(num_bytes, 0u); 239 DCHECK_GT(num_bytes, 0u);
241 CHECK_EQ(WriteDataRaw(producer_handle_.get(), encrypted->data(), &num_bytes, 240 CHECK_EQ(WriteDataRaw(producer_handle_.get(), encrypted->data(), &num_bytes,
242 MOJO_READ_DATA_FLAG_ALL_OR_NONE), 241 MOJO_READ_DATA_FLAG_ALL_OR_NONE),
243 MOJO_RESULT_OK); 242 MOJO_RESULT_OK);
244 CHECK_EQ(num_bytes, static_cast<uint32_t>(encrypted->data_size())); 243 CHECK_EQ(num_bytes, static_cast<uint32_t>(encrypted->data_size()));
245 return buffer; 244 return buffer;
246 } 245 }
247 246
248 scoped_refptr<DecoderBuffer> MojoDecryptor::ReadDecoderBuffer( 247 scoped_refptr<DecoderBuffer> MojoDecryptor::ReadDecoderBuffer(
249 interfaces::DecoderBufferPtr buffer) { 248 mojom::DecoderBufferPtr buffer) {
250 scoped_refptr<DecoderBuffer> media_buffer( 249 scoped_refptr<DecoderBuffer> media_buffer(
251 buffer.To<scoped_refptr<DecoderBuffer>>()); 250 buffer.To<scoped_refptr<DecoderBuffer>>());
252 if (media_buffer->end_of_stream()) 251 if (media_buffer->end_of_stream())
253 return media_buffer; 252 return media_buffer;
254 253
255 // Wait for the data to become available in the DataPipe. 254 // Wait for the data to become available in the DataPipe.
256 MojoHandleSignalsState state; 255 MojoHandleSignalsState state;
257 CHECK_EQ(MOJO_RESULT_OK, 256 CHECK_EQ(MOJO_RESULT_OK,
258 MojoWait(consumer_handle_.get().value(), MOJO_HANDLE_SIGNAL_READABLE, 257 MojoWait(consumer_handle_.get().value(), MOJO_HANDLE_SIGNAL_READABLE,
259 MOJO_DEADLINE_INDEFINITE, &state)); 258 MOJO_DEADLINE_INDEFINITE, &state));
260 CHECK_EQ(MOJO_HANDLE_SIGNAL_READABLE, state.satisfied_signals); 259 CHECK_EQ(MOJO_HANDLE_SIGNAL_READABLE, state.satisfied_signals);
261 260
262 // Read the inner data for the DecoderBuffer from our DataPipe. 261 // Read the inner data for the DecoderBuffer from our DataPipe.
263 uint32_t num_bytes = base::checked_cast<uint32_t>(media_buffer->data_size()); 262 uint32_t num_bytes = base::checked_cast<uint32_t>(media_buffer->data_size());
264 DCHECK_GT(num_bytes, 0u); 263 DCHECK_GT(num_bytes, 0u);
265 CHECK_EQ(ReadDataRaw(consumer_handle_.get(), media_buffer->writable_data(), 264 CHECK_EQ(ReadDataRaw(consumer_handle_.get(), media_buffer->writable_data(),
266 &num_bytes, MOJO_READ_DATA_FLAG_ALL_OR_NONE), 265 &num_bytes, MOJO_READ_DATA_FLAG_ALL_OR_NONE),
267 MOJO_RESULT_OK); 266 MOJO_RESULT_OK);
268 CHECK_EQ(num_bytes, static_cast<uint32_t>(media_buffer->data_size())); 267 CHECK_EQ(num_bytes, static_cast<uint32_t>(media_buffer->data_size()));
269 return media_buffer; 268 return media_buffer;
270 } 269 }
271 270
272 } // namespace media 271 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/services/mojo_decryptor.h ('k') | media/mojo/services/mojo_decryptor_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698