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