On Monday 12 July 2010 11:14:30 Pawel Osciak wrote:
> Hi Hans,
>
> thank you for your comments as always.
>
> >Hans Verkuil wrote <[email protected]>:
> >Hi Pawel,
> >
> >Looks good, but I have a few small suggestions:
> >
> >On Friday 09 July 2010 20:59:45 Pawel Osciak wrote:
>
> (snip)
>
> >> struct v4l2_format {
> >> enum v4l2_buf_type type;
> >> union {
> >> struct v4l2_pix_format pix; /*
> >V4L2_BUF_TYPE_VIDEO_CAPTURE */
> >> + struct v4l2_pix_format_mplane mp_pix; /*
> >V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */
> >
> >I would probably go with pix_mp to be consistent with the name of the struct.
> >
>
> ok.
>
> >> +/**
> >> + * struct v4l2_pix_format_mplane - multiplanar format definition
> >> + * @pix_fmt: definition of an image format for all planes
> >> + * @plane_fmt: per-plane information
> >> + */
> >> +struct v4l2_pix_format_mplane {
> >> + struct v4l2_pix_format pix_fmt;
> >> + struct v4l2_plane_format plane_fmt[VIDEO_MAX_PLANES];
> >> +} __attribute__ ((packed));
> >
> >How do you know how many planes there are? I wonder whether it wouldn't be
> >smarter
> >to just copy the relevant fields from struct v4l2_pix_format to struct
> >v4l2_pix_format_mplane
> >instead of embedded that struct. That way you can 1) add a 'planes' field and
> >2) get rid
> >of the no longer needed bytesperline and sizeimage fields. And I think the
> >priv field
> >should also go, just have a reserved[2] instead.
> >
>
> By mean "planes" you mean a field indicating the number of planes in the
> current format, right?
Right.
> Number of planes can be inferred from fourcc, but you are right, it's still
> useful to have to have a field for that.
You really don't want to have a switch on the fourcc just to determine the
number
of planes. Creating a separate field will make life much easier.
>
> What do you think of this:
>
> /**
> * struct v4l2_pix_format_mplane - multiplanar format definition
> * @width: image width in pixels
> * @height: image height in pixels
> * @pixelformat: little endian four character code (fourcc)
> * @field: field order (for interlaced video)
> * @colorspace: supplemental to pixelformat
> * @plane_fmt: per-plane information
> * @num_planes: number of planes for this format and number of
> valid
> * elements in plane_fmt array
> */
> struct v4l2_pix_format_mplane {
> __u32 width;
> __u32 height;
> __u32 pixelformat;
> enum v4l2_field field;
> enum v4l2_colorspace colorspace;
>
> struct v4l2_plane_format plane_fmt[VIDEO_MAX_PLANES];
> __u8 num_planes;
> __u8 reserved[11];
> } __attribute__ ((packed));
>
> v4l2_plane_format stays the same (see below).
>
> 8 * struct v4l2_plane_format + 3 * 4 + 2 * enum + 12 * 1 = 8 * 20 + 40 = 200
Looks good.
Regards,
Hans
--
Hans Verkuil - video4linux developer - sponsored by TANDBERG, part of Cisco
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html