From 26fe582366bab6c781a5cea398a3937c026901c8 Mon Sep 17 00:00:00 2001 From: "Edward W. Koenig" Date: Wed, 10 May 2023 19:00:35 -0700 Subject: system/v4l2loopback: Updated for version 0.12.7 Signed-off-by: Edward W. Koenig Signed-off-by: Willy Sudiarto Raharjo --- .../v4l2loopback/update_to_master_17JUN2020.patch | 671 --------------------- system/v4l2loopback/v4l2loopback.SlackBuild | 11 +- system/v4l2loopback/v4l2loopback.info | 4 +- 3 files changed, 3 insertions(+), 683 deletions(-) delete mode 100644 system/v4l2loopback/update_to_master_17JUN2020.patch diff --git a/system/v4l2loopback/update_to_master_17JUN2020.patch b/system/v4l2loopback/update_to_master_17JUN2020.patch deleted file mode 100644 index cd4418510252..000000000000 --- a/system/v4l2loopback/update_to_master_17JUN2020.patch +++ /dev/null @@ -1,671 +0,0 @@ -diff --git a/README.md b/README.md -index d8b295a..d8d338b 100644 ---- a/README.md -+++ b/README.md -@@ -18,9 +18,31 @@ only be of limited use... - - # ISSUES - for current issues, checkout https://github.com/umlaeute/v4l2loopback/issues --please use the issue-tracker for reporting any problems -+please use the issue-tracker for reporting any problems. -+ -+before you create a new ticket in our issue tracker, please make sure that you have read -+*this* document and followed any instructions found within. -+ -+also, please search the issue-tracker *before* reporting any problems: it's much better -+to add your information to an existing ticket than to create a new ticket with essentially -+the same information. -+ -+## SEEKING HELP -+the issue tracker is meant to track specific bugs in the code (and new features). -+however, it is ill-suited as a user support forum. -+ -+if you have general questions or problems, please use the `v4l2loopback` tag -+on [Stack Overflow](https://stackoverflow.com/questions/tagged/v4l2loopback) instead: -+https://stackoverflow.com/questions/tagged/v4l2loopback -+ - - # DEPENDENCIES -+in order to build (compile,...) anything, you must have a *working* build-environment -+(compiler, GNU make,...). -+the kernel can be somewhat picky if you try to load a module that was compiled with -+a different compiler than was used to compile the kernel itself. -+so make sure to have the right compiler in place. -+ - the v4l2loopback module is a *kernel module*. - in order to build it, you *must have* the kernel headers installed that match - the linux kernel with which you want to use the module (in most cases this will -@@ -31,6 +53,12 @@ the first few number are the same. - (modules will be incompatible if the versions don't match. if you are lucky, the module will - simply refuse to load. if you are unlucky, your computer will spit in your eye or do worse.) - -+there are distribution-specific differences on how to get the correct kernel headers -+(or to install a compilation toolchain). -+documenting all those possibilities would go far beyond the scope of `v4l2loopback`. -+please understnd that we cannot provide support for questions regarding dependencies. -+ -+ - # BUILD - to build the kernel module run: - -diff --git a/v4l2loopback.c b/v4l2loopback.c -index bcf7667..b0f7b93 100644 ---- a/v4l2loopback.c -+++ b/v4l2loopback.c -@@ -48,9 +48,9 @@ - - MODULE_DESCRIPTION("V4L2 loopback video device"); - MODULE_AUTHOR("Vasily Levin, " \ -- "IOhannes m zmoelnig ," \ -- "Stefan Diewald," \ -- "Anton Novikov" \ -+ "IOhannes m zmoelnig ," \ -+ "Stefan Diewald," \ -+ "Anton Novikov" \ - "et al." \ - ); - MODULE_LICENSE("GPL"); -@@ -61,18 +61,18 @@ MODULE_LICENSE("GPL"); - #define STRINGIFY(s) #s - #define STRINGIFY2(s) STRINGIFY(s) - --#define dprintk(fmt, args...) \ -- do { if (debug > 0) { \ -+#define dprintk(fmt, args...) \ -+ do { if (debug > 0) { \ - printk(KERN_INFO "v4l2-loopback[" STRINGIFY2(__LINE__) "]: " fmt, ##args); \ - } } while (0) - --#define MARK() \ -- do { if (debug > 1) { \ -+#define MARK() \ -+ do { if (debug > 1) { \ - printk(KERN_INFO "%s:%d[%s]\n", __FILE__, __LINE__, __func__); \ - } } while (0) - --#define dprintkrw(fmt, args...) \ -- do { if (debug > 2) { \ -+#define dprintkrw(fmt, args...) \ -+ do { if (debug > 2) { \ - printk(KERN_INFO "v4l2-loopback[" STRINGIFY2(__LINE__)"]: " fmt, ##args); \ - } } while (0) - -@@ -85,14 +85,14 @@ struct v4l2_ctrl_handler { - int error; - }; - struct v4l2_ctrl_config { -- void *ops; -- u32 id; -+ void *ops; -+ u32 id; - const char *name; - int type; -- s32 min; -- s32 max; -- u32 step; -- s32 def; -+ s32 min; -+ s32 max; -+ u32 step; -+ s32 def; - }; - int v4l2_ctrl_handler_init(struct v4l2_ctrl_handler*hdl, - unsigned nr_of_controls_hint) -@@ -119,7 +119,7 @@ struct v4l2_device { - char name[V4L2_DEVICE_NAME_SIZE]; - struct v4l2_ctrl_handler*ctrl_handler; - }; --static inline int v4l2_device_register (void *dev, void *v4l2_dev) { return 0; } -+static inline int v4l2_device_register(void *dev, void *v4l2_dev) { return 0; } - static inline void v4l2_device_unregister(struct v4l2_device *v4l2_dev) { return; } - #endif /* HAVE__V4L2_DEVICE */ - -@@ -155,7 +155,7 @@ static inline void v4l2l_get_timestamp(struct v4l2_buffer *b) { - - /* module constants - * can be overridden during he build process using something like -- * make KCPPFLAGS="-DMAX_DEVICES=100" -+ * make KCPPFLAGS="-DMAX_DEVICES=100" - */ - - -@@ -235,13 +235,13 @@ MODULE_PARM_DESC(max_height, "maximum frame height"); - - /* control IDs */ - #ifndef HAVE__V4L2_CTRLS --# define V4L2LOOPBACK_CID_BASE (V4L2_CID_PRIVATE_BASE) -+# define V4L2LOOPBACK_CID_BASE (V4L2_CID_PRIVATE_BASE) - #else --# define V4L2LOOPBACK_CID_BASE (V4L2_CID_USER_BASE | 0xf000) -+# define V4L2LOOPBACK_CID_BASE (V4L2_CID_USER_BASE | 0xf000) - #endif --#define CID_KEEP_FORMAT (V4L2LOOPBACK_CID_BASE + 0) -+#define CID_KEEP_FORMAT (V4L2LOOPBACK_CID_BASE + 0) - #define CID_SUSTAIN_FRAMERATE (V4L2LOOPBACK_CID_BASE + 1) --#define CID_TIMEOUT (V4L2LOOPBACK_CID_BASE + 2) -+#define CID_TIMEOUT (V4L2LOOPBACK_CID_BASE + 2) - #define CID_TIMEOUT_IMAGE_IO (V4L2LOOPBACK_CID_BASE + 3) - - static int v4l2loopback_s_ctrl(struct v4l2_ctrl *ctrl); -@@ -249,44 +249,44 @@ static const struct v4l2_ctrl_ops v4l2loopback_ctrl_ops = { - .s_ctrl = v4l2loopback_s_ctrl, - }; - static const struct v4l2_ctrl_config v4l2loopback_ctrl_keepformat = { -- .ops = &v4l2loopback_ctrl_ops, -- .id = CID_KEEP_FORMAT, -- .name = "keep_format", -- .type = V4L2_CTRL_TYPE_BOOLEAN, -- .min = 0, -- .max = 1, -- .step = 1, -- .def = 0, -+ .ops = &v4l2loopback_ctrl_ops, -+ .id = CID_KEEP_FORMAT, -+ .name = "keep_format", -+ .type = V4L2_CTRL_TYPE_BOOLEAN, -+ .min = 0, -+ .max = 1, -+ .step = 1, -+ .def = 0, - }; - static const struct v4l2_ctrl_config v4l2loopback_ctrl_sustainframerate = { -- .ops = &v4l2loopback_ctrl_ops, -- .id = CID_SUSTAIN_FRAMERATE, -- .name = "sustain_framerate", -- .type = V4L2_CTRL_TYPE_BOOLEAN, -- .min = 0, -- .max = 1, -- .step = 1, -- .def = 0, -+ .ops = &v4l2loopback_ctrl_ops, -+ .id = CID_SUSTAIN_FRAMERATE, -+ .name = "sustain_framerate", -+ .type = V4L2_CTRL_TYPE_BOOLEAN, -+ .min = 0, -+ .max = 1, -+ .step = 1, -+ .def = 0, - }; - static const struct v4l2_ctrl_config v4l2loopback_ctrl_timeout = { -- .ops = &v4l2loopback_ctrl_ops, -- .id = CID_TIMEOUT, -- .name = "timeout", -- .type = V4L2_CTRL_TYPE_INTEGER, -- .min = 0, -- .max = MAX_TIMEOUT, -- .step = 1, -- .def = 0, -+ .ops = &v4l2loopback_ctrl_ops, -+ .id = CID_TIMEOUT, -+ .name = "timeout", -+ .type = V4L2_CTRL_TYPE_INTEGER, -+ .min = 0, -+ .max = MAX_TIMEOUT, -+ .step = 1, -+ .def = 0, - }; - static const struct v4l2_ctrl_config v4l2loopback_ctrl_timeoutimageio = { -- .ops = &v4l2loopback_ctrl_ops, -- .id = CID_TIMEOUT_IMAGE_IO, -- .name = "timeout_image_io", -- .type = V4L2_CTRL_TYPE_BOOLEAN, -- .min = 0, -- .max = 1, -- .step = 1, -- .def = 0, -+ .ops = &v4l2loopback_ctrl_ops, -+ .id = CID_TIMEOUT_IMAGE_IO, -+ .name = "timeout_image_io", -+ .type = V4L2_CTRL_TYPE_BOOLEAN, -+ .min = 0, -+ .max = 1, -+ .step = 1, -+ .def = 0, - }; - - -@@ -321,7 +321,7 @@ struct v4l2_loopback_device { - (close to) nominal framerate */ - - /* buffers stuff */ -- u8 *image; /* pointer to actual buffers data */ -+ u8 *image; /* pointer to actual buffers data */ - unsigned long int imagesize; /* size of buffers data */ - int buffers_number; /* should not be big, 4 is a good choice */ - struct v4l2l_buffer buffers[MAX_BUFFERS]; /* inner driver buffers */ -@@ -386,13 +386,13 @@ struct v4l2_loopback_opener { - /* this is heavily inspired by the bttv driver found in the linux kernel */ - struct v4l2l_format { - char *name; -- int fourcc; /* video4linux 2 */ -- int depth; /* bit/pixel */ -+ int fourcc; /* video4linux 2 */ -+ int depth; /* bit/pixel */ - int flags; - }; - /* set the v4l2l_format.flags to PLANAR for non-packed formats */ --#define FORMAT_FLAGS_PLANAR 0x01 --#define FORMAT_FLAGS_COMPRESSED 0x02 -+#define FORMAT_FLAGS_PLANAR 0x01 -+#define FORMAT_FLAGS_COMPRESSED 0x02 - - #ifndef V4L2_PIX_FMT_VP9 - #define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') -@@ -446,7 +446,7 @@ static void pix_format_set_size(struct v4l2_pix_format *f, - f->bytesperline = width; /* Y plane */ - f->sizeimage = (width * height * fmt->depth) >> 3; - } else if (fmt->flags & FORMAT_FLAGS_COMPRESSED) { -- /* doesn't make sense for compressed formats */ -+ /* doesn't make sense for compressed formats */ - f->bytesperline = 0; - f->sizeimage = (width * height * fmt->depth) >> 3; - } else { -@@ -458,7 +458,7 @@ static void pix_format_set_size(struct v4l2_pix_format *f, - static int set_timeperframe(struct v4l2_loopback_device *dev, - struct v4l2_fract *tpf) - { -- if((tpf->denominator < 1) || (tpf->numerator < 1)) { -+ if((tpf->denominator < 1) || (tpf->numerator < 1)) { - return -EINVAL; - } - dev->capture_param.timeperframe = *tpf; -@@ -485,7 +485,7 @@ static ssize_t attr_show_format(struct device *cd, - tpf = &dev->capture_param.timeperframe; - - fourcc2str(dev->pix_format.pixelformat, buf4cc); -- buf4cc[4]=0; -+ buf4cc[4]=0; - if (tpf->numerator == 1) - snprintf(buf_fps, sizeof(buf_fps), "%d", tpf->denominator); - else -@@ -578,7 +578,7 @@ static void v4l2loopback_create_sysfs(struct video_device *vdev) - { - int res = 0; - --#define V4L2_SYSFS_CREATE(x) res = device_create_file(&vdev->dev, &dev_attr_##x); if (res < 0) break -+#define V4L2_SYSFS_CREATE(x) res = device_create_file(&vdev->dev, &dev_attr_##x); if (res < 0) break - if (!vdev) - return; - do { -@@ -671,7 +671,7 @@ static int vidioc_querycap(struct file *file, void *priv, struct v4l2_capability - { - struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file); - int devnr = ((struct v4l2loopback_private *)video_get_drvdata(dev->vdev))->devicenr; -- __u32 capabilities = V4L2_CAP_STREAMING | V4L2_CAP_READWRITE; -+ __u32 capabilities = V4L2_CAP_STREAMING | V4L2_CAP_READWRITE; - - strlcpy(cap->driver, "v4l2 loopback", sizeof(cap->driver)); - vidioc_fill_name(cap->card, sizeof(cap->card), devnr); -@@ -698,7 +698,10 @@ static int vidioc_querycap(struct file *file, void *priv, struct v4l2_capability - } - } - -- dev->vdev->device_caps = cap->device_caps = cap->capabilities = capabilities; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0) -+ dev->vdev->device_caps = -+#endif /* >=linux-4.7.0 */ -+ cap->device_caps = cap->capabilities = capabilities; - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0) - cap->capabilities |= V4L2_CAP_DEVICE_CAPS; -@@ -891,7 +894,7 @@ static int vidioc_enum_fmt_out(struct file *file, void *fh, struct v4l2_fmtdesc - f->pixelformat = dev->pix_format.pixelformat; - } else { - /* fill in a dummy format */ -- /* coverity[unsigned_compare] */ -+ /* coverity[unsigned_compare] */ - if (f->index < 0 || f->index >= FORMATS) - return -EINVAL; - -@@ -1069,11 +1072,11 @@ static int vidioc_s_parm(struct file *file, void *priv, struct v4l2_streamparm * - - switch (parm->type) { - case V4L2_BUF_TYPE_VIDEO_CAPTURE: -- if ((err=set_timeperframe(dev, &parm->parm.capture.timeperframe)) < 0) -+ if ((err=set_timeperframe(dev, &parm->parm.capture.timeperframe)) < 0) - return err; - break; - case V4L2_BUF_TYPE_VIDEO_OUTPUT: -- if ((err=set_timeperframe(dev, &parm->parm.capture.timeperframe)) < 0) -+ if ((err=set_timeperframe(dev, &parm->parm.capture.timeperframe)) < 0) - return err; - break; - default: -@@ -1249,7 +1252,7 @@ static int vidioc_enum_output(struct file *file, void *fh, struct v4l2_output *o - struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file); - MARK(); - -- if (!dev->announce_all_caps && !dev->ready_for_output) -+ if (!dev->announce_all_caps && !dev->ready_for_output) - return -ENOTTY; - - if (0 != index) -@@ -1279,7 +1282,7 @@ static int vidioc_enum_output(struct file *file, void *fh, struct v4l2_output *o - static int vidioc_g_output(struct file *file, void *fh, unsigned int *i) - { - struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file); -- if (!dev->announce_all_caps && !dev->ready_for_output) -+ if (!dev->announce_all_caps && !dev->ready_for_output) - return -ENOTTY; - if (i) - *i = 0; -@@ -1292,7 +1295,7 @@ static int vidioc_g_output(struct file *file, void *fh, unsigned int *i) - static int vidioc_s_output(struct file *file, void *fh, unsigned int i) - { - struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file); -- if (!dev->announce_all_caps && !dev->ready_for_output) -+ if (!dev->announce_all_caps && !dev->ready_for_output) - return -ENOTTY; - - if (i) -@@ -1340,7 +1343,7 @@ static int vidioc_enum_input(struct file *file, void *fh, struct v4l2_input *inp - static int vidioc_g_input(struct file *file, void *fh, unsigned int *i) - { - struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file); -- if (!dev->announce_all_caps && !dev->ready_for_capture) -+ if (!dev->announce_all_caps && !dev->ready_for_capture) - return -ENOTTY; - if (i) - *i = 0; -@@ -1353,7 +1356,7 @@ static int vidioc_g_input(struct file *file, void *fh, unsigned int *i) - static int vidioc_s_input(struct file *file, void *fh, unsigned int i) - { - struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file); -- if (!dev->announce_all_caps && !dev->ready_for_capture) -+ if (!dev->announce_all_caps && !dev->ready_for_capture) - return -ENOTTY; - if (i == 0) - return 0; -@@ -1527,7 +1530,7 @@ static int vidioc_qbuf(struct file *file, void *private_data, struct v4l2_buffer - /* Hopefully fix 'DQBUF return bad index if queue bigger then 2 for capture' - https://github.com/umlaeute/v4l2loopback/issues/60 */ - buf->flags &= ~V4L2_BUF_FLAG_DONE; -- buf->flags |= V4L2_BUF_FLAG_QUEUED; -+ buf->flags |= V4L2_BUF_FLAG_QUEUED; - - wake_up_all(&dev->read_event); - return 0; -@@ -1666,7 +1669,7 @@ static int vidioc_streamon(struct file *file, void *private_data, enum v4l2_buf_ - default: - return -EINVAL; - } -- return -EINVAL; -+ return -EINVAL; - } - - /* stop streaming -@@ -1896,8 +1899,8 @@ static ssize_t v4l2_loopback_read(struct file *file, - dev = v4l2loopback_getdevice(file); - - read_index = get_capture_buffer(file); -- if (read_index < 0) -- return read_index; -+ if (read_index < 0) -+ return read_index; - if (count > dev->buffer_size) - count = dev->buffer_size; - b = &dev->buffers[read_index].buffer; -@@ -2034,20 +2037,20 @@ static void init_buffers(struct v4l2_loopback_device *dev) - - for (i = 0; i < dev->buffers_number; ++i) { - struct v4l2_buffer *b = &dev->buffers[i].buffer; -- b->index = i; -- b->bytesused = bytesused; -- b->length = buffer_size; -- b->field = V4L2_FIELD_NONE; -- b->flags = 0; -+ b->index = i; -+ b->bytesused = bytesused; -+ b->length = buffer_size; -+ b->field = V4L2_FIELD_NONE; -+ b->flags = 0; - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 1) -- b->input = 0; -+ b->input = 0; - #endif -- b->m.offset = i * buffer_size; -- b->memory = V4L2_MEMORY_MMAP; -- b->sequence = 0; -+ b->m.offset = i * buffer_size; -+ b->memory = V4L2_MEMORY_MMAP; -+ b->sequence = 0; - b->timestamp.tv_sec = 0; - b->timestamp.tv_usec = 0; -- b->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -+ b->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - - v4l2l_get_timestamp(b); - } -@@ -2077,29 +2080,29 @@ static void init_vdev(struct video_device *vdev, int nr) - vidioc_fill_name(vdev->name, sizeof(vdev->name), nr); - - #ifdef V4L2LOOPBACK_WITH_STD -- vdev->tvnorms = V4L2_STD_ALL; -+ vdev->tvnorms = V4L2_STD_ALL; - #endif /* V4L2LOOPBACK_WITH_STD */ - -- vdev->vfl_type = VFL_TYPE_VIDEO; -- vdev->fops = &v4l2_loopback_fops; -- vdev->ioctl_ops = &v4l2_loopback_ioctl_ops; -- vdev->release = &video_device_release; -- vdev->minor = -1; -+ vdev->vfl_type = VFL_TYPE_VIDEO; -+ vdev->fops = &v4l2_loopback_fops; -+ vdev->ioctl_ops = &v4l2_loopback_ioctl_ops; -+ vdev->release = &video_device_release; -+ vdev->minor = -1; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0) - vdev->device_caps = -- V4L2_CAP_DEVICE_CAPS | -+ V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT | -+ V4L2_CAP_READWRITE | V4L2_CAP_STREAMING; - #ifdef V4L2_CAP_VIDEO_M2M -- V4L2_CAP_VIDEO_M2M | --#endif -- V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT | -- V4L2_CAP_READWRITE | V4L2_CAP_STREAMING; -+ vdev->device_caps |= V4L2_CAP_VIDEO_M2M; - #endif -+#endif /* >=linux-4.7.0 */ -+ - if (debug > 1) -- #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 20, 0) -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 20, 0) - vdev->debug = V4L2_DEBUG_IOCTL | V4L2_DEBUG_IOCTL_ARG; -- #else -+#else - vdev->dev_debug = V4L2_DEV_DEBUG_IOCTL | V4L2_DEV_DEBUG_IOCTL_ARG; -- #endif -+#endif - - /* since kernel-3.7, there is a new field 'vfl_dir' that has to be - * set to VFL_DIR_M2M for bidrectional devices */ -@@ -2114,11 +2117,11 @@ static void init_vdev(struct video_device *vdev, int nr) - static void init_capture_param(struct v4l2_captureparm *capture_param) - { - MARK(); -- capture_param->capability = 0; -- capture_param->capturemode = 0; -- capture_param->extendedmode = 0; -- capture_param->readbuffers = max_buffers; -- capture_param->timeperframe.numerator = 1; -+ capture_param->capability = 0; -+ capture_param->capturemode = 0; -+ capture_param->extendedmode = 0; -+ capture_param->readbuffers = max_buffers; -+ capture_param->timeperframe.numerator = 1; - capture_param->timeperframe.denominator = 30; - } - -@@ -2177,10 +2180,10 @@ static int v4l2_loopback_init(struct v4l2_loopback_device *dev, int nr) - int ret; - struct v4l2_ctrl_handler *hdl = &dev->ctrl_handler; - snprintf(dev->v4l2_dev.name, sizeof(dev->v4l2_dev.name), -- "v4l2loopback-%03d", nr); -- ret = v4l2_device_register(NULL, &dev->v4l2_dev); -- if (ret) -- return ret; -+ "v4l2loopback-%03d", nr); -+ ret = v4l2_device_register(NULL, &dev->v4l2_dev); -+ if (ret) -+ return ret; - - MARK(); - dev->vdev = video_device_alloc(); -@@ -2230,7 +2233,7 @@ static int v4l2_loopback_init(struct v4l2_loopback_device *dev, int nr) - setup_timer(&dev->sustain_timer, sustain_timer_clb, nr); - setup_timer(&dev->timeout_timer, timeout_timer_clb, nr); - #endif -- dev->reread_count = 0; -+ dev->reread_count = 0; - dev->timeout_jiffies = 0; - dev->timeout_image = NULL; - dev->timeout_happened = 0; -@@ -2242,10 +2245,10 @@ static int v4l2_loopback_init(struct v4l2_loopback_device *dev, int nr) - v4l2_ctrl_new_custom(hdl, &v4l2loopback_ctrl_sustainframerate, NULL); - v4l2_ctrl_new_custom(hdl, &v4l2loopback_ctrl_timeout, NULL); - v4l2_ctrl_new_custom(hdl, &v4l2loopback_ctrl_timeoutimageio, NULL); -- if (hdl->error) { -- ret = hdl->error; -- goto error; -- } -+ if (hdl->error) { -+ ret = hdl->error; -+ goto error; -+ } - dev->v4l2_dev.ctrl_handler = hdl; - - /* FIXME set buffers to 0 */ -@@ -2267,55 +2270,55 @@ static int v4l2_loopback_init(struct v4l2_loopback_device *dev, int nr) - return 0; - - error: -- v4l2_ctrl_handler_free(&dev->ctrl_handler); -- v4l2_device_unregister(&dev->v4l2_dev); -+ v4l2_ctrl_handler_free(&dev->ctrl_handler); -+ v4l2_device_unregister(&dev->v4l2_dev); - kfree(dev->vdev); -- return ret; -+ return ret; - - }; - - /* LINUX KERNEL */ - static const struct v4l2_file_operations v4l2_loopback_fops = { -- .owner = THIS_MODULE, -- .open = v4l2_loopback_open, -+ .owner = THIS_MODULE, -+ .open = v4l2_loopback_open, - .release = v4l2_loopback_close, -- .read = v4l2_loopback_read, -- .write = v4l2_loopback_write, -- .poll = v4l2_loopback_poll, -- .mmap = v4l2_loopback_mmap, -- .unlocked_ioctl = video_ioctl2, -+ .read = v4l2_loopback_read, -+ .write = v4l2_loopback_write, -+ .poll = v4l2_loopback_poll, -+ .mmap = v4l2_loopback_mmap, -+ .unlocked_ioctl = video_ioctl2, - }; - - static const struct v4l2_ioctl_ops v4l2_loopback_ioctl_ops = { -- .vidioc_querycap = &vidioc_querycap, -+ .vidioc_querycap = &vidioc_querycap, - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) -- .vidioc_enum_framesizes = &vidioc_enum_framesizes, -+ .vidioc_enum_framesizes = &vidioc_enum_framesizes, - .vidioc_enum_frameintervals = &vidioc_enum_frameintervals, - #endif - - #ifndef HAVE__V4L2_CTRLS -- .vidioc_queryctrl = &vidioc_queryctrl, -- .vidioc_g_ctrl = &vidioc_g_ctrl, -- .vidioc_s_ctrl = &vidioc_s_ctrl, -+ .vidioc_queryctrl = &vidioc_queryctrl, -+ .vidioc_g_ctrl = &vidioc_g_ctrl, -+ .vidioc_s_ctrl = &vidioc_s_ctrl, - #endif /* HAVE__V4L2_CTRLS */ - -- .vidioc_enum_output = &vidioc_enum_output, -- .vidioc_g_output = &vidioc_g_output, -- .vidioc_s_output = &vidioc_s_output, -+ .vidioc_enum_output = &vidioc_enum_output, -+ .vidioc_g_output = &vidioc_g_output, -+ .vidioc_s_output = &vidioc_s_output, - -- .vidioc_enum_input = &vidioc_enum_input, -- .vidioc_g_input = &vidioc_g_input, -- .vidioc_s_input = &vidioc_s_input, -+ .vidioc_enum_input = &vidioc_enum_input, -+ .vidioc_g_input = &vidioc_g_input, -+ .vidioc_s_input = &vidioc_s_input, - - .vidioc_enum_fmt_vid_cap = &vidioc_enum_fmt_cap, -- .vidioc_g_fmt_vid_cap = &vidioc_g_fmt_cap, -- .vidioc_s_fmt_vid_cap = &vidioc_s_fmt_cap, -- .vidioc_try_fmt_vid_cap = &vidioc_try_fmt_cap, -+ .vidioc_g_fmt_vid_cap = &vidioc_g_fmt_cap, -+ .vidioc_s_fmt_vid_cap = &vidioc_s_fmt_cap, -+ .vidioc_try_fmt_vid_cap = &vidioc_try_fmt_cap, - - .vidioc_enum_fmt_vid_out = &vidioc_enum_fmt_out, -- .vidioc_s_fmt_vid_out = &vidioc_s_fmt_out, -- .vidioc_g_fmt_vid_out = &vidioc_g_fmt_out, -- .vidioc_try_fmt_vid_out = &vidioc_try_fmt_out, -+ .vidioc_s_fmt_vid_out = &vidioc_s_fmt_out, -+ .vidioc_g_fmt_vid_out = &vidioc_g_fmt_out, -+ .vidioc_try_fmt_vid_out = &vidioc_try_fmt_out, - - #ifdef V4L2L_OVERLAY - .vidioc_s_fmt_vid_overlay = &vidioc_s_fmt_overlay, -@@ -2323,24 +2326,24 @@ static const struct v4l2_ioctl_ops v4l2_loopback_ioctl_ops = { - #endif - - #ifdef V4L2LOOPBACK_WITH_STD -- .vidioc_s_std = &vidioc_s_std, -- .vidioc_g_std = &vidioc_g_std, -- .vidioc_querystd = &vidioc_querystd, -+ .vidioc_s_std = &vidioc_s_std, -+ .vidioc_g_std = &vidioc_g_std, -+ .vidioc_querystd = &vidioc_querystd, - #endif /* V4L2LOOPBACK_WITH_STD */ - -- .vidioc_g_parm = &vidioc_g_parm, -- .vidioc_s_parm = &vidioc_s_parm, -+ .vidioc_g_parm = &vidioc_g_parm, -+ .vidioc_s_parm = &vidioc_s_parm, - -- .vidioc_reqbufs = &vidioc_reqbufs, -- .vidioc_querybuf = &vidioc_querybuf, -- .vidioc_qbuf = &vidioc_qbuf, -- .vidioc_dqbuf = &vidioc_dqbuf, -+ .vidioc_reqbufs = &vidioc_reqbufs, -+ .vidioc_querybuf = &vidioc_querybuf, -+ .vidioc_qbuf = &vidioc_qbuf, -+ .vidioc_dqbuf = &vidioc_dqbuf, - -- .vidioc_streamon = &vidioc_streamon, -- .vidioc_streamoff = &vidioc_streamoff, -+ .vidioc_streamon = &vidioc_streamon, -+ .vidioc_streamoff = &vidioc_streamoff, - - #ifdef CONFIG_VIDEO_V4L1_COMPAT -- .vidiocgmbuf = &vidiocgmbuf, -+ .vidiocgmbuf = &vidiocgmbuf, - #endif - }; - -@@ -2459,10 +2462,10 @@ static void v4l2loopback_cleanup_module(void) - #ifdef MODULE - int __init init_module(void) - { -- return v4l2loopback_init_module(); -+ return v4l2loopback_init_module(); - } - void __exit cleanup_module(void) { -- return v4l2loopback_cleanup_module(); -+ return v4l2loopback_cleanup_module(); - } - #else - late_initcall(v4l2loopback_init_module); diff --git a/system/v4l2loopback/v4l2loopback.SlackBuild b/system/v4l2loopback/v4l2loopback.SlackBuild index 01a55c1577a3..91726509cec5 100644 --- a/system/v4l2loopback/v4l2loopback.SlackBuild +++ b/system/v4l2loopback/v4l2loopback.SlackBuild @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PRGNAM=v4l2loopback -VERSION=${VERSION:-0.12.5} +VERSION=${VERSION:-0.12.7} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} @@ -82,15 +82,6 @@ find -L . \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; -# Fix for older kernels, etc... -# https://github.com/umlaeute/v4l2loopback/commit/d26e624b4ead762d34152f9f825b3a51fb92fb9c -# https://github.com/umlaeute/v4l2loopback/commit/7dced0f9e6641b7e9e54ced74c5c7611d10f729f -# https://github.com/umlaeute/v4l2loopback/commit/72a32a67dee3a67dff76f565551907a2fc7e88e6 -# only set (struct video_device).device_caps on linux>=4.7.0 -# Set device_caps in init_vdev() for all kernel-versions (not just >4.7.0) -# Don't set the V4L2_CAP_DEVICE_CAPS on device_caps -patch -p1 < $CWD/update_to_master_17JUN2020.patch - make KERNELRELEASE=$KERNEL install -D -m 644 $PRGNAM.ko $PKG/lib/modules/$KERNEL/kernel/extra/$PRGNAM.ko diff --git a/system/v4l2loopback/v4l2loopback.info b/system/v4l2loopback/v4l2loopback.info index d6c7a92732ed..d4e9b38f6258 100644 --- a/system/v4l2loopback/v4l2loopback.info +++ b/system/v4l2loopback/v4l2loopback.info @@ -1,7 +1,7 @@ PRGNAM="v4l2loopback" -VERSION="0.12.5" +VERSION="0.12.7" HOMEPAGE="https://github.com/umlaeute/v4l2loopback/" -DOWNLOAD="https://github.com/umlaeute/v4l2loopback/archive/v0.12.5/v4l2loopback-0.12.5.tar.gz" +DOWNLOAD="https://github.com/umlaeute/v4l2loopback/archive/v0.12.7/v4l2loopback-0.12.7.tar.gz" MD5SUM="4b0aaae5dd8c4f5dd0f9e2142e92e390" DOWNLOAD_x86_64="" MD5SUM_x86_64="" -- cgit v1.2.3