On Friday 30 October 2009 15:01:27 Guennadi Liakhovetski wrote:
> Video subdevices, like cameras, decoders, connect to video bridges over
> specialised busses. Data is being transferred over these busses in various
> formats, which only loosely correspond to fourcc codes, describing how
> video data is stored in RAM. This is not a one-to-one correspondence,
> therefore we cannot use fourcc codes to configure subdevice output data
> formats. This patch adds codes for several such on-the-bus formats and an
> API, similar to the familiar .s_fmt(), .g_fmt(), .try_fmt(), .enum_fmt()
> API for configuring those codes. After all users of the old API in struct
> v4l2_subdev_video_ops are converted, the API will be removed.
[snip]
> diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
> index 04193eb..1e86f39 100644
> --- a/include/media/v4l2-subdev.h
> +++ b/include/media/v4l2-subdev.h
[snip]
> @@ -206,6 +207,8 @@ struct v4l2_subdev_audio_ops {
>
> s_routing: see s_routing in audio_ops, except this version is for video
> devices.
> +
> + enum_imgbus_fmt: enumerate pixel formats provided by a video data
Do we need to make that dynamic (and O(n)) or could we use a static array of
image bug frame formats ?
> source */
> struct v4l2_subdev_video_ops {
> int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u32
> config); @@ -227,6 +230,11 @@ struct v4l2_subdev_video_ops {
> int (*s_crop)(struct v4l2_subdev *sd, struct v4l2_crop *crop);
> int (*g_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
> int (*s_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
> + int (*enum_imgbus_fmt)(struct v4l2_subdev *sd, int index,
> + enum v4l2_imgbus_pixelcode *code);
> + int (*g_imgbus_fmt)(struct v4l2_subdev *sd, struct v4l2_imgbus_framefmt
> *fmt);
> + int (*try_imgbus_fmt)(struct v4l2_subdev *sd, struct
> v4l2_imgbus_framefmt
> *fmt);
> + int (*s_imgbus_fmt)(struct v4l2_subdev *sd, struct v4l2_imgbus_framefmt
> *fmt); };
Obviously those calls will need to be moved to pad operations later. They will
be exposed to userspace through ioctls on the media controller device and/or
the subdevices, so the v4l2_imgbus_pixelcode type shouldn't be an enum.
--
Regards,
Laurent Pinchart
--
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