Chromium Code Reviews| 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_) |