[PATCH v1] v4l2-utils: Fix incorrect use of fd in streaming_set_cap2out

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Running the "Stream video from a capture video device (/dev/video1) to an
output video device (/dev/video2)" example from the manpage with vivid
as the output device failed with a error message.

vedant@pc ~$ v4l2-ctl --list-devices
vivid (platform:vivid-000):
        /dev/video2
        /dev/video3
        /dev/radio0
        /dev/radio1
        /dev/vbi0
        /dev/vbi1
        /dev/swradio0
        /dev/media1

HD WebCam: HD WebCam (usb-0000:00:14.0-7):
        /dev/video0
        /dev/video1
        /dev/media0

vedant@pc ~$ v4l2-ctl -d0 --stream-mmap --out-device /dev/video3 --stream-out-dmabuf
               VIDIOC_G_FMT returned -1 (Invalid argument)
<VIDIOC_QBUF: failed: Invalid argument
handle out -1
handle out2in -1

While using the --out-device mode g_fmt must be operated on out_fd as
well. determine_field was called on fps_timestamp object for output, but was
not passed out_fd.

This patch fixes the VIDIOC_G_FMT returned -1 (Invalid argument) error.

Signed-off-by: Vedant Paranjape <vedantparanjape160201@xxxxxxxxx>
---
 utils/v4l2-ctl/v4l2-ctl-streaming.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
index 752ea140..7f6482d6 100644
--- a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
+++ b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
@@ -2666,7 +2666,7 @@ static void streaming_set_cap2out(cv4l_fd &fd, cv4l_fd &out_fd)
 	unsigned cnt = 0;
 	cv4l_fmt fmt[2];
 
-	fd.g_fmt(fmt[OUT], out.g_type());
+	out_fd.g_fmt(fmt[OUT], out.g_type());
 	fd.g_fmt(fmt[CAP], in.g_type());
 	if (!(capabilities & (V4L2_CAP_VIDEO_CAPTURE |
 			      V4L2_CAP_VIDEO_CAPTURE_MPLANE |
@@ -2757,7 +2757,7 @@ static void streaming_set_cap2out(cv4l_fd &fd, cv4l_fd &out_fd)
 	}
 
 	fps_ts[CAP].determine_field(fd.g_fd(), in.g_type());
-	fps_ts[OUT].determine_field(fd.g_fd(), out.g_type());
+	fps_ts[OUT].determine_field(out_fd.g_fd(), out.g_type());
 
 	if (fd.streamon() || out_fd.streamon())
 		goto done;
-- 
2.25.1




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux