aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/videodev2.h
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2011-06-07 10:13:44 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-07-27 16:53:20 -0400
commit6e239399e5807132f86f64af6c659411c6a3d1a5 (patch)
treeeeb564a25341111f1c7d6e92137e910c4e4d37f3 /include/linux/videodev2.h
parentab892bac8438c5c2ff09a60d765d9b0c14941ba9 (diff)
[media] v4l2-ctrls: add control events
Whenever a control changes value or state an event is sent to anyone that subscribed to it. This functionality is useful for control panels but also for applications that need to wait for (usually status) controls to change value. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'include/linux/videodev2.h')
-rw-r--r--include/linux/videodev2.h29
1 files changed, 27 insertions, 2 deletions
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 8a4c309d2344..baafe2f2e02a 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -1791,6 +1791,7 @@ struct v4l2_streamparm {
1791#define V4L2_EVENT_ALL 0 1791#define V4L2_EVENT_ALL 0
1792#define V4L2_EVENT_VSYNC 1 1792#define V4L2_EVENT_VSYNC 1
1793#define V4L2_EVENT_EOS 2 1793#define V4L2_EVENT_EOS 2
1794#define V4L2_EVENT_CTRL 3
1794#define V4L2_EVENT_PRIVATE_START 0x08000000 1795#define V4L2_EVENT_PRIVATE_START 0x08000000
1795 1796
1796/* Payload for V4L2_EVENT_VSYNC */ 1797/* Payload for V4L2_EVENT_VSYNC */
@@ -1799,21 +1800,45 @@ struct v4l2_event_vsync {
1799 __u8 field; 1800 __u8 field;
1800} __attribute__ ((packed)); 1801} __attribute__ ((packed));
1801 1802
1803/* Payload for V4L2_EVENT_CTRL */
1804#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
1805#define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
1806
1807struct v4l2_event_ctrl {
1808 __u32 changes;
1809 __u32 type;
1810 union {
1811 __s32 value;
1812 __s64 value64;
1813 };
1814 __u32 flags;
1815 __s32 minimum;
1816 __s32 maximum;
1817 __s32 step;
1818 __s32 default_value;
1819};
1820
1802struct v4l2_event { 1821struct v4l2_event {
1803 __u32 type; 1822 __u32 type;
1804 union { 1823 union {
1805 struct v4l2_event_vsync vsync; 1824 struct v4l2_event_vsync vsync;
1825 struct v4l2_event_ctrl ctrl;
1806 __u8 data[64]; 1826 __u8 data[64];
1807 } u; 1827 } u;
1808 __u32 pending; 1828 __u32 pending;
1809 __u32 sequence; 1829 __u32 sequence;
1810 struct timespec timestamp; 1830 struct timespec timestamp;
1811 __u32 reserved[9]; 1831 __u32 id;
1832 __u32 reserved[8];
1812}; 1833};
1813 1834
1835#define V4L2_EVENT_SUB_FL_SEND_INITIAL (1 << 0)
1836
1814struct v4l2_event_subscription { 1837struct v4l2_event_subscription {
1815 __u32 type; 1838 __u32 type;
1816 __u32 reserved[7]; 1839 __u32 id;
1840 __u32 flags;
1841 __u32 reserved[5];
1817}; 1842};
1818 1843
1819/* 1844/*