libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
ancdesc.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/sharedptr.h>
15#include <promeki/ancformat.h>
16#include <promeki/size2d.h>
17#include <promeki/framerate.h>
18#include <promeki/metadata.h>
19#include <promeki/list.h>
20#include <promeki/enums.h>
21
22PROMEKI_NAMESPACE_BEGIN
23
24class DataStream;
25class SdpMediaDescription;
26
91class AncDesc {
92 public:
94 using List = ::promeki::List<AncDesc>;
95
102 AncDesc();
103
122 AncDesc(const Size2Du32 &raster, const VideoScanMode &scanMode, const FrameRate &frameRate);
123
125 const Size2Du32 &sourceRaster() const;
126
128 void setSourceRaster(const Size2Du32 &raster);
129
131 const VideoScanMode &scanMode() const;
132
134 void setScanMode(const VideoScanMode &scanMode);
135
137 const FrameRate &frameRate() const;
138
140 void setFrameRate(const FrameRate &frameRate);
141
146 const AncFormat::IDList &allowedFormats() const;
147
149 void setAllowedFormats(AncFormat::IDList ids);
150
155 const ::promeki::List<AncCategory> &allowedCategories() const;
156
158 void setAllowedCategories(::promeki::List<AncCategory> categories);
159
161 const Metadata &metadata() const;
162
164 Metadata &metadata();
165
167 void setMetadata(Metadata m);
168
179 int pairedVideoStreamIndex() const;
180
182 void setPairedVideoStreamIndex(int index);
183
196 int pairedAudioStreamIndex() const;
197
199 void setPairedAudioStreamIndex(int index);
200
211 uint32_t troff() const;
212
214 void setTroff(uint32_t ticks);
215
227 uint8_t vpidCode() const;
228
230 void setVpidCode(uint8_t code);
231
245 bool isValid() const;
246
258 bool acceptsFormat(const AncFormat &fmt) const;
259
270 bool formatEquals(const AncDesc &other) const;
271
296 static AncDesc fromSdp(const SdpMediaDescription &md);
297
328 SdpMediaDescription toSdp(uint8_t payloadType) const;
329
334 bool operator==(const AncDesc &other) const;
335
337 bool operator!=(const AncDesc &other) const { return !(*this == other); }
338
350 struct Impl {
351 PROMEKI_SHARED_FINAL(Impl)
352
353 Size2Du32 sourceRaster;
354 VideoScanMode scanMode;
355 FrameRate frameRate;
356 AncFormat::IDList allowedFormats;
357 ::promeki::List<AncCategory> allowedCategories;
358 Metadata metadata;
359 int pairedVideoStreamIndex = -1;
360 int pairedAudioStreamIndex = -1;
361 uint32_t troff = 0;
362 uint8_t vpidCode = 0;
363 };
364
365 private:
366 SharedPtr<Impl> _d;
367};
368
373DataStream &operator<<(DataStream &stream, const AncDesc &desc);
374
376DataStream &operator>>(DataStream &stream, AncDesc &desc);
377
378PROMEKI_NAMESPACE_END
379
380#endif // PROMEKI_ENABLE_PROAV