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

Side by Side Diff: content/common/gpu/media/dxva_video_decode_accelerator.cc

Issue 775863005: gpu: Make GPU command decoder know right format of a GPU video texture in Win. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: TODO instead of FIXME Created 6 years 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
OLDNEW
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 "content/common/gpu/media/dxva_video_decode_accelerator.h" 5 #include "content/common/gpu/media/dxva_video_decode_accelerator.h"
6 6
7 #if !defined(OS_WIN) 7 #if !defined(OS_WIN)
8 #error This file should only be built on Windows. 8 #error This file should only be built on Windows.
9 #endif // !defined(OS_WIN) 9 #endif // !defined(OS_WIN)
10 10
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 EGLBoolean ret = eglQuerySurfacePointerANGLE( 291 EGLBoolean ret = eglQuerySurfacePointerANGLE(
292 egl_display, 292 egl_display,
293 picture_buffer->decoding_surface_, 293 picture_buffer->decoding_surface_,
294 EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE, 294 EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE,
295 &share_handle); 295 &share_handle);
296 296
297 RETURN_ON_FAILURE(share_handle && ret == EGL_TRUE, 297 RETURN_ON_FAILURE(share_handle && ret == EGL_TRUE,
298 "Failed to query ANGLE surface pointer", 298 "Failed to query ANGLE surface pointer",
299 linked_ptr<DXVAPictureBuffer>(NULL)); 299 linked_ptr<DXVAPictureBuffer>(NULL));
300 300
301 // TODO(dshwang): after moving to D3D11, use RGBA surface. crbug.com/438691
301 HRESULT hr = decoder.device_->CreateTexture( 302 HRESULT hr = decoder.device_->CreateTexture(
302 buffer.size().width(), 303 buffer.size().width(),
303 buffer.size().height(), 304 buffer.size().height(),
304 1, 305 1,
305 D3DUSAGE_RENDERTARGET, 306 D3DUSAGE_RENDERTARGET,
306 use_rgb ? D3DFMT_X8R8G8B8 : D3DFMT_A8R8G8B8, 307 use_rgb ? D3DFMT_X8R8G8B8 : D3DFMT_A8R8G8B8,
307 D3DPOOL_DEFAULT, 308 D3DPOOL_DEFAULT,
308 picture_buffer->decoding_texture_.Receive(), 309 picture_buffer->decoding_texture_.Receive(),
309 &share_handle); 310 &share_handle);
310 311
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 void DXVAVideoDecodeAccelerator::Destroy() { 717 void DXVAVideoDecodeAccelerator::Destroy() {
717 DCHECK(main_thread_task_runner_->BelongsToCurrentThread()); 718 DCHECK(main_thread_task_runner_->BelongsToCurrentThread());
718 Invalidate(); 719 Invalidate();
719 delete this; 720 delete this;
720 } 721 }
721 722
722 bool DXVAVideoDecodeAccelerator::CanDecodeOnIOThread() { 723 bool DXVAVideoDecodeAccelerator::CanDecodeOnIOThread() {
723 return false; 724 return false;
724 } 725 }
725 726
727 GLenum DXVAVideoDecodeAccelerator::GetSurfaceInternalFormat() const {
728 return GL_BGRA_EXT;
729 }
730
726 bool DXVAVideoDecodeAccelerator::InitDecoder(media::VideoCodecProfile profile) { 731 bool DXVAVideoDecodeAccelerator::InitDecoder(media::VideoCodecProfile profile) {
727 HMODULE decoder_dll = NULL; 732 HMODULE decoder_dll = NULL;
728 733
729 // Profile must fall within the valid range for one of the supported codecs. 734 // Profile must fall within the valid range for one of the supported codecs.
730 if (profile >= media::H264PROFILE_MIN && profile <= media::H264PROFILE_MAX) { 735 if (profile >= media::H264PROFILE_MIN && profile <= media::H264PROFILE_MAX) {
731 // We mimic the steps CoCreateInstance uses to instantiate the object. This 736 // We mimic the steps CoCreateInstance uses to instantiate the object. This
732 // was previously done because it failed inside the sandbox, and now is done 737 // was previously done because it failed inside the sandbox, and now is done
733 // as a more minimal approach to avoid other side-effects CCI might have (as 738 // as a more minimal approach to avoid other side-effects CCI might have (as
734 // we are still in a reduced sandbox). 739 // we are still in a reduced sandbox).
735 decoder_dll = ::LoadLibrary(L"msmpeg2vdec.dll"); 740 decoder_dll = ::LoadLibrary(L"msmpeg2vdec.dll");
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
1446 decoder_thread_.Start(); 1451 decoder_thread_.Start();
1447 decoder_thread_task_runner_ = decoder_thread_.task_runner(); 1452 decoder_thread_task_runner_ = decoder_thread_.task_runner();
1448 } 1453 }
1449 1454
1450 bool DXVAVideoDecodeAccelerator::OutputSamplesPresent() { 1455 bool DXVAVideoDecodeAccelerator::OutputSamplesPresent() {
1451 base::AutoLock lock(decoder_lock_); 1456 base::AutoLock lock(decoder_lock_);
1452 return !pending_output_samples_.empty(); 1457 return !pending_output_samples_.empty();
1453 } 1458 }
1454 1459
1455 } // namespace content 1460 } // namespace content
OLDNEW
« no previous file with comments | « content/common/gpu/media/dxva_video_decode_accelerator.h ('k') | content/common/gpu/media/gpu_video_decode_accelerator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698