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

Unified Diff: media/gpu/media_foundation_video_encode_accelerator_win.cc

Issue 2427053002: Move video encode accelerator IPC messages to GPU IO thread (Closed)
Patch Set: Created 4 years, 2 months 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 side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698