11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
18PROMEKI_NAMESPACE_BEGIN
59class UncompressedVideoPayload :
public VideoPayload {
61 PROMEKI_MEDIAPAYLOAD_LOOKUP_DISPATCH(UncompressedVideoPayload)
63 virtual UncompressedVideoPayload *_promeki_clone()
const override {
64 return new UncompressedVideoPayload(*
this);
68 using Ptr = SharedPtr<UncompressedVideoPayload,
true, UncompressedVideoPayload>;
71 using PtrList = ::promeki::List<Ptr>;
74 using UPtr = UniquePtr<UncompressedVideoPayload>;
77 UncompressedVideoPayload() =
default;
84 explicit UncompressedVideoPayload(
const ImageDesc &desc) : VideoPayload(desc) {}
89 UncompressedVideoPayload(
const ImageDesc &desc,
const BufferView &data) : VideoPayload(desc, data) {}
95 bool isCompressed()
const override {
return false; }
101 bool isKeyframe()
const override {
return true; }
108 bool isSafeCutPoint()
const override {
return true; }
132 Ptr convert(
const PixelFormat &dstPd,
const Metadata &metadata,
const MediaConfig &config)
const;
135 Ptr convert(
const PixelFormat &dstPd,
const Metadata &metadata)
const;
153 static Ptr allocate(
const ImageDesc &desc);
156 static constexpr FourCC kSubclassFourCC{
'U',
'V',
'd',
'p'};
158 uint32_t subclassFourCC()
const override {
return kSubclassFourCC.value(); }
161 void serialisePayload(DataStream &s)
const override;
164 void deserialisePayload(DataStream &s)
override;
184 PaintEngine createPaintEngine()
const;
186 UncompressedVideoPayload(
const UncompressedVideoPayload &) =
default;
187 UncompressedVideoPayload(UncompressedVideoPayload &&) =
default;
188 UncompressedVideoPayload &operator=(
const UncompressedVideoPayload &) =
default;
189 UncompressedVideoPayload &operator=(UncompressedVideoPayload &&) =
default;