Thank you for the patch.
On Monday, 19 February 2018 18:59:44 EET Jacopo Mondi wrote:
> The sensor driver sets mbus format colorspace information and sizes,
> but not ycbcr encoding, quantization and xfer function. When supplied
> with an badly initialized mbus frame format structure, those fields
> need to be set explicitly not to leave them uninitialized. This is
> tested by v4l2-compliance, which supplies a mbus format description
> structure and checks for all fields to be properly set.
> Without this commit, v4l2-compliance fails when testing formats with:
> fail: v4l2-test-formats.cpp(335): ycbcr_enc >= 0xff
> Signed-off-by: Jacopo Mondi <jacopo+rene...@jmondi.org>
> drivers/media/i2c/ov7670.c | 4 ++++
> 1 file changed, 4 insertions(+)
> diff --git a/drivers/media/i2c/ov7670.c b/drivers/media/i2c/ov7670.c
> index 25b26d4..61c472e 100644
> --- a/drivers/media/i2c/ov7670.c
> +++ b/drivers/media/i2c/ov7670.c
> @@ -996,6 +996,10 @@ static int ov7670_try_fmt_internal(struct v4l2_subdev
> *sd, fmt->height = wsize->height;
> fmt->colorspace = ov7670_formats[index].colorspace;
On a side note, if I'm not mistaken the colorspace field is set to SRGB for
all entries. Shouldn't you hardcode it here and remove the field ?
> + fmt->ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT;
> + fmt->quantization = V4L2_QUANTIZATION_DEFAULT;
> + fmt->xfer_func = V4L2_XFER_FUNC_DEFAULT;
How about setting the values explicitly instead of relying on defaults ? That
would be V4L2_YCBCR_ENC_601, V4L2_QUANTIZATION_LIM_RANGE and
V4L2_XFER_FUNC_SRGB. And could you then check a captured frame to see if the
sensor outputs limited or full range ?
> info->format = *fmt;
> return 0;