Re: [PATCHv3 2/9] v4l2-mediabus: improve colorspace support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Hans,

On Wed, Dec 03, 2014 at 08:28:14AM +0100, Hans Verkuil wrote:
> On 12/03/2014 01:16 AM, Sakari Ailus wrote:
> > Hi Hans,
> > 
> > On Mon, Dec 01, 2014 at 10:03:46AM +0100, Hans Verkuil wrote:
> >> From: Hans Verkuil <hans.verkuil@xxxxxxxxx>
> >>
> >> Add and copy the new ycbcr_enc and quantization fields.
> >>
> >> Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx>
> >> ---
> >>  include/media/v4l2-mediabus.h      | 4 ++++
> >>  include/uapi/linux/v4l2-mediabus.h | 6 +++++-
> >>  2 files changed, 9 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/include/media/v4l2-mediabus.h b/include/media/v4l2-mediabus.h
> >> index 59d7397..38d960d 100644
> >> --- a/include/media/v4l2-mediabus.h
> >> +++ b/include/media/v4l2-mediabus.h
> >> @@ -94,6 +94,8 @@ static inline void v4l2_fill_pix_format(struct v4l2_pix_format *pix_fmt,
> >>  	pix_fmt->height = mbus_fmt->height;
> >>  	pix_fmt->field = mbus_fmt->field;
> >>  	pix_fmt->colorspace = mbus_fmt->colorspace;
> >> +	pix_fmt->ycbcr_enc = mbus_fmt->ycbcr_enc;
> >> +	pix_fmt->quantization = mbus_fmt->quantization;
> >>  }
> >>  
> >>  static inline void v4l2_fill_mbus_format(struct v4l2_mbus_framefmt *mbus_fmt,
> >> @@ -104,6 +106,8 @@ static inline void v4l2_fill_mbus_format(struct v4l2_mbus_framefmt *mbus_fmt,
> >>  	mbus_fmt->height = pix_fmt->height;
> >>  	mbus_fmt->field = pix_fmt->field;
> >>  	mbus_fmt->colorspace = pix_fmt->colorspace;
> >> +	mbus_fmt->ycbcr_enc = pix_fmt->ycbcr_enc;
> >> +	mbus_fmt->quantization = pix_fmt->quantization;
> >>  	mbus_fmt->code = code;
> >>  }
> >>  
> >> diff --git a/include/uapi/linux/v4l2-mediabus.h b/include/uapi/linux/v4l2-mediabus.h
> >> index b1934a3..5a86d8e 100644
> >> --- a/include/uapi/linux/v4l2-mediabus.h
> >> +++ b/include/uapi/linux/v4l2-mediabus.h
> >> @@ -22,6 +22,8 @@
> >>   * @code:	data format code (from enum v4l2_mbus_pixelcode)
> >>   * @field:	used interlacing type (from enum v4l2_field)
> >>   * @colorspace:	colorspace of the data (from enum v4l2_colorspace)
> >> + * @ycbcr_enc:	YCbCr encoding of the data (from enum v4l2_ycbcr_encoding)
> >> + * @quantization: quantization of the data (from enum v4l2_quantization)
> >>   */
> >>  struct v4l2_mbus_framefmt {
> >>  	__u32			width;
> >> @@ -29,7 +31,9 @@ struct v4l2_mbus_framefmt {
> >>  	__u32			code;
> >>  	__u32			field;
> >>  	__u32			colorspace;
> >> -	__u32			reserved[7];
> >> +	__u32			ycbcr_enc;
> >> +	__u32			quantization;
> >> +	__u32			reserved[5];
> > 
> > If you feel these can fit to 8 bits in planes, I would consider to use 8
> > bits here as well. Adding frame descriptor support later on might eat some
> > fields from here as well.
> 
> You can do this in a number of ways:
> 
> 	__u8 ycbcr_enc;
> 	__u8 quantization;
> 	__u32 reserved[6];
> 
> This would leave a hole before the reserved field. That's hard to zero.
> 
> 	__u8 ycbcr_enc;
> 	__u8 quantization;
> 	__u8 reserved[2 + 6 * 4];
> 
> This will work for now, but if a __u32 needs to be added later, then I get
> a hole again.

One option would be to add the u8's to the end.

I think the best one would be to add another reserved field.

> 	__u16 ycbcr_enc;
> 	__u16 quantization;
> 	__u32 reserved[6];
> 
> This is the only alternative that doesn't leave a hole. Would this be OK?
> I have no problem changing the API to this.

This is workable as well. Up to you.

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ailus@xxxxxx	XMPP: sailus@xxxxxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux