Lines Matching defs:tpg

3  * v4l2-tpg.h - Test Pattern Generator
236 void tpg_init(struct tpg_data *tpg, unsigned w, unsigned h);
237 int tpg_alloc(struct tpg_data *tpg, unsigned max_w);
238 void tpg_free(struct tpg_data *tpg);
239 void tpg_reset_source(struct tpg_data *tpg, unsigned width, unsigned height,
241 void tpg_log_status(struct tpg_data *tpg);
244 void tpg_gen_text(const struct tpg_data *tpg,
246 void tpg_calc_text_basep(struct tpg_data *tpg,
248 unsigned tpg_g_interleaved_plane(const struct tpg_data *tpg, unsigned buf_line);
249 void tpg_fill_plane_buffer(struct tpg_data *tpg, v4l2_std_id std,
251 void tpg_fillbuffer(struct tpg_data *tpg, v4l2_std_id std,
253 bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc);
254 void tpg_s_crop_compose(struct tpg_data *tpg, const struct v4l2_rect *crop,
256 const char *tpg_g_color_order(const struct tpg_data *tpg);
258 static inline void tpg_s_pattern(struct tpg_data *tpg, enum tpg_pattern pattern)
260 if (tpg->pattern == pattern)
262 tpg->pattern = pattern;
263 tpg->recalc_colors = true;
266 static inline void tpg_s_quality(struct tpg_data *tpg,
269 if (tpg->qual == qual && tpg->qual_offset == qual_offset)
271 tpg->qual = qual;
272 tpg->qual_offset = qual_offset;
273 tpg->recalc_colors = true;
276 static inline enum tpg_quality tpg_g_quality(const struct tpg_data *tpg)
278 return tpg->qual;
281 static inline void tpg_s_alpha_component(struct tpg_data *tpg,
284 if (tpg->alpha_component == alpha_component)
286 tpg->alpha_component = alpha_component;
287 tpg->recalc_colors = true;
290 static inline void tpg_s_alpha_mode(struct tpg_data *tpg,
293 if (tpg->alpha_red_only == red_only)
295 tpg->alpha_red_only = red_only;
296 tpg->recalc_colors = true;
299 static inline void tpg_s_brightness(struct tpg_data *tpg,
302 if (tpg->brightness == brightness)
304 tpg->brightness = brightness;
305 tpg->recalc_colors = true;
308 static inline void tpg_s_contrast(struct tpg_data *tpg,
311 if (tpg->contrast == contrast)
313 tpg->contrast = contrast;
314 tpg->recalc_colors = true;
317 static inline void tpg_s_saturation(struct tpg_data *tpg,
320 if (tpg->saturation == saturation)
322 tpg->saturation = saturation;
323 tpg->recalc_colors = true;
326 static inline void tpg_s_hue(struct tpg_data *tpg,
330 if (tpg->hue == hue)
332 tpg->hue = hue;
333 tpg->recalc_colors = true;
336 static inline void tpg_s_rgb_range(struct tpg_data *tpg,
339 if (tpg->rgb_range == rgb_range)
341 tpg->rgb_range = rgb_range;
342 tpg->recalc_colors = true;
345 static inline void tpg_s_real_rgb_range(struct tpg_data *tpg,
348 if (tpg->real_rgb_range == rgb_range)
350 tpg->real_rgb_range = rgb_range;
351 tpg->recalc_colors = true;
354 static inline void tpg_s_colorspace(struct tpg_data *tpg, u32 colorspace)
356 if (tpg->colorspace == colorspace)
358 tpg->colorspace = colorspace;
359 tpg->recalc_colors = true;
362 static inline u32 tpg_g_colorspace(const struct tpg_data *tpg)
364 return tpg->colorspace;
367 static inline void tpg_s_ycbcr_enc(struct tpg_data *tpg, u32 ycbcr_enc)
369 if (tpg->ycbcr_enc == ycbcr_enc)
371 tpg->ycbcr_enc = ycbcr_enc;
372 tpg->recalc_colors = true;
375 static inline u32 tpg_g_ycbcr_enc(const struct tpg_data *tpg)
377 return tpg->ycbcr_enc;
380 static inline void tpg_s_hsv_enc(struct tpg_data *tpg, u32 hsv_enc)
382 if (tpg->hsv_enc == hsv_enc)
384 tpg->hsv_enc = hsv_enc;
385 tpg->recalc_colors = true;
388 static inline u32 tpg_g_hsv_enc(const struct tpg_data *tpg)
390 return tpg->hsv_enc;
393 static inline void tpg_s_xfer_func(struct tpg_data *tpg, u32 xfer_func)
395 if (tpg->xfer_func == xfer_func)
397 tpg->xfer_func = xfer_func;
398 tpg->recalc_colors = true;
401 static inline u32 tpg_g_xfer_func(const struct tpg_data *tpg)
403 return tpg->xfer_func;
406 static inline void tpg_s_quantization(struct tpg_data *tpg, u32 quantization)
408 if (tpg->quantization == quantization)
410 tpg->quantization = quantization;
411 tpg->recalc_colors = true;
414 static inline u32 tpg_g_quantization(const struct tpg_data *tpg)
416 return tpg->quantization;
419 static inline unsigned tpg_g_buffers(const struct tpg_data *tpg)
421 return tpg->buffers;
424 static inline unsigned tpg_g_planes(const struct tpg_data *tpg)
426 return tpg->interleaved ? 1 : tpg->planes;
429 static inline bool tpg_g_interleaved(const struct tpg_data *tpg)
431 return tpg->interleaved;
434 static inline unsigned tpg_g_twopixelsize(const struct tpg_data *tpg, unsigned plane)
436 return tpg->twopixelsize[plane];
439 static inline unsigned tpg_hdiv(const struct tpg_data *tpg,
442 return ((x / tpg->hdownsampling[plane]) & tpg->hmask[plane]) *
443 tpg->twopixelsize[plane] / 2;
446 static inline unsigned tpg_hscale(const struct tpg_data *tpg, unsigned x)
448 return (x * tpg->scaled_width) / tpg->src_width;
451 static inline unsigned tpg_hscale_div(const struct tpg_data *tpg,
454 return tpg_hdiv(tpg, plane, tpg_hscale(tpg, x));
457 static inline unsigned tpg_g_bytesperline(const struct tpg_data *tpg, unsigned plane)
459 return tpg->bytesperline[plane];
462 static inline void tpg_s_bytesperline(struct tpg_data *tpg, unsigned plane, unsigned bpl)
466 if (tpg->buffers > 1) {
467 tpg->bytesperline[plane] = bpl;
471 for (p = 0; p < tpg_g_planes(tpg); p++) {
472 unsigned plane_w = bpl * tpg->twopixelsize[p] / tpg->twopixelsize[0];
474 tpg->bytesperline[p] = plane_w / tpg->hdownsampling[p];
476 if (tpg_g_interleaved(tpg))
477 tpg->bytesperline[1] = tpg->bytesperline[0];
481 static inline unsigned tpg_g_line_width(const struct tpg_data *tpg, unsigned plane)
486 if (tpg->buffers > 1)
487 return tpg_g_bytesperline(tpg, plane);
488 for (p = 0; p < tpg_g_planes(tpg); p++) {
489 unsigned plane_w = tpg_g_bytesperline(tpg, p);
491 w += plane_w / tpg->vdownsampling[p];
496 static inline unsigned tpg_calc_line_width(const struct tpg_data *tpg,
502 if (tpg->buffers > 1)
504 for (p = 0; p < tpg_g_planes(tpg); p++) {
505 unsigned plane_w = bpl * tpg->twopixelsize[p] / tpg->twopixelsize[0];
507 plane_w /= tpg->hdownsampling[p];
508 w += plane_w / tpg->vdownsampling[p];
513 static inline unsigned tpg_calc_plane_size(const struct tpg_data *tpg, unsigned plane)
515 if (plane >= tpg_g_planes(tpg))
518 return tpg_g_bytesperline(tpg, plane) * tpg->buf_height /
519 tpg->vdownsampling[plane];
522 static inline void tpg_s_buf_height(struct tpg_data *tpg, unsigned h)
524 tpg->buf_height = h;
527 static inline void tpg_s_field(struct tpg_data *tpg, unsigned field, bool alternate)
529 tpg->field = field;
530 tpg->field_alternate = alternate;
533 static inline void tpg_s_perc_fill(struct tpg_data *tpg,
536 tpg->perc_fill = perc_fill;
539 static inline unsigned tpg_g_perc_fill(const struct tpg_data *tpg)
541 return tpg->perc_fill;
544 static inline void tpg_s_perc_fill_blank(struct tpg_data *tpg,
547 tpg->perc_fill_blank = perc_fill_blank;
550 static inline void tpg_s_video_aspect(struct tpg_data *tpg,
553 if (tpg->vid_aspect == vid_aspect)
555 tpg->vid_aspect = vid_aspect;
556 tpg->recalc_square_border = true;
559 static inline enum tpg_video_aspect tpg_g_video_aspect(const struct tpg_data *tpg)
561 return tpg->vid_aspect;
564 static inline void tpg_s_pixel_aspect(struct tpg_data *tpg,
567 if (tpg->pix_aspect == pix_aspect)
569 tpg->pix_aspect = pix_aspect;
570 tpg->recalc_square_border = true;
573 static inline void tpg_s_show_border(struct tpg_data *tpg,
576 tpg->show_border = show_border;
579 static inline void tpg_s_show_square(struct tpg_data *tpg,
582 tpg->show_square = show_square;
585 static inline void tpg_s_insert_sav(struct tpg_data *tpg, bool insert_sav)
587 tpg->insert_sav = insert_sav;
590 static inline void tpg_s_insert_eav(struct tpg_data *tpg, bool insert_eav)
592 tpg->insert_eav = insert_eav;
604 static inline void tpg_s_insert_hdmi_video_guard_band(struct tpg_data *tpg,
607 tpg->insert_hdmi_video_guard_band = insert_hdmi_video_guard_band;
610 void tpg_update_mv_step(struct tpg_data *tpg);
612 static inline void tpg_s_mv_hor_mode(struct tpg_data *tpg,
615 tpg->mv_hor_mode = mv_hor_mode;
616 tpg_update_mv_step(tpg);
619 static inline void tpg_s_mv_vert_mode(struct tpg_data *tpg,
622 tpg->mv_vert_mode = mv_vert_mode;
623 tpg_update_mv_step(tpg);
626 static inline void tpg_init_mv_count(struct tpg_data *tpg)
628 tpg->mv_hor_count = tpg->mv_vert_count = 0;
631 static inline void tpg_update_mv_count(struct tpg_data *tpg, bool frame_is_field)
633 tpg->mv_hor_count += tpg->mv_hor_step * (frame_is_field ? 1 : 2);
634 tpg->mv_vert_count += tpg->mv_vert_step * (frame_is_field ? 1 : 2);
637 static inline void tpg_s_hflip(struct tpg_data *tpg, bool hflip)
639 if (tpg->hflip == hflip)
641 tpg->hflip = hflip;
642 tpg_update_mv_step(tpg);
643 tpg->recalc_lines = true;
646 static inline bool tpg_g_hflip(const struct tpg_data *tpg)
648 return tpg->hflip;
651 static inline void tpg_s_vflip(struct tpg_data *tpg, bool vflip)
653 tpg->vflip = vflip;
656 static inline bool tpg_g_vflip(const struct tpg_data *tpg)
658 return tpg->vflip;
661 static inline bool tpg_pattern_is_static(const struct tpg_data *tpg)
663 return tpg->pattern != TPG_PAT_NOISE &&
664 tpg->mv_hor_mode == TPG_MOVE_NONE &&
665 tpg->mv_vert_mode == TPG_MOVE_NONE;