| OLD | NEW |
| 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/gpu/media_foundation_video_encode_accelerator_win.h" | 5 #include "media/gpu/media_foundation_video_encode_accelerator_win.h" |
| 6 | 6 |
| 7 #pragma warning(push) | 7 #pragma warning(push) |
| 8 #pragma warning(disable : 4800) // Disable warning for added padding. | 8 #pragma warning(disable : 4800) // Disable warning for added padding. |
| 9 | 9 |
| 10 #include <codecapi.h> | 10 #include <codecapi.h> |
| 11 #include <mferror.h> | 11 #include <mferror.h> |
| 12 #include <mftransform.h> | 12 #include <mftransform.h> |
| 13 #include <objbase.h> |
| 13 | 14 |
| 14 #include <iterator> | 15 #include <iterator> |
| 15 #include <utility> | 16 #include <utility> |
| 16 #include <vector> | 17 #include <vector> |
| 17 | 18 |
| 18 #include "base/threading/thread_task_runner_handle.h" | 19 #include "base/threading/thread_task_runner_handle.h" |
| 19 #include "base/trace_event/trace_event.h" | 20 #include "base/trace_event/trace_event.h" |
| 20 #include "base/win/scoped_co_mem.h" | 21 #include "base/win/scoped_co_mem.h" |
| 21 #include "base/win/scoped_variant.h" | 22 #include "base/win/scoped_variant.h" |
| 22 #include "base/win/windows_version.h" | 23 #include "base/win/windows_version.h" |
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 output_info.guidMajorType = MFMediaType_Video; | 349 output_info.guidMajorType = MFMediaType_Video; |
| 349 output_info.guidSubtype = MFVideoFormat_H264; | 350 output_info.guidSubtype = MFVideoFormat_H264; |
| 350 | 351 |
| 351 base::win::ScopedCoMem<CLSID> CLSIDs; | 352 base::win::ScopedCoMem<CLSID> CLSIDs; |
| 352 uint32_t count = 0; | 353 uint32_t count = 0; |
| 353 HRESULT hr = MFTEnum(MFT_CATEGORY_VIDEO_ENCODER, flags, &input_info, | 354 HRESULT hr = MFTEnum(MFT_CATEGORY_VIDEO_ENCODER, flags, &input_info, |
| 354 &output_info, NULL, &CLSIDs, &count); | 355 &output_info, NULL, &CLSIDs, &count); |
| 355 RETURN_ON_HR_FAILURE(hr, "Couldn't enumerate hardware encoder", false); | 356 RETURN_ON_HR_FAILURE(hr, "Couldn't enumerate hardware encoder", false); |
| 356 RETURN_ON_FAILURE((count > 0), "No HW encoder found", false); | 357 RETURN_ON_FAILURE((count > 0), "No HW encoder found", false); |
| 357 DVLOG(3) << "HW encoder(s) found: " << count; | 358 DVLOG(3) << "HW encoder(s) found: " << count; |
| 358 hr = encoder_.CreateInstance(CLSIDs[0]); | 359 hr = ::CoCreateInstance(CLSIDs[0], nullptr, CLSCTX_ALL, |
| 360 IID_PPV_ARGS(&encoder_)); |
| 359 RETURN_ON_HR_FAILURE(hr, "Couldn't activate hardware encoder", false); | 361 RETURN_ON_HR_FAILURE(hr, "Couldn't activate hardware encoder", false); |
| 360 RETURN_ON_FAILURE((encoder_.Get() != nullptr), | 362 RETURN_ON_FAILURE((encoder_.Get() != nullptr), |
| 361 "No HW encoder instance created", false); | 363 "No HW encoder instance created", false); |
| 362 return true; | 364 return true; |
| 363 } | 365 } |
| 364 | 366 |
| 365 bool MediaFoundationVideoEncodeAccelerator::InitializeInputOutputSamples() { | 367 bool MediaFoundationVideoEncodeAccelerator::InitializeInputOutputSamples() { |
| 366 DCHECK(main_client_task_runner_->BelongsToCurrentThread()); | 368 DCHECK(main_client_task_runner_->BelongsToCurrentThread()); |
| 367 | 369 |
| 368 DWORD input_count = 0; | 370 DWORD input_count = 0; |
| (...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 696 void MediaFoundationVideoEncodeAccelerator::ReleaseEncoderResources() { | 698 void MediaFoundationVideoEncodeAccelerator::ReleaseEncoderResources() { |
| 697 encoder_.Reset(); | 699 encoder_.Reset(); |
| 698 codec_api_.Reset(); | 700 codec_api_.Reset(); |
| 699 imf_input_media_type_.Reset(); | 701 imf_input_media_type_.Reset(); |
| 700 imf_output_media_type_.Reset(); | 702 imf_output_media_type_.Reset(); |
| 701 input_sample_.Reset(); | 703 input_sample_.Reset(); |
| 702 output_sample_.Reset(); | 704 output_sample_.Reset(); |
| 703 } | 705 } |
| 704 | 706 |
| 705 } // namespace content | 707 } // namespace content |
| OLD | NEW |