chromium/media/gpu/chromeos/frame_resource.h

// Copyright 2024 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_FRAME_RESOURCE_H_
#define MEDIA_GPU_CHROMEOS_FRAME_RESOURCE_H_

#include "base/memory/scoped_refptr.h"
#include "base/time/time.h"
#include "media/base/video_frame.h"
#include "media/base/video_frame_layout.h"
#include "media/base/video_frame_metadata.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/gpu_memory_buffer.h"
#include "ui/gfx/linux/native_pixmap_dmabuf.h"

namespace media {

// Forward declare for use in AsVideoFrameResource.
class VideoFrameResource;

// Forward declare for use in AsNativePixmapFrameResource
class NativePixmapFrameResource;

// Base class for holding an object like a VideoFrame. It provides accessors for
// the metadata or data. This can be implemented using different backing types
// e.g. VideoFrame or NativePixmap.
class FrameResource : public base::RefCountedThreadSafe<FrameResource> {};

}  // namespace media

#endif  // MEDIA_GPU_CHROMEOS_FRAME_RESOURCE_H_