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

Side by Side Diff: media/mojo/clients/mojo_video_decoder.cc

Issue 2966643002: media: Plumb MediaLog to MojoVideoDecoderService. (Closed)
Patch Set: Swap client/service directory. Created 3 years, 5 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/clients/mojo_video_decoder.h ('k') | media/mojo/interfaces/BUILD.gn » ('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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/clients/mojo_video_decoder.h" 5 #include "media/mojo/clients/mojo_video_decoder.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/callback_helpers.h" 9 #include "base/callback_helpers.h"
10 #include "base/location.h" 10 #include "base/location.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/single_thread_task_runner.h" 13 #include "base/single_thread_task_runner.h"
14 #include "base/unguessable_token.h" 14 #include "base/unguessable_token.h"
15 #include "media/base/bind_to_current_loop.h" 15 #include "media/base/bind_to_current_loop.h"
16 #include "media/base/decoder_buffer.h" 16 #include "media/base/decoder_buffer.h"
17 #include "media/base/demuxer_stream.h" 17 #include "media/base/demuxer_stream.h"
18 #include "media/base/video_frame.h" 18 #include "media/base/video_frame.h"
19 #include "media/mojo/common/media_type_converters.h" 19 #include "media/mojo/common/media_type_converters.h"
20 #include "media/mojo/common/mojo_decoder_buffer_converter.h" 20 #include "media/mojo/common/mojo_decoder_buffer_converter.h"
21 #include "media/mojo/interfaces/media_types.mojom.h" 21 #include "media/mojo/interfaces/media_types.mojom.h"
22 #include "media/renderers/gpu_video_accelerator_factories.h" 22 #include "media/renderers/gpu_video_accelerator_factories.h"
23 23
24 namespace media { 24 namespace media {
25 25
26 MojoVideoDecoder::MojoVideoDecoder( 26 MojoVideoDecoder::MojoVideoDecoder(
27 scoped_refptr<base::SingleThreadTaskRunner> task_runner, 27 scoped_refptr<base::SingleThreadTaskRunner> task_runner,
28 GpuVideoAcceleratorFactories* gpu_factories, 28 GpuVideoAcceleratorFactories* gpu_factories,
29 MediaLog* media_log,
29 mojom::VideoDecoderPtr remote_decoder) 30 mojom::VideoDecoderPtr remote_decoder)
30 : task_runner_(task_runner), 31 : task_runner_(task_runner),
31 remote_decoder_info_(remote_decoder.PassInterface()), 32 remote_decoder_info_(remote_decoder.PassInterface()),
32 gpu_factories_(gpu_factories), 33 gpu_factories_(gpu_factories),
33 client_binding_(this), 34 client_binding_(this),
35 media_log_service_(media_log),
36 media_log_binding_(&media_log_service_),
34 weak_factory_(this) { 37 weak_factory_(this) {
35 DVLOG(1) << __func__; 38 DVLOG(1) << __func__;
36 } 39 }
37 40
38 MojoVideoDecoder::~MojoVideoDecoder() { 41 MojoVideoDecoder::~MojoVideoDecoder() {
39 DVLOG(1) << __func__; 42 DVLOG(1) << __func__;
40 } 43 }
41 44
42 std::string MojoVideoDecoder::GetDisplayName() const { 45 std::string MojoVideoDecoder::GetDisplayName() const {
43 return "MojoVideoDecoder"; 46 return "MojoVideoDecoder";
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 DVLOG(3) << __func__; 194 DVLOG(3) << __func__;
192 DCHECK(task_runner_->BelongsToCurrentThread()); 195 DCHECK(task_runner_->BelongsToCurrentThread());
193 DCHECK(!remote_decoder_bound_); 196 DCHECK(!remote_decoder_bound_);
194 197
195 remote_decoder_.Bind(std::move(remote_decoder_info_)); 198 remote_decoder_.Bind(std::move(remote_decoder_info_));
196 remote_decoder_bound_ = true; 199 remote_decoder_bound_ = true;
197 200
198 remote_decoder_.set_connection_error_handler( 201 remote_decoder_.set_connection_error_handler(
199 base::Bind(&MojoVideoDecoder::Stop, base::Unretained(this))); 202 base::Bind(&MojoVideoDecoder::Stop, base::Unretained(this)));
200 203
201 // TODO(sandersd): Does this need its own error handler?
202 mojom::VideoDecoderClientAssociatedPtrInfo client_ptr_info; 204 mojom::VideoDecoderClientAssociatedPtrInfo client_ptr_info;
203 client_binding_.Bind(mojo::MakeRequest(&client_ptr_info)); 205 client_binding_.Bind(mojo::MakeRequest(&client_ptr_info));
204 206
207 mojom::MediaLogAssociatedPtrInfo media_log_ptr_info;
208 media_log_binding_.Bind(mojo::MakeRequest(&media_log_ptr_info));
209
205 // TODO(sandersd): Better buffer sizing. 210 // TODO(sandersd): Better buffer sizing.
206 mojo::ScopedDataPipeConsumerHandle remote_consumer_handle; 211 mojo::ScopedDataPipeConsumerHandle remote_consumer_handle;
207 mojo_decoder_buffer_writer_ = MojoDecoderBufferWriter::Create( 212 mojo_decoder_buffer_writer_ = MojoDecoderBufferWriter::Create(
208 DemuxerStream::VIDEO, &remote_consumer_handle); 213 DemuxerStream::VIDEO, &remote_consumer_handle);
209 214
210 media::mojom::CommandBufferIdPtr command_buffer_id; 215 media::mojom::CommandBufferIdPtr command_buffer_id;
211 if (gpu_factories_) { 216 if (gpu_factories_) {
212 base::UnguessableToken channel_token = gpu_factories_->GetChannelToken(); 217 base::UnguessableToken channel_token = gpu_factories_->GetChannelToken();
213 if (channel_token) { 218 if (channel_token) {
214 command_buffer_id = media::mojom::CommandBufferId::New(); 219 command_buffer_id = media::mojom::CommandBufferId::New();
215 command_buffer_id->channel_token = std::move(channel_token); 220 command_buffer_id->channel_token = std::move(channel_token);
216 command_buffer_id->route_id = gpu_factories_->GetCommandBufferRouteId(); 221 command_buffer_id->route_id = gpu_factories_->GetCommandBufferRouteId();
217 } 222 }
218 } 223 }
219 224
220 remote_decoder_->Construct(std::move(client_ptr_info), 225 remote_decoder_->Construct(
221 std::move(remote_consumer_handle), 226 std::move(client_ptr_info), std::move(media_log_ptr_info),
222 std::move(command_buffer_id)); 227 std::move(remote_consumer_handle), std::move(command_buffer_id));
223 } 228 }
224 229
225 void MojoVideoDecoder::Stop() { 230 void MojoVideoDecoder::Stop() {
226 DVLOG(2) << __func__; 231 DVLOG(2) << __func__;
227 DCHECK(task_runner_->BelongsToCurrentThread()); 232 DCHECK(task_runner_->BelongsToCurrentThread());
228 233
229 has_connection_error_ = true; 234 has_connection_error_ = true;
230 235
231 if (!init_cb_.is_null()) 236 if (!init_cb_.is_null())
232 base::ResetAndReturn(&init_cb_).Run(false); 237 base::ResetAndReturn(&init_cb_).Run(false);
233 238
234 for (const auto& pending_decode : pending_decodes_) 239 for (const auto& pending_decode : pending_decodes_)
235 pending_decode.second.Run(DecodeStatus::DECODE_ERROR); 240 pending_decode.second.Run(DecodeStatus::DECODE_ERROR);
236 pending_decodes_.clear(); 241 pending_decodes_.clear();
237 242
238 if (!reset_cb_.is_null()) 243 if (!reset_cb_.is_null())
239 base::ResetAndReturn(&reset_cb_).Run(); 244 base::ResetAndReturn(&reset_cb_).Run();
240 } 245 }
241 246
242 } // namespace media 247 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/clients/mojo_video_decoder.h ('k') | media/mojo/interfaces/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698