UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
image_pattern Class Referenceabstract
Inheritance diagram for image_pattern:
Inheritance graph
Collaboration diagram for image_pattern:
Collaboration graph

Public Member Functions

 image_pattern ()=default
 
 image_pattern (const image_pattern &)=delete
 
 image_pattern (image_pattern &&)=delete
 
virtual ~image_pattern ()=default
 
auto init (int width, int height, enum generator_depth depth) noexcept
 
image_pattern & operator= (const image_pattern &)=delete
 
image_pattern && operator= (image_pattern &&)=delete
 

Static Public Member Functions

static unique_ptr< image_pattern > create (string const &pattern, string const &params)
 

Private Member Functions

virtual void convert_rg48_to_rgba (int width, int height, unsigned char *data)
 
virtual void convert_rgba_to_rg48 (int width, int height, unsigned char *data)
 
virtual enum generator_depth fill (int width, int height, unsigned char *data)=0
 

Detailed Description

Definition at line 103 of file video_pattern_generator.cpp.

Constructor & Destructor Documentation

◆ ~image_pattern()

virtual image_pattern::~image_pattern ( )
virtualdefault

◆ image_pattern() [1/3]

image_pattern::image_pattern ( )
default

◆ image_pattern() [2/3]

image_pattern::image_pattern ( const image_pattern & )
delete

◆ image_pattern() [3/3]

image_pattern::image_pattern ( image_pattern && )
delete

Member Function Documentation

◆ convert_rg48_to_rgba()

virtual void image_pattern::convert_rg48_to_rgba ( int width,
int height,
unsigned char * data )
inlineprivatevirtual
Note
in-place

Definition at line 147 of file video_pattern_generator.cpp.

147 {
148 for (int y = 0; y < height; ++y) {
149 for (int x = 0; x < width; ++x) {
150 unsigned char *in_pix = data + 6 * (y * width + x);
151 unsigned char *out_pix = data + 4 * (y * width + x);
152 *out_pix++ = in_pix[1];
153 *out_pix++ = in_pix[3];
154 *out_pix++ = in_pix[5];
155 *out_pix++ = 0xFFU;
156 }
157 }
158 }

Referenced by init().

◆ convert_rgba_to_rg48()

virtual void image_pattern::convert_rgba_to_rg48 ( int width,
int height,
unsigned char * data )
inlineprivatevirtual
Note
in-place

Definition at line 129 of file video_pattern_generator.cpp.

129 {
130 for (int y = height - 1; y >= 0; --y) {
131 for (int x = width - 1; x >= 0; --x) {
132 unsigned char *in_pix = data + 4 * (y * width + x);
133 unsigned char *out_pix = data + 6 * (y * width + x);
134 unsigned char r = *in_pix++;
135 unsigned char g = *in_pix++;
136 unsigned char b = *in_pix++;
137 *out_pix++ = 0;
138 *out_pix++ = r;
139 *out_pix++ = 0;
140 *out_pix++ = g;
141 *out_pix++ = 0;
142 *out_pix++ = b;
143 }
144 }
145 }

Referenced by init().

◆ create()

unique_ptr< image_pattern > image_pattern::create ( string const & pattern,
string const & params )
static

Definition at line 621 of file video_pattern_generator.cpp.

621 {
622 if (pattern == "bars") {
623 return make_unique<image_pattern_bars>(params);
624 }
625 if (pattern == "blank") {
626 return make_unique<image_pattern_blank>(params);
627 }
628 if (pattern == "ebu_bars") {
629 return make_unique<image_pattern_ebu_smpte_bars<0xFFU, 8>>();
630 }
631 if (pattern == "gradient") {
632 return make_unique<image_pattern_gradient>(params);
633 }
634 if (pattern == "gradient2") {
635 return make_unique<image_pattern_gradient2>(params);
636 }
637 if (pattern == "noise") {
638 return make_unique<image_pattern_noise>();
639 }
640 if (pattern == "raw") {
641 return make_unique<image_pattern_raw>(params);
642 }
643 if (pattern == "smpte_bars") {
644 return make_unique<image_pattern_smpte_bars>();
645 }
646 if (pattern == "strips") {
647 return make_unique<image_pattern_strips>(params);
648 }
649 if (pattern == "text") {
650 return make_unique<image_pattern_text>(params);
651 }
652 if (pattern == "uv_plane") {
653 return make_unique<image_pattern_uv_plane>(params);
654 }
655 if (pattern == "diagonal") {
656 return make_unique<image_pattern_diagonal>(params);
657 }
658 throw ug_runtime_error("Unknown pattern: "s + pattern + "!"s);
659}
pattern
Definition testcard.c:94

Referenced by still_image_video_pattern_generator::still_image_video_pattern_generator().

◆ fill()

virtual enum generator_depth image_pattern::fill ( int width,
int height,
unsigned char * data )
privatepure virtual

◆ init()

auto image_pattern::init ( int width,
int height,
enum generator_depth depth )
inlinenoexcept

Definition at line 106 of file video_pattern_generator.cpp.

106 {
107 size_t data_len = width * height * rg48_bpp + headroom;
108 vector<unsigned char> out(data_len);
109 auto actual_bit_depth = fill(width, height, out.data());
110 if (depth == generator_depth::bits8 && actual_bit_depth == generator_depth::bits16) {
111 convert_rg48_to_rgba(width, height, out.data());
112 }
113 if (depth == generator_depth::bits16 && actual_bit_depth == generator_depth::bits8) {
114 convert_rgba_to_rg48(width, height, out.data());
115 }
116 return out;
117 }
virtual void convert_rg48_to_rgba(int width, int height, unsigned char *data)
virtual enum generator_depth fill(int width, int height, unsigned char *data)=0
virtual void convert_rgba_to_rg48(int width, int height, unsigned char *data)
depth
Definition types.h:125
constexpr int rg48_bpp
constexpr size_t headroom

References bits16, bits8, convert_rg48_to_rgba(), convert_rgba_to_rg48(), fill(), headroom, and rg48_bpp.

Referenced by image_pattern_bars::image_pattern_bars(), and image_pattern_blank::image_pattern_blank().

Here is the call graph for this function:

◆ operator=() [1/2]

image_pattern & image_pattern::operator= ( const image_pattern & )
delete

◆ operator=() [2/2]

image_pattern && image_pattern::operator= ( image_pattern && )
delete

The documentation for this class was generated from the following file: