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

Unified Diff: media/gpu/avda_codec_allocator.cc

Issue 2692863011: Add ContentVideoViewOverlay to AVDA. (Closed)
Patch Set: keep |overlay| longer in UpdateSurface, comments Created 3 years, 10 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/avda_codec_allocator.cc
diff --git a/media/gpu/avda_codec_allocator.cc b/media/gpu/avda_codec_allocator.cc
index bbf96156ea4d85280e8bba9b69dbbd319f80b7c0..b249e0f3e0af9f371e309b2994c5db9cc33f7883 100644
--- a/media/gpu/avda_codec_allocator.cc
+++ b/media/gpu/avda_codec_allocator.cc
@@ -137,7 +137,7 @@ scoped_refptr<base::SingleThreadTaskRunner> AVDACodecAllocator::TaskRunnerFor(
return threads_[task_type]->thread.task_runner();
}
-bool AVDACodecAllocator::AllocateSurface(AVDACodecAllocatorClient* client,
+bool AVDACodecAllocator::AllocateSurface(AVDASurfaceAllocatorClient* client,
int surface_id) {
DVLOG(1) << __func__ << ": " << surface_id;
DCHECK(thread_checker_.CalledOnValidThread());
@@ -160,7 +160,7 @@ bool AVDACodecAllocator::AllocateSurface(AVDACodecAllocatorClient* client,
return false;
}
-void AVDACodecAllocator::DeallocateSurface(AVDACodecAllocatorClient* client,
+void AVDACodecAllocator::DeallocateSurface(AVDASurfaceAllocatorClient* client,
int surface_id) {
DCHECK(thread_checker_.CalledOnValidThread());
if (surface_id == SurfaceManager::kNoSurfaceID ||
@@ -248,7 +248,7 @@ std::unique_ptr<VideoCodecBridge> AVDACodecAllocator::CreateMediaCodecSync(
std::unique_ptr<VideoCodecBridge> codec(VideoCodecBridge::CreateDecoder(
codec_config->codec, codec_config->needs_protected_surface,
codec_config->initial_expected_coded_size,
- codec_config->surface.j_surface().obj(), media_crypto, codec_config->csd0,
+ codec_config->j_surface().obj(), media_crypto, codec_config->csd0,
codec_config->csd1, true, require_software_codec));
return codec;
@@ -257,11 +257,15 @@ std::unique_ptr<VideoCodecBridge> AVDACodecAllocator::CreateMediaCodecSync(
void AVDACodecAllocator::CreateMediaCodecAsync(
base::WeakPtr<AVDACodecAllocatorClient> client,
scoped_refptr<CodecConfig> codec_config) {
+ // We pass |codec_config| back to OnCodecConfigured in case it's the last
+ // reference to it. It might have an overlay that must be dropped on the
+ // right thread.
base::PostTaskAndReplyWithResult(
TaskRunnerFor(codec_config->task_type).get(), FROM_HERE,
base::Bind(&AVDACodecAllocator::CreateMediaCodecSync,
base::Unretained(this), codec_config),
- base::Bind(&AVDACodecAllocatorClient::OnCodecConfigured, client));
+ base::Bind(&AVDACodecAllocatorClient::OnCodecConfigured, client,
+ codec_config));
}
void AVDACodecAllocator::ReleaseMediaCodec(

Powered by Google App Engine
This is Rietveld 408576698