Chromium Code Reviews| Index: media/gpu/media_foundation_video_encode_accelerator_win.cc |
| diff --git a/media/gpu/media_foundation_video_encode_accelerator_win.cc b/media/gpu/media_foundation_video_encode_accelerator_win.cc |
| index dfd27106cc9ea0047cabba1ad4854dcf9ab49d92..6d0fd0831a70492680e509903df074f3c88e4c2e 100644 |
| --- a/media/gpu/media_foundation_video_encode_accelerator_win.cc |
| +++ b/media/gpu/media_foundation_video_encode_accelerator_win.cc |
| @@ -87,8 +87,8 @@ MediaFoundationVideoEncodeAccelerator::MediaFoundationVideoEncodeAccelerator() |
| MediaFoundationVideoEncodeAccelerator:: |
| ~MediaFoundationVideoEncodeAccelerator() { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| DVLOG(3) << __func__; |
|
sandersd (OOO until July 31)
2016/10/21 01:01:00
Nit: Prefer __func__ logging first.
emircan
2016/10/24 19:44:53
Done.
|
| - DCHECK(sequence_checker_.CalledOnValidSequence()); |
| DCHECK(!encoder_thread_.IsRunning()); |
| DCHECK(!encoder_task_weak_factory_.HasWeakPtrs()); |
| @@ -99,7 +99,7 @@ MediaFoundationVideoEncodeAccelerator::GetSupportedProfiles() { |
| TRACE_EVENT0("gpu,startup", |
| "MediaFoundationVideoEncodeAccelerator::GetSupportedProfiles"); |
| DVLOG(3) << __func__; |
| - DCHECK(sequence_checker_.CalledOnValidSequence()); |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| SupportedProfiles profiles; |
| @@ -136,7 +136,7 @@ bool MediaFoundationVideoEncodeAccelerator::Initialize( |
| << ", input_visible_size=" << input_visible_size.ToString() |
| << ", output_profile=" << output_profile |
| << ", initial_bitrate=" << initial_bitrate; |
| - DCHECK(sequence_checker_.CalledOnValidSequence()); |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| if (PIXEL_FORMAT_I420 != format) { |
| DLOG(ERROR) << "Input format not supported= " |
| @@ -260,7 +260,7 @@ void MediaFoundationVideoEncodeAccelerator::RequestEncodingParametersChange( |
| void MediaFoundationVideoEncodeAccelerator::Destroy() { |
| DVLOG(3) << __func__; |
| - DCHECK(sequence_checker_.CalledOnValidSequence()); |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| // Cancel all callbacks. |
| client_ptr_factory_.reset(); |
|
sandersd (OOO until July 31)
2016/10/21 18:41:03
Note that this no longer has the stated side effec
emircan
2016/10/24 19:44:53
Thanks for pointing this out. I added a reset to m
|
| @@ -276,6 +276,16 @@ void MediaFoundationVideoEncodeAccelerator::Destroy() { |
| delete this; |
| } |
| +bool MediaFoundationVideoEncodeAccelerator::TryToSetupEncodeOnSeparateThread( |
| + const base::WeakPtr<Client>& encode_client, |
| + const scoped_refptr<base::SingleThreadTaskRunner>& encode_task_runner) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + client_ = encode_client; |
| + client_task_runner_ = encode_task_runner; |
| + sequence_checker_.DetachFromSequence(); |
| + return true; |
| +} |
| + |
| // static |
| void MediaFoundationVideoEncodeAccelerator::PreSandboxInitialization() { |
| for (const wchar_t* mfdll : kMediaFoundationVideoEncoderDLLs) |
| @@ -284,7 +294,7 @@ void MediaFoundationVideoEncodeAccelerator::PreSandboxInitialization() { |
| bool MediaFoundationVideoEncodeAccelerator::CreateHardwareEncoderMFT() { |
| DVLOG(3) << __func__; |
| - DCHECK(sequence_checker_.CalledOnValidSequence()); |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| if (base::win::GetVersion() < base::win::VERSION_WIN8) { |
| DVLOG(ERROR) << "Windows versions earlier than 8 are not supported."; |
| @@ -321,7 +331,7 @@ bool MediaFoundationVideoEncodeAccelerator::CreateHardwareEncoderMFT() { |
| } |
| bool MediaFoundationVideoEncodeAccelerator::InitializeInputOutputSamples() { |
| - DCHECK(sequence_checker_.CalledOnValidSequence()); |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| // Initialize output parameters. |
| HRESULT hr = MFCreateMediaType(imf_output_media_type_.Receive()); |
| @@ -372,7 +382,7 @@ bool MediaFoundationVideoEncodeAccelerator::InitializeInputOutputSamples() { |
| } |
| bool MediaFoundationVideoEncodeAccelerator::SetEncoderModes() { |
| - DCHECK(sequence_checker_.CalledOnValidSequence()); |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| HRESULT hr = encoder_.QueryInterface(IID_ICodecAPI, codec_api_.ReceiveVoid()); |
| RETURN_ON_HR_FAILURE(hr, "Couldn't get ICodecAPI", false); |