39 lines
1.0 KiB
C++
39 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include "DeckLinkAPI_h.h"
|
|
|
|
#include <array>
|
|
#include <cstdint>
|
|
|
|
enum class VideoIOPixelFormat
|
|
{
|
|
Uyvy8,
|
|
V210
|
|
};
|
|
|
|
struct V210CodeValues
|
|
{
|
|
uint16_t y = 64;
|
|
uint16_t cb = 512;
|
|
uint16_t cr = 512;
|
|
};
|
|
|
|
struct V210SixPixelBlock
|
|
{
|
|
std::array<uint16_t, 6> y = {};
|
|
std::array<uint16_t, 3> cb = {};
|
|
std::array<uint16_t, 3> cr = {};
|
|
};
|
|
|
|
const char* VideoIOPixelFormatName(VideoIOPixelFormat format);
|
|
bool VideoIOPixelFormatIsTenBit(VideoIOPixelFormat format);
|
|
BMDPixelFormat DeckLinkPixelFormatForVideoIO(VideoIOPixelFormat format);
|
|
VideoIOPixelFormat VideoIOPixelFormatFromDeckLink(BMDPixelFormat format);
|
|
VideoIOPixelFormat ChoosePreferredVideoIOFormat(bool tenBitSupported);
|
|
unsigned PackedTextureWidthFromRowBytes(unsigned rowBytes);
|
|
unsigned MinimumV210RowBytes(unsigned frameWidth);
|
|
unsigned ActiveV210WordsForWidth(unsigned frameWidth);
|
|
V210CodeValues Rec709RgbToLegalV210(float red, float green, float blue);
|
|
std::array<uint8_t, 16> PackV210Block(const V210SixPixelBlock& block);
|
|
V210SixPixelBlock UnpackV210Block(const std::array<uint8_t, 16>& bytes);
|