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_COMMON_GPU_MEDIA_DXVA_VIDEO_DECODE_ACCELERATOR_H_ | 5 #ifndef CONTENT_COMMON_GPU_MEDIA_DXVA_VIDEO_DECODE_ACCELERATOR_H_ |
6 #define CONTENT_COMMON_GPU_MEDIA_DXVA_VIDEO_DECODE_ACCELERATOR_H_ | 6 #define CONTENT_COMMON_GPU_MEDIA_DXVA_VIDEO_DECODE_ACCELERATOR_H_ |
7 | 7 |
8 #include <d3d11.h> | 8 #include <d3d11.h> |
9 #include <d3d9.h> | 9 #include <d3d9.h> |
10 // Work around bug in this header by disabling the relevant warning for it. | 10 // Work around bug in this header by disabling the relevant warning for it. |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 void CopySurfaceComplete(IDirect3DSurface9* src_surface, | 213 void CopySurfaceComplete(IDirect3DSurface9* src_surface, |
214 IDirect3DSurface9* dest_surface, | 214 IDirect3DSurface9* dest_surface, |
215 int picture_buffer_id, | 215 int picture_buffer_id, |
216 int input_buffer_id); | 216 int input_buffer_id); |
217 | 217 |
218 // Copies the source texture |src_texture| to the destination |dest_texture|. | 218 // Copies the source texture |src_texture| to the destination |dest_texture|. |
219 // The copying is done on the decoder thread. The |video_frame| parameter | 219 // The copying is done on the decoder thread. The |video_frame| parameter |
220 // is the sample containing the frame to be copied. | 220 // is the sample containing the frame to be copied. |
221 void CopyTexture(ID3D11Texture2D* src_texture, | 221 void CopyTexture(ID3D11Texture2D* src_texture, |
222 ID3D11Texture2D* dest_texture, | 222 ID3D11Texture2D* dest_texture, |
| 223 base::win::ScopedComPtr<IDXGIKeyedMutex> dest_keyed_mutex, |
| 224 uint64_t keyed_mutex_value, |
223 IMFSample* video_frame, | 225 IMFSample* video_frame, |
224 int picture_buffer_id, | 226 int picture_buffer_id, |
225 int input_buffer_id); | 227 int input_buffer_id); |
226 | 228 |
227 // Flushes the decoder device to ensure that the decoded surface is copied | 229 // Flushes the decoder device to ensure that the decoded surface is copied |
228 // to the target surface. |iterations| helps to maintain an upper limit on | 230 // to the target surface. |iterations| helps to maintain an upper limit on |
229 // the number of times we try to complete the flush operation. | 231 // the number of times we try to complete the flush operation. |
230 void FlushDecoder(int iterations, | 232 void FlushDecoder(int iterations, |
231 IDirect3DSurface9* src_surface, | 233 IDirect3DSurface9* src_surface, |
232 IDirect3DSurface9* dest_surface, | 234 IDirect3DSurface9* dest_surface, |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 base::WeakPtr<DXVAVideoDecodeAccelerator> weak_ptr_; | 355 base::WeakPtr<DXVAVideoDecodeAccelerator> weak_ptr_; |
354 | 356 |
355 // Set to true if we are in the context of a Flush operation. Used to prevent | 357 // Set to true if we are in the context of a Flush operation. Used to prevent |
356 // multiple flush done notifications being sent out. | 358 // multiple flush done notifications being sent out. |
357 bool pending_flush_; | 359 bool pending_flush_; |
358 | 360 |
359 // Defaults to false. Indicates if we should use D3D or DX11 interfaces for | 361 // Defaults to false. Indicates if we should use D3D or DX11 interfaces for |
360 // H/W decoding. | 362 // H/W decoding. |
361 bool use_dx11_; | 363 bool use_dx11_; |
362 | 364 |
| 365 // True if we should use DXGI keyed mutexes to synchronize between the two |
| 366 // contexts. |
| 367 bool use_keyed_mutex_; |
| 368 |
363 // Set to true if the DX11 video format converter input media types need to | 369 // Set to true if the DX11 video format converter input media types need to |
364 // be initialized. Defaults to true. | 370 // be initialized. Defaults to true. |
365 bool dx11_video_format_converter_media_type_needs_init_; | 371 bool dx11_video_format_converter_media_type_needs_init_; |
366 | 372 |
367 // The GLContext to be used by the decoder. | 373 // The GLContext to be used by the decoder. |
368 scoped_refptr<gfx::GLContext> gl_context_; | 374 scoped_refptr<gfx::GLContext> gl_context_; |
369 | 375 |
370 // Set to true if we are sharing ANGLE's device. | 376 // Set to true if we are sharing ANGLE's device. |
371 bool using_angle_device_; | 377 bool using_angle_device_; |
372 | 378 |
373 // WeakPtrFactory for posting tasks back to |this|. | 379 // WeakPtrFactory for posting tasks back to |this|. |
374 base::WeakPtrFactory<DXVAVideoDecodeAccelerator> weak_this_factory_; | 380 base::WeakPtrFactory<DXVAVideoDecodeAccelerator> weak_this_factory_; |
375 | 381 |
376 // Function pointer for the MFCreateDXGIDeviceManager API. | 382 // Function pointer for the MFCreateDXGIDeviceManager API. |
377 static CreateDXGIDeviceManager create_dxgi_device_manager_; | 383 static CreateDXGIDeviceManager create_dxgi_device_manager_; |
378 | 384 |
379 DISALLOW_COPY_AND_ASSIGN(DXVAVideoDecodeAccelerator); | 385 DISALLOW_COPY_AND_ASSIGN(DXVAVideoDecodeAccelerator); |
380 }; | 386 }; |
381 | 387 |
382 } // namespace content | 388 } // namespace content |
383 | 389 |
384 #endif // CONTENT_COMMON_GPU_MEDIA_DXVA_VIDEO_DECODE_ACCELERATOR_H_ | 390 #endif // CONTENT_COMMON_GPU_MEDIA_DXVA_VIDEO_DECODE_ACCELERATOR_H_ |
OLD | NEW |