UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
image_pattern_ebu_smpte_bars< f, columns > Class Template Reference
Inheritance diagram for image_pattern_ebu_smpte_bars< f, columns >:
Inheritance graph
Collaboration diagram for image_pattern_ebu_smpte_bars< f, columns >:
Collaboration graph

Private Member Functions

enum generator_depth fill (int width, int height, unsigned char *data) override
 

Static Private Attributes

static constexpr uint32_t bars []
 

Friends

class image_pattern_smpte_bars
 

Additional Inherited Members

- Public Member Functions inherited from image_pattern
 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 inherited from image_pattern
static unique_ptr< image_pattern > create (string const &pattern, string const &params)
 

Detailed Description

template<uint8_t f, int columns>
class image_pattern_ebu_smpte_bars< f, columns >
Todo
Proper SMPTE test pattern has different in bottom third.

Definition at line 222 of file video_pattern_generator.cpp.

Member Function Documentation

◆ fill()

template<uint8_t f, int columns>
enum generator_depth image_pattern_ebu_smpte_bars< f, columns >::fill ( int width,
int height,
unsigned char * data )
inlineoverrideprivatevirtual
Return values
bitdepth used by the generator (either 8 or 16)

Implements image_pattern.

Reimplemented in image_pattern_smpte_bars.

Definition at line 233 of file video_pattern_generator.cpp.

233 {
234 int col_num = 0;
235 const int rect_size = (width + columns - 1) / columns;
236 struct testcard_rect r{};
237 struct testcard_pixmap pixmap{};
238 pixmap.w = width;
239 pixmap.h = height;
240 pixmap.data = data;
241 for (int j = 0; j < height; j += rect_size) {
242 for (int i = 0; i < width; i += rect_size) {
243 r.x = i;
244 r.y = j;
245 r.w = rect_size;
246 r.h = min<int>(rect_size, height - r.y);
247 log_msg(LOG_LEVEL_DEBUG, MOD_NAME "Fill rect at %d,%d\n", r.x, r.y);
248 testcard_fillRect(&pixmap, &r,
249 bars[col_num]);
250 col_num = (col_num + 1) % columns;
251 }
252 }
254 }
void log_msg(int level, const char *format,...)
Definition debug.cpp:130
#define LOG_LEVEL_DEBUG
Definition kernels.cu:48
#define min(a, b)
Definition rtp.c:99
void testcard_fillRect(struct testcard_pixmap *s, struct testcard_rect *r, uint32_t color)
#define MOD_NAME

References image_pattern_ebu_smpte_bars< f, columns >::bars, bits8, testcard_pixmap::data, testcard_pixmap::h, testcard_rect::h, LOG_LEVEL_DEBUG, log_msg(), min, MOD_NAME, testcard_fillRect(), testcard_pixmap::w, testcard_rect::w, testcard_rect::x, and testcard_rect::y.

Referenced by image_pattern_smpte_bars::fill().

Here is the call graph for this function:

Friends And Related Symbol Documentation

◆ image_pattern_smpte_bars

template<uint8_t f, int columns>
friend class image_pattern_smpte_bars
friend

Definition at line 255 of file video_pattern_generator.cpp.

Member Data Documentation

◆ bars

template<uint8_t f, int columns>
uint32_t image_pattern_ebu_smpte_bars< f, columns >::bars[]
staticconstexprprivate
Initial value:
= {
uint32_t{0xFFU << 24U | f << 16U | f << 8U | f },
uint32_t{0xFFU << 24U | 0U << 16U | f << 8U | f },
uint32_t{0xFFU << 24U | f << 16U | f << 8U | 0U },
uint32_t{0xFFU << 24U | 0U << 16U | f << 8U | 0U },
uint32_t{0xFFU << 24U | f << 16U | 0U << 8U | f },
uint32_t{0xFFU << 24U | 0U << 16U | 0U << 8U | f },
uint32_t{0xFFU << 24U | f << 16U | 0U << 8U | 0U },
uint32_t{0xFFU << 24U | 0U << 16U | 0U << 8U | 0U },
}

Definition at line 223 of file video_pattern_generator.cpp.

223 {
224 uint32_t{0xFFU << 24U | f << 16U | f << 8U | f },
225 uint32_t{0xFFU << 24U | 0U << 16U | f << 8U | f },
226 uint32_t{0xFFU << 24U | f << 16U | f << 8U | 0U },
227 uint32_t{0xFFU << 24U | 0U << 16U | f << 8U | 0U },
228 uint32_t{0xFFU << 24U | f << 16U | 0U << 8U | f },
229 uint32_t{0xFFU << 24U | 0U << 16U | 0U << 8U | f },
230 uint32_t{0xFFU << 24U | f << 16U | 0U << 8U | 0U },
231 uint32_t{0xFFU << 24U | 0U << 16U | 0U << 8U | 0U },
232 };

Referenced by image_pattern_ebu_smpte_bars< f, columns >::fill().


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