11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
15#include <promeki/config.h>
16#if PROMEKI_ENABLE_PROAV
27PROMEKI_NAMESPACE_BEGIN
121 static constexpr size_t MaxSamplesPerPgroup = 12;
135 static Pgroup pgroup(
const St2110Sampling &sampling,
const St2110Depth &depth);
142 static bool isSupported(
const St2110Sampling &sampling,
const St2110Depth &depth);
152 static int bitsPerSample(
const St2110Depth &depth);
159 static bool isFloatDepth(
const St2110Depth &depth);
185 static size_t packSamplesBE(uint8_t *dst,
size_t dstCap,
186 const uint16_t *samples,
size_t nSamples,
199 static size_t unpackSamplesBE(
const uint8_t *src,
size_t srcSize,
200 uint16_t *samples,
size_t nSamples,
226 static size_t packRow(
const St2110Sampling &sampling,
const St2110Depth &depth,
227 size_t nPixels,
const uint16_t *samples,
228 uint8_t *dst,
size_t dstCap);
240 static size_t unpackRow(
const St2110Sampling &sampling,
const St2110Depth &depth,
241 size_t nPixels,
const uint8_t *src,
size_t srcSize,
252 static size_t rowOctets(
const St2110Sampling &sampling,
const St2110Depth &depth,
262 static size_t rowSamples(
const St2110Sampling &sampling,
const St2110Depth &depth,
279 static String samplingWire(
const St2110Sampling &sampling);
281 static String depthWire(
const St2110Depth &depth);
283 static String colorimetryWire(
const St2110Colorimetry &c);
285 static String tcsWire(
const St2110Tcs &t);
287 static String rangeWire(
const St2110Range &r);
289 static String packingModeWire(
const St2110PackingMode &p);
293 static St2110Sampling samplingFromWire(
const String &s);
294 static St2110Depth depthFromWire(
const String &s);
295 static St2110Colorimetry colorimetryFromWire(
const String &s);
296 static St2110Tcs tcsFromWire(
const String &s);
297 static St2110Range rangeFromWire(
const String &s);
298 static St2110PackingMode packingModeFromWire(
const String &s);
313 static String ssnFor(
const St2110Colorimetry &colorimetry,
const St2110Tcs &tcs);
326 St2110Sampling sampling;
330 FrameRate exactFrameRate;
331 St2110Colorimetry colorimetry;
332 St2110PackingMode pm{St2110PackingMode::Gpm};
335 bool interlace =
false;
336 bool segmented =
false;
337 St2110Tcs tcs{St2110Tcs::Sdr};
338 St2110Range range{St2110Range::Narrow};
356 static String frameRateToWire(
const FrameRate &fr);
377 static String toFmtp(
const Fmtp &fmtp);
406 static Fmtp fromFmtp(
const Map<String, String> ¶ms);
427 static VideoScanMode fmtpScanMode(
const Fmtp &fmtp);
441 static void setFmtpScanMode(Fmtp &fmtp, VideoScanMode mode);
443#if PROMEKI_ENABLE_PROAV
456 struct PixelFormatBridge {
457 St2110Sampling sampling;
459 St2110Colorimetry colorimetry;
460 St2110Tcs tcs{St2110Tcs::Sdr};
461 St2110Range range{St2110Range::Narrow};
466 static PixelFormatBridge bridgeForPixelFormat(
const PixelFormat &pd);
498 static PixelFormat wirePixelFormatFor(
const St2110Sampling &sampling,
499 const St2110Depth &depth,
500 const St2110Colorimetry &colorimetry,
501 const St2110Range &range);