libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
uncompressedvideopayload.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
13#include <promeki/namespace.h>
14#include <promeki/uniqueptr.h>
17
18PROMEKI_NAMESPACE_BEGIN
19
20class MediaConfig;
21class PaintEngine;
22
59class UncompressedVideoPayload : public VideoPayload {
60 public:
61 PROMEKI_MEDIAPAYLOAD_LOOKUP_DISPATCH(UncompressedVideoPayload)
62
63 virtual UncompressedVideoPayload *_promeki_clone() const override {
64 return new UncompressedVideoPayload(*this);
65 }
66
68 using Ptr = SharedPtr<UncompressedVideoPayload, /*CopyOnWrite=*/true, UncompressedVideoPayload>;
69
71 using PtrList = ::promeki::List<Ptr>;
72
74 using UPtr = UniquePtr<UncompressedVideoPayload>;
75
77 UncompressedVideoPayload() = default;
78
84 explicit UncompressedVideoPayload(const ImageDesc &desc) : VideoPayload(desc) {}
85
89 UncompressedVideoPayload(const ImageDesc &desc, const BufferView &data) : VideoPayload(desc, data) {}
90
95 bool isCompressed() const override { return false; }
96
101 bool isKeyframe() const override { return true; }
102
108 bool isSafeCutPoint() const override { return true; }
109
132 Ptr convert(const PixelFormat &dstPd, const Metadata &metadata, const MediaConfig &config) const;
133
135 Ptr convert(const PixelFormat &dstPd, const Metadata &metadata) const;
136
153 static Ptr allocate(const ImageDesc &desc);
154
156 static constexpr FourCC kSubclassFourCC{'U', 'V', 'd', 'p'};
157
158 uint32_t subclassFourCC() const override { return kSubclassFourCC.value(); }
159
161 void serialisePayload(DataStream &s) const override;
162
164 void deserialisePayload(DataStream &s) override;
165
184 PaintEngine createPaintEngine() const;
185
186 UncompressedVideoPayload(const UncompressedVideoPayload &) = default;
187 UncompressedVideoPayload(UncompressedVideoPayload &&) = default;
188 UncompressedVideoPayload &operator=(const UncompressedVideoPayload &) = default;
189 UncompressedVideoPayload &operator=(UncompressedVideoPayload &&) = default;
190};
191
192PROMEKI_NAMESPACE_END
193
194#endif // PROMEKI_ENABLE_PROAV