11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
20PROMEKI_NAMESPACE_BEGIN
59class VideoPayload :
public MediaPayload {
60 PROMEKI_SHARED_ABSTRACT(VideoPayload)
63 using Ptr = SharedPtr<VideoPayload,
true, VideoPayload>;
66 using PtrList = ::promeki::List<Ptr>;
69 VideoPayload() =
default;
78 explicit VideoPayload(
const ImageDesc &desc) : _desc(desc) {}
83 VideoPayload(
const ImageDesc &desc,
const BufferView &data) : MediaPayload(data), _desc(desc) {}
86 const MediaPayloadKind &kind()
const override {
return MediaPayloadKind::Video; }
89 const ImageDesc &desc()
const {
return _desc; }
92 ImageDesc &desc() {
return _desc; }
95 void setDesc(
const ImageDesc &d) { _desc = d; }
109 Duration duration()
const override {
return _duration; }
112 Error setDuration(
const Duration &val)
override {
130 bool hasDuration()
const override {
return true; }
143 const Metadata &metadata()
const override {
return _desc.metadata(); }
146 Metadata &metadata()
override {
return _desc.metadata(); }
148 VideoPayload(
const VideoPayload &) =
default;
149 VideoPayload(VideoPayload &&) =
default;
150 VideoPayload &operator=(
const VideoPayload &) =
default;
151 VideoPayload &operator=(VideoPayload &&) =
default;
163 void serialiseVideoCommon(DataStream &s)
const;
169 void deserialiseVideoCommon(DataStream &s);