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); |