libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
ancpacket.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/ancformat.h>
15#include <promeki/buffer.h>
16#include <promeki/metadata.h>
17#include <promeki/sharedptr.h>
18#include <promeki/list.h>
19#include <promeki/string.h>
20
21PROMEKI_NAMESPACE_BEGIN
22
23class DataStream;
24
98class AncPacket {
99 public:
101 using List = ::promeki::List<AncPacket>;
102
111 AncPacket();
112
125 AncPacket(const AncFormat &fmt, const AncTransport &transport, Buffer data, Metadata meta = Metadata());
126
128 const AncFormat &format() const;
129
131 const AncTransport &transport() const;
132
152 const Buffer &data() const;
153
167 const Metadata &meta() const;
168
179 uint16_t st291Line() const;
180
188 uint16_t st291HOffset() const;
189
193 bool st291FieldB() const;
194
198 bool st291CBit() const;
199
204 uint8_t st291StreamNum() const;
205
214 void setFormat(const AncFormat &fmt);
215
223 void setTransport(const AncTransport &transport);
224
228 void setData(Buffer data);
229
237 void setMeta(Metadata meta);
238
240 void setSt291Line(uint16_t line);
241
243 void setSt291HOffset(uint16_t hOffset);
244
246 void setSt291FieldB(bool fieldB);
247
249 void setSt291CBit(bool cBit);
250
252 void setSt291StreamNum(uint8_t streamNum);
253
271 void setSt291Framing(uint16_t line, uint16_t hOffset,
272 bool fieldB, bool cBit, uint8_t streamNum);
273
285 Buffer &dataMut();
286
293 Metadata &metaMut();
294
303 bool isValid() const;
304
306 bool operator==(const AncPacket &o) const;
307
309 bool operator!=(const AncPacket &o) const { return !(*this == o); }
310
320 String toString(bool verbose = false) const;
321
338 struct Impl {
339 PROMEKI_SHARED_FINAL(Impl)
340
341 AncFormat format;
342 AncTransport transport;
343 Buffer data;
344 Metadata meta;
345 uint16_t st291Line = 0x7FE;
346 uint16_t st291HOffset = 0xFFF;
347 bool st291FieldB = false;
348 bool st291CBit = false;
349 uint8_t st291StreamNum = 0;
350 };
351
352 private:
353 SharedPtr<Impl> _d;
354};
355
366void writeAncPacketData(DataStream &stream, const AncPacket &pkt);
367
376AncPacket readAncPacketData(DataStream &stream);
377
382DataStream &operator<<(DataStream &stream, const AncPacket &pkt);
383
388DataStream &operator>>(DataStream &stream, AncPacket &pkt);
389
390PROMEKI_NAMESPACE_END
391
392#endif // PROMEKI_ENABLE_PROAV