35 using Trip = std::array<byte,3>;
46 y = byte(clamp ( 0 + ( 299 * r + 587 * g + 114 * b) / 1000, 16,235));
47 u = byte(clamp (128 + (-168736 * r - 331264 * g + 500000 * b) / 1000000, 0, 255));
48 v = byte(clamp (128 + ( 500000 * r - 418688 * g - 81312 * b) / 1000000, 0, 255));
56 REQUIRE (cntPix %2 == 0);
57 for (
uint i = 0; i < cntPix; i += 2)
61 Trip& rgb0 =
reinterpret_cast<Trip&
> (in[ip]);
62 Trip& rgb1 =
reinterpret_cast<Trip&
> (in[ip+3]);
66 auto& [y0,u0,v0] = yuv0;
67 auto& [y1,_u,_v] = yuv1;
91 INFO (
steam,
"ImageGen: use format %d", displayFormat);
115 for (
uint i = 0; i <
W*
H*3; i+=3)
117 auto value = byte(rand());
128 using Row = std::array<Trip, W>;
129 using Img = std::array<Row, H>;
131 Img& img =
reinterpret_cast<Img&
> (*buffer);
134 const byte ON = byte(0xC0);
138 std::array<Trip, 7> bars = {{{ ON, ON, ON}
148 for (
uint x = 0; x <
W; ++x)
155 for (
uint y = 1; y <
H; ++y)
170 rgb_buffer_to_yuy2(
workBuf_.data(), outBuff,
W*
H);
void generateNoise(DummyFrame buffer)
DummyImageGenerator(uint fps)
void generateBars(DummyFrame buffer)
fill the RGB-Buffer with the well-known NTSC colour-bar pattern
DummyFrame next()
generate the next frame and occupy the alternate buffer.
void configure(lumiera::DisplayerInput)
DummyFrame current()
just re-return a pointer to the current frame without generating any new image data
std::array< std::byte, BUFF_SIZ > outFrame_A_
alternating output buffers
void generateFrame(DummyFrame buffer)
std::array< std::byte, WORK_SIZ > workBuf_
workspace for RGB calculation
std::array< std::byte, BUFF_SIZ > outFrame_B_
Generator for test dummy video frames to simulate playback of rendered output.
DisplayerInput
Supported Displayer formats.
void rgb_buffer_to_yuy2(byte *in, byte *out, uint cntPix)
Trip rgb_to_yuv(Trip const &rgb)
slightly simplified conversion from RGB components to Y'CbCr with Rec.601 (MPEG style)
std::array< byte, 3 > Trip
Steam-Layer implementation namespace root.