Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 84b76d74 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

[media] vivid-tpg: add tpg_log_status()



Add a log_status function to the test pattern generator and use that
in vivid. This simplifies debugging complex colorspace problems.

Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 1381fb3e
Loading
Loading
Loading
Loading
+12 −1
Original line number Original line Diff line number Diff line
@@ -392,6 +392,17 @@ static int vidioc_s_parm(struct file *file, void *fh,
	return vivid_vid_out_g_parm(file, fh, parm);
	return vivid_vid_out_g_parm(file, fh, parm);
}
}


static int vidioc_log_status(struct file *file, void *fh)
{
	struct vivid_dev *dev = video_drvdata(file);
	struct video_device *vdev = video_devdata(file);

	v4l2_ctrl_log_status(file, fh);
	if (vdev->vfl_dir == VFL_DIR_RX && vdev->vfl_type == VFL_TYPE_GRABBER)
		tpg_log_status(&dev->tpg);
	return 0;
}

static ssize_t vivid_radio_read(struct file *file, char __user *buf,
static ssize_t vivid_radio_read(struct file *file, char __user *buf,
			 size_t size, loff_t *offset)
			 size_t size, loff_t *offset)
{
{
@@ -610,7 +621,7 @@ static const struct v4l2_ioctl_ops vivid_ioctl_ops = {
	.vidioc_g_edid			= vidioc_g_edid,
	.vidioc_g_edid			= vidioc_g_edid,
	.vidioc_s_edid			= vidioc_s_edid,
	.vidioc_s_edid			= vidioc_s_edid,


	.vidioc_log_status		= v4l2_ctrl_log_status,
	.vidioc_log_status		= vidioc_log_status,
	.vidioc_subscribe_event		= vidioc_subscribe_event,
	.vidioc_subscribe_event		= vidioc_subscribe_event,
	.vidioc_unsubscribe_event	= v4l2_event_unsubscribe,
	.vidioc_unsubscribe_event	= v4l2_event_unsubscribe,
};
};
+16 −0
Original line number Original line Diff line number Diff line
@@ -1670,6 +1670,22 @@ static int tpg_pattern_avg(const struct tpg_data *tpg,
	return -1;
	return -1;
}
}


void tpg_log_status(struct tpg_data *tpg)
{
	pr_info("tpg source WxH: %ux%u (%s)\n",
			tpg->src_width, tpg->src_height,
			tpg->is_yuv ? "YCbCr" : "RGB");
	pr_info("tpg field: %u\n", tpg->field);
	pr_info("tpg crop: %ux%u@%dx%d\n", tpg->crop.width, tpg->crop.height,
			tpg->crop.left, tpg->crop.top);
	pr_info("tpg compose: %ux%u@%dx%d\n", tpg->compose.width, tpg->compose.height,
			tpg->compose.left, tpg->compose.top);
	pr_info("tpg colorspace: %d\n", tpg->colorspace);
	pr_info("tpg Y'CbCr encoding: %d/%d\n", tpg->ycbcr_enc, tpg->real_ycbcr_enc);
	pr_info("tpg quantization: %d/%d\n", tpg->quantization, tpg->real_quantization);
	pr_info("tpg RGB range: %d/%d\n", tpg->rgb_range, tpg->real_rgb_range);
}

/*
/*
 * This struct contains common parameters used by both the drawing of the
 * This struct contains common parameters used by both the drawing of the
 * test pattern and the drawing of the extras (borders, square, etc.)
 * test pattern and the drawing of the extras (borders, square, etc.)
+1 −0
Original line number Original line Diff line number Diff line
@@ -192,6 +192,7 @@ int tpg_alloc(struct tpg_data *tpg, unsigned max_w);
void tpg_free(struct tpg_data *tpg);
void tpg_free(struct tpg_data *tpg);
void tpg_reset_source(struct tpg_data *tpg, unsigned width, unsigned height,
void tpg_reset_source(struct tpg_data *tpg, unsigned width, unsigned height,
		       u32 field);
		       u32 field);
void tpg_log_status(struct tpg_data *tpg);


void tpg_set_font(const u8 *f);
void tpg_set_font(const u8 *f);
void tpg_gen_text(const struct tpg_data *tpg,
void tpg_gen_text(const struct tpg_data *tpg,