aboutsummaryrefslogtreecommitdiffstats
path: root/include/media
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2010-03-15 19:26:04 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-03-22 03:53:31 -0400
commit333c8b97785d5afd5085ba3720b4d259623290f6 (patch)
tree3cba92af1765957c68f74042dea1873481554ede /include/media
parentd3a7ed99759b18e4fd19b8ddd226f8085b8bd975 (diff)
[media] v4l: v4l2_subdev userspace format API
Add a userspace API to get, set and enumerate the media format on a subdev pad. The format at the output of a subdev usually depends on the format at its input(s). The try format operation is thus not suitable for probing format at individual pads, as it can't modify the device state and thus can't remember the format tried at the input to compute the output format. To fix the problem, pass an extra argument to the get/set format operations to select the 'try' or 'active' format. The try format is used when probing the subdev. Setting the try format must not change the device configuration but can store data for later reuse. Data storage is provided at the file-handle level so applications probing the subdev concurently won't interfere with each other. The active format is used when configuring the subdev. It's identical to the format handled by the usual get/set operations. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Stanimir Varbanov <svarbanov@mm-sol.com> Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi> Acked-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'include/media')
-rw-r--r--include/media/v4l2-subdev.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
index d4d3653426a9..4215650151be 100644
--- a/include/media/v4l2-subdev.h
+++ b/include/media/v4l2-subdev.h
@@ -21,6 +21,7 @@
21#ifndef _V4L2_SUBDEV_H 21#ifndef _V4L2_SUBDEV_H
22#define _V4L2_SUBDEV_H 22#define _V4L2_SUBDEV_H
23 23
24#include <linux/v4l2-subdev.h>
24#include <media/media-entity.h> 25#include <media/media-entity.h>
25#include <media/v4l2-common.h> 26#include <media/v4l2-common.h>
26#include <media/v4l2-dev.h> 27#include <media/v4l2-dev.h>
@@ -414,6 +415,15 @@ struct v4l2_subdev_ir_ops {
414}; 415};
415 416
416struct v4l2_subdev_pad_ops { 417struct v4l2_subdev_pad_ops {
418 int (*enum_mbus_code)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
419 struct v4l2_subdev_mbus_code_enum *code);
420 int (*enum_frame_size)(struct v4l2_subdev *sd,
421 struct v4l2_subdev_fh *fh,
422 struct v4l2_subdev_frame_size_enum *fse);
423 int (*get_fmt)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
424 struct v4l2_subdev_format *format);
425 int (*set_fmt)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
426 struct v4l2_subdev_format *format);
417}; 427};
418 428
419struct v4l2_subdev_ops { 429struct v4l2_subdev_ops {