11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
24PROMEKI_NAMESPACE_BEGIN
68class SdiSignalConfig {
70 PROMEKI_DATATYPE(SdiSignalConfig, DataTypeSdiSignalConfig, 1)
73 using PortList = ::promeki::List<VideoPortRef>;
85 SdiSignalConfig(SdiLinkStandard standard, PortList ports);
96 SdiLinkStandard standard() const;
99 const PortList &ports() const;
102 int cableCount() const;
105 void setStandard(SdiLinkStandard standard);
108 void setPorts(PortList ports);
111 void appendPort(VideoPortRef port);
123 static SdiSignalConfig singleLink(SdiLinkStandard standard, VideoPortRef port);
128 static SdiSignalConfig dualLink(SdiLinkStandard standard, VideoPortRef a, VideoPortRef b);
133 static SdiSignalConfig quadLink(SdiLinkStandard standard, VideoPortRef a, VideoPortRef b,
134 VideoPortRef c, VideoPortRef d);
147 Error validate() const;
156 String toString() const;
168 static Result<SdiSignalConfig> fromString(const String &s);
171 bool operator==(const SdiSignalConfig &other) const;
174 bool operator!=(const SdiSignalConfig &other)
const {
return !(*
this == other); }
180 Error writeToStream(DataStream &s)
const;
186 template <u
int32_t V>
static Result<SdiSignalConfig> readFromStream(DataStream &s);
193 PROMEKI_SHARED_FINAL(Impl)
195 SdiLinkStandard standard = SdiLinkStandard::Auto;