OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/video/gpu_memory_buffer_video_frame_pool.h" | 5 #include "media/video/gpu_memory_buffer_video_frame_pool.h" |
6 | 6 |
7 #include <GLES2/gl2.h> | 7 #include <GLES2/gl2.h> |
8 #include <GLES2/gl2ext.h> | 8 #include <GLES2/gl2ext.h> |
9 #include <stddef.h> | 9 #include <stddef.h> |
10 #include <stdint.h> | 10 #include <stdint.h> |
(...skipping 739 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 auto it = std::find(resources_pool_.begin(), resources_pool_.end(), | 750 auto it = std::find(resources_pool_.begin(), resources_pool_.end(), |
751 frame_resources); | 751 frame_resources); |
752 DCHECK(it != resources_pool_.end()); | 752 DCHECK(it != resources_pool_.end()); |
753 // We want the pool to behave in a FIFO way. | 753 // We want the pool to behave in a FIFO way. |
754 // This minimizes the chances of locking the buffer that might be | 754 // This minimizes the chances of locking the buffer that might be |
755 // still needed for drawing. | 755 // still needed for drawing. |
756 std::swap(*it, resources_pool_.back()); | 756 std::swap(*it, resources_pool_.back()); |
757 frame_resources->SetIsInUse(false); | 757 frame_resources->SetIsInUse(false); |
758 } | 758 } |
759 | 759 |
760 GpuMemoryBufferVideoFramePool::GpuMemoryBufferVideoFramePool() {} | 760 GpuMemoryBufferVideoFramePool::GpuMemoryBufferVideoFramePool() |
| 761 : weak_ptr_factory_(this) {} |
761 | 762 |
762 GpuMemoryBufferVideoFramePool::GpuMemoryBufferVideoFramePool( | 763 GpuMemoryBufferVideoFramePool::GpuMemoryBufferVideoFramePool( |
763 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, | 764 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, |
764 const scoped_refptr<base::TaskRunner>& worker_task_runner, | 765 const scoped_refptr<base::TaskRunner>& worker_task_runner, |
765 GpuVideoAcceleratorFactories* gpu_factories) | 766 GpuVideoAcceleratorFactories* gpu_factories) |
766 : pool_impl_( | 767 : pool_impl_( |
767 new PoolImpl(media_task_runner, worker_task_runner, gpu_factories)) { | 768 new PoolImpl(media_task_runner, worker_task_runner, gpu_factories)), |
| 769 weak_ptr_factory_(this) { |
768 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( | 770 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( |
769 pool_impl_.get(), "GpuMemoryBufferVideoFramePool", media_task_runner); | 771 pool_impl_.get(), "GpuMemoryBufferVideoFramePool", media_task_runner); |
770 } | 772 } |
771 | 773 |
772 GpuMemoryBufferVideoFramePool::~GpuMemoryBufferVideoFramePool() { | 774 GpuMemoryBufferVideoFramePool::~GpuMemoryBufferVideoFramePool() { |
773 base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( | 775 base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( |
774 pool_impl_.get()); | 776 pool_impl_.get()); |
775 } | 777 } |
776 | 778 |
777 void GpuMemoryBufferVideoFramePool::MaybeCreateHardwareFrame( | 779 void GpuMemoryBufferVideoFramePool::MaybeCreateHardwareFrame( |
778 const scoped_refptr<VideoFrame>& video_frame, | 780 const scoped_refptr<VideoFrame>& video_frame, |
779 const FrameReadyCB& frame_ready_cb) { | 781 const FrameReadyCB& frame_ready_cb) { |
780 DCHECK(video_frame); | 782 DCHECK(video_frame); |
781 pool_impl_->CreateHardwareFrame(video_frame, frame_ready_cb); | 783 pool_impl_->CreateHardwareFrame(video_frame, frame_ready_cb); |
782 } | 784 } |
783 | 785 |
| 786 base::WeakPtr<GpuMemoryBufferVideoFramePool> |
| 787 GpuMemoryBufferVideoFramePool::GetWeakPtr() { |
| 788 return weak_ptr_factory_.GetWeakPtr(); |
| 789 } |
| 790 |
784 } // namespace media | 791 } // namespace media |
OLD | NEW |