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 - [email protected] + +- 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 <random.plant AT gmail DOT com> +Attila Tőkés <tokes_atti AT yahoo DOT com> Dmitry Eremin <dmitry.eremin AT intel DOT com> 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 <michel.promonet AT free DOT fr> +Nick Sarnie <commendsarnex AT gmail DOT com> Paul Brook <paul.brook AT cocoon DOT life> Scott Maines <smaines AT alaya DOT com> Stefan Diewald <stefan.diewald AT mytum DOT de> Tasos Sahanidis <tasos AT tasossah DOT com> -tz Ted Mielczarek <ted AT mielczarek DOT org> +Todor Minchev <todor.minchev AT linux DOT intel DOT com> +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 <[email protected]> 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 <[email protected]> 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, + },
