This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/cgit.cgi/v4l-utils.git tree:

Subject: v4l2-ctl: Check for Streams API support
Author:  Tomi Valkeinen <[email protected]>
Date:    Tue Aug 8 09:19:27 2023 +0300

Return an error if the user tries to use streams related features, but
streams are not supported.

Signed-off-by: Tomi Valkeinen <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>

 utils/v4l2-ctl/v4l2-ctl-subdev.cpp | 55 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

---

http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=6423a8f9116407494128032c79733aaf7ecc69ea
diff --git a/utils/v4l2-ctl/v4l2-ctl-subdev.cpp 
b/utils/v4l2-ctl/v4l2-ctl-subdev.cpp
index d906b72da396..b6d115fea108 100644
--- a/utils/v4l2-ctl/v4l2-ctl-subdev.cpp
+++ b/utils/v4l2-ctl/v4l2-ctl-subdev.cpp
@@ -562,6 +562,11 @@ void subdev_set(cv4l_fd &_fd)
        if (options[OptSetSubDevFormat] || options[OptTrySubDevFormat]) {
                struct v4l2_subdev_format fmt;
 
+               if (!_fd.has_streams() && set_fmt_stream) {
+                       printf("Streams API not supported.\n");
+                       return;
+               }
+
                memset(&fmt, 0, sizeof(fmt));
                fmt.pad = set_fmt_pad;
                fmt.stream = set_fmt_stream;
@@ -610,6 +615,11 @@ void subdev_set(cv4l_fd &_fd)
        if (options[OptSetSubDevSelection] || options[OptTrySubDevSelection]) {
                struct v4l2_subdev_selection sel;
 
+               if (!_fd.has_streams() && vsel.stream) {
+                       printf("Streams API not supported.\n");
+                       return;
+               }
+
                memset(&sel, 0, sizeof(sel));
                sel.pad = vsel.pad;
                sel.stream = vsel.stream;
@@ -642,6 +652,11 @@ void subdev_set(cv4l_fd &_fd)
        if (options[OptSetSubDevFPS]) {
                struct v4l2_subdev_frame_interval fival;
 
+               if (!_fd.has_streams() && set_fps_stream) {
+                       printf("Streams API not supported.\n");
+                       return;
+               }
+
                memset(&fival, 0, sizeof(fival));
                fival.pad = set_fps_pad;
                fival.stream = set_fps_stream;
@@ -667,6 +682,11 @@ void subdev_set(cv4l_fd &_fd)
                }
        }
        if (options[OptSetRouting]) {
+               if (!_fd.has_streams()) {
+                       printf("Streams API not supported.\n");
+                       return;
+               }
+
                if (doioctl(fd, VIDIOC_SUBDEV_S_ROUTING, &routing) == 0)
                        printf("Routing set\n");
        }
@@ -724,6 +744,11 @@ void subdev_get(cv4l_fd &_fd)
        if (options[OptGetSubDevFormat]) {
                struct v4l2_subdev_format fmt;
 
+               if (!_fd.has_streams() && get_fmt_stream) {
+                       printf("Streams API not supported.\n");
+                       return;
+               }
+
                memset(&fmt, 0, sizeof(fmt));
                fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
                fmt.pad = get_fmt_pad;
@@ -738,6 +763,11 @@ void subdev_get(cv4l_fd &_fd)
                struct v4l2_subdev_selection sel;
                unsigned idx = 0;
 
+               if (!_fd.has_streams() && get_sel_stream) {
+                       printf("Streams API not supported.\n");
+                       return;
+               }
+
                memset(&sel, 0, sizeof(sel));
                sel.which = V4L2_SUBDEV_FORMAT_ACTIVE;
                sel.pad = get_sel_pad;
@@ -760,6 +790,11 @@ void subdev_get(cv4l_fd &_fd)
        if (options[OptGetSubDevFPS]) {
                struct v4l2_subdev_frame_interval fival;
 
+               if (!_fd.has_streams() && get_fps_stream) {
+                       printf("Streams API not supported.\n");
+                       return;
+               }
+
                memset(&fival, 0, sizeof(fival));
                fival.pad = get_fps_pad;
                fival.stream = get_fps_stream;
@@ -777,6 +812,11 @@ void subdev_get(cv4l_fd &_fd)
        }
 
        if (options[OptGetRouting]) {
+               if (!_fd.has_streams()) {
+                       printf("Streams API not supported.\n");
+                       return;
+               }
+
                memset(&routing, 0, sizeof(routing));
                memset(routes, 0, sizeof(routes[0]) * NUM_ROUTES_MAX);
                routing.which = V4L2_SUBDEV_FORMAT_ACTIVE;
@@ -860,11 +900,21 @@ void subdev_list(cv4l_fd &_fd)
        int fd = _fd.g_fd();
 
        if (options[OptListSubDevMBusCodes]) {
+               if (!_fd.has_streams() && list_mbus_codes_stream) {
+                       printf("Streams API not supported.\n");
+                       return;
+               }
+
                printf("ioctl: VIDIOC_SUBDEV_ENUM_MBUS_CODE 
(pad=%u,stream=%u)\n",
                       list_mbus_codes_pad, list_mbus_codes_stream);
                print_mbus_codes(fd, list_mbus_codes_pad, 
list_mbus_codes_stream);
        }
        if (options[OptListSubDevFrameSizes]) {
+               if (!_fd.has_streams() && frmsize.stream) {
+                       printf("Streams API not supported.\n");
+                       return;
+               }
+
                printf("ioctl: VIDIOC_SUBDEV_ENUM_FRAME_SIZE 
(pad=%u,stream=%u)\n",
                       frmsize.pad, frmsize.stream);
                frmsize.index = 0;
@@ -875,6 +925,11 @@ void subdev_list(cv4l_fd &_fd)
                }
        }
        if (options[OptListSubDevFrameIntervals]) {
+               if (!_fd.has_streams() && frmival.stream) {
+                       printf("Streams API not supported.\n");
+                       return;
+               }
+
                printf("ioctl: VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL 
(pad=%u,stream=%u)\n",
                       frmival.pad, frmival.stream);
                frmival.index = 0;

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to