Message ID | 20220104130708.166638-1-vedantparanjape160201@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v1] v4l2-utils: Fix incorrect use of fd in streaming_set_cap2out | expand |
Hi Vedant, Thank you for the patch. On Tue, Jan 04, 2022 at 06:37:08PM +0530, Vedant Paranjape wrote: > 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@gmail.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > 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;
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;
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@gmail.com> --- utils/v4l2-ctl/v4l2-ctl-streaming.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)