11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
22PROMEKI_NAMESPACE_BEGIN
25class SdpMediaDescription;
94 using List = ::promeki::List<AncDesc>;
122 AncDesc(
const Size2Du32 &raster,
const VideoScanMode &scanMode,
const FrameRate &frameRate);
125 const Size2Du32 &sourceRaster()
const;
128 void setSourceRaster(
const Size2Du32 &raster);
131 const VideoScanMode &scanMode()
const;
134 void setScanMode(
const VideoScanMode &scanMode);
137 const FrameRate &frameRate()
const;
140 void setFrameRate(
const FrameRate &frameRate);
146 const AncFormat::IDList &allowedFormats()
const;
149 void setAllowedFormats(AncFormat::IDList ids);
155 const ::promeki::List<AncCategory> &allowedCategories()
const;
158 void setAllowedCategories(::promeki::List<AncCategory> categories);
161 const Metadata &metadata()
const;
164 Metadata &metadata();
167 void setMetadata(Metadata m);
179 int pairedVideoStreamIndex()
const;
182 void setPairedVideoStreamIndex(
int index);
196 int pairedAudioStreamIndex()
const;
199 void setPairedAudioStreamIndex(
int index);
211 uint32_t troff()
const;
214 void setTroff(uint32_t ticks);
227 uint8_t vpidCode()
const;
230 void setVpidCode(uint8_t code);
245 bool isValid()
const;
258 bool acceptsFormat(
const AncFormat &fmt)
const;
270 bool formatEquals(
const AncDesc &other)
const;
296 static AncDesc fromSdp(
const SdpMediaDescription &md);
328 SdpMediaDescription toSdp(uint8_t payloadType)
const;
334 bool operator==(
const AncDesc &other)
const;
337 bool operator!=(
const AncDesc &other)
const {
return !(*
this == other); }
351 PROMEKI_SHARED_FINAL(Impl)
353 Size2Du32 sourceRaster;
354 VideoScanMode scanMode;
356 AncFormat::IDList allowedFormats;
357 ::promeki::List<AncCategory> allowedCategories;
359 int pairedVideoStreamIndex = -1;
360 int pairedAudioStreamIndex = -1;
362 uint8_t vpidCode = 0;
373DataStream &operator<<(DataStream &stream,
const AncDesc &desc);
376DataStream &operator>>(DataStream &stream, AncDesc &desc);