11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
23PROMEKI_NAMESPACE_BEGIN
26class SdpMediaDescription;
95 using List = ::promeki::List<AncDesc>;
123 AncDesc(
const Size2Du32 &raster,
const VideoScanMode &scanMode,
const FrameRate &frameRate);
126 const Size2Du32 &sourceRaster()
const;
129 void setSourceRaster(
const Size2Du32 &raster);
132 const VideoScanMode &scanMode()
const;
135 void setScanMode(
const VideoScanMode &scanMode);
138 const FrameRate &frameRate()
const;
141 void setFrameRate(
const FrameRate &frameRate);
147 const AncFormat::IDList &allowedFormats()
const;
150 void setAllowedFormats(AncFormat::IDList ids);
156 const ::promeki::List<AncCategory> &allowedCategories()
const;
159 void setAllowedCategories(::promeki::List<AncCategory> categories);
162 const Metadata &metadata()
const;
165 Metadata &metadata();
168 void setMetadata(Metadata m);
180 int pairedVideoStreamIndex()
const;
183 void setPairedVideoStreamIndex(
int index);
197 int pairedAudioStreamIndex()
const;
200 void setPairedAudioStreamIndex(
int index);
212 uint32_t troff()
const;
215 void setTroff(uint32_t ticks);
228 uint8_t vpidCode()
const;
231 void setVpidCode(uint8_t code);
245 AncTransmissionModel transmissionModel()
const;
248 void setTransmissionModel(
const AncTransmissionModel &tm);
263 bool isValid()
const;
276 bool acceptsFormat(
const AncFormat &fmt)
const;
288 bool formatEquals(
const AncDesc &other)
const;
314 static AncDesc fromSdp(
const SdpMediaDescription &md);
346 SdpMediaDescription toSdp(uint8_t payloadType)
const;
352 bool operator==(
const AncDesc &other)
const;
355 bool operator!=(
const AncDesc &other)
const {
return !(*
this == other); }
369 PROMEKI_SHARED_FINAL(Impl)
371 Size2Du32 sourceRaster;
372 VideoScanMode scanMode;
374 AncFormat::IDList allowedFormats;
375 ::promeki::List<AncCategory> allowedCategories;
377 int pairedVideoStreamIndex = -1;
378 int pairedAudioStreamIndex = -1;
380 uint8_t vpidCode = 0;
381 AncTransmissionModel transmissionModel = AncTransmissionModel::Unsignalled;
392DataStream &operator<<(DataStream &stream,
const AncDesc &desc);
395DataStream &operator>>(DataStream &stream, AncDesc &desc);