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

Side by Side Diff: media/gpu/dxva_video_decode_accelerator_win.h

Issue 2585863003: [dxvavda] Convert more users of IMFSample* to ScopedComPtr (Closed)
Patch Set: Created 4 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
« no previous file with comments | « no previous file | media/gpu/dxva_video_decode_accelerator_win.cc » ('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 (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 MEDIA_GPU_DXVA_VIDEO_DECODE_ACCELERATOR_WIN_H_ 5 #ifndef MEDIA_GPU_DXVA_VIDEO_DECODE_ACCELERATOR_WIN_H_
6 #define MEDIA_GPU_DXVA_VIDEO_DECODE_ACCELERATOR_WIN_H_ 6 #define MEDIA_GPU_DXVA_VIDEO_DECODE_ACCELERATOR_WIN_H_
7 7
8 #include <d3d11.h> 8 #include <d3d11.h>
9 #include <d3d9.h> 9 #include <d3d9.h>
10 #include <initguid.h> 10 #include <initguid.h>
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 // start of stream, end of stream, flush, drain the decoder, etc. 200 // start of stream, end of stream, flush, drain the decoder, etc.
201 bool SendMFTMessage(MFT_MESSAGE_TYPE msg, int32_t param); 201 bool SendMFTMessage(MFT_MESSAGE_TYPE msg, int32_t param);
202 202
203 // The bulk of the decoding happens here. This function handles errors, 203 // The bulk of the decoding happens here. This function handles errors,
204 // format changes and processes decoded output. 204 // format changes and processes decoded output.
205 void DoDecode(const gfx::ColorSpace& color_space); 205 void DoDecode(const gfx::ColorSpace& color_space);
206 206
207 // Invoked when we have a valid decoded output sample. Retrieves the D3D 207 // Invoked when we have a valid decoded output sample. Retrieves the D3D
208 // surface and maintains a copy of it which is passed eventually to the 208 // surface and maintains a copy of it which is passed eventually to the
209 // client when we have a picture buffer to copy the surface contents to. 209 // client when we have a picture buffer to copy the surface contents to.
210 bool ProcessOutputSample(IMFSample* sample, 210 bool ProcessOutputSample(base::win::ScopedComPtr<IMFSample> sample,
211 const gfx::ColorSpace& color_space); 211 const gfx::ColorSpace& color_space);
212 212
213 // Processes pending output samples by copying them to available picture 213 // Processes pending output samples by copying them to available picture
214 // slots. 214 // slots.
215 void ProcessPendingSamples(); 215 void ProcessPendingSamples();
216 216
217 // Helper function to notify the accelerator client about the error. 217 // Helper function to notify the accelerator client about the error.
218 void StopOnError(VideoDecodeAccelerator::Error error); 218 void StopOnError(VideoDecodeAccelerator::Error error);
219 219
220 // Transitions the decoder to the uninitialized state. The decoder will stop 220 // Transitions the decoder to the uninitialized state. The decoder will stop
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 uint64_t keyed_mutex_value, 309 uint64_t keyed_mutex_value,
310 int picture_buffer_id, 310 int picture_buffer_id,
311 int input_buffer_id, 311 int input_buffer_id,
312 const gfx::ColorSpace& color_space); 312 const gfx::ColorSpace& color_space);
313 313
314 // Copies the |video_frame| to the destination |dest_texture|. 314 // Copies the |video_frame| to the destination |dest_texture|.
315 void CopyTextureOnDecoderThread( 315 void CopyTextureOnDecoderThread(
316 ID3D11Texture2D* dest_texture, 316 ID3D11Texture2D* dest_texture,
317 base::win::ScopedComPtr<IDXGIKeyedMutex> dest_keyed_mutex, 317 base::win::ScopedComPtr<IDXGIKeyedMutex> dest_keyed_mutex,
318 uint64_t keyed_mutex_value, 318 uint64_t keyed_mutex_value,
319 IMFSample* video_frame, 319 base::win::ScopedComPtr<IMFSample> video_frame,
320 int picture_buffer_id, 320 int picture_buffer_id,
321 int input_buffer_id); 321 int input_buffer_id);
322 322
323 // Flushes the decoder device to ensure that the decoded surface is copied 323 // Flushes the decoder device to ensure that the decoded surface is copied
324 // to the target surface. |iterations| helps to maintain an upper limit on 324 // to the target surface. |iterations| helps to maintain an upper limit on
325 // the number of times we try to complete the flush operation. 325 // the number of times we try to complete the flush operation.
326 void FlushDecoder(int iterations, 326 void FlushDecoder(int iterations,
327 IDirect3DSurface9* src_surface, 327 IDirect3DSurface9* src_surface,
328 IDirect3DSurface9* dest_surface, 328 IDirect3DSurface9* dest_surface,
329 int picture_buffer_id, 329 int picture_buffer_id,
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 412
413 // Current state of the decoder. 413 // Current state of the decoder.
414 volatile State state_; 414 volatile State state_;
415 415
416 MFT_INPUT_STREAM_INFO input_stream_info_; 416 MFT_INPUT_STREAM_INFO input_stream_info_;
417 MFT_OUTPUT_STREAM_INFO output_stream_info_; 417 MFT_OUTPUT_STREAM_INFO output_stream_info_;
418 418
419 // Contains information about a decoded sample. 419 // Contains information about a decoded sample.
420 struct PendingSampleInfo { 420 struct PendingSampleInfo {
421 PendingSampleInfo(int32_t buffer_id, 421 PendingSampleInfo(int32_t buffer_id,
422 IMFSample* sample, 422 base::win::ScopedComPtr<IMFSample> sample,
423 const gfx::ColorSpace& color_space); 423 const gfx::ColorSpace& color_space);
424 PendingSampleInfo(const PendingSampleInfo& other); 424 PendingSampleInfo(const PendingSampleInfo& other);
425 ~PendingSampleInfo(); 425 ~PendingSampleInfo();
426 426
427 int32_t input_buffer_id; 427 int32_t input_buffer_id;
428 428
429 // The target picture buffer id where the frame would be copied to. 429 // The target picture buffer id where the frame would be copied to.
430 // Defaults to -1. 430 // Defaults to -1.
431 int picture_buffer_id; 431 int picture_buffer_id;
432 432
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 553
554 // Function pointer for the MFCreateDXGIDeviceManager API. 554 // Function pointer for the MFCreateDXGIDeviceManager API.
555 static CreateDXGIDeviceManager create_dxgi_device_manager_; 555 static CreateDXGIDeviceManager create_dxgi_device_manager_;
556 556
557 DISALLOW_COPY_AND_ASSIGN(DXVAVideoDecodeAccelerator); 557 DISALLOW_COPY_AND_ASSIGN(DXVAVideoDecodeAccelerator);
558 }; 558 };
559 559
560 } // namespace media 560 } // namespace media
561 561
562 #endif // MEDIA_GPU_DXVA_VIDEO_DECODE_ACCELERATOR_WIN_H_ 562 #endif // MEDIA_GPU_DXVA_VIDEO_DECODE_ACCELERATOR_WIN_H_
OLDNEW
« no previous file with comments | « no previous file | media/gpu/dxva_video_decode_accelerator_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698