| 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 "media/gpu/ipc/service/gpu_video_decode_accelerator.h" | 5 #include "media/gpu/ipc/service/gpu_video_decode_accelerator.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 return GpuVideoDecodeAcceleratorFactoryImpl::GetDecoderCapabilities( | 189 return GpuVideoDecodeAcceleratorFactoryImpl::GetDecoderCapabilities( |
| 190 gpu_preferences); | 190 gpu_preferences); |
| 191 } | 191 } |
| 192 | 192 |
| 193 bool GpuVideoDecodeAccelerator::OnMessageReceived(const IPC::Message& msg) { | 193 bool GpuVideoDecodeAccelerator::OnMessageReceived(const IPC::Message& msg) { |
| 194 if (!video_decode_accelerator_) | 194 if (!video_decode_accelerator_) |
| 195 return false; | 195 return false; |
| 196 | 196 |
| 197 bool handled = true; | 197 bool handled = true; |
| 198 IPC_BEGIN_MESSAGE_MAP(GpuVideoDecodeAccelerator, msg) | 198 IPC_BEGIN_MESSAGE_MAP(GpuVideoDecodeAccelerator, msg) |
| 199 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_SetCdm, OnSetCdm) | |
| 200 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_Decode, OnDecode) | 199 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_Decode, OnDecode) |
| 201 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_AssignPictureBuffers, | 200 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_AssignPictureBuffers, |
| 202 OnAssignPictureBuffers) | 201 OnAssignPictureBuffers) |
| 203 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_ReusePictureBuffer, | 202 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_ReusePictureBuffer, |
| 204 OnReusePictureBuffer) | 203 OnReusePictureBuffer) |
| 205 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_Flush, OnFlush) | 204 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_Flush, OnFlush) |
| 206 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_Reset, OnReset) | 205 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_Reset, OnReset) |
| 207 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_Destroy, OnDestroy) | 206 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderMsg_Destroy, OnDestroy) |
| 208 IPC_MESSAGE_UNHANDLED(handled = false) | 207 IPC_MESSAGE_UNHANDLED(handled = false) |
| 209 IPC_END_MESSAGE_MAP() | 208 IPC_END_MESSAGE_MAP() |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 // the VDA. | 367 // the VDA. |
| 369 if (video_decode_accelerator_->TryToSetupDecodeOnSeparateThread( | 368 if (video_decode_accelerator_->TryToSetupDecodeOnSeparateThread( |
| 370 weak_factory_for_io_.GetWeakPtr(), io_task_runner_)) { | 369 weak_factory_for_io_.GetWeakPtr(), io_task_runner_)) { |
| 371 filter_ = new MessageFilter(this, host_route_id_); | 370 filter_ = new MessageFilter(this, host_route_id_); |
| 372 stub_->channel()->AddFilter(filter_.get()); | 371 stub_->channel()->AddFilter(filter_.get()); |
| 373 } | 372 } |
| 374 | 373 |
| 375 return true; | 374 return true; |
| 376 } | 375 } |
| 377 | 376 |
| 378 void GpuVideoDecodeAccelerator::OnSetCdm(int cdm_id) { | |
| 379 DCHECK(video_decode_accelerator_); | |
| 380 video_decode_accelerator_->SetCdm(cdm_id); | |
| 381 } | |
| 382 | |
| 383 // Runs on IO thread if VDA::TryToSetupDecodeOnSeparateThread() succeeded, | 377 // Runs on IO thread if VDA::TryToSetupDecodeOnSeparateThread() succeeded, |
| 384 // otherwise on the main thread. | 378 // otherwise on the main thread. |
| 385 void GpuVideoDecodeAccelerator::OnDecode( | 379 void GpuVideoDecodeAccelerator::OnDecode( |
| 386 const media::BitstreamBuffer& bitstream_buffer) { | 380 const media::BitstreamBuffer& bitstream_buffer) { |
| 387 DCHECK(video_decode_accelerator_); | 381 DCHECK(video_decode_accelerator_); |
| 388 video_decode_accelerator_->Decode(bitstream_buffer); | 382 video_decode_accelerator_->Decode(bitstream_buffer); |
| 389 } | 383 } |
| 390 | 384 |
| 391 void GpuVideoDecodeAccelerator::OnAssignPictureBuffers( | 385 void GpuVideoDecodeAccelerator::OnAssignPictureBuffers( |
| 392 const std::vector<int32_t>& buffer_ids, | 386 const std::vector<int32_t>& buffer_ids, |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 GLenum target = texture_ref->texture()->target(); | 511 GLenum target = texture_ref->texture()->target(); |
| 518 gpu::gles2::TextureManager* texture_manager = | 512 gpu::gles2::TextureManager* texture_manager = |
| 519 stub_->decoder()->GetContextGroup()->texture_manager(); | 513 stub_->decoder()->GetContextGroup()->texture_manager(); |
| 520 DCHECK(!texture_ref->texture()->IsLevelCleared(target, 0)); | 514 DCHECK(!texture_ref->texture()->IsLevelCleared(target, 0)); |
| 521 texture_manager->SetLevelCleared(texture_ref.get(), target, 0, true); | 515 texture_manager->SetLevelCleared(texture_ref.get(), target, 0, true); |
| 522 } | 516 } |
| 523 uncleared_textures_.erase(it); | 517 uncleared_textures_.erase(it); |
| 524 } | 518 } |
| 525 | 519 |
| 526 } // namespace media | 520 } // namespace media |
| OLD | NEW |