chromium/media/gpu/chromeos/dmabuf_video_frame_pool.h

// 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_DMABUF_VIDEO_FRAME_POOL_H_
#define MEDIA_GPU_CHROMEOS_DMABUF_VIDEO_FRAME_POOL_H_

#include <optional>

#include "base/memory/scoped_refptr.h"
#include "base/task/sequenced_task_runner.h"
#include "base/time/time.h"
#include "media/base/status.h"
#include "media/base/video_frame.h"
#include "media/gpu/chromeos/chromeos_status.h"
#include "media/gpu/chromeos/fourcc.h"
#include "media/gpu/chromeos/gpu_buffer_layout.h"
#include "media/gpu/media_gpu_export.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"

namespace media {

class FrameResource;

// Forward declare for use in AsPlatformVideoFramePool.
class PlatformVideoFramePool;

// Interface for allocating and managing DMA-buf frames. The client should
// set a task runner first via set_parent_task_runner(), and guarantee that
// Initialize(), GetFrame(), GetGpuBufferLayout() and the destructor are
// executed on this task runner. Note: other public methods might be called at
// different thread. The implementation must be thread-safe.
class MEDIA_GPU_EXPORT DmabufVideoFramePool {};

}  // namespace media

#endif  // MEDIA_GPU_CHROMEOS_DMABUF_VIDEO_FRAME_POOL_H_