Hello community,
here is the log from the commit of package v4l2loopback for openSUSE:Factory checked in at 2018-04-04 11:07:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/v4l2loopback (Old)
and /work/SRC/openSUSE:Factory/.v4l2loopback.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "v4l2loopback"
Wed Apr 4 11:07:24 2018 rev:2 rq:593208 version:0.11.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/v4l2loopback/v4l2loopback.changes 2017-08-24 18:51:41.739361848 +0200
+++ /work/SRC/openSUSE:Factory/.v4l2loopback.new/v4l2loopback.changes 2018-04-04 11:07:47.898864914 +0200
@@ -1,0 +2,8 @@
+Tue Apr 3 12:12:45 UTC 2018 - guillaume.gardet@opensuse.org
+
+- Update to 0.11.0:
+ * Adapted to new kernel timer API
+ * VP9 & HEVC support
+ * Hacks to work around issues with Google Chrome and GStreamer-0.10
+
+-------------------------------------------------------------------
Old:
----
v4l2loopback-0.10.0.tar.gz
New:
----
v4l2loopback-0.11.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ v4l2loopback.spec ++++++
--- /var/tmp/diff_new_pack.Y5iOAQ/_old 2018-04-04 11:07:50.602766923 +0200
+++ /var/tmp/diff_new_pack.Y5iOAQ/_new 2018-04-04 11:07:50.606766778 +0200
@@ -1,7 +1,7 @@
#
# spec file for package v4l2loopback
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,10 +17,10 @@
Name: v4l2loopback
-Version: 0.10.0
+Version: 0.11.0
Release: 0
Summary: A kernel module to create V4L2 loopback devices
-License: GPL-2.0+
+License: GPL-2.0-or-later
Group: System/Kernel
Url: https://github.com/umlaeute/v4l2loopback
Source: https://github.com/umlaeute/v4l2loopback/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
++++++ v4l2loopback-0.10.0.tar.gz -> v4l2loopback-0.11.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/v4l2loopback-0.10.0/.github/ISSUE_TEMPLATE.md new/v4l2loopback-0.11.0/.github/ISSUE_TEMPLATE.md
--- old/v4l2loopback-0.10.0/.github/ISSUE_TEMPLATE.md 1970-01-01 01:00:00.000000000 +0100
+++ new/v4l2loopback-0.11.0/.github/ISSUE_TEMPLATE.md 2018-03-06 10:20:30.000000000 +0100
@@ -0,0 +1,60 @@
+### Step 1: Read this
+
+Thanks for your feedback. It is invaluable for making `v4l2loopback` a better
+software.
+
+To help us making the most of your feedback (so we can e.g. fix bugs more
+quickly), please make sure to provide the following information.
+
+#### Accessibility
+Sometimes pictures say more.
+However, mostly they prevent the use of advanced
+tools (like "search" or "copy&paste").
+And always they prevent people who don't use graphical browser to access the
+tracker from reading your content.
+So, to make the web a better place, we ask you to post *text* rather than
+*screenshots of text* whenever feasible (pretty much always).
+
+
+#### Cruft
+
+Please exclude these instructions (and other non-relevant information) from your
+report.
+
+
+### Step 2: Describe your environment
+
+ * `v4l2loopback` version: _____
+
+ sudo dmesg | grep -i v4l2loopback
+
+ * kernel version: _____
+
+ uname -a
+
+ * Distribution (+version): _____
+
+ lsb_release -a
+
+### Step 3: Describe the problem:
+
+#### Steps to reproduce:
+
+ 1. _____
+ 2. _____
+ 3. _____
+
+#### Observed Results:
+
+ * What happened? This could be a description, log output, etc.
+
+#### Expected Results:
+
+ * What did you expect to happen?
+
+#### Relevant Code:
+
+ ```
+ // TODO(you): code here to reproduce the problem
+ ```
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/v4l2loopback-0.10.0/AUTHORS new/v4l2loopback-0.11.0/AUTHORS
--- old/v4l2loopback-0.10.0/AUTHORS 2016-12-02 22:11:55.000000000 +0100
+++ new/v4l2loopback-0.11.0/AUTHORS 2018-03-06 10:20:30.000000000 +0100
@@ -1,7 +1,8 @@
-Angus McInnes <angus AT amcinnes DOT info>
Aidan Thornton <makosoft AT gmail DOT com>
Anatolij Gutschin <agust AT denx DOT de>
+Angus McInnes <angus AT amcinnes DOT info>
Anton Novikov
+Attila Tőkés
Dmitry Eremin
Gavin Qiu <yongchengq AT gmail DOT com>
George Chriss <gschriss AT gmail DOT com>
@@ -10,11 +11,13 @@
Javier Infante <jabiinfante AT gmail DOT com>
Kurt Kiefer <kekiefer AT gmail DOT com>
Michel Promonet
+Nick Sarnie <commendsarnex AT gmail DOT com>
Paul Brook
Scott Maines <smaines AT alaya DOT com>
Stefan Diewald
Tasos Sahanidis <tasos AT tasossah DOT com>
-tz
Ted Mielczarek <ted AT mielczarek DOT org>
+Todor Minchev
+tz
Vasily Levin
Yusuke Ohshima <git AT yukke DOT org>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/v4l2loopback-0.10.0/ChangeLog new/v4l2loopback-0.11.0/ChangeLog
--- old/v4l2loopback-0.10.0/ChangeLog 2016-12-02 22:11:55.000000000 +0100
+++ new/v4l2loopback-0.11.0/ChangeLog 2018-03-06 10:20:30.000000000 +0100
@@ -1,3 +1,30 @@
+v4l2loopback (0.11.0) unstable; urgency=medium
+
+ [ Nick Sarnie ]
+ * Adapted to new kernel timer API
+
+ [ Attila Tőkés ]
+ * Avoid setting dev->ready_for_output and opener->type on get/try calls
+ * Allow input enumeration, even when exclusive_caps=1 and no input provided yet
+
+ [ Todor Minchev ]
+ * Makefile: remove depmod call in modules_install target
+
+ [ Michel Promonet ]
+ * Added format VP9 & HEVC
+
+ [ IOhannes m zmölnig ]
+ * Simplified HAVE_TIMER_SETUP clauses
+ * Fixed format output to sysfs
+ * Removed trailing whitespace
+ * Updated README
+ * Added `depmod -a` calls to the documentation
+ * Fixed omitted word
+ * [github] Added issue template for new reports
+ * please don't post images in the issue-tracker
+
+ -- IOhannes m zmölnig Tue, 06 Mar 2018 10:05:11 +0100
+
v4l2loopback (0.10.0) unstable; urgency=medium
[ Paul Brook ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/v4l2loopback-0.10.0/Makefile new/v4l2loopback-0.11.0/Makefile
--- old/v4l2loopback-0.10.0/Makefile 2016-12-02 22:11:55.000000000 +0100
+++ new/v4l2loopback-0.11.0/Makefile 2018-03-06 10:20:30.000000000 +0100
@@ -45,7 +45,6 @@
install-all: install install-utils install-man
install:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules_install
- depmod -a $(KERNELRELEASE)
install-utils: utils/v4l2loopback-ctl
$(INSTALL_DIR) "$(DESTDIR)$(BINDIR)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/v4l2loopback-0.10.0/NEWS new/v4l2loopback-0.11.0/NEWS
--- old/v4l2loopback-0.10.0/NEWS 2016-12-02 22:11:55.000000000 +0100
+++ new/v4l2loopback-0.11.0/NEWS 2018-03-06 10:20:30.000000000 +0100
@@ -1,3 +1,11 @@
+v4l2loopback-0.11.0
+
+ * Adapted to new kernel timer API
+ * VP9 & HEVC support
+ * Hacks to work around issues with Google Chrome and GStreamer-0.10
+
+ -- IOhannes m zmölnig Tue, 06 Mar 2018 10:05:11 +0100
+
v4l2loopback-0.10.0
* More consistent device names
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/v4l2loopback-0.10.0/README.md new/v4l2loopback-0.11.0/README.md
--- old/v4l2loopback-0.10.0/README.md 2016-12-02 22:11:55.000000000 +0100
+++ new/v4l2loopback-0.11.0/README.md 2018-03-06 10:20:30.000000000 +0100
@@ -23,8 +23,8 @@
# DEPENDENCIES
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 this will be
-the kernel that you are currently running).
+the linux kernel with which you want to use the module (in most cases this will
+be the kernel that you are currently running).
please note, that kernel headers and kernel image must have *exactly the same* version.
for example, `3.18.0-trunk-rpi` is a different version that `3.18.7-v7+`, even though
the first few number are the same.
@@ -45,6 +45,7 @@
if your system has "sudo", do:
$ make && sudo make install
+ $ sudo depmod -a
if your system lacks "sudo", do:
@@ -52,8 +53,14 @@
$ su
(enter root password)
# make install
+ # depmod -a
# exit
+
+(The `depmod -a` call will re-calculate module dependencies, in order to
+automatically load additional kernel modules required by v4l2loopback.
+The call may not be necessary on modern systems.)
+
# RUN
load the v4l2loopback module as root :
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/v4l2loopback-0.10.0/dkms.conf new/v4l2loopback-0.11.0/dkms.conf
--- old/v4l2loopback-0.10.0/dkms.conf 2016-12-02 22:11:55.000000000 +0100
+++ new/v4l2loopback-0.11.0/dkms.conf 2018-03-06 10:20:30.000000000 +0100
@@ -1,5 +1,5 @@
PACKAGE_NAME="v4l2loopback"
-PACKAGE_VERSION="0.10.0"
+PACKAGE_VERSION="0.11.0"
# Items below here should not have to change with each driver version
MAKE[0]="make KERNEL_DIR=${kernel_source_dir} all"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/v4l2loopback-0.10.0/v4l2loopback.c new/v4l2loopback-0.11.0/v4l2loopback.c
--- old/v4l2loopback-0.10.0/v4l2loopback.c 2016-12-02 22:11:55.000000000 +0100
+++ new/v4l2loopback-0.11.0/v4l2loopback.c 2018-03-06 10:20:30.000000000 +0100
@@ -36,7 +36,11 @@
# define kstrtoul strict_strtoul
#endif
-#define V4L2LOOPBACK_VERSION_CODE KERNEL_VERSION(0, 10, 0)
+#if defined(timer_setup) && defined(from_timer)
+#define HAVE_TIMER_SETUP
+#endif
+
+#define V4L2LOOPBACK_VERSION_CODE KERNEL_VERSION(0, 11, 0)
MODULE_DESCRIPTION("V4L2 loopback video device");
MODULE_AUTHOR("Vasily Levin, " \
@@ -372,6 +376,13 @@
#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')
+#endif
+#ifndef V4L2_PIX_FMT_HEVC
+#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C')
+#endif
+
static const struct v4l2l_format formats[] = {
#include "v4l2loopback_formats.h"
};
@@ -456,12 +467,12 @@
tpf = &dev->capture_param.timeperframe;
fourcc2str(dev->pix_format.pixelformat, buf4cc);
+ buf4cc[4]=0;
if (tpf->numerator == 1)
snprintf(buf_fps, sizeof(buf_fps), "%d", tpf->denominator);
else
snprintf(buf_fps, sizeof(buf_fps), "%d/%d",
tpf->denominator, tpf->numerator);
-
return sprintf(buf, "%4s:%dx%d@%s\n",
buf4cc, dev->pix_format.width, dev->pix_format.height, buf_fps);
}
@@ -514,7 +525,7 @@
if (kstrtoul(buf, 0, &curr))
return -EINVAL;
-
+
dev = v4l2loopback_cd2dev(cd);
if (dev->max_openers == curr)
@@ -807,13 +818,9 @@
*/
static int vidioc_try_fmt_cap(struct file *file, void *priv, struct v4l2_format *fmt)
{
- struct v4l2_loopback_opener *opener;
struct v4l2_loopback_device *dev;
char buf[5];
- opener = file->private_data;
- opener->type = READER;
-
dev = v4l2loopback_getdevice(file);
if (0 == dev->ready_for_capture) {
@@ -907,8 +914,7 @@
dev = v4l2loopback_getdevice(file);
opener = file->private_data;
- opener->type = WRITER;
- dev->ready_for_output = 1;
+
/*
* LATER: this should return the currently valid format
* gstreamer doesn't like it, if this returns -EINVAL, as it
@@ -927,15 +933,10 @@
*/
static int vidioc_try_fmt_out(struct file *file, void *priv, struct v4l2_format *fmt)
{
- struct v4l2_loopback_opener *opener;
struct v4l2_loopback_device *dev;
MARK();
- opener = file->private_data;
- opener->type = WRITER;
-
dev = v4l2loopback_getdevice(file);
- dev->ready_for_output = 1;
/* TODO(vasaka) loopback does not care about formats writer want to set,
* maybe it is a good idea to restrict format somehow */
@@ -1304,10 +1305,7 @@
static int vidioc_enum_input(struct file *file, void *fh, struct v4l2_input *inp)
{
__u32 index = inp->index;
- struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
MARK();
- if (!dev->announce_all_caps && !dev->ready_for_capture)
- return -ENOTTY;
if (0 != index)
return -EINVAL;
@@ -1639,13 +1637,16 @@
static int vidioc_streamon(struct file *file, void *private_data, enum v4l2_buf_type type)
{
struct v4l2_loopback_device *dev;
+ struct v4l2_loopback_opener *opener;
int ret;
MARK();
dev = v4l2loopback_getdevice(file);
+ opener = file->private_data;
switch (type) {
case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+ opener->type = WRITER;
dev->ready_for_output = 0;
if (!dev->ready_for_capture) {
ret = allocate_buffers(dev);
@@ -1655,6 +1656,7 @@
}
return 0;
case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+ opener->type = READER;
if (!dev->ready_for_capture)
return -EIO;
return 0;
@@ -2120,11 +2122,15 @@
if (dev->sustain_framerate && !timer_pending(&dev->sustain_timer))
mod_timer(&dev->sustain_timer, jiffies + dev->frame_jiffies * 3 / 2);
}
-
+#ifdef HAVE_TIMER_SETUP
+static void sustain_timer_clb(struct timer_list *t)
+{
+ struct v4l2_loopback_device *dev = from_timer(dev,t,sustain_timer);
+#else
static void sustain_timer_clb(unsigned long nr)
{
struct v4l2_loopback_device *dev = devs[nr];
-
+#endif
spin_lock(&dev->lock);
if (dev->sustain_framerate) {
dev->reread_count++;
@@ -2137,11 +2143,15 @@
}
spin_unlock(&dev->lock);
}
-
+#ifdef HAVE_TIMER_SETUP
+static void timeout_timer_clb(struct timer_list *t)
+{
+ struct v4l2_loopback_device *dev = from_timer(dev,t,timeout_timer);
+#else
static void timeout_timer_clb(unsigned long nr)
{
struct v4l2_loopback_device *dev = devs[nr];
-
+#endif
spin_lock(&dev->lock);
if (dev->timeout_jiffies > 0) {
dev->timeout_happened = 1;
@@ -2203,9 +2213,14 @@
dev->buffer_size = 0;
dev->image = NULL;
dev->imagesize = 0;
+#ifdef HAVE_TIMER_SETUP
+ timer_setup(&dev->sustain_timer, sustain_timer_clb, 0);
+ timer_setup(&dev->timeout_timer, timeout_timer_clb, 0);
+#else
setup_timer(&dev->sustain_timer, sustain_timer_clb, nr);
- dev->reread_count = 0;
setup_timer(&dev->timeout_timer, timeout_timer_clb, nr);
+#endif
+ dev->reread_count = 0;
dev->timeout_jiffies = 0;
dev->timeout_image = NULL;
dev->timeout_happened = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/v4l2loopback-0.10.0/v4l2loopback_formats.h new/v4l2loopback-0.11.0/v4l2loopback_formats.h
--- old/v4l2loopback-0.10.0/v4l2loopback_formats.h 2016-12-02 22:11:55.000000000 +0100
+++ new/v4l2loopback-0.11.0/v4l2loopback_formats.h 2018-03-06 10:20:30.000000000 +0100
@@ -361,3 +361,15 @@
.flags = FORMAT_FLAGS_COMPRESSED,
},
#endif /* V4L2_PIX_FMT_VP8 */
+{
+ .name = "VP9",
+ .fourcc = V4L2_PIX_FMT_VP9,
+ .depth = 32,
+ .flags = FORMAT_FLAGS_COMPRESSED,
+ },
+{
+ .name = "HEVC",
+ .fourcc = V4L2_PIX_FMT_HEVC,
+ .depth = 32,
+ .flags = FORMAT_FLAGS_COMPRESSED,
+ },