#ifndef MEDIA_GPU_CODEC_PICTURE_H_
#define MEDIA_GPU_CODEC_PICTURE_H_
#include <vector>
#include "base/memory/ref_counted.h"
#include "media/base/decrypt_config.h"
#include "media/base/video_color_space.h"
#include "media/gpu/media_gpu_export.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/hdr_metadata.h"
namespace media {
class MEDIA_GPU_EXPORT CodecPicture
: public base::RefCountedThreadSafe<CodecPicture> {
public:
REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE();
CodecPicture();
CodecPicture(const CodecPicture&) = delete;
CodecPicture& operator=(const CodecPicture&) = delete;
int32_t bitstream_id() const { return bitstream_id_; }
void set_bitstream_id(int32_t bitstream_id) { bitstream_id_ = bitstream_id; }
const gfx::Rect visible_rect() const { return visible_rect_; }
void set_visible_rect(const gfx::Rect& rect) { visible_rect_ = rect; }
const DecryptConfig* decrypt_config() const { return decrypt_config_.get(); }
void set_decrypt_config(std::unique_ptr<DecryptConfig> config) {
decrypt_config_ = std::move(config);
}
const VideoColorSpace& get_colorspace() const { return colorspace_; }
void set_colorspace(const VideoColorSpace& colorspace) {
colorspace_ = colorspace;
}
const std::optional<gfx::HDRMetadata>& hdr_metadata() const {
return hdr_metadata_;
}
void set_hdr_metadata(const std::optional<gfx::HDRMetadata>& hdr_metadata) {
hdr_metadata_ = hdr_metadata;
}
protected:
friend class base::RefCountedThreadSafe<CodecPicture>;
virtual ~CodecPicture();
private:
int32_t bitstream_id_ = -1;
gfx::Rect visible_rect_;
std::unique_ptr<DecryptConfig> decrypt_config_;
VideoColorSpace colorspace_;
std::optional<gfx::HDRMetadata> hdr_metadata_;
};
}
#endif