libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
videopayload.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
13#include <promeki/namespace.h>
15#include <promeki/imagedesc.h>
16#include <promeki/duration.h>
17#include <promeki/variant.h>
18#include <promeki/list.h>
19
20PROMEKI_NAMESPACE_BEGIN
21
22class DataStream;
23
59class VideoPayload : public MediaPayload {
60 PROMEKI_SHARED_ABSTRACT(VideoPayload)
61 public:
63 using Ptr = SharedPtr<VideoPayload, /*CopyOnWrite=*/true, VideoPayload>;
64
66 using PtrList = ::promeki::List<Ptr>;
67
69 VideoPayload() = default;
70
78 explicit VideoPayload(const ImageDesc &desc) : _desc(desc) {}
79
83 VideoPayload(const ImageDesc &desc, const BufferView &data) : MediaPayload(data), _desc(desc) {}
84
86 const MediaPayloadKind &kind() const override { return MediaPayloadKind::Video; }
87
89 const ImageDesc &desc() const { return _desc; }
90
92 ImageDesc &desc() { return _desc; }
93
95 void setDesc(const ImageDesc &d) { _desc = d; }
96
109 Duration duration() const override { return _duration; }
110
112 Error setDuration(const Duration &val) override {
113 _duration = val;
114 return Error::Ok;
115 }
116
130 bool hasDuration() const override { return true; }
131
143 const Metadata &metadata() const override { return _desc.metadata(); }
144
146 Metadata &metadata() override { return _desc.metadata(); }
147
148 VideoPayload(const VideoPayload &) = default;
149 VideoPayload(VideoPayload &&) = default;
150 VideoPayload &operator=(const VideoPayload &) = default;
151 VideoPayload &operator=(VideoPayload &&) = default;
152
153 protected:
163 void serialiseVideoCommon(DataStream &s) const;
164
169 void deserialiseVideoCommon(DataStream &s);
170
171 private:
172 ImageDesc _desc;
173 Duration _duration;
174};
175
176PROMEKI_NAMESPACE_END
177
178#endif // PROMEKI_ENABLE_CORE