// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_GPU_CHROMEOS_PLATFORM_VIDEO_FRAME_POOL_H_ #define MEDIA_GPU_CHROMEOS_PLATFORM_VIDEO_FRAME_POOL_H_ #include <stddef.h> #include <map> #include <optional> #include <vector> #include "base/containers/circular_deque.h" #include "base/files/scoped_file.h" #include "base/functional/bind.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" #include "base/task/sequenced_task_runner.h" #include "base/thread_annotations.h" #include "media/base/video_types.h" #include "media/gpu/chromeos/dmabuf_video_frame_pool.h" #include "media/gpu/media_gpu_export.h" #include "ui/gfx/gpu_memory_buffer.h" namespace media { // Simple frame pool used to avoid unnecessarily allocating and destroying frame // objects. The pool manages the memory for the frame returned by GetFrame(). // When one of these frames is destroyed, the memory is returned to the pool for // use by a subsequent GetFrame() call. The memory in the pool is retained for // the life of the PlatformVideoFramePool object. Before calling GetFrame(), the // client should call NegotiateFrameFormat(). If the parameters passed to // NegotiateFrameFormat() are changed, then the memory used by frames with the // old parameter values will be purged from the pool. class MEDIA_GPU_EXPORT PlatformVideoFramePool : public DmabufVideoFramePool { … }; } // namespace media #endif // MEDIA_GPU_CHROMEOS_PLATFORM_VIDEO_FRAME_POOL_H_