aboutsummaryrefslogtreecommitdiff
path: root/system/v4l2loopback
diff options
context:
space:
mode:
authorEdward W. Koenig <kingbeowulf@linuxgalaxy.org>2023-05-10 19:00:35 -0700
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2023-05-13 19:27:30 +0700
commit26fe582366bab6c781a5cea398a3937c026901c8 (patch)
tree31145b5ae2780dda83b8c69c48819749a5b8bcc1 /system/v4l2loopback
parent155af7aeb7f96a1a9f42303fdf87adfddff31308 (diff)
system/v4l2loopback: Updated for version 0.12.7
Signed-off-by: Edward W. Koenig <kingbeowulf@linuxgalaxy.org> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'system/v4l2loopback')
-rw-r--r--system/v4l2loopback/update_to_master_17JUN2020.patch671
-rw-r--r--system/v4l2loopback/v4l2loopback.SlackBuild11
-rw-r--r--system/v4l2loopback/v4l2loopback.info4
3 files changed, 3 insertions, 683 deletions
diff --git a/system/v4l2loopback/update_to_master_17JUN2020.patch b/system/v4l2loopback/update_to_master_17JUN2020.patch
deleted file mode 100644
index cd44185102524..0000000000000
--- 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 <zmoelnig@iem.at>," \
-- "Stefan Diewald," \
-- "Anton Novikov" \
-+ "IOhannes m zmoelnig <zmoelnig@iem.at>," \
-+ "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 01a55c1577a3d..91726509cec50 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 d6c7a92732ed2..d4e9b38f62588 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=""