UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
still_image_video_pattern_generator Struct Reference
Inheritance diagram for still_image_video_pattern_generator:
Inheritance graph
Collaboration diagram for still_image_video_pattern_generator:
Collaboration graph

Public Member Functions

 still_image_video_pattern_generator (string const &pattern, string const &params, int w, int h, codec_t c, int o)
 
char * get_next () override
 
- Public Member Functions inherited from video_pattern_generator
virtual ~video_pattern_generator ()
 

Public Attributes

codec_t color_spec
 
long cur_pos = 0
 
vector< unsigned char > data
 
long data_len = vc_get_datalen(width, height, color_spec)
 
int height
 
long linesize = vc_get_linesize(width, color_spec)
 
int offset
 
int width
 

Detailed Description

Definition at line 666 of file video_pattern_generator.cpp.

Constructor & Destructor Documentation

◆ still_image_video_pattern_generator()

still_image_video_pattern_generator::still_image_video_pattern_generator ( string const & pattern,
string const & params,
int w,
int h,
codec_t c,
int o )
inline

Definition at line 667 of file video_pattern_generator.cpp.

668 : width(w), height(h), color_spec(c), offset(o)
669 {
670 unique_ptr<image_pattern> generator;
671 try {
673 } catch (exception const &e) {
674 LOG(LOG_LEVEL_ERROR) << MOD_NAME << e.what() << "\n";
675 throw 1;
676 }
677 if (!generator) {
678 throw 2;
679 }
680
681 data = generator->init(width, height, generator_depth::bits8);
682 codec_t codec_src = RGBA;
683 if (get_decoder_from_to(RG48, color_spec) != NULL) {
684 data = generator->init(width, height, generator_depth::bits16);
685 codec_src = RG48;
686 }
687
688 vector<unsigned char> src;
689 data.swap(src);
691 data.resize(data_len * 2);
692 testcard_convert_buffer(codec_src, color_spec, data.data(), src.data(), width, height);
693
694 if (auto *raw_generator = dynamic_cast<image_pattern_raw *>(generator.get())) {
695 raw_generator->raw_fill(data.data(), data_len);
696 }
697
698 memcpy(data.data() + data_len, data.data(), data_len);
699 }
pattern
Definition testcard.c:94
static unique_ptr< image_pattern > create(string const &pattern, string const &params)
#define LOG_LEVEL_ERROR
general errors
Definition debug.h:59
#define LOG(level)
Definition debug.h:313
decoder_t get_decoder_from_to(codec_t in, codec_t out)
void testcard_convert_buffer(codec_t in_c, codec_t out_c, unsigned char *out, unsigned const char *in, int width, int height)
codec_t
Definition types.h:65
@ RG48
16-bit RGB little-endian (RlRhGl...)
Definition types.h:95
@ RGBA
RGBA 8-bit, big-endian.
Definition types.h:70
size_t vc_get_datalen(unsigned int width, unsigned int height, codec_t codec)
#define MOD_NAME

References bits16, bits8, color_spec, image_pattern::create(), data, data_len, get_decoder_from_to(), height, LOG, LOG_LEVEL_ERROR, MOD_NAME, RG48, RGBA, testcard_convert_buffer(), vc_get_datalen(), and width.

Here is the call graph for this function:

Member Function Documentation

◆ get_next()

char * still_image_video_pattern_generator::get_next ( )
inlineoverridevirtual

Implements video_pattern_generator.

Definition at line 709 of file video_pattern_generator.cpp.

709 {
710 auto ret = (char *) data.data() + cur_pos;
711 cur_pos += offset;
712 if (cur_pos >= data_len) {
713 cur_pos = 0;
714 }
715 return ret;
716 }

References cur_pos, data, data_len, and offset.

Member Data Documentation

◆ color_spec

codec_t still_image_video_pattern_generator::color_spec

Definition at line 702 of file video_pattern_generator.cpp.

Referenced by still_image_video_pattern_generator().

◆ cur_pos

long still_image_video_pattern_generator::cur_pos = 0

Definition at line 705 of file video_pattern_generator.cpp.

Referenced by get_next().

◆ data

vector<unsigned char> still_image_video_pattern_generator::data

Definition at line 703 of file video_pattern_generator.cpp.

Referenced by still_image_video_pattern_generator(), and get_next().

◆ data_len

long still_image_video_pattern_generator::data_len = vc_get_datalen(width, height, color_spec)

Definition at line 706 of file video_pattern_generator.cpp.

Referenced by still_image_video_pattern_generator(), and get_next().

◆ height

int still_image_video_pattern_generator::height

Definition at line 701 of file video_pattern_generator.cpp.

Referenced by still_image_video_pattern_generator().

◆ linesize

long still_image_video_pattern_generator::linesize = vc_get_linesize(width, color_spec)

Definition at line 707 of file video_pattern_generator.cpp.

◆ offset

int still_image_video_pattern_generator::offset

Definition at line 704 of file video_pattern_generator.cpp.

Referenced by get_next().

◆ width

int still_image_video_pattern_generator::width

Definition at line 700 of file video_pattern_generator.cpp.

Referenced by still_image_video_pattern_generator().


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