libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
hdmiinfoframe.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 <cstdint>
14#include <promeki/namespace.h>
15#include <promeki/ancpacket.h>
16#include <promeki/buffer.h>
17#include <promeki/result.h>
18#include <promeki/error.h>
19
20PROMEKI_NAMESPACE_BEGIN
21
62class HdmiInfoFrame {
63 public:
65 static constexpr size_t HeaderSize = 4;
66
75 static Result<HdmiInfoFrame> from(const AncPacket &pkt);
76
94 static HdmiInfoFrame build(const AncFormat &fmt, uint8_t version, Buffer body);
95
104 static HdmiInfoFrame buildRaw(uint8_t type, uint8_t version, Buffer body);
105
107 HdmiInfoFrame() = default;
108
110 uint8_t type() const;
111
113 uint8_t version() const;
114
119 uint8_t length() const;
120
130 Buffer body() const;
131
133 uint8_t checksum() const;
134
140 bool checksumValid() const;
141
143 const AncPacket &packet() const { return _pkt; }
144
146 operator const AncPacket &() const { return _pkt; }
147
153 bool isValid() const;
154
155 private:
156 explicit HdmiInfoFrame(const AncPacket &pkt) : _pkt(pkt) {}
157 AncPacket _pkt;
158};
159
160PROMEKI_NAMESPACE_END
161
162#endif // PROMEKI_ENABLE_PROAV