#ifndef MEDIA_GPU_VAAPI_TEST_FAKE_LIBVA_DRIVER_FAKE_SURFACE_H_
#define MEDIA_GPU_VAAPI_TEST_FAKE_LIBVA_DRIVER_FAKE_SURFACE_H_
#include <va/va.h>
#include <vector>
#include "media/gpu/vaapi/test/fake_libva_driver/scoped_bo_mapping_factory.h"
namespace media::internal {
class FakeSurface {
public:
using IdType = VASurfaceID;
FakeSurface(const FakeSurface&) = delete;
FakeSurface& operator=(const FakeSurface&) = delete;
~FakeSurface();
static std::unique_ptr<FakeSurface> Create(
IdType id,
unsigned int format,
unsigned int width,
unsigned int height,
std::vector<VASurfaceAttrib> attrib_list,
ScopedBOMappingFactory& scoped_bo_mapping_factory);
IdType GetID() const;
unsigned int GetFormat() const;
uint32_t GetVAFourCC() const;
unsigned int GetWidth() const;
unsigned int GetHeight() const;
const std::vector<VASurfaceAttrib>& GetSurfaceAttribs() const;
const ScopedBOMapping& GetMappedBO() const;
private:
FakeSurface(IdType id,
unsigned int format,
uint32_t va_fourcc,
unsigned int width,
unsigned int height,
std::vector<VASurfaceAttrib> attrib_list,
ScopedBOMapping mapped_bo);
const IdType id_;
const unsigned int format_;
const uint32_t va_fourcc_;
const unsigned int width_;
const unsigned int height_;
const std::vector<VASurfaceAttrib> attrib_list_;
ScopedBOMapping mapped_bo_;
};
}
#endif