diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2011-06-07 10:13:44 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-07-27 16:53:20 -0400 |
commit | 6e239399e5807132f86f64af6c659411c6a3d1a5 (patch) | |
tree | eeb564a25341111f1c7d6e92137e910c4e4d37f3 /include/linux/videodev2.h | |
parent | ab892bac8438c5c2ff09a60d765d9b0c14941ba9 (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.h | 29 |
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 | |||
1807 | struct 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 | |||
1802 | struct v4l2_event { | 1821 | struct 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 | |||
1814 | struct v4l2_event_subscription { | 1837 | struct 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 | /* |