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

Unified Diff: media/gpu/avda_picture_buffer_manager.cc

Issue 2461073002: Use MediaCodec.setOutputSurface() for fullscreen transitions on M. (Closed)
Patch Set: Fix IPC, but now everything explodes :( 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/avda_picture_buffer_manager.cc
diff --git a/media/gpu/avda_picture_buffer_manager.cc b/media/gpu/avda_picture_buffer_manager.cc
index 135aa3a23c5fd9ef983e854a4d2248fbbb971b68..a4c34e2da514376066383be1fe8a5530a3b214c4 100644
--- a/media/gpu/avda_picture_buffer_manager.cc
+++ b/media/gpu/avda_picture_buffer_manager.cc
@@ -154,6 +154,27 @@ gl::ScopedJavaSurface AVDAPictureBufferManager::Initialize(
return gl::ScopedJavaSurface(surface_texture_.get());
}
+gl::ScopedJavaSurface AVDAPictureBufferManager::SetSurface(int surface_id) {
+ // Acquire the SurfaceView surface if given a valid id.
+ if (surface_id != VideoDecodeAccelerator::Config::kNoSurfaceID) {
+ shared_state_->SetSurfaceTexture(nullptr, 0);
+ on_frame_available_handler_ = nullptr;
+ surface_texture_ = nullptr;
+ return gpu::GpuSurfaceLookup::GetInstance()->AcquireJavaSurface(surface_id);
+ }
+
+ // Otherwise create a SurfaceTexture.
+ GLuint service_id = 0;
+ surface_texture_ = CreateAttachedSurfaceTexture(
+ state_provider_->GetGlDecoder(), &service_id);
+ if (surface_texture_) {
+ on_frame_available_handler_ = new OnFrameAvailableHandler(
liberato (no reviews please) 2016/11/01 20:57:16 it was probably using the old |service_id| in the
DaleCurtis 2016/11/03 19:32:36 Thanks for this! The latest patch set uses this me
+ shared_state_.get(), surface_texture_.get());
+ }
+ shared_state_->SetSurfaceTexture(surface_texture_, service_id);
+ return gl::ScopedJavaSurface(surface_texture_.get());
+}
+
void AVDAPictureBufferManager::Destroy(const PictureBufferMap& buffers) {
// Do nothing if Initialize() has not been called.
if (!shared_state_)

Powered by Google App Engine
This is Rietveld 408576698