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

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: Fix log order. 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..50d9165f931eeeb958d6d1c234aa87ca191055fe 100644
--- a/media/gpu/media_foundation_video_encode_accelerator_win.cc
+++ b/media/gpu/media_foundation_video_encode_accelerator_win.cc
@@ -88,7 +88,7 @@ MediaFoundationVideoEncodeAccelerator::MediaFoundationVideoEncodeAccelerator()
MediaFoundationVideoEncodeAccelerator::
~MediaFoundationVideoEncodeAccelerator() {
DVLOG(3) << __func__;
- DCHECK(sequence_checker_.CalledOnValidSequence());
+ DCHECK(thread_checker_.CalledOnValidThread());
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,10 +260,11 @@ void MediaFoundationVideoEncodeAccelerator::RequestEncodingParametersChange(
void MediaFoundationVideoEncodeAccelerator::Destroy() {
DVLOG(3) << __func__;
- DCHECK(sequence_checker_.CalledOnValidSequence());
+ DCHECK(thread_checker_.CalledOnValidThread());
// Cancel all callbacks.
client_ptr_factory_.reset();
+ client_.reset();
Pawel Osciak 2016/10/25 01:44:05 Hm, do we need to InvalidateWeakPtrs() on factory
emircan 2016/10/25 21:57:51 It already gets invalidated from GPUVEA's OnWillDe
Pawel Osciak 2016/10/27 01:45:19 In that case I feel InvalidateWeakPtrs() is more e
if (encoder_thread_.IsRunning()) {
encoder_thread_task_runner_->PostTask(
@@ -276,6 +277,17 @@ void MediaFoundationVideoEncodeAccelerator::Destroy() {
delete this;
}
+bool MediaFoundationVideoEncodeAccelerator::TryToSetupEncodeOnSeparateThread(
+ const base::WeakPtr<Client>& encode_client,
+ const scoped_refptr<base::SingleThreadTaskRunner>& encode_task_runner) {
+ DVLOG(3) << __func__;
+ 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 +296,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 +333,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 +384,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