From: Sebastian Ramacher Date: Tue, 14 Jan 2025 22:09:47 +0000 (+0100) Subject: Import vlc_3.0.21-6.debian.tar.xz X-Git-Tag: archive/raspbian/3.0.21-6+rpi1^2~125^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e3d18efdb9935ed604895153fa69c30e281443f9;p=vlc.git Import vlc_3.0.21-6.debian.tar.xz [dgit import tarball vlc 3.0.21-6 vlc_3.0.21-6.debian.tar.xz] --- e3d18efdb9935ed604895153fa69c30e281443f9 diff --git a/bug-control b/bug-control new file mode 100644 index 00000000..e3a04092 --- /dev/null +++ b/bug-control @@ -0,0 +1 @@ +Report-With: libvlc-bin libvlc5 libvlccore8 vlc vlc-bin vlc-data vlc-l10n vlc-plugin-access-extra vlc-plugin-base vlc-plugin-fluidsynth vlc-plugin-jack vlc-plugin-notify vlc-plugin-qt vlc-plugin-skins2 vlc-plugin-svg vlc-plugin-video-output vlc-plugin-video-splitter vlc-plugin-visualization diff --git a/bug-presubj b/bug-presubj new file mode 100644 index 00000000..c985627d --- /dev/null +++ b/bug-presubj @@ -0,0 +1,27 @@ +Debugging and bug reporting advices: + +VLC media player is highly modular. So in case a feature is not working +at all, you need to check that the module handling it is present. + + * Make sure that the plugins cache in /usr/lib/*/vlc/plugins/plugins.dat is + up-to-date. Run "/usr/lib/$MA/vlc/vlc-cache-gen /usr/lib/$MA/vlc/plugins" + as root to regenerate the cache where $MA the arch triplet (e.g. + x86_64-linux-gnu on amd64). + + * If you have set custom plugin paths (e.g. with VLC_PLUGIN_PATH), remove + caches in these paths. + + * Check that modules are correctly loaded: "vlc -vvv --color --list" + If you have yellow warning lines at the top, that could well be the + problem. + + * If you have installed libraries from other repositories (e.g. to use + allegedly patent-encumbred encoders), revert to the official Debian + libraries before reporting a bug. + +The debug log of vlc ("vlc -vvv ") is very useful for +the developers, do include it in your report. + +When reporting a crash, please install the corresponding -dbgsym packages +and produe a backtrace with gdb. See +https://wiki.debian.org/HowToGetABacktrace for details. diff --git a/changelog b/changelog new file mode 100644 index 00000000..8ddab57a --- /dev/null +++ b/changelog @@ -0,0 +1,4340 @@ +vlc (3.0.21-6) unstable; urgency=medium + + * debian/patches: Update to 3.0.21-1-385-g7b58309ae7 + * Ignore win32 and compat changes + * Replace taglib 2.x patches with upstream changes + * debian/: Re-enable VAAPI support (Closes: #1021601, #1013898) + + -- Sebastian Ramacher Tue, 14 Jan 2025 23:09:47 +0100 + +vlc (3.0.21-5) unstable; urgency=medium + + * Fix changelog of 3.0.21-3 + * debian/patches: Split patches into upstream and Arch patch + + -- Sebastian Ramacher Sat, 11 Jan 2025 10:55:36 +0100 + +vlc (3.0.21-4) unstable; urgency=medium + + * Team upload. + * Upload to unstable. + * debian/patches/0014-Taglib-1.x-and-2.x-compat-fix.patch: + Update patch to fix FTBFS on ARM architectures. + * debian/control: Update build-dependency package name: + + libtag1-dev => libtag-dev. + + -- Boyuan Yang Fri, 10 Jan 2025 22:33:36 -0500 + +vlc (3.0.21-4~exp1) experimental; urgency=medium + + * Team upload. + * Force rebuild with taglib 2.x. + + -- Boyuan Yang Fri, 10 Jan 2025 11:21:32 -0500 + +vlc (3.0.21-3) unstable; urgency=medium + + * Team upload. + + [ Sebastian Ramacher ] + * debian/clean: Clean luac files (Closes: #1047601) + + [ Boyuan Yang ] + * debian/patches/0014-Taglib-1.x-and-2.x-compat-fix.patch: + Add patch to fix compatibility with both Taglib 1.x and 2.x. + + -- Boyuan Yang Fri, 10 Jan 2025 11:06:11 -0500 + +vlc (3.0.21-2) unstable; urgency=medium + + * debian/patches: Apply WIP patches for ffmpeg 7.0 support (Closes: + #1072456) + + -- Sebastian Ramacher Thu, 15 Aug 2024 12:11:01 +0200 + +vlc (3.0.21-1) unstable; urgency=medium + + * New upstream version 3.0.21 + * debian/patches: Refresh patches + * debian/control: Replace obsolete packages with their new versions + + -- Sebastian Ramacher Sun, 09 Jun 2024 18:01:08 +0200 + +vlc (3.0.20-4) unstable; urgency=medium + + [ Bastian Germann ] + * Drop OMX support (see #1065623) + * Drop kFreeBSD support + + [ Sebastian Ramacher ] + * debian/: + - Complete omxil removal + - Complete kfreebsd support removal + * debian/control: Bump Standards-Version + + -- Sebastian Ramacher Thu, 11 Apr 2024 22:16:25 +0200 + +vlc (3.0.20-3) unstable; urgency=medium + + * debian/control: Add missing dpkg-dev BD for time_t + + -- Sebastian Ramacher Sat, 02 Mar 2024 10:55:19 +0100 + +vlc (3.0.20-2) unstable; urgency=medium + + * debian/patches: Bump module ABI for time_t transition + + -- Sebastian Ramacher Wed, 28 Feb 2024 23:55:54 +0100 + +vlc (3.0.20-1) unstable; urgency=medium + + * New upstream version 3.0.20. + + -- Mateusz Łukasik Wed, 01 Nov 2023 20:58:55 +0100 + +vlc (3.0.19-1) unstable; urgency=medium + + * New upstream version 3.0.19 + * debian/patches: Drop patches from upstream + + -- Sebastian Ramacher Sat, 14 Oct 2023 19:52:05 +0200 + +vlc (3.0.18-4) unstable; urgency=medium + + [ Pino Toscano ] + * d/vlc-plugin-base.install: drop non-existing files + * d/rules: drop "libva" from "removeplugins" for all the archs + * d/vlc-plugin-video-output: mark vaapi plugins as "libva" + + [ Sebastian Ramacher ] + * debian/: Disable libplacebo. libplacebo 6 is too new for vlc. + + -- Sebastian Ramacher Mon, 31 Jul 2023 23:47:01 +0200 + +vlc (3.0.18-3) unstable; urgency=medium + + * debian/control: Bump Standards-Version + * debian/: Disable SDL support (Closes: #1038590) + + -- Sebastian Ramacher Sat, 01 Jul 2023 19:24:56 +0200 + +vlc (3.0.18-2) unstable; urgency=medium + + * debian/patches: Apply upstream patch for flac playback issues + + -- Sebastian Ramacher Sun, 04 Dec 2022 22:11:55 +0100 + +vlc (3.0.18-1) unstable; urgency=medium + + * New upstream version 3.0.18 + + -- Mateusz Łukasik Wed, 23 Nov 2022 19:50:35 +0100 + +vlc (3.0.18~rc2-1) unstable; urgency=medium + + * New upstream version 3.0.18~rc2 + * debian/control: Remove patches included upstream + + -- Sebastian Ramacher Mon, 10 Oct 2022 08:44:18 +0200 + +vlc (3.0.17.4-5) unstable; urgency=medium + + * debian/rules: + - Revert "Disable libva support" + - Do not pass any libva flags (Closes: #1021032) (LP: #1991418) + + -- Sebastian Ramacher Mon, 03 Oct 2022 22:07:16 +0200 + +vlc (3.0.17.4-4) unstable; urgency=medium + + * debian/control: Bump Standards-Version + * debian/: Disable libva support + vlc's libva support and ffmpeg 5.0 are not compatible. + + -- Sebastian Ramacher Thu, 23 Jun 2022 10:39:09 +0200 + +vlc (3.0.17.4-3) unstable; urgency=medium + + * debian/control: Move vlc-plugin-pipewire to Suggests + The pipewire plugin fails to recognize some configurations where pipewire + is available but not used as sound server. + * debian/patches: Fix build with caca 0.99.beta20 + + -- Sebastian Ramacher Fri, 17 Jun 2022 19:37:03 +0200 + +vlc (3.0.17.4-2) unstable; urgency=medium + + * debian/patches: Apply upstream patches to fix build with dav1d 1.0.0 + (Closes: #1008609) + * debian/control: Recommend vlc-plugin-pipewire + + -- Sebastian Ramacher Sun, 15 May 2022 13:47:10 +0200 + +vlc (3.0.17.4-1) unstable; urgency=medium + + * New upstream version 3.0.17.4 + + -- Sebastian Ramacher Sat, 23 Apr 2022 15:37:39 +0200 + +vlc (3.0.17.3-1) unstable; urgency=medium + + * New upstream version 3.0.17.3 + * debian/ + - Revert "Disable srt until the package is fixed" (Closes: #983109) + Thanks to Florian Ernst + - Move srt output plugin to vlc-plugin-access-extra + + -- Sebastian Ramacher Sun, 13 Mar 2022 12:41:41 +0100 + +vlc (3.0.17-1) unstable; urgency=medium + + * New upstream version 3.0.17 + - Fix build with ffmpeg 5.0 (Closes: #1004584) + * debian/control: + - Switch to libidn-dev + - Bump BD on libopenmpt-modplug-dev + - Bump Standards-Version + * debian/copyright: + - Add missing text to BSD-2-clause + - Update copyright for 3.0.17 + * debian/patches: Refresh patches + * debian/rules: Set VLC_COMPILE_BY and VLC_COMPILE_HOST (Closes: #990246) + * debian/: Update lintian override + + -- Sebastian Ramacher Sat, 12 Mar 2022 20:40:54 +0100 + +vlc (3.0.16-1) unstable; urgency=medium + + * Upload to unstable + * New upstream release + + -- Sebastian Ramacher Mon, 21 Jun 2021 21:07:16 +0200 + +vlc (3.0.15-1) experimental; urgency=medium + + [ Mateusz Łukasik ] + * New upstream release + - Fix remote code execution through crafted playlist + (VideoLAN-SB-VLC-3013) + * Remove patches included upstream. + + -- Sebastian Ramacher Thu, 17 Jun 2021 23:38:35 +0200 + +vlc (3.0.12-3) unstable; urgency=medium + + * debian/patches: Apply upstream patches to prevent process freeze on exit + (Closes: #916595) (LP: #1819543) + + -- Sebastian Ramacher Tue, 09 Mar 2021 17:42:00 +0100 + +vlc (3.0.12-2) unstable; urgency=medium + + * debian/: Disable live555 plugin due to #981439 + + -- Sebastian Ramacher Sun, 31 Jan 2021 11:40:59 +0100 + +vlc (3.0.12-1) unstable; urgency=medium + + * New upstream release + - mkv: Fix heap-based buffer overflow (CVE-2020-26664) (Closes: #979676) + * debian/control: + - Switch to libshout-dev + - Bump Standards-Version + * debian/patches: Refresh patches + * debian/vlc-plugins-base.install: Install RIST access plugins + + -- Sebastian Ramacher Mon, 18 Jan 2021 17:13:21 +0100 + +vlc (3.0.11.1-3) unstable; urgency=medium + + * debian/patches: Apply upstream patches to fix build with Qt 5.15 (Closes: + #972157) + + -- Sebastian Ramacher Wed, 21 Oct 2020 21:14:33 +0200 + +vlc (3.0.11.1-2) unstable; urgency=medium + + * debian/control: + - Remove unsed B-D + - Switch to libdc1394-dev + - Add Suggests and Recommends on the remaining packages (Closes: #970596) + + -- Sebastian Ramacher Tue, 22 Sep 2020 23:11:26 +0200 + +vlc (3.0.11.1-1) unstable; urgency=medium + + * New upstream release + + -- Sebastian Ramacher Fri, 31 Jul 2020 19:05:40 +0200 + +vlc (3.0.11-4) unstable; urgency=medium + + * debian/libvlc-bin.postinst: Redirect vlc-cache-gen output to stderr + * debian/tests: Run vlc-cache-gen with gdb if plugins.dat is missing + + -- Sebastian Ramacher Mon, 20 Jul 2020 22:45:52 +0200 + +vlc (3.0.11-3) unstable; urgency=medium + + * debian/patches: Disable cache generation + + -- Sebastian Ramacher Tue, 07 Jul 2020 00:19:43 +0200 + +vlc (3.0.11-2) unstable; urgency=medium + + * debian/: Use dav1d instead of aom for decoding AV1 videos + * debian/rules: Remove -Wl,--as-needed + + -- Sebastian Ramacher Fri, 03 Jul 2020 23:34:33 +0200 + +vlc (3.0.11-1) unstable; urgency=high + + * New upstream release + - Fix a heap-based buffer overflow in hxxx_nall (CVE-2020-13428) + + -- Sebastian Ramacher Mon, 15 Jun 2020 22:47:37 +0200 + +vlc (3.0.10-2) unstable; urgency=medium + + * debian/: + - Bump debhleper compat to 13 + - Disable srt until the package is fixed + - Build omxil plugin only on Raspbian (Closes: #957915) + + -- Sebastian Ramacher Thu, 11 Jun 2020 23:36:54 +0200 + +vlc (3.0.10-1) unstable; urgency=medium + + * New upstream release + + -- Sebastian Ramacher Mon, 27 Apr 2020 22:10:09 +0200 + +vlc (3.0.9.2-1) unstable; urgency=medium + + * New upstream release + * debian/patches: Remove patches integrated upstream + * debian/copyright: + - Bump copyright years + - Update files + * debian/upstream/signing-key.asc: Re-export upstream's signing key + + -- Sebastian Ramacher Thu, 09 Apr 2020 21:29:44 +0200 + +vlc (3.0.8-4) unstable; urgency=medium + + * debian/control: Bump Standards-Version + * debian/upstream: Apply upstream patches for chromecast support in avahi + * debian/: Disable microdns plugin + + -- Sebastian Ramacher Thu, 27 Feb 2020 21:44:49 +0100 + +vlc (3.0.8-3) unstable; urgency=medium + + * debian/control: + - Replace libfreetype6-dev with libfreetype-dev + - Bump Standards-Version + * debian/: Build srt access plugin + + -- Sebastian Ramacher Mon, 18 Nov 2019 22:38:08 +0100 + +vlc (3.0.8-2) unstable; urgency=medium + + * debian/: Revert "Switch back to libmodplug-dev since vlc now requires + 0.8.9.". Patch configure.ac instead. + + -- Sebastian Ramacher Mon, 19 Aug 2019 21:07:34 +0200 + +vlc (3.0.8-1) unstable; urgency=medium + + * New upstream release. + - Fix a buffer overflow in the MKV demuxer (CVE-2019-14970) + - Fix a read buffer overflow in the avcodec decoder (CVE-2019-13962) + - Fix a read buffer overflow in the OGG demuxer (CVE-2019-14437, + CVE-2019-14438) + - Fix a read buffer overflow in the ASF demuxer (CVE-2019-14776) + - Fix a use after free in the MKV demuxer (CVE-2019-14777, CVE-2019-14778) + - Fix a use after free in the ASF demuxer (CVE-2019-14533) + - Fix a null dereference in the ASF demuxer (CVE-2019-14534) + - Fix a division by zero in the CAF demuxer (CVE-2019-14498) + - Fix a division by zero in the ASF demuxer (CVE-2019-14535) + * debian/: Remove crystalhd plugin. libcrystalhd-dev is scheduled for + removal. + * debian/patches: Remove patches included upstream. + * debian/control: Switch back to libmodplug-dev since vlc now requires + 0.8.9. + + -- Sebastian Ramacher Mon, 19 Aug 2019 18:50:39 +0200 + +vlc (3.0.7.1-3) unstable; urgency=medium + + * debian/patches: Apply upstream patch to fix SIGFPE when playing DVDs. + (Closes: #929491, #923017, #932182) + + -- Sebastian Ramacher Sat, 20 Jul 2019 10:17:45 +0200 + +vlc (3.0.7.1-2) unstable; urgency=medium + + * debian/: Remove obsolete maintscripts. + * debian/control: + - Remove obsolete transitional package. + - Remove obsolete Breaks+Replaces. + - Bump Standards-Version. + * debian/patches: Apply upstream patches to + - unbreak rendering in subsvtt. + - fix integer underflows in mp4. (CVE-2019-13602) (Closes: #932131) + + -- Sebastian Ramacher Mon, 15 Jul 2019 19:55:05 +0200 + +vlc (3.0.7.1-1) unstable; urgency=medium + + * New upstream release. + + -- Sebastian Ramacher Mon, 24 Jun 2019 09:08:03 +0200 + +vlc (3.0.7-1) unstable; urgency=high + + * New upstream release. + - Fix multiple integer overflows. + - Fix multiple buffer overflows. + - Fix use-after-free issue. + - Fix NULL pointer dereference. + - Fix other memory access bugs and infinite loops. + * debian/rules: Be explicit about --enable-debug/disable-debug. + + -- Sebastian Ramacher Fri, 07 Jun 2019 01:08:14 +0200 + +vlc (3.0.6-1) unstable; urgency=medium + + * New upstream release. + + -- Sebastian Ramacher Thu, 10 Jan 2019 20:03:32 +0100 + +vlc (3.0.5-2) unstable; urgency=medium + + * debian/control: Bump libbluray-dev to >= 1.0.0. + * debian/: Bump debhelper compat to 12. + * debian/copyright: Remove paragraphs for no longer existing files. + + -- Sebastian Ramacher Fri, 04 Jan 2019 18:08:58 +0100 + +vlc (3.0.5-1) unstable; urgency=medium + + [ Mateusz Łukasik ] + * New upstream release: + - Remove patches included upstream. + + [ Sebastian Ramacher ] + * debian/control: Bump Standards-Version. + * debian/vlc-plugin-base.install: Install 10-bit x264 plugin. + + -- Sebastian Ramacher Thu, 27 Dec 2018 19:11:50 +0100 + +vlc (3.0.4-4) unstable; urgency=medium + + * debian/patches: Apply upstream patch to fix integer underflow + (CVE-2018-19857). (Closes: #915760) + + -- Sebastian Ramacher Sun, 09 Dec 2018 21:02:57 +0100 + +vlc (3.0.4-3) unstable; urgency=medium + + * debian/patches: Add support for libplacebo 0.6. + + -- Sebastian Ramacher Thu, 11 Oct 2018 18:53:22 +0200 + +vlc (3.0.4-2) unstable; urgency=medium + + * debian/: Build AOM plugin. + + -- Sebastian Ramacher Thu, 20 Sep 2018 20:08:29 +0200 + +vlc (3.0.4-1) unstable; urgency=medium + + * New upstream release. + - Fix OpenGL output for single plane devices. (LP: #1774119) + - Decode AV1 streams. (LP: #1789715) + * debian/patches: Drop patches merged upstream. + + -- Sebastian Ramacher Fri, 31 Aug 2018 19:35:02 +0200 + +vlc (3.0.3-1-4) unstable; urgency=medium + + * Bump Standards-Version + * debian/patches: Apply upstream patch for x264 155 support. + + -- Sebastian Ramacher Thu, 30 Aug 2018 23:03:27 +0200 + +vlc (3.0.3-1-3) unstable; urgency=medium + + * debian/: Enable libspatialaudio. + * debian/control: Bump Standards-Version. + + -- Sebastian Ramacher Sat, 04 Aug 2018 18:26:19 +0200 + +vlc (3.0.3-1-2) unstable; urgency=medium + + * debian/patches: Apply upstream patch to fix build with Qt 5.11. + + -- Sebastian Ramacher Thu, 19 Jul 2018 19:08:55 +0200 + +vlc (3.0.3-1-1) unstable; urgency=high + + * New upstream version. + - mkv: Fix NULL pointer access. (CVE-2018-11529) + * debian/bug-presubj: No longer include -f. + * debian/bug-control: Remove Submit-As. + * debian/patches: Backport upstream patch for fribidi 1.0.x. + + -- Sebastian Ramacher Wed, 18 Jul 2018 13:44:16 +0200 + +vlc (3.0.3-2) unstable; urgency=medium + + * debian/patches: Fix build on riscv64 (Closes: #901577) + + -- Sebastian Ramacher Sat, 30 Jun 2018 10:01:23 +0200 + +vlc (3.0.3-1) unstable; urgency=medium + + * New upstream release. + + -- Sebastian Ramacher Mon, 28 May 2018 23:51:35 +0200 + +vlc (3.0.2-1) unstable; urgency=medium + + [ Felipe Sateler ] + * Change maintainer address to debian-multimedia@lists.debian.org + + [ Sebastian Ramacher ] + * New upstream version. + * debian/rules: Install correct changelog. + * debian/control: Bump Standards-Version. + * debian/patches: Remove patched included upstream. + + -- Sebastian Ramacher Tue, 24 Apr 2018 16:52:12 +0200 + +vlc (3.0.1-3) unstable; urgency=medium + + * debian/control: Re-add some Breaks+Replaces to help Ubuntu reduce the diff + and be able to handle upgrades from 16.04 to 18.04. (LP: #1753111, + #1749916) + * debian/rules: + - Re-enable Chromecast plugin on Ubuntu. Apparently it works now. + - Fix typo to really build with all hardening options enabled. + + -- Sebastian Ramacher Sun, 11 Mar 2018 21:52:05 +0100 + +vlc (3.0.1-2) unstable; urgency=medium + + * debian/patch: Add missing files for arm64. + + -- Sebastian Ramacher Fri, 02 Mar 2018 16:28:28 +0100 + +vlc (3.0.1-1) unstable; urgency=medium + + * New upstream release. + * debian/control: Bump libplacebo-dev B-D to 0.2.1 (required by upstream). + + -- Sebastian Ramacher Thu, 01 Mar 2018 11:32:12 +0100 + +vlc (3.0.0-1) unstable; urgency=medium + + * New upstream release. + * debian/*.symbols: + - Bump all newly introduced symbols to version 3.0.0. + - Add new symbols. + + -- Sebastian Ramacher Fri, 09 Feb 2018 16:40:34 +0100 + +vlc (3.0.0~rc8-1) unstable; urgency=medium + + * New upstream release candidate. + + -- Sebastian Ramacher Thu, 01 Feb 2018 20:00:43 +0100 + +vlc (3.0.0~rc7-2) unstable; urgency=medium + + * debian/: Disable freerdp plugin. freerdp2 is currently not supported. + (Closes: #888323) + + -- Sebastian Ramacher Thu, 25 Jan 2018 00:15:17 +0100 + +vlc (3.0.0~rc7-1) unstable; urgency=medium + + * New upstream release candidate. + + -- Sebastian Ramacher Wed, 24 Jan 2018 22:34:33 +0100 + +vlc (3.0.0~rc6-1) unstable; urgency=medium + + [ Helmut Grohne ] + * debian/control: Annotate Build-Depends: python3 with :native. (Closes: + #887440) + + [ Sebastian Ramacher ] + * New upstream release candidate. + * debian/rules: + - Handle vendor consistently. + - Remove workaround for some resources. + * debian/vlc-plugin-base.install: Install lua byte code. + * debian/libvlc-bin.postinst.in: Exit early if plugins directory does not + exist. (Closes: #887621) + + -- Sebastian Ramacher Thu, 18 Jan 2018 22:31:56 +0100 + +vlc (3.0.0~rc5-1) unstable; urgency=medium + + * New upstream release candidate. + - Fix crash in full-screen mode. (LP: #1740078) + * debian/copyright: Update copyright years. + * debian/patches: Removed, included upstream. + - debian/control: Demote vlc-l10n from Depends to Recommends. + + -- Sebastian Ramacher Thu, 11 Jan 2018 19:41:02 +0100 + +vlc (3.0.0~rc4-3) unstable; urgency=medium + + * debian/control: + - Move to salsa.debian.org + - Remove obsolete Pre-Depends. + * debian/NEWS: Remove old NEWS from pre 2.x. + * debian/: + - Move documentation to /usr/share/doc/$mainpkg as recommended by policy. + - Bump debhelper compat to 11. + * debian/copyright: Bump copyright years. + + -- Sebastian Ramacher Sat, 06 Jan 2018 14:17:42 +0100 + +vlc (3.0.0~rc4-2) unstable; urgency=medium + + * debian/control: Add Breaks on phonon-backend-vlc to ensure proper + upgrades. + * debian/rules: Do not build chromecast plugin on Ubuntu. It fails due to + issues involving Mir and protobuf. + * debian/: Enable libplacebo. + + -- Sebastian Ramacher Fri, 05 Jan 2018 09:51:06 +0100 + +vlc (3.0.0~rc4-1) unstable; urgency=medium + + * New upstream release candidate. + * debian/control: Bump Standards-Version. + + -- Sebastian Ramacher Sat, 30 Dec 2017 18:56:14 +0100 + +vlc (3.0.0~rc2-2) unstable; urgency=medium + + * debian/*.maintscript: Fix symlink to directory conversions. + + -- Sebastian Ramacher Wed, 20 Dec 2017 21:48:00 +0100 + +vlc (3.0.0~rc2-1) unstable; urgency=medium + + * Upload to unstable. + * New upstream release candidate. + * debian/tests/control: Update list of plugin packages. + * debian/patches: Removed, no longer needed. + * debian/vlc-plugin-access-extra.install: Drop no longer built plugin. + * debian/*.symbols: Add new symbols and bump versions of new symbols to + 3.0.0~rc2. + + -- Sebastian Ramacher Tue, 19 Dec 2017 23:34:22 +0100 + +vlc (3.0.0~rc1-1) experimental; urgency=medium + + * New upstream release candidate. + * debian/control: Move Breaks+Replaces to correct package. (Closes: #884063) + * debian/: + - Mark more plugins only built on linux-any. + - Switch libnotify plugin to GTK+ 3. + + -- Sebastian Ramacher Mon, 11 Dec 2017 21:46:02 +0100 + +vlc (3.0.0~rc1~20171210-2) experimental; urgency=medium + + * debian/rules: Ensure tighter dependencies on libraries. + * debian/: Build wayland plugins only on linux-any. + + -- Sebastian Ramacher Sun, 10 Dec 2017 19:17:48 +0100 + +vlc (3.0.0~rc1~20171210-1) experimental; urgency=medium + + * New upstream snapshot. + * debian/: Install nfs plugin only on linux-any. + * debian/*.symbols: Add new symbols. + + -- Sebastian Ramacher Sun, 10 Dec 2017 13:11:23 +0100 + +vlc (3.0.0~rc1~20171206-1) experimental; urgency=medium + + * New upstream snapshot. + - Install vlc_interface.h. (Closes: #768808) + - Fix stuttering with ALSA output. (Closes: #734100) (LP: #1639479) + - Fix CRC errors in some FLAC files. (Closes: #772503) + - Add support for Wayland. (Closes: #857769) (LP: #1720901) + - Better support for HLS. (Closes: #792647) + - Update VLSub. (Closes: #868236) + - Re-write UPnP discovery. (LP: #977277, #1318262) + - Complete porting to Qt 5. (LP: #1576175) + - Fix issues with green borders. (Closes: #765969) (LP: #1405166) + * Remove embedded ffmpeg copy. (LP: #1546078) + * SONAME bump: libvlccore8 -> libvlccore9. + * debian/patches: Drop all patches. + * debian/libvlc-bin.postinst.in: Skip plugin cache generation if no plugins + are installed. (Closes: #878026) + * debian/: + - Drop vlc-plugin-zvbi package and merge into vlc-plugin-base. ffmpeg + already depends on libzvbi anyway. + - Update installed plugins. + - Track plugin ABI. + * debian/copyright: + - Convert to CF 1.0. + - Update copyright information. + * debian/control: + - Bump Standards-Versios. + - Set Rules-Requires-Root: no. + - Remove vlc-plugin-sdl. + - Turn vlc-plugin-zvbi into a transitional package. + - New Build-Depends: bison, flex, libarchive-dev, libaribb24-dev, + libharfbuzz-dev, libmicrodns-dev, libmpg123-dev, libnfs-dev, + libprotobuf-dev, libqt5svg5-dev, libsecret-1-dev, libsoxr-dev, + libsystemd-dev, protobuf-compiler, qtbase5-prive-dev, wayland-protocols. + - Removed Build-Depends: libcdio-dev. + * debian/*.symbols: Add new symbols. + + -- Sebastian Ramacher Thu, 07 Dec 2017 00:23:24 +0100 + +vlc (2.2.6-6) unstable; urgency=medium + + * Update to ffmpeg 2.8.13. + + -- Sebastian Ramacher Tue, 05 Sep 2017 19:37:57 +0200 + +vlc (2.2.6-5) unstable; urgency=medium + + * debian/control: Bump Standards-Version. + * debian/patches: Add support for libupnp 1.8. (Closes: #868936) + + -- Sebastian Ramacher Wed, 30 Aug 2017 20:57:06 +0200 + +vlc (2.2.6-4) unstable; urgency=medium + + * debian/upstream: Add DEP-12 metadata. + * debian/control: + - Restrict Recommends on vlc-plugin-samba to linux-any kfreebsd-any. + - Switch to timgm6mb-soundfont. (Closes: #870790) + - Bump Standards-Version. + * debian/{rules,control,vlc-plugin-base}: No longer build directfb plugin. + directfb upstream is inactive and the plugin got removed for vlc 3.0. + * debian/vlc-plugin-base.lintian-overrides: Override + shlibs-with-non-pic-code. See lintian overrides of ffmpeg for more + details. + + -- Sebastian Ramacher Sat, 12 Aug 2017 12:56:58 +0200 + +vlc (2.2.6-3) unstable; urgency=medium + + [ Mateusz Łukasik ] + * debian/patches: avcodec: Check visible sizes (CVE-2017-10699). + + [ Sebastian Ramacher ] + * debian/patches: flac: Fix heap write overflow on frame format change. + (CVE-2017-9300) + + -- Sebastian Ramacher Tue, 11 Jul 2017 21:35:32 +0200 + +vlc (2.2.6-2) unstable; urgency=medium + + * Upload to unstable. + * Update to ffmpeg 2.8.12. + * debian/control: + - Remove Build-Conflicts. + - Bump Standards-Version. + * debian/rules: Build with hardening=+all. + + -- Sebastian Ramacher Sun, 18 Jun 2017 18:15:34 +0200 + +vlc (2.2.6-1) experimental; urgency=medium + + * New upstream release. + - demuxer: Fix heap buffer overflows (CVE-2017-8312). + + -- Sebastian Ramacher Wed, 24 May 2017 17:35:55 +0200 + +vlc (2.2.5.1-1) experimental; urgency=medium + + [ Mateusz Łukasik ] + * New upstream release. + + [ Sebastian Ramacher ] + * debian/patches: Refreshed. + + -- Sebastian Ramacher Sat, 13 May 2017 15:04:10 +0200 + +vlc (2.2.5-4) experimental; urgency=medium + + * debian/rules: Revert "Also enable NEON on arm64". (LP: #1685444) + + -- Sebastian Ramacher Sun, 23 Apr 2017 15:52:57 +0200 + +vlc (2.2.5-3) experimental; urgency=medium + + * Fix typos in changelog. + * debian/rules: Also enable NEON on arm64. + * debian/control: Build-Conflict with Qt in experimental to work around + #858762. + * debian/patches: + - Use gbp-pq for patch management. + - Apply upstream patch for WebVTT support. (Closes: #858963) + + -- Sebastian Ramacher Fri, 07 Apr 2017 19:01:02 +0200 + +vlc (2.2.5-2) experimental; urgency=medium + + [ Mateusz Łukasik ] + * debian/{control,rules,vlc-plugin-video-output.install}: Disable OpenGL + ES 1 support, mesa has dropped it. (Closes: #855117) + + [ Sebastian Ramacher ] + * debian/: Major package clean up. + - Remove vlc-nox binary package. + - Update tests to new package layout. + - Remove obsolete Breaks+Replaces. + * debian/rules: Be explicit about GLES 1 + * debian/{rules,libvlc-bin.*}: Fix warning about non-empty directory + (Closes: #854928) + + -- Sebastian Ramacher Thu, 23 Mar 2017 17:56:16 +0100 + +vlc (2.2.5-1) unstable; urgency=medium + + * New upstream releases. (Closes: #850529) + * debian/patches: + - fix-translation.patch: Refreshed. + - Removed patches taken from upstream included in 2.2.5. + * debian/*.maintscript: Bump all versions to 2.2.5-1~z. This is necessary to + properly handle symlink to directory conversions once 2.2.5 is available + in jessie. + + -- Sebastian Ramacher Sun, 19 Mar 2017 21:50:23 +0100 + +vlc (2.2.4-14) unstable; urgency=medium + + [ Mateusz Łukasik ] + * Update to ffmpeg 2.8.11. + + -- Sebastian Ramacher Tue, 14 Feb 2017 20:17:50 +0100 + +vlc (2.2.4-13) unstable; urgency=medium + + * debian/control: Switch to libopenmpt's libmodplug compat layer. + + -- Sebastian Ramacher Wed, 11 Jan 2017 19:50:54 +0100 + +vlc (2.2.4-12) unstable; urgency=medium + + * Update to ffmpeg 2.8.10. + + -- Sebastian Ramacher Tue, 03 Jan 2017 21:11:29 +0100 + +vlc (2.2.4-11) unstable; urgency=medium + + * debian/patches: Apply upstream to fix VLSub incorrectly announcing HTTP + 1.1 support. (Closes: #847559) + * debian/control: Make vlc-plugin-skins2 depend on vlc-plugin-qt. + + -- Sebastian Ramacher Sun, 18 Dec 2016 21:29:12 +0100 + +vlc (2.2.4-10) unstable; urgency=medium + + * debian/{control,*.links,*.install}: Move qvlc and svlc binaries to + vlc-plugin-qt and vlc-plugin-skins2. Also add vlc-bin to Recommends. + (Closes: #841530) + * Update to ffmpeg 2.8.9. + + -- Sebastian Ramacher Sun, 04 Dec 2016 15:12:16 +0100 + +vlc (2.2.4-9) unstable; urgency=medium + + * debian/control: Drop dh_buildinfo. This is now automatically recorded by + dpkg. + * debian/bug-control: Update list of packages. + * debian/{control,rules,vlc-plugin-base.install}: Remove libschroedinger + plugin since the library is about to be removed. See #845037 for details. + + -- Sebastian Ramacher Tue, 22 Nov 2016 00:16:46 +0100 + +vlc (2.2.4-8) unstable; urgency=medium + + * debian/NEWS: Remove NEWS entry on package split. On upgrade, new + Recommends are installed by apt anyway. + * debian/control: + - Switch from liblircclient-dev to liblirc-dev. + - Remove shlibs:Depends from vlc's Depends. + * debian/rules: Add --disable-neon when building with noopt. + * debian/patches: + - drop-check-qt-check.patch: Remove obsolete patches. + - multiple: Add upstream patches to generate default skins2 skin + reproducibly. (Closes: #841525) + + -- Sebastian Ramacher Tue, 01 Nov 2016 13:34:46 +0100 + +vlc (2.2.4-7) unstable; urgency=medium + + * Split plugins and binaries into different packages. (Closes: #513177) + - libvlc-bin: constains vlc-cache-gen and triggers plugin cache + generation. + - vlc-bin: the VLC binaries. + - vlc-plugin-base: "base" set of plugins. + - vlc-plugin-qt: the Qt interface. + - vlc-plugin-skins2: the Skins2 interface. + - vlc-plugin-access-extra: extra access plugins. + - vlc-plugin-visualization: visualization plugins. + - vlc-plugin-video-splitter: video splitter plugins. + - vlc-plugin-video-output: video output plugins. + - vlc-l10n: translations. + - vlc: contains desktop integration and pulls in most plugins as before. + - vlc-nox: transitional dummy package + * Move libraries and plugins to multi-arch locations. + - debian/control: + + Add M-A: same for library and plugin packages. + + Remove most Breaks and Replaces as they are now obsolete. + - debian/rules: Do not override libdir. + - debian/*.{lintian-overrides,install}: Update paths for M-A locations. + + -- Sebastian Ramacher Wed, 19 Oct 2016 17:59:18 +0200 + +vlc (2.2.4-6) unstable; urgency=medium + + * debian/*.maintscript: Bump all versions to fix symlink-to-directory + conversions. (Closes: #814646) + + -- Sebastian Ramacher Fri, 23 Sep 2016 21:08:42 +0200 + +vlc (2.2.4-5) unstable; urgency=medium + + * Update ffmpeg to 2.8.8. + + -- Sebastian Ramacher Wed, 21 Sep 2016 20:29:03 +0200 + +vlc (2.2.4-4) unstable; urgency=medium + + [ Pino Toscano ] + * Install solid actions in Frameworks location. (Closes: #834884) + + [ Sebastian Ramacher ] + * Bump debhelper compat to 10. + + -- Sebastian Ramacher Tue, 13 Sep 2016 21:29:23 +0200 + +vlc (2.2.4-3) unstable; urgency=medium + + [ Mateusz Łukasik ] + * debian/control: + - Remove Clément Stenac from Uploaders. Thanks for your job! + + [ Sebastian Ramacher ] + * debian/patches/{vlc_atomic*,Fix-build-using-old-GCC-intrinsics}.patch: Fix + FTBFS with GCC 6 (Closes: #831199) + + -- Sebastian Ramacher Fri, 29 Jul 2016 00:52:06 +0200 + +vlc (2.2.4-2) unstable; urgency=medium + + * Build ffmpeg without libopenjpeg (Closes: #826827) + - debian/control: Remove libopenjpeg-dev from B-D. + - debian/rules: Build ffmpeg with --disable-libopenjpeg. + * debian/rules: Revert workaround for zsh completion build failures on + powerpc. The underlying issue seems to be fixed. + + -- Sebastian Ramacher Sat, 11 Jun 2016 11:44:37 +0200 + +vlc (2.2.4-1) unstable; urgency=medium + + * New upstream release. + * debian/patches: + - g711-fix-dangling-pointer-fixes-16909.patch, + adpcm-reject-invalid-QuickTime-IMA-files.patch, zsh-completion.patch, + frenchtv-links.patch, fix-Hurd-build.patch, + the-Hurd-also-uses-the-.so-extension-for-libraries.patch: Removed, all + included upstream. + - generated-mimetypes.patch: Upstream patch for auto-generated list of + mime types. (Closes: #822245) + * debian/{rules,vlc-nox.install}: No longer install old BluRay access + plugin. (LP: #864933) + * debian/rules: No longer disable i686 optimization on i386 architectures. + + -- Sebastian Ramacher Sun, 05 Jun 2016 16:08:54 +0200 + +vlc (2.2.3-2) unstable; urgency=medium + + * debian/patches: + - g711-fix-dangling-pointer-fixes-16909.patch: Upstream patch to fix issue + with some WAV files. + - adpcm-reject-invalid-QuickTime-IMA-files.patch: Apply upstream patch for + CVE-2016-5108. (Closes: #825728) + * debian/rules: Reduce libX11 and libxcb linkage to a warning. Moving the + ffmpeg and libtheora plugins to vlc does not make much sense. + + -- Sebastian Ramacher Sun, 29 May 2016 13:09:00 +0200 + +vlc (2.2.3-1) unstable; urgency=medium + + [ Mateusz Łukasik ] + * New upstream release. + * debian/patches: + - Refresh fix-translation.patch: remove parts included upstream. + - Remove qt4-Fix-resume-where-you-left-off.patch, + qt4-input_manager-Always-reset-lastURI-when-stopping.patch, + avcodec-pass-consistent-dimensions-to-hardware-decod.patch: included + upstream. + - Add drop-check-qt-check.patch: to ignore check qt version. + + [ Sebastian Ramacher ] + * debian/patches: Fix build on hurd-i386. Thanks to Samuel Thibault. (Closes: + #765578) + * Update ffmpeg to 2.8.7. + * debian/vlc{,-nox}.lintian-overrides: Override embedded-libary. + * debian/source/lintian-overrides: Update overrides. + + -- Sebastian Ramacher Mon, 02 May 2016 22:55:00 +0200 + +vlc (2.2.2-6) unstable; urgency=medium + + * Use embedded copy of ffmpeg 2.8.6. (Closes: #803868) + * debian/rules: + * Explicitly disable gst-decode. + * Enable sndio plugin. + * Drop unnecessary override. + * Fix noopt handling. + * debian/vlc{-nox}.install: Filter plugins with a helper script. + * debian/control: Bump Standards-Version. + * debian/watch: Update to version 4. + + -- Sebastian Ramacher Mon, 18 Apr 2016 01:00:56 +0200 + +vlc (2.2.2-5) unstable; urgency=medium + + * debian/patches: + - qt4-Fix-resume-where-you-left-off.patch, + qt4-input_manager-Always-reset-lastURI-when-stopping.patch: Apply + upstream patches to fix issues with "resume playback" feature. + - avcodec-pass-consistent-dimensions-to-hardware-decod.patch: Apply + upstream patch to fix hardware decoding with libvdpau-va-gl. + (Closes: #813370) + + -- Sebastian Ramacher Sun, 13 Mar 2016 21:43:11 +0100 + +vlc (2.2.2-4) unstable; urgency=medium + + * debian/patches/fix-translation.patch: Fix translation of Shortcuts. + (Closes: #814258) + * debian/*.maintscript: Switch from absolute to relative paths to better + handle symlink chains. (Closes: #814646) + + -- Sebastian Ramacher Wed, 17 Feb 2016 20:21:32 +0100 + +vlc (2.2.2-3) unstable; urgency=medium + + * debian/*.maintscript: Handle all cases. + * debian/patches/zsh-completion.patch: Upstream patch to fix zsh completion + generation. + + -- Sebastian Ramacher Thu, 04 Feb 2016 20:53:28 +0100 + +vlc (2.2.2-2) unstable; urgency=medium + + * debian/*.maintscript: Handle more symlink to directory conversions. + * debian/rules: Do not fail to build if zsh completion fails to generate. + This is a temporary workaround for a FTBFS on praetorius. + + -- Sebastian Ramacher Wed, 03 Feb 2016 18:37:02 +0100 + +vlc (2.2.2-1) unstable; urgency=medium + + * New upstream release. + - pulse: compute latency correctly if negative. (Closes: #784640) + - Fix build failure with newer libdvdread-dev. (Closes: #797207) + * Migrate to automatic debug packages. + * Tell reportbug to report bugs against src:vlc and install reportbug + control files in every package. + * Remove some of the /usr/share/doc/ symlinks to clean up dependencies. + * debian/vlc.menu: Removed since vlc contains a desktop file. + * debian/rules: + - Remove some parts that are handled by dpkg-dev and debhelper. + - Install NEWS as upstream changelog. + - Remove options passed twice to configure. + * debian/README.{Debian,source}: Removed, outdated. + * debian/libvlc-dev.examples: Install programming examples. + * debian/{vlc.,source/}lintian-overrides: Override false positives. + * debian/NEWS: Fix spelling error. + * debian/control: Update Vcs-Git. + * debian/patches: + - Removed all patches applied upstream. + - freenchtv-links.patch: Fix links to French TV icons. Thanks to Mathieu + Malaterre (Closes: #782229). + * debian/libvlc5.symbols: Bump version of libvlc_event_type_name for new + event names. + + -- Sebastian Ramacher Mon, 01 Feb 2016 20:43:05 +0100 + +vlc (2.2.1-5) unstable; urgency=medium + + * debian/control: + - Update Breaks + Replaces. (Closes: #799594) + - Remove vlc-plugin-pulse from Description. + - Add libxi-dev to B-D for debian/patches/unsubscribe-disable-motion.patch. + * Add DEP-8 tests + * debian/libvlccore8.bug-control: Update libavutil package name. + * debian/libvlccore8.bug-presubj: Mention global plugins cache and + VLC_PLUGIN_PATH. (Closes: #801439) + * debian/patches: + - unsubscribe-disable-motion.patch: Unsubscribe disable motion and + XI2 mouse events. Fixes mouse event issues with Qt 5.5. + - alsa-fix-changing-audio-device.patch: Fix changing of audio devices. + (Closes: #801448) + * debian/vlc-data.{postinst,maintscript}, debian/vlc.postinst: Remove + obsolete maintainer scripts. + + -- Sebastian Ramacher Tue, 27 Oct 2015 23:45:06 +0100 + +vlc (2.2.1-4) unstable; urgency=medium + + * debian/control: + - No longer suggest videolan-doc. It is very outdated. + - Remove transitional vlc-plugin-pulse package. + - Remove obsolete Breaks and Replaces. + * debian/libvlccore8.symbols: Bump version requirements for meta data change + (Closes: #798763, #798899) + + -- Sebastian Ramacher Mon, 14 Sep 2015 01:07:44 +0200 + +vlc (2.2.1-3) unstable; urgency=high + + * debian/patches/demux-mp4-correctly-match-release-function.patch: Apply + upstream patch to fix CVE-2015-5949. (Closes: #796255) + + -- Sebastian Ramacher Fri, 21 Aug 2015 08:22:53 +0200 + +vlc (2.2.1-2) unstable; urgency=medium + + * debian/rules: + - Enable svgdec plugin + - Remove obsolete dh_builddeb override. + - Explicitly pass --enable-sdl-image. + * debian/control: + - Switch Build-Depends from Qt4 to Qt5. + - Remove obsolete Breaks+Replaces. + - Drop libdvbpsi5-dev from Build-Depends. + - Add libcairo2-dev to Build-Depends for svgdec plugin. + * debian/vlc.install.in: Install svgdec plugin. + + -- Sebastian Ramacher Tue, 02 Jun 2015 22:15:28 +0200 + +vlc (2.2.1-1) unstable; urgency=medium + + [ Sebastian Ramacher ] + * Regenerate plugin cache using triggers. (Closes: #755154) (LP: #1328466) + - debian/vlc-nox.postinst: Run vlc-cache-gen. + - debian/vlc-nox.postrm: Remove generated cache. + - debian/rules: remove plugins.dat generated during the build. + - debian/vlc-nox.install.in: Do not install pre-generated plugins.dat. + * debian/control: Add libx265-dev and zsh to Build-Depends. + * debian/rules: + - Build with -Wl,--as-needed. + - Enable x265 plugin. + - Build zsh completion. (Closes: #316357) + * debian/vlc-nox.install.in: + - Install x265 plugin. + + [ Mateusz Łukasik ] + * New upstream release. + * debian/patches: + - Remove codec-schroedinger-fix-potential-buffer-overflow.patch + -- included upstream. + + -- Sebastian Ramacher Sat, 25 Apr 2015 11:57:32 +0200 + +vlc (2.2.0-1) unstable; urgency=medium + + [ Helmut Grohne ] + * Add versioned depends on libvlccore8 to libvlc5 which shares + /usr/share/doc to comply with Debian policy 12.3. (Closes: #779251) + + [ Mateusz Łukasik ] + * New upstream release. (Closes: #757462, #780476) + - Fix various (potentially exploitable) heap overflows and heap buffer + overflows in different demuxers (LP: #1390491) + * Drop patches included upstream: + - demux-mp4-fix-buffer-overflow-in-parsing-of-string-b.patch + - stream_out-rtp-don-t-use-VLA-for-user-controlled-dat.patch + * Disable build samba plugin on hurd for fix FTBFS. (Closes: #765578) + + [ Benjamin Drung ] + * Point Vcs-Browser to cgit instead of gitweb. + * Drop removed --enable-glx configure flag. + + -- Benjamin Drung Mon, 06 Apr 2015 21:27:42 +0200 + +vlc (2.2.0~rc2-2) unstable; urgency=medium + + * debian/patches: Apply upstream patches for security vulnerabilities. + (Closes: #775866) + - codec-schroedinger-fix-potential-buffer-overflow.patch: fix potential + buffer overflow. (CVE-2014-9629) + - demux-mp4-fix-buffer-overflow-in-parsing-of-string-b.patch: fix buffer + overflow in parsing of string boxes. (CVE-2014-9626, CVE-2014-9627, + CVE-2014-9628) + - stream_out-rtp-don-t-use-VLA-for-user-controlled-dat.patch: don't use + VLA for user controlled data. (CVE-2014-9630) + + -- Sebastian Ramacher Wed, 21 Jan 2015 22:41:57 +0100 + +vlc (2.2.0~rc2-1) unstable; urgency=medium + + * New upstream release. + - Fix segfault in ASCII art plugin. (Closes: #768873) + - Fix selection of left/right channel in stereo mode. (Closes: #765830) + + -- Sebastian Ramacher Sun, 23 Nov 2014 13:14:07 +0100 + +vlc (2.2.0~rc1-1) unstable; urgency=low + + * New upstream release. + * debian/vlc-nox.install.in: Correctly install sftp plugin. + + -- Sebastian Ramacher Fri, 07 Nov 2014 17:26:34 +0100 + +vlc (2.2.0~pre4-2) unstable; urgency=medium + + * Revert "Disable FreeRDP plugin". (Closes: #764294) + + -- Sebastian Ramacher Sun, 26 Oct 2014 00:02:11 +0200 + +vlc (2.2.0~pre4-1) unstable; urgency=medium + + * New upstream release. + - Add video/ogg and audio/ogg to desktop file. (Closes: #762564) + - Fix output issues with VDPAU. (Closes: #759818) + + -- Sebastian Ramacher Tue, 07 Oct 2014 00:26:32 +0200 + +vlc (2.2.0~pre3-1) unstable; urgency=medium + + [ Mateusz Łukasik ] + * Fix typo in changelog + + [ Benjamin Drung ] + * New upstream release. + * Disable vpx plugin (not needed when having libavcodec) + * Remove hurd.patch, because this is a bug in Hurd and not in VLC. + * Disable OSS on Linux (Use ALSA on Linux instead of OSS.) + + [ Sebastian Ramacher ] + * Disable FreeRDP plugin as requested by the Release Team because FreeRDP is + currently broken. This allows us to finish the libav and libvlccore + transition. As soon as FreeRDP is fixed, this change can be reverted: + - debian/control: Remove libfreerdp-dev from Build-Depends. + - debian/rules: Build with --disable-freerdp. + - debian/vlc.install: Do not install the FreeRDP plugin. + * debian/control: + - Remove libdirac-dev from Build-Depends. It is no longer needed. + - Bump Standards-Version. No changes required. + + -- Sebastian Ramacher Sat, 27 Sep 2014 18:13:50 +0200 + +vlc (2.2.0~pre2-4) unstable; urgency=medium + + * debian/vlc-nox.install.in: libi420_yuy2_altivec_plugin.so moved to + video_chroma. Fixes package build failure on powerpc. + * Enable shine and vpx plugins: + - debian/control: Add libshine-dev and libvpx-dev to B-D. + - debian/rules: Pass --enable-shine and --enable-vpx. + - debian/vlc-nox.install.in: Install new plugins. + * debian/rules: Explicitly disable libtar support. + * debian/control: Lower Recommends: libdvdcss2 to Suggests to comply with + Policy §2.2.1. Thanks to Thorsten Alteholz. + + -- Sebastian Ramacher Mon, 25 Aug 2014 22:58:42 +0200 + +vlc (2.2.0~pre2-3) unstable; urgency=medium + + [ Sebastian Ramacher ] + * debian/control: + - Bump libavcodec-dev to >= 6:9 to make sure VDPAU decoding is available. + (Closes: #728039) + - Make Breaks and Replaces backport friendly. + - Fix description of the transitional vlc-plugin-pulse package. + - Added to Build-Depends: libegl1-mesa-dev, libvncserver-dev (>= 0.9.9), + libgles1-mesa-dev, libgles2-mesa-dev. + - Bump required versions in Build-Depends: libdbus-1-dev, libpulse-dev, + libtag1-dev. + * debian/rules: + - Fix post{inst,rm}-has-useless-call-to-ldconfig lintian warning. + - Enable OpenGL ES v1 and v2 plugins. + - Enable VNC plugin support. + - Disable svgdev plugin until libcairo2-dev >= 1.13 is available. + - Rename configure options that are no longer available (--enable-dirac) + and update nameing changes (--enable-libfreerdp -> --enable-freerdp, + --disable-quicksync -> --disable-mfx). + * debian/vlc-nox.links: Fix broken /usr/share/bug/vlc-nox symlink. + + [ Benjamin Drung ] + * Bump required versions of libbluray-dev and libopus-dev (according to + configure). + + -- Sebastian Ramacher Wed, 20 Aug 2014 01:54:32 +0200 + +vlc (2.2.0~pre2-2) unstable; urgency=medium + + * Add vlc-plugin-samba package shipping the Samba plugin. (Closes: #729238) + - debian/control: Add new vlc-plugin-samba package and add it to vlc's + Recommends. + - debian/vlc-{nox,plugin-samba}.install: Move Samba plugin to + vlc-plugin-samba. + * Remove vlc-plugin-pulse and put PulseAudio plugins to vlc. + - debian/control: Turn vlc-plugin-pulse into a transitional package and + remove it from vlc's Recommends. + - debian/vlc-{plugin-pulse,}.install: Move PulseAudio plugins to vlc. + * debian/rules: Improve check if plugins from vlc-nox are linked against + libX11 or libxcb. + * debian/vlc{-nox,}.install.in: Move RDP plugin to vlc to get rid of all + libX11 and libxcb dependencies in vlc-nox. + * debian/control: + - Remove obsolete Replaces. + - Remove obsolete Pre-Depends. dpkg (>= 1.15.6+) is even available in + squeeze. + - Mention all plugin packages in the Description. + - Explicitly list libdbus-1-dev in Build-Depends. + - Add myself to Uploaders. + + -- Sebastian Ramacher Tue, 19 Aug 2014 21:12:27 +0200 + +vlc (2.2.0~pre2-1) unstable; urgency=medium + + [ Sebastian Ramacher ] + * debian/patches/freerdp-1.1.0-beta2-API.patch: Apply upstream patch to + support FreeRDP 1.1.0-beta2 API. (Closes: #757951) + + [ Reinhard Tartler ] + * New upstream release. + - Fixes incorrect usage of AVFrame (Closes: #756329) + - Fixes compilation against newer freerdp: (Closes: #758382, 757951) + * Bump requirements on libdvdnav and libdvdread + * Fixes compilation against libav11 (Closes: #758203) + * Drop patches merged upstream + * Refresh Hurd patch + * Update installation paths for several modules + * Disable libtar support (Closes: #737534) + * Follow upstream SONAME bump libvlccore7 -> libvlccore8 + + -- Reinhard Tartler Sat, 16 Aug 2014 18:39:45 -0400 + +vlc (2.1.5-1) unstable; urgency=medium + + [ Benjamin Drung ] + * New upstream release. + * Add FFmpeg libraries as alternative build dependencies to libav. + * Enable VDPAU hardware decoder support. + + [ Mateusz Łukasik ] + * Fix FTBFS on hurd. (Closes: #742183) + + -- Benjamin Drung Mon, 19 May 2014 13:56:41 +0200 + +vlc (2.1.4-1) unstable; urgency=medium + + * New upstream release (Closes: #742625, LP: #1276650) + * SECURITY UPDATE: crafted ASF file handling integer divide-by-zero DoS + - CVE-2014-1684 + (Closes: #743033) + + -- Benjamin Drung Sun, 11 May 2014 00:57:13 +0200 + +vlc (2.1.2-2) unstable; urgency=medium + + * Team upload. + * debian/vlc-data.postinst: Check if a directory exists before trying to + remove it. (Closes: #732806) + + -- Sebastian Ramacher Tue, 31 Dec 2013 15:19:27 +0100 + +vlc (2.1.2-1) unstable; urgency=medium + + [ Benjamin Drung ] + * New upstream release. + - Fix build failure with freetype 2.5.1 (Closes: #731513) + * Add gpg signature check to watch file. + + [ Mateusz Łukasik ] + * Bump Standards-Version to 3.9.5 (no changes needed). + + -- Benjamin Drung Sat, 21 Dec 2013 21:18:56 +0100 + +vlc (2.1.1-1) unstable; urgency=low + + * New upstream release. + * Drop altivec patch (fixed upstream). + * Remove obsolete conffiles (Closes: #703750). + + -- Benjamin Drung Mon, 18 Nov 2013 21:46:53 +0100 + +vlc (2.1.0-2) unstable; urgency=high + + * Remove mmx and sse2 plugins on non-x86 hardware. (Closes: #727831) + * Disable Video4Linux2 on kFreeBSD due to a build failure. (Closes: #728130) + * Switch to debhelper 9. + * Update minimum version of build dependencies. + * Explicitly disable plugins that we do not build. + * Fix build failure on powerpc by correcting the detection of compiler flags + for altivec. + * Drop link-binaries-with-c++.patch. + * Remove the libvaapi plugin from vlc if libva is disabled. + * Enable libva on kFreeBSD. + + -- Benjamin Drung Tue, 29 Oct 2013 01:55:40 +0100 + +vlc (2.1.0-1) unstable; urgency=high + + * New major upstream release. (Closes: #436339, #632965, #642187, + #698023, #593735, #724734, #665732, #700752, #704941, #708953, + #712935, #398167, #646200, #679654, #654955, LP: #982953, #301193, + #986785, #1038303, #1109026, #530797, #667584, #938621, #671031, + #1080847, #1157384, #1173943) + * Security: Fix buffer overflow in the mp4a packetizer CVE-2013-4388 + (Closes: #726528) + * Drop configure-m4-undefine.patch. (code in question doesn't exist) + * Drop dvbpsi.patch. (no longer needed) + * Drop v4l-kfreebsd.patch. (no longer needed) + * pnap-grammar.patch: Fix spelling/grammar in 2.1's PNAP dialog. + * Remove static dependency on libproxy and add runtime dependency for + libproxy as per upstream changes. + * Use -mtune instead of --with-tuning, as it was removed. + * SONAME bump for libvlccore5 to libvlccore7. + * Update symbols for libvlc5 and libvlccore7. + * Update file lists to account for new/renamed/removed modules. + * Add missing Breaks and Replaces for libavcodec_plugin.so move. + * Disable the static library. + * Bump to lua5.2. + * Update debian/copyright to include LGPL where relevant, in response + to the VLC 2.1 relicensing. + + -- Edward Wang Sun, 06 Oct 2013 11:12:25 -0400 + +vlc (2.0.8-1) unstable; urgency=low + + * New upstream release. + * Drop fix-ftbfs-flac-1.3.patch (applied upstream). + + -- Benjamin Drung Thu, 01 Aug 2013 14:19:42 +0200 + +vlc (2.0.7-4) unstable; urgency=low + + * Team upload. + + [ Reinhard Tartler ] + * Remove Sam Hocevar from uploaders on his request + + [ Sebastian Ramacher ] + * debian/patches/dvbpsi.patch: Backport patches from upstream to allow + building with libdvbpsi 1.0.0. (Closes: #715520) + * debian/patches/configure-m4-undefine.patch: Prevent m4 errors during + dh_autoreconf. + + -- Sebastian Ramacher Wed, 24 Jul 2013 16:24:06 +0200 + +vlc (2.0.7-3) unstable; urgency=low + + * Drop unused build-dependencies on libglib2.0-0, libsvga1-dev, + libx11-xcb-dev, and libxt-dev. (Closes: #713989) + + -- Benjamin Drung Mon, 24 Jun 2013 23:07:03 +0200 + +vlc (2.0.7-2) unstable; urgency=medium + + * Fix FTBFS with FLAC 1.3, Closes: #712687 + + -- Reinhard Tartler Wed, 19 Jun 2013 07:38:18 +0200 + +vlc (2.0.7-1) unstable; urgency=low + + * New upstream release. + * Update watch file. + + -- Benjamin Drung Tue, 04 Jun 2013 00:19:49 +0200 + +vlc (2.0.6-1) unstable; urgency=low + + * New upstream release (LP: #1166189). + * Drop backported man page patch. + + -- Benjamin Drung Mon, 08 Apr 2013 15:47:10 +0200 + +vlc (2.0.5-2) unstable; urgency=low + + * Bump Standards-Version to 3.9.4 (no changes needed). + * Override false positive hardening-no-fortify-functions lintian warnings. + * Fix build failure on powerpcspe. Thanks to Roland Stigge. (Closes: #701830) + * Backport man page update to correct title DVD syntax. (Closes: #691957) + * Fix apport hook. Thanks to Dmitry Shachnev. (Closes: #702942) + + -- Benjamin Drung Fri, 22 Mar 2013 13:37:54 +0100 + +vlc (2.0.5-1) unstable; urgency=low + + * New upstream release. + * Don't let libvlc-dev depend on libvlccore-dev. + + -- Benjamin Drung Thu, 13 Dec 2012 11:07:35 +0100 + +vlc (2.0.4-1) unstable; urgency=low + + * New upstream release. + - Fix crashes (LP: #947156, #958462, #960020, #979490, #1033682) + - Correct default encoding for Hebrew subtitles (LP: #1051552) + * Drop backported bp-fix-hang-caused-by-notify.patch. + * Build the sftp access and Opus codec plugin and add them to vlc-nox. + + -- Benjamin Drung Thu, 18 Oct 2012 18:59:03 +0200 + +vlc (2.0.3-3) unstable; urgency=low + + * debian/vlc.postinst: Fix directory to symlink upgrade in postinst. + Thanks to David Prévot (Closes: #687657) + * debian/vlc.preinst: Remove insufficient fix to #613121 (similar issue). + Thanks to David Prévot for the patch. + * Cherry-pick fix for VLC hang caused by the notify plugin. (Closes: #662628, + LP: #970447) + * Drop alternative dependency on transitional ttf-freefont. + + -- Benjamin Drung Thu, 04 Oct 2012 20:59:21 +0200 + +vlc (2.0.3-2) unstable; urgency=low + + * debian/rules: Use xz compression for binary packages. + Thanks to Ansgar Burchardt (Closes: #683836) + * Add version to vlc-nox dependency of vlc-plugin-sdl (consistent with other + plug-ins). + + -- Benjamin Drung Sat, 18 Aug 2012 17:45:01 +0200 + +vlc (2.0.3-1) unstable; urgency=low + + * New upstream release. + + -- Benjamin Drung Sat, 21 Jul 2012 17:52:21 +0200 + +vlc (2.0.2-2) unstable; urgency=low + + * Add missing epoch to libqt4-dev build dependency. + * Drop libggi2-dev from build dependencies (not needed any more). + (Closes: #680237) + * The dependency ttf-freefont was renamed to fonts-freefont-ttf. + + -- Benjamin Drung Sat, 07 Jul 2012 19:13:07 +0200 + +vlc (2.0.2-1) unstable; urgency=medium + + [ Edward Wang ] + * New upstream release (Closes: #679625, #664279, LP: #689122, #936488, + #942126, #971106, #972615, #973051, #987231, #995003, #998538). + - Fix Ogg Heap buffer overflow. Thanks to Hugo Beauzée-Luyssen + * Add the crystalhd plugin to the vlc distribution. + * libcaca_plugin.so now depends on X11 in this release, so it must + be installed under vlc (versus vlc-nox). + + [ Reinhard Tartler ] + * Urgency set to medium because a security issue is fixed in this release + + [ Benjamin Drung ] + * Add new plugins to vlc-nox: + - crystalhd (Linux amd64 and i386 only) + - directfb + - fbosd (Linux only) + - omxil (Linux only) + * Add build dependencies for new plugins. + * Add new symbols to libvlccore5. + * Switch to debhelper 8. + + -- Benjamin Drung Sat, 30 Jun 2012 18:39:41 +0200 + +vlc (2.0.1-4) unstable; urgency=high + + * Add missing Breaks and Replaces for moving the documentation from vlc-data + away from /usr/share/doc/vlc before converting the directory into a symlink. + (Closes: #665743) + + -- Benjamin Drung Fri, 30 Mar 2012 01:56:37 +0200 + +vlc (2.0.1-3) unstable; urgency=high + + * Replace symlink by directory in /usr/share/doc/vlc-nox. + (Closes: #665743, LP: #964449) + + -- Benjamin Drung Wed, 28 Mar 2012 13:29:37 +0200 + +vlc (2.0.1-2) unstable; urgency=high + + * Really add the preinst from Didier Raboud to vlc to drop it's doc directory + before unpacking a symlink to vlc-nox's over it. (Closes: #613121, #662217) + + -- Benjamin Drung Sat, 24 Mar 2012 01:33:03 +0100 + +vlc (2.0.1-1) unstable; urgency=high + + * New upstream release (LP: #931318, #943014, #947814). + * Change build dependency from libpng12-dev to libpng-dev. (Closes: #662539) + * Add --enable-dbus to configure flags. + * Drop patches that were backported and accepted by upstream. + * Add missing libxinerama-dev build dependency for the Skins2 interface. + * Add libgtk2.0-dev back to build dependencies for the notify plugin. + * Set urgency to high for security fixes. + + -- Benjamin Drung Fri, 23 Mar 2012 19:03:52 +0100 + +vlc (2.0.0-6) unstable; urgency=high + + * Fix FTBFS on kFreeBSD (Closes: #661819): + - Drop --as-needed as it breaks the build fix for kFreeBSD. + - Enable linsys only on Linux and exclude the plugins from non-Linux. + Thanks to Cyril Brulebois for the patch. + - Adapt the vlc-cache-gen linking patch from Sam Hocevar to also link + vlc with the C++ standard library. + * Set urgency to high for the RC bug fix. + + -- Benjamin Drung Thu, 01 Mar 2012 22:28:30 +0100 + +vlc (2.0.0-5) unstable; urgency=low + + * Rewrite v4l kfreebsd patch. + * Link vlc-cache-gen with the C++ standard library. (Closes: #660934, #660935) + * Enable hardened build flags through dpkg-buildflags. (Closes: #658030) + + -- Benjamin Drung Thu, 01 Mar 2012 13:37:41 +0100 + +vlc (2.0.0-4) unstable; urgency=low + + * Enable and install Open Sound System (OSS) plugin. + * Fix configure flag from --enable-libv4l2 to --enable-v4l2. + + -- Benjamin Drung Tue, 28 Feb 2012 23:31:14 +0100 + +vlc (2.0.0-3) unstable; urgency=low + + * Fix v4l2 build failure on kfreebsd. (Closes: #660935) + + -- Benjamin Drung Sun, 26 Feb 2012 18:03:39 +0100 + +vlc (2.0.0-2) unstable; urgency=low + + * Remove nasm and yasm form build dependencies (they are not used). + * Bump Standards-Version to 3.9.3, no changes needed. + * Backport patch from upstream to the fix build failures on kfreebsd. + (Closes: #660935) + * altivec-cflags.patch: Add missing CFLAGS_* variables to pass the "-maltivec" + flag. This should fix the build failure on powerpc. (Closes: #660936) + + -- Benjamin Drung Sun, 26 Feb 2012 01:26:21 +0100 + +vlc (2.0.0-1) unstable; urgency=low + + * New upstream release (Closes: #499381, #573064, #624027, LP: #455825, + #573775, #695882, #705151, #708448, #738381, #743581, #747757, #817924, + #931083). + * Remove dropped mozilla-plugin-vlc, vlc-plugin-ggi, and vlc-plugin-svgalib. + The Mozilla browser plug-in is now provided by a separate source tarball. + * Add new plugins to and remove dropped plugins from vlc-nox. + * Add new and remove dropped build dependencies: + + libbluray-dev (for Blu-ray support) + + libresid-builder-dev + + libsamplerate0-dev + + libsidplay2-dev + + lbspeexdsp-dev + + libxcb-composite0-dev + - libgtk2.0-dev + - xulrunner-dev + * vlc-plugin-fluidsynth depends on fluid-soundfont-gm or + musescore-soundfont-gm for having a sound font for playing MIDI files. + * Drop all patches (they were either backported or accepted by upstream). + * Update symbols for libvlc5. + * Install plugins.dat instead of running vlc-cache-gen in postinst. + * Update minimum version of build dependencies. + * Change Build-Dependency from libupnp3-dev to unversioned libupnp-dev. + (Closes: #656831) + + -- Benjamin Drung Sat, 18 Feb 2012 01:29:48 +0100 + +vlc (1.1.13-1) unstable; urgency=low + + * New upstream release (Closes: #604687). + * Drop backported patches and patches that were accepted by upstream. + * Refresh remaining patches. + * Add mailcap entry for Ogg Video (Closes: #651662). + + -- Benjamin Drung Sat, 31 Dec 2011 13:42:26 +0100 + +vlc (1.1.12-3) unstable; urgency=low + + [ Didier Raboud ] + * Install v4l2 modules on kfreebsd-*. (Closes: #648090) + + [ Benjamin Drung ] + * Explicitly enable v4l2 on kfreebsd and build depend on libv4l-dev. + * Fix build failure with Iceweasel/Firefox 8.0. Thanks to Mathieu + Trudel-Lapierre for backporting the upstream patch. + + -- Benjamin Drung Thu, 17 Nov 2011 00:10:53 +0100 + +vlc (1.1.12-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Add a preinst to vlc to drop it's doc directory before unpacking a + symlink to vlc-nox's over it. (Closes: #613121) + + -- Didier Raboud Mon, 07 Nov 2011 16:40:10 +0100 + +vlc (1.1.12-2) unstable; urgency=low + + * Apply patches from upstream's 1.1 maintenance branch. + - Turn on XVideo color key automatic painting (fix upstream #4643) + - Set channel map when using PulseAudio 1.0 + - Translation updates + + -- Benjamin Drung Thu, 13 Oct 2011 20:17:03 +0200 + +vlc (1.1.12-1) unstable; urgency=low + + * New upstream release. + - Multiple fixes and improved synchronization for PulseAudio support + (Closes: #601826, LP: #805807). + - Fix segmentation fault (LP: #803006). + - Addd GenericName entries to desktop file (Closes: #640911). + - Do not ignore the --quiet flag (Closes: #531975). + - Fix vlc runs xdg-screensaver with signal child blocked (Closes: #640245). + - Fix crashes when trying to play youtube URLs (Closes: #641507). + * Drop xulrunner-1.9.1.patch (accepted upstream). + * Refresh 200_osdmenu_paths.patch. + * Fix typo in vlc.desktop: Name[nn] -> GenericName[nn]. + + -- Benjamin Drung Fri, 07 Oct 2011 01:21:06 +0200 + +vlc (1.1.11-2) unstable; urgency=low + + * Use linux-any instead of hardcoded list of non-Linux architectures. + (Closes: #634726) + * Build and install the libx264 plugin. + * Add firefox-dev as alternative build dependency to xulrunner-dev for Ubuntu. + * Build with "--with-mozilla-pkg=mozilla-plugin" rather than + "--with-mozilla-pkg=libxul". The plugin doesn't appear to be using XPCOM, + and shouldn't be linking against Mozilla libs. Thanks to Chris Coulson. + + -- Benjamin Drung Tue, 26 Jul 2011 20:11:10 +0200 + +vlc (1.1.11-1) unstable; urgency=high + + * New upstream release. + - Fix heap overflow in RealMedia plugin (Closes: #633674, LP: #807486) + - Fix heap overflow in AVI plugin (Closes: #633675, LP: #807488) + * Call dh_autoreconf with --as-needed and drop 052_as-needed.patch. + * Drop backported patches. + * Drop libschroedinger weaken patch (upstream weakened it to 1.0.6). + * Refresh remaining patches. + + -- Benjamin Drung Mon, 18 Jul 2011 10:26:56 +0200 + +vlc (1.1.10-1) unstable; urgency=high + + [ Benjamin Drung ] + * New upstream release. + - Security: Fix XSPF integer overflow (CVE-2011-2194) (LP: #795410) + - Improve .desktop file: + - Add smb as supported protocol (Closes: #622879, LP: #737192) + - add video/webm to supported MIME formats (LP: #769463) + - Fix libdvdread errors while playing ogg files (Closes: #622935) + - Support three channels in pulseaudio output plugin (LP: 743478) + - PulseAudio output re-written due to unstability of the current one + (LP: #743323) + - Fix crashes (LP: #754497, #785979) + - Qt: allow drag and drop of any URL, not just a local file (LP: #664030) + - Fix libvlcplugin.so: undefined symbol: NPP_Initialize (LP: #722690) + * Refresh patches. + * Drop as-needed patch due to autoreconf run. + * Backport PulseAudio build fix. + * Add GNOME MIME types for Ogg Vorbis and Ogg Theora (Closes: #629619). + * Mention potcast support in package description (Closes: #488771). + + [ Reinhard Tartler ] + * run autoreconf on the buildds + * Weaken dependencies on libschroedinger + + -- Benjamin Drung Sat, 11 Jun 2011 19:32:24 +0200 + +vlc (1.1.9-1) unstable; urgency=medium + + * New upstream release. + - Fix heap corruption in MP4 demuxer (LP: #756368). + - Fix fullscreen controller has no background in KDE4 (LP: #661020). + * Refresh patches and drop backported VideoLAN-SA-1103.patch. + * Adjust the vlc lintian-overrides for the latest lintian version. + + -- Benjamin Drung Thu, 14 Apr 2011 11:18:57 +0200 + +vlc (1.1.8-3) unstable; urgency=medium + + * Fix heap corruption in MP4 demuxer + - VideoLAN-SA-1103 + - Thanks to Rémi Denis-Courmont + * Set urgency to medium + * Set policy to 3.9.2 (no change needed) + + -- Christophe Mutricy Mon, 11 Apr 2011 22:12:15 +0100 + +vlc (1.1.8-2) unstable; urgency=low + + * Require libschroedinger >= 1.0.10 (Closes: #619858) + * Relax libmatroska-dev versionned b-depedency + + -- Christophe Mutricy Mon, 28 Mar 2011 23:18:04 +0100 + +vlc (1.1.8-1) unstable; urgency=low + + * New upstream release. + - Fix a busy loop and socket leak in lua (Closes: #607869). + * Refresh xulrunner patch. + * Drop backported libmatroska 1.1 patch. + + -- Benjamin Drung Thu, 24 Mar 2011 14:14:36 +0100 + +vlc (1.1.7-4) unstable; urgency=low + + * v4l is gone from the linux 2.6.38 kernel. Build only v4l2. + + -- Benjamin Drung Sat, 19 Mar 2011 22:29:04 +0100 + +vlc (1.1.7-3) unstable; urgency=low + + * adjust debian/source/local-options to team guidelines + * Fix building against libmatroska 1.1, Closes: #614088 + * Add myself to Uploaders. + * build against libmatroska 1.1.0 + + -- Reinhard Tartler Sun, 06 Mar 2011 11:16:48 +0100 + +vlc (1.1.7-2) unstable; urgency=low + + * Upload to unstable. + * Make vlc compatible with xulrunner 1.9.1. + + -- Benjamin Drung Mon, 07 Feb 2011 23:16:02 +0100 + +vlc (1.1.7-1) experimental; urgency=low + + * New upstream release. + * Update debian/watch. + * Drop backported patch and refresh remaining patches. + + -- Benjamin Drung Mon, 31 Jan 2011 23:25:12 +0100 + +vlc (1.1.6-1) experimental; urgency=low + + [ Reinhard Tartler ] + * Tighten some build dependencies (Closes: #605638) + + [ Benjamin Drung ] + * New upstream release. + - Fix heap buffer overflow in Real demuxer (CVE-2010-3907) (LP: #690173) + - Fix blue face issue with X11 ouput (LP: #665298) + - Fix crash with SIGSEGV in QMetaObject::activate() (LP: #448082) + - Fix heap overflow in CDG decoder and XML heap corruption (LP: #707154) + * Drop backported patches. + * Tighten more build dependencies after reviewing configure.ac. + * Update my email address. + * Add lirc build failure fix patch. + * Build depends on libgtk2.0-dev for notify module. + + -- Benjamin Drung Mon, 24 Jan 2011 23:16:54 +0100 + +vlc (1.1.5-3) experimental; urgency=low + + * Apply upstream fix for KDE device actions. (LP: #542293) + + -- Benjamin Drung Fri, 26 Nov 2010 00:26:15 +0100 + +vlc (1.1.5-2) experimental; urgency=low + + [ Reinhard Tartler ] + * fix Breaks/Replaces for moving avcodec module around (Closes: #603912) + + [ Benjamin Drung ] + * Fix KDE device action file locations. (LP: #542293) - thanks to Lari Natri + * Fixed wrong aspect ratio in transcoded image from webcam. + (Closes: #603888, LP: #672304) + + -- Benjamin Drung Wed, 24 Nov 2010 00:19:39 +0100 + +vlc (1.1.5-1) experimental; urgency=low + + * New upstream release. + * Fix path typo in NEWS file. (Closes: #599314) + * Install all docs into /usr/share/doc/vlc-nox and link the vlc doc dir to it. + * Recommend xdg-utils, because xdg-screensaver is required for disabling + the screensaver. (Closes: #436339) + * Add libxscreensaver plugin to vlc. + * Add new symbol to libvlc5. + + -- Benjamin Drung Sun, 14 Nov 2010 21:27:56 +0100 + +vlc (1.1.4-1) experimental; urgency=low + + [ Christophe Mutricy ] + * New upstream bugfix release + + Remove unneeded patch + + [ Benjamin Drung ] + * Symlink corresponding FreeSans system font instead of linking to DejaVu. + + -- Benjamin Drung Sun, 05 Sep 2010 01:47:07 +0200 + +vlc (1.1.3-2) experimental; urgency=low + + [ Christophe Mutricy ] + * Depends on xulrunner-dev >= 1.9.2 + * Activate VA-API (Closes: #587792, LP: #539406) + + [ Benjamin Drung ] + * Switch to dh7. + * Move libavcodec plugin from vlc-nox to vlc. + * Add Xb-Npp header to mozilla-plugin-vlc package. (Not doing anything + on Debian at the moment, see #484010) + * Add apport hook to include more VLC dependencies in bug reports and + install it on Ubuntu. + + -- Benjamin Drung Thu, 19 Aug 2010 22:27:45 +0200 + +vlc (1.1.3-1) unstable; urgency=medium + + [ Benjamin Drung ] + * New upstream release. + + Fix insufficient input validation in TagLib plugin. + (VideoLAN-SA-1004, CVE-2010-2937) (Closes: #592669, LP: #616510) + + Set urgency to medium + * 502_xulrunner_191.diff: Shorten, split into two parts, and refresh it. + * Drop 102_dejavu_font.diff and depend on ttf-freefont instead of ttf- + dejavu-core. ttf-freefont is very likely to be present on a Debian + box, because cups depends on it. + * Drop 501_decrease_alsa_buffer.diff. The pulseaudio output module has + a higher priority than the ALSA output plugin and should be used on + pulseaudio systems. + + [ Reinhard Tartler ] + * add DM-Upload-Allowed field to debian/control + + -- Reinhard Tartler Fri, 20 Aug 2010 06:59:17 +0200 + +vlc (1.1.2-1) unstable; urgency=low + + [ Christophe Mutricy ] + * New upstream release + * Also check for libxcb + * Move xcb_apps SD to vlc + * Re-enable the modplug module and require the fixed version + (Closes: #589890, #590787) + * Fix location of icons in vlc.menu (Closes: #590294) + thanks to Juhapekka Tolvanen + * Split the notify plugin to not depend on GTK+ (Closes: #590504) + thanks to Viktar Vauchkevich + + [ Benjamin Drung ] + * Add proper Breaks and Replaces to vlc and vlc-plugin-notify. + * Bump Standards-Version to 3.9.1 (no changes required). + + -- Benjamin Drung Tue, 03 Aug 2010 01:38:17 +0200 + +vlc (1.1.1-1) unstable; urgency=low + + * New upstream release + + Remove patches merged upstream + + Add new symbols in libvlc5 + * Explicit the split of vlc-plugin-zvbi in debian/changelog (Closes: + #588468) + * Disable modplug as libmodplug in sid is buggy (see #588465) + * Add comment about merging in README.source + + -- Christophe Mutricy Thu, 22 Jul 2010 00:36:00 +0200 + +vlc (1.1.0-4) unstable; urgency=low + + * also move udev to the list of linux specific features + * alphabetize configure switches + * fix kfreebsd ftbfs in access file module (Closes: #588655) + * forcefully disable alsa on kFreeBSD + + -- Reinhard Tartler Sat, 10 Jul 2010 19:39:57 -0400 + +vlc (1.1.0-3) unstable; urgency=low + + * really enable dc1394 only for Linux, Closes: #588410 + + -- Reinhard Tartler Fri, 09 Jul 2010 15:18:08 -0400 + +vlc (1.1.0-2) unstable; urgency=low + + * libdc1394 is linux specific. + * Fix FTBFS on arm with patch cherry-picked from upstream + * Set policy to 3.9.0 (no change needed) + + -- Christophe Mutricy Wed, 07 Jul 2010 22:52:17 +0100 + +vlc (1.1.0-1) unstable; urgency=low + + [ Christophe Mutricy ] + * New upstream version 1.1.0 (Closes: #586760, LP: #597108) + * Fixes many bugs (Closes: #572151, #578917, #526088, #572914, #503377; + LP: #206152, #261001, #281478, #282215, #282966, #283379, #283855, + #285681, #287263, #328064, #328861, #346631, #356006, #356908, #357595, + #358461, #362793, #368599, #375854, #380077, #383443, #403135, #403657, + #403802, #414069, #415396, #416294, #419915, #422797, #425975, #427247, + #435225, #439271, #442038, #444795, #453928, #459515, #461443, #465687, + #466418, #476478, #482440, #491151, #491601, #514915, #517329, #517496, + #537627, #539406, #542293, #549029, #549902, #550468, #550485, #550599, + #551482, #553503, #554277, #556440, #560167, #564964, #566347, #568750, + #570666, #582785, #584009, #586692, #587528) + * SONAME changes + * Update symbols files + * Refresh patches and remove the ones merged upstream + * rules: + * Disable projectm and sqlite + * Upstream Makefile install icons at the good place, simplify debian/rules + * Specify where to install solids files + * Install the optim only if present + * Make sure we have useful build log + * *.install: reflect new modules path and add new files + * Add a trigger to generate the modules' cache as root. + * Update the doc which get installed + * control: + * Prefer a recent libdvbpsi + * add lua5.1 to have luac + * Add more build-dep: xcb*, dirac, dc1394 + * Patch to allow compilation with xul 1.9.1 + * Remove unneeded -V for dh_makeshlibs + * Use configure option instead of patching + * Use dh_bugfiles and update the bug control file + * Don't advertise deprecated package in vlc's manpage + * Add some news about lua and zvbi + * Move the luahttp's .hosts to /etc/vlc + + [ Benjamin Drung ] + * Switch to dpkg-source 3.0 (quilt) format. + * Disable portaudio module. + * Update symbols files. + * Cleanup clean rule and other parts of debian/rules. + * Remove default values from git-buildpackage config. + * Change installation of man pages. + * Remove unused ${shlibs:Depends}. + * Sort Build-Depends and Depends. + * Remove unused libhal-dev from Build-Depends (Closes: #580407). + * Remove unused --enable-release configure flag. + * Remove unused Build-Depends libid3tag0-dev, libsysfs-dev, and libxv-dev. + * Provide VBI teletext plugin (Closes: #563873) - thanks to László + Benedek for the patch. + * Split the VBI teletext module to its own package vlc-plugin-zvbi. + * Enable atmo, fluidsynth (separate package), libproxy (Closes: #532110), + kate (Closes: #563464), and mtp plugin. + * Comment disabled features. + * Explicitly enable or disable features. + * Vcs-Browser link to summary page. + * Convert patch header to DEP-3 and add DEP-3 to 502_xulrunner_191.diff. + * Add myself to Uploaders. + * Drop --sourcedir=debian/tmp from dh_install. + + -- Christophe Mutricy Thu, 24 Jun 2010 22:01:26 +0100 + +vlc (1.0.6-1) unstable; urgency=low + + * New upstream version 1.0.6 + + VideoLAN-SA-1003 + + Closes: #578799 + + LP: #408719, #464715, #465560, #502637, #525278, #542943, #568859 + * RTMP access module has been removed (vlc-nox.install, NEWS.Debian) + * Remove patches merged upstream + + -- Christophe Mutricy Fri, 23 Apr 2010 11:49:18 +0200 + +vlc (1.0.5-2) unstable; urgency=medium + + [ Christophe Mutricy ] + * Install reportbug files also in vlc-data (LP: #472893) + * Fix symlinks + * vlc-data Replaces very old vlc as well as vlc-nox (Closes: #570749) + * Set urgency to medium as we fix RC bug + * Fix crash on malformed rtmp stream. (Closes: #569151) + * Fix crash in FTP url handling (LP: #465560) + + [ Benjamin Drung ] + * Install icons in all available sizes (LP: #521744). + + -- Christophe Mutricy Tue, 02 Mar 2010 00:30:56 +0100 + +vlc (1.0.5-1) unstable; urgency=low + + * New upstream version 1.0.5 + + Closes: #556666, #565044 + + [ Reinhard Tartler ] + * Remove excessive replaces relationship + * Update for menu subpolicy, Closes: #564218 + + [ Christophe Mutricy ] + * NEWS.Debian: Use version present in Changelog + * Add comments to overrides file + * Add misc:Depends to vlc-data's Depends + * Refresh patches + + [ Benjamin Drung ] + * Formatting improvements; thanks to Gerfried Fuchs for the patch + (Closes: #566384). + * Bump Standards-Version to 3.8.4, no changes required. + + -- Christophe Mutricy Sat, 13 Feb 2010 15:52:30 +0000 + +vlc (1.0.4-2) unstable; urgency=low + + * Report libavutil50 presence the correct way + * Move back hotkeys to vlc-nox (Closes: #563477) + * Fix Replaces/Conflicts version so that upgrade work (Closes: + #563476, #563483) + * Add patch taken from upstream to fix jack input with jack2 (Closes: + #532339) - thanks to Adrian Knoth + * Disable access_dv on non-Linux archs + + -- Christophe Mutricy Tue, 05 Jan 2010 23:31:56 +0100 + +vlc (1.0.4-1) unstable; urgency=low + + * New upstream release + + According to upstream, no longer overlaps kde and xfce panels in + fullscreen mode, Closes: #562601, LP: #453173 + + [ Christophe Mutricy ] + * libavutil50 seems to be troublesome. Add it to bugs/control + * Add a vlc-plugin-svg package (Closes: #560009) + * Switch to xulrunner-dev (Closes: #555915) + * Activate the global hotkey module (Closes: #548916) + * Mention other maintainers and that the binaries are GPL v3 as we + link with LGPL v3 libraries (LP: #489093) + * Build-depend on a recent enough live555 to avoid comma vs. decimal + point problem (Closes: #539946) + + [ Benjamin Drung ] + * Recommend vlc-plugin-pulse for vlc, so that pulse can be used as + default output. + + [ Whoopie ] + * Enable CDDB in the CDDA module (LP: #439131) + * Enable DV support (LP: #392115) + + [ Benjamin Drung ] + * Fix typos, that are reported by lintian. + * Sort confflags in debian/rules + * Split normal configure flags from feature configure flags + + -- Christophe Mutricy Wed, 30 Dec 2009 12:56:49 +0100 + +vlc (1.0.3-1) unstable; urgency=low + + * New upstream release + + [ Reinhard Tartler ] + * Decrease alsa buffer size. That improves the behaviour of the alsa output + module on pulseaudio system. But note that vlc-plugin-pulse provides a + native pulseaudio output module (Closes: #472811, LP: #243152) + + [ Christophe Mutricy ] + * No longer need to build an extra libvlccore without altivec + * Add the upnp access module (LP: #172938) + * Activate the new udev SD module on linux archs + + -- Christophe Mutricy Thu, 05 Nov 2009 12:39:35 +0100 + +vlc (1.0.2-1) unstable; urgency=high + + * New upstream release + + Fix some stack overflows in MP4, ASF and AVI demuxers + (VideoLAN-SA-0902, CVE pending)(urgency=high) + + Closes: #540145, #542108 + * Fix kfreebsd FTBFS and simplify (Closes: #545863) + Thanks to Petr Salinger + * Fix Hurd install + * Update libvlccore symbol file + * Remove libass API patch + * Remove uneeded build-deps + + -- Christophe Mutricy Sun, 20 Sep 2009 01:08:41 +0200 + +vlc (1.0.1-2) unstable; urgency=low + + * Fix typo in debian/changelog + * Allow building against libass 0.9.7 + * Don't try to install v4l2 modules on kfreebsd + * Set policy to 3.8.3 (no change needed) + * No need of qt4-dev-tools + * Add a README.source about quilt + * Disable some modules (kate, mtp, fluidsynth) + * Don't distribute the *.install-kfreebsd* files as they are generated + + -- Christophe Mutricy Sun, 06 Sep 2009 19:07:24 +0200 + +vlc (1.0.1-1) unstable; urgency=low + + * New upstream bugfix version + + Fix integer underflow in Real RTSP (DZC-2009-001, CVE pending) + + Fix crashes in xspf files handler (LP: #365638) + + [ Reinhard Tartler ] + * Add versioned build dependency on libschroedinger-dev + + [ Christophe Mutricy ] + * Really build altivec-free libvlccore (Closes: #523035) + * Depends on libdvbpsi5-dev and protect against future renaming of + libdvbpsi development package + * Remove patches applied upstream + + -- Christophe Mutricy Wed, 29 Jul 2009 00:21:39 +0200 + +vlc (1.0.0-1) unstable; urgency=low + + * New Upstream Release + + Closes: #536081, LP: #396548 + + Refresh patches + * no longer closes when pausing from the notification area, LP: #371515 + * fix encoding bug when opening subtitles with non-latin characters, + LP: #394449 + * Don't install the alsa and OSS access module on kfreeBSD (Closes: + #535101) - thanks to Javier Mendez Gomez + * Force at least libvlc 1.0.0 becasue of tha soname change of + libvlccore + * Delete a symbols who was present by mistake. + * No need for dh_desktop. It's a no-op + * New standard version. No change needed + * Fix make distclean. New patch taken from upstream + * Upstream make distcheck has been fixed. No need to save Changelog + + -- Christophe Mutricy Thu, 09 Jul 2009 13:04:20 +0000 + +vlc (1.0.0~rc2-1) experimental; urgency=low + + * New Upstream Release Candidate + + Closes: #527010, #491441, #508618, #522824 + * Delete patches which were picked from upstream + * Refresh patches + * Remove vlc-plugin-esd and vlc-plugin-arts as they have been removed + by upstream + * SONAME change for libvlccore + * Add new symbols for libvlc2 + * Fix static libs compile + * Use vlc-wrapper manpage from upstream + * vlc.install: add drawable and screen was renamed x11_screen + * vlc-nox.install: Add and remove modules added/removed upstream + * Point out in NEWS the modules renamed or splited + * Add links to upstream NEWS and co in vlc-nox + * Version the depedency of libvlcore2 on vlc-data + * Remove unnecessary "Section:" in debian/control + + -- Christophe Mutricy Wed, 03 Jun 2009 17:55:10 +0200 + +vlc (0.9.9a-3) unstable; urgency=medium + + * Correct typo in 0.9.9a-2 changelog entry + * Disable more optimization with DEB_BUILD_OPTIONS=noopt + * Cache the configure test results as we're running configure several + times + * Fix building as root + * Fix the clean target + * Remove unexistant config options + * Better check commad line + * Use all the procs on i386 and amd64 + * Build a version of libvlccore without altivec (Closes: #523035) + * Fix typo (thanks to Salvatore Bonaccorso)(Closes: #528044) + * Reword the command line to get full logs in bug/presubj (Closes: #527012) + * Remove duplicate "extended Settings" entry in context menu + (Closes: #526603) - thanks to Matt Kraai + * Disable the logging facility in the javascript of moz plugin + This was a privacy hole. (urgency=medium)(Closes: #529633) + * Patch to support libmpc new API (Closes: #476375) - thanks to Yavor + Doganov + * Disable-maintener mode + * Make sure unpatch is last in the clean target + + -- Christophe Mutricy Sat, 06 Jun 2009 16:56:16 +0200 + +vlc (0.9.9a-2) unstable; urgency=medium + + * Security fix + * The default /usr/share/http/{old}/.hosts was wrong in VLC 0.9.8 and 0.9.9. + World access of the http interface was possible when activated in + contradiction of what is said in Changelog.Debian and NEWS.Debian. + + -- Christophe Mutricy Tue, 07 Apr 2009 23:06:48 +0200 + +vlc (0.9.9a-1) unstable; urgency=low + + * New upstream version 0.9.9a + + Closes: #520149, #522170, #522185, #522554 + + Update symbol files + * Fix some typo in bug/presubj + * Remove some Replaces/Conflicts against version not in etch + * Move the caca module to vlc-nox + + Re-add some Replaces/Conflicts + + Closes: #522040 + + -- Christophe Mutricy Fri, 03 Apr 2009 00:12:49 +0200 + +vlc (0.9.8a-3) unstable; urgency=low + + [ Reinhard Tartler ] + * fix typo in '--enable-maintainer-mode' (Closes: #517155) + + [ Christophe Mutricy ] + * Fix build on non-Linux arch + * Fix cross-compilation + * VLC is GPV v2 or later. So point to v2 of the GPL + * We can use debhelper v7 without trouble + * Add lintian overrides. + * Set policy to 3.8.1 + * debian/patches/* + + Prune doc/fortunes.txt from personnal attack (Closes: #401560, + #518300) + + Delete unused patches + + Add comments to the patches + * Move to the video and debug sections + + -- Christophe Mutricy Sun, 15 Mar 2009 16:50:18 +0000 + +vlc (0.9.8a-2) unstable; urgency=low + + * Upload to unstable + * Rebuild against new libraries (Closes: #516316, #516731) + * Move packaging to Git + + Add a conf file for git-buildpackage + + Reflect change to git in Vcs fields + + Ignore file generated by dpkg-buildpackage + * Disable the DV access module until it's ported to the new API + * Move http/.hosts to /etc (Closes: #501791) + * Improve some short descriptions + * Depends on debhelper >7 + * Fix for 2 builds in a row + * Add a note in NEWS about running as root and vlc-wrapper (Closes: #507872) + + -- Christophe Mutricy Tue, 24 Feb 2009 16:00:31 +0100 + +vlc (0.9.8a-1) experimental; urgency=low + + * New upstream release + + Fix integer overflow in Real demux (VideoLAN SA-2008-11, CVE-2008-5276) + * Enable RealRTSP access module + * Depends on libv4l-dev to add support of some webcam + * Don't rebootstrap. The packages causing troubles previously have been fixed + + -- Christophe Mutricy Wed, 03 Dec 2008 20:20:52 +0100 + +vlc (0.9.6-1) experimental; urgency=low + + [ Reinhard Tartler ] + * Build against libass. Closes: #499063, LP: #210354, #199870 + * Explicitly build against libdca in debian/rules + * Tighten build depends on a libass-dev version that ships without .la file + + [ Christophe Mutricy ] + * New bugfix upstream releases + + Remove 402_tivo_overflow.diff + + Fix buffer overflow in CUE demuxer (Closes: #504639) + + Fix buffer overflow in Realtext decoder + * Honor DEB_BUILD_OPTIONS + * Rebootstrap in order to avoid problem with .la + + -- Christophe Mutricy Sat, 08 Nov 2008 03:14:29 +0100 + +vlc (0.9.4-2) experimental; urgency=low + + * Fix buffer overflow in Tivo demuxer + + Closes: #502726, VideoLAN SA-0809 + + 402_tivo_overflow.diff taken from upstream + * Better xinerama fullscreen behaviour + + 401_detect_xinerama_fullscreen.diff taken from upstream + * Builddepends on libcursesw5-dev rather than libcurses5-dev + for proper wide char handling + + -- Christophe Mutricy Mon, 20 Oct 2008 23:23:46 +0200 + +vlc (0.9.4-1) experimental; urgency=low + + * New upstream bugfix version + * rules: Pass the debian version in configure.ac so that the cache + is invalidated between binary version + * control: Don't forget commas in builddep list + + -- Christophe Mutricy Tue, 07 Oct 2008 00:17:30 +0200 + +vlc (0.9.3-1) experimental; urgency=low + + [ Christophe Mutricy ] + * New upstream release + * Build-depends on libdca-dev + * vlc-nox.install + + Be more general for the memcopy modules. + Fix a FTBFS on non-intel arch (Closes: #499860). + * Sort builddep list + + [ Reinhard Tartler ] + * remove spurious conflicts on libvlc2. LP: #274614 + + -- Christophe Mutricy Fri, 26 Sep 2008 23:49:48 +0200 + +vlc (0.9.2-1) experimental; urgency=low + + [ Christophe Mutricy ] + * New upstream release + + Soname changed + + Bugs fixed upstream: Closes: #487646, #298150, #325069, #392292, + #458004, #470903, #458004, #423121 + + new upstream fixes various crasher bugs reported in ubuntu: + LP: #189575, #113927, #103741, #111615, #107899, #112076, #198916, 221428, + #91679, #96978, #123589, #133528, #231621, #259025 + + plays files with '+' in its name, LP: #239431, #217305 + + New packages: libvlccore0, libvlccore-dev, vlc-plugin-pulse + (Closes: #471069) + + Build-depends on libswsale-dev, libshout3-dev, libxpm-dev, + zlib1g-dev, liblua5.1-0-dev, libschroedinger-dev, libtag1-dev, + libqt4-dev, libqt4-dev-tools and pkg-config. (Closes: #461324) + + time display no longer incomplete, LP: #193445 + + fixed volume bar behavior, LP: #250041 + + shout support closes LP: #127594, #84098, + + Install new modules: + - vlc-nox: alphamask, blendbench, bluescreen, canvas, cc, cdg, chain, + colorthres, croppadd, dynamicoverlay, erase, faad, gaussianblur, grain, + inhibit, lua, memcpy*, mmap, osd_parser, puzzle, remoteosd, rtmp, + schroedinger, sharpen, stats, subusf, t140, telepathy, v4l2, vmem + - vlc: qt4 + - vlc-plugin-jack: access_jack + + Distribute the .pc for libvlc and vlc-plugin (Closes: #289507) + + Remove wx interface and glide plugin as they've been dropped by upstream + LP: #205325, #88487, #90603, #150380 + + The Python and java bindings are no longer part of the upstream tarballs + (Closes: #469011) + + Temporarly disable libdca module until a pkg with the new + API get in unstable + + Delete or refresh patches + + New patches: + - 052_as-needed taken from bug #347650 to teach libtool about + -Wl,--as-needed + * Install the skins DTD and the default skins it's only 113kB + * Improve watch file + * Add a vlc-data package for /usr/share (13 MB) + * Add a vlc-dbg package (Closes: #491564) + * Sort vlc.install and vlc-nox.install + + [ Mohammed Adnène Trojette ] + * Add myself to Uploaders. + * debian/control: + + Add proper conflicts/replaces to vlc-data with mozilla-plugin-vlc. + + Add proper conflicts/replaces to vlc with vlc-nox. + + + -- Christophe Mutricy Wed, 17 Sep 2008 00:49:48 +0200 + +vlc (0.8.6.i-2) experimental; urgency=high + + [ Loic Minier ] + * Fix changelog entries for 0.8.6.h-2 and 0.8.6.h-3. + * Bump up Standards-Version to 3.8.0. + + [ Christophe Mutricy ] + * Security: Fix integer overflow in mms module (CVE-2008-3794) + (Closes: #496265)(407-mms-overflow.diff taken from upstream) + + [ Sam Hocevar ] + * debian/patches/300_manpage_syntax.diff: fix vlc-config.1 syntax. + + -- Sam Hocevar (Debian packages) Tue, 26 Aug 2008 23:25:13 +0000 + +vlc (0.8.6.i-1) experimental; urgency=low + + * New upstream release. + - Refresh patch 010_iceape and change it to only patch the name of the .pc + files, keep using FIREFOX_CFLAGS and _LIBS etc. as to allow us to only + run autoconf, not automake. + - Drop patch 401-CVE-2008-2430, merged upstream. + - Update and rename patch 050_bootstrap to 900_autoconf. + + -- Loic Minier Fri, 22 Aug 2008 19:13:30 +0200 +vlc (0.8.6.h-5) unstable; urgency=high + + * Acknowledge NMU by Nico Golde. Thanks. + * Fix buffer overflow in CUE demuxer (Closes: #504639) + + -- Christophe Mutricy Wed, 05 Nov 2008 22:02:06 +0100 + +vlc (0.8.6.h-4.1) unstable; urgency=high + + * Non-maintainer upload by the Security Team. + * Fix integer overflows that could possibly lead to arbitrary + code execution (CVE-2008-4686.diff; Closes: #503118). + + -- Nico Golde Mon, 03 Nov 2008 14:41:58 +0100 + +vlc (0.8.6.h-4) unstable; urgency=high + + * Security: Fix integer overflow in mms module + (Closes: #496265)(407-mms-overflow.diff taken from upstream) + + -- Christophe Mutricy Mon, 25 Aug 2008 01:07:27 +0100 + +vlc (0.8.6.h-3) unstable; urgency=low + + * Minor cleanups. + * Use DEB_HOST_ARCH instead of DEB_BUILD_ARCH in rules. + * Use objdump -x instead of ldd to check for links on libX11 as ldd might + resolve libvlc to the system's version if the system has libvlc installed; + closes: #495730. + + -- Loic Minier Fri, 22 Aug 2008 19:46:35 +0200 + +vlc (0.8.6.h-2) unstable; urgency=high + + * Fix integer overflow in TTA (CVE-2008-3732) (405-CVE-2008-3732.diff) + * Fix crashes in Live555 (406-live555-crash.diff) + * Switch to libdc1394-22-dev (Closes: #484695) + + -- Christophe Mutricy Thu, 21 Aug 2008 20:19:39 +0100 + +vlc (0.8.6.h-1) unstable; urgency=high + + [ Christophe Mutricy ] + * Acknowledge NMU by Nico Golde. Thanks. + * Acknowledge NMU by Mike Hommey. Thanks. + * New security upstream release + - Fix buffer overflow (CVE-2008-1881) + - Fix out of bound array access (CVE-2008-1769) + - Fix various integer overflow in MP4 demuxer, Cinepak, RTSP + (CVE-2008-1489, CVE-2008-1768) + - Remove 105_min_mkv.patch, 400-CVE-2008-1489.diff and + 401-CVE-2008-0073.diff, 402-CVE-2008-1881, 403-CVE-2008-1768.diff + and 404-CVE-2008-1881 integrated upstream + * Remove old transitional packages: vlc-plugin-alsa and wxvlc + (Closes: #477543, #477545) + * Add some magic for reportbug to ask people to remove their plugin cache + and get the info for vlc-nox and libvlc0 also. + + [ Reinhard Tartler ] + * added a watch file + * new upstream release, refreshing patches + + [ Christophe Mutricy ] + * Fix buffer overflow in Wav demux.(CVE-2008-2430)(Closes: #489004) + (Patch taken from upstream: 401-CVE-2008-2430.diff) + + -- Christophe Mutricy Sat, 05 Jul 2008 23:45:15 +0100 + +vlc (0.8.6.e-2.3) unstable; urgency=low + + * Non-maintainer upload. + * debian/control: Build depend on iceape-dev >= 1.1.9-4 instead of + libxul-dev (Closes: #480812). + * debian/patches/010_iceape.diff: configure.ac changes to allow to build + against iceape. + * debian/patches/050_bootstrap.diff: Corresponding configure changes. + * debian/patches/series: Added 010_iceape.diff. + + -- Mike Hommey Fri, 23 May 2008 21:11:07 +0200 + +vlc (0.8.6.e-2.1) unstable; urgency=high + + * Non-maintainer upload by the Security Team. + * This update addresses the following security issues: + - CVE-2008-1769: out-of-bounds array access and memory corruption + via a crafted cinepak file (Closes: #478140). + - CVE-2008-1768: multiple integer overflow triggering buffer overflows + in the mp4 and real demuxer and the cinepak codec (Closes: #478140). + - CVE-2008-1881: stack-based buffer overflow in subtitle parsing leading + to arbitrary code execution via crafted subtitle file (Closes: #477805). + + -- Nico Golde Sun, 27 Apr 2008 16:17:49 +0200 + +vlc (0.8.6.e-2) unstable; urgency=high + + [ Christophe Mutricy ] + * Acknowledge NMU by Nico Golde. Thanks + * New patch taken from upstream to fix an arbitrary code execution. + CVE-2008-0073 (Closes: #473057) + * New patch to fix FTBS in MKV module + + [ Loic Minier ] + * Mention CVE id in 0.8.6.e-1.1. + + -- Christophe Mutricy Sat, 29 Mar 2008 15:04:28 +0000 + +vlc (0.8.6.e-1.1) unstable; urgency=high + + * Non-maintainer upload by the Security Team. + * Fix Integer overflow in MP4_ReadBox_rdrf function + that triggers a heap-based buffer overflow via a + large atom length value (Closes: #472635); CVE-2008-1489. + + -- Nico Golde Wed, 26 Mar 2008 13:21:44 +0100 + +vlc (0.8.6.e-1) unstable; urgency=high + + [ Christophe Mutricy ] + * New security upstream release + - CORE-2008-0130, VideoLAN-SA-0802, CVE-2008-0986: Arbitrary memory + overwrite in the MP4 demuxer (Closes: #467652) + - Others security fixes already included in the Debian package + - Xshm detection fix (Closes: #404361) + - Alsa 5.1 fixes + - DTS to S/PDIF fixes + * patches/ + - delete the uneeded sec-* patches + - delete 100_no_wx_update.diff as the update "feature" has been removed + upstream + + [ Loic Minier ] + * Urgency high for security bugfix. + + -- Christophe Mutricy Mon, 25 Feb 2008 23:35:24 +0000 + +vlc (0.8.6.c-6) unstable; urgency=high + + [ Nico Golde ] + * This update addresses the following security issues (Closes: #461544). + - CVE-2008-0295: Heap-based buffer overflow in real_sdpplin.c + which could lead to user-assisted arbitrary code execution + via crafted SDP data. + - CVE-2008-0296: Heap-based buffer overflow in libaccess_realrtsp plugin + which might lead to arbitrary code execution via a crafted RTSP server. + + [ Loic Minier ] + * Merge above changes by Nico Golde. + + -- Loic Minier Mon, 21 Jan 2008 16:16:51 +0100 + +vlc (0.8.6.c-5) unstable; urgency=low + + [ Christophe Mutricy ] + * New vlc-plugin-jack pkg with jack audio_output module + (closes: #402252, #444992) + * Make all the symlink for /usr/share/${pkg} point to /usr/share/doc/vlc-nox + as the plugins depends on vlc-nox and not vlc + * debian/control: dpkg-shlibdeps gives the correct depends for + vlc-plugin-glide. So drop the hardcoded depends on libglide2 + * debian/rules: dpkg-shlibdeps now behaves better with libraries without + versionned symbol file. + + [ Sam Hocevar ] + * debian/control: + + Dropped the libcdio-dev versioned build-dep to ease backports. + + [ Loic Minier ] + * Ack NMU by Nico Golde; thanks! + * Wrap more deps. + * Also build vlc-plugin-svgalib package on amd64 as well; build-dep on + libsvga1-dev on amd64 too; --enable-svgalib on amd64. + * Drop debian/*.dirs. + * Only pass --host to configure if DEB_BUILD_GNU_TYPE and DEB_HOST_GNU_TYPE + differ. + * Pass --quiltrc /dev/null to quilt and use $(QUILT) to invoke quilt. + * Bump up Debhelper compatibility level to 6; drop dpkg-dev build-dep. + * Add /svn to Vcs-Svn. + * Don't run ./vlc as a test if nocheck is given. + * Cleanup rules. + * Drop vlc-plugin-alsa and wxvlc /u/s/d symlinks as these are dummy packages + anyway. + * Update menu file. + + -- Loic Minier Fri, 11 Jan 2008 17:32:36 +0100 + +vlc (0.8.6.c-4.1) unstable; urgency=high + + * Non-maintainer upload by security team. + * This update addresses the following security issues + (CVE ids pending; Closes: #458318): + - Fix format string issue in internal webserver that could lead to + to arbitrary code execution (sec-httpd_formatstring.diff). + - Disable m3u EXTVLCOPT parsing if no command line option is specified + (--m3u-extvlcopt) to prevent browser plugins to control stream output + and thus overwriting arbitrary files of the user running vlc + (sec-vlcopt_support.diff). + - Fix stack-based buffer overflow in subtitle parsing + (sec-subtitle_buffer_overflow.diff). + - Fix NULL pointer dereference in the rtsp/rtp module by checking return + of the httpd_MsgGet function (sec-rtsp_remote_dos.diff). + + -- Nico Golde Fri, 11 Jan 2008 15:05:10 +0100 + +vlc (0.8.6.c-4) unstable; urgency=high + + [ Loic Minier ] + * Wrap build-deps and deps. + * Only suggest videolan-doc; closes: #451914. + + [ Christophe Mutricy ] + * Use Vcs- instead of Xs-Vcs- + * Add Homepage field to control + * Use --ignore-missing-info with dpkg-shlibdeps as glide doesn't provide a + versionned .shlibs + + [ Sam Hocevar ] + * debian/control: + + Build-depend on a newer libcdio-dev to transition to the newer binary + packages (Closes: #456390, #456403, #453823). + + Depend on ttf-dejavu-core instead of ttf-dejavu (Closes: #445580). + + Set policy to 3.7.3. + * debian/rules: + + Don’t ignore make distclean errors. + + Call dh_desktop to register desktop files. + + -- Sam Hocevar (Debian packages) Sat, 15 Dec 2007 12:33:48 +0000 + +vlc (0.8.6.c-3) unstable; urgency=high + + * debian/control: + + Removed now useless linux-libc-dev build-dependency (Closes: #430710), + thanks to Steve Langasek. + + -- Sam Hocevar (Debian packages) Thu, 05 Jul 2007 10:13:42 +0200 + +vlc (0.8.6.c-2) unstable; urgency=high + + [ Loic Minier ] + * Merge the never uploaded 0.8.6.a.debian-7 changelog entry into 0.8.6.c-1. + + [ Christophe Mutricy ] + * Build-depends on linux-libc-dev rather than linux-kernel-headers + (Closes: #430710 ) + + [ Sam Hocevar ] + * debian/control: + + Build-depend on newer libavcodec libraries. + + Build-depend on newer libflac-dev. + + -- Sam Hocevar (Debian packages) Wed, 04 Jul 2007 22:31:32 +0200 + +vlc (0.8.6.c-1) unstable; urgency=high + + [ Loic Minier ] + * New patch, 107_gcc-4.3, fixes missing include causing a build failure with + GCC 4.3; thanks Martin Michlmayr; closes: #417750. + + [ Christophe Mutricy ] + * No longer build the x264 module as libx264 has been removed from Sid + (Closes: #424649, #427283). + * New patch, 108_flac-1.1.3 taken from upstream to fix building with + libflac8 (Closes: #426673). + * Rebuild against new libavcodec and libavformat (Closes: #427573). + + [ Fathi Boudra, Christophe Mutricy ] + * New upstream release (Closes: #424915): + + multiple format string vulnerabilities (VideoLAN-SA-0207). + (Closes: #429726) + + media player unspecified Denial Of Service vulnerability (CVE-2007-0256). + (Closes: #407290) + + missing includes to fix FTBFS with GCC 4.3.0. (Closes: #417750) + + fullscreen opens a normal window instead of going fullscreen on amd64. + (Closes: #405035) + + fix building with libflac8. (Closes: #426673) + + The following patches are no longer necessary: + 105_audio_format_crash.diff + 106_xshm_check.diff + 107_gcc-4.3.diff + 108_flac-1.1.3.diff + + [ Sam Hocevar ] + * Install libtelx_plugin.so in vlc-nox package. + + -- Sam Hocevar (Debian packages) Tue, 26 Jun 2007 01:41:02 +0200 + +vlc (0.8.6.a.debian-6) unstable; urgency=low + + * Rebuilt package against packages that are in unstable (Closes: #415446). + + * debian/control: + + Use ${binary:Version} instead of ${Source-Version}. + + Build-depend on dpkg-dev (>= 1.13.19). + + -- Sam Hocevar (Debian packages) Tue, 20 Mar 2007 14:50:43 +0100 + +vlc (0.8.6.a.debian-5) unstable; urgency=low + + * Refreshed and renamed all patches. + + * debian/control: + + Set pkg-multimedia-maintainers as main maintainer. + + Fixed Vcs fields. + * debian/compat: + + Set compat to 5. + * debian/rules: + + Big cleanup. + + Distribute libvlc.a again. + + Switch to AM_MAINTAINER_MODE instead of touching all files. + + * debian/patches/106_xshm_check.diff: + + New patch. Don't crash if XShmAttach fails, instead fall back to + normal X images (Closes: #404361). + + * debian/patches/300_manpage_syntax.diff: + + New patch. Fix dvd:// syntax in manpage (Closes: #412372) and add + mention of the videolan-doc package. + + -- Sam Hocevar (Debian packages) Sat, 17 Mar 2007 19:46:52 +0100 + +vlc (0.8.6.a.debian-4) unstable; urgency=low + + * *sigh*, libfaad-dev build-depend was in fact missing. + + -- Sam Hocevar (Debian packages) Tue, 13 Mar 2007 10:39:04 +0100 + +vlc (0.8.6.a.debian-3) unstable; urgency=low + + * debian/control: + + Add XS-Vcs-Browser field. + + Build-depend on libx264-dev. + + Build-depend on libfaad-dev. + * debian/rules: + + Now that they're in unstable, no longer build our custom x264 and faad2. + + * debian/patches/030_audio_format_crash.diff: + + Patch from upstream to fix multiple crashes with audio conversions. + + -- Sam Hocevar (Debian packages) Mon, 12 Mar 2007 16:41:06 +0100 + +vlc (0.8.6.a.debian-2) unstable; urgency=high + + * debian/patches/021_x264_powerpc.diff: + + Patch from upstream to fix FTBFS on PowerPC (Closes: #411438). + * debian/rules: + + Fix a kFreeBSD FTBFS, courtesy of Petr Salinger (Closes: #399713). + + -- Sam Hocevar (Debian packages) Wed, 21 Feb 2007 12:12:02 +0100 + +vlc (0.8.6.a.debian-1) unstable; urgency=high + + * New upstream bugfix release. + * Most of our patches are now in sync with upstream. Removed: + + 000_bootstrap.diff + + 000_ltmain.diff + + patch-badly-initialised-data-0.8.6debian-0.8.6a.diff + + patch-configure.ac-syntax-0.8.6debian-0.8.6a.diff + + patch-documentation-0.8.6debian-0.8.6a.diff + + patch-i422-yuy2-crash-0.8.6debian-0.8.6a.diff + + patch-integer-signedness-0.8.6debian-0.8.6a.diff + + patch-logo-filter-crash-0.8.6debian-0.8.6a.diff + + patch-memory-leaks-0.8.6debian-0.8.6a.diff + + patch-missing-locks-0.8.6debian-0.8.6a.diff + + patch-mjpeg-separator-0.8.6debian-0.8.6a.diff + + patch-mozilla-plugin-0.8.6debian-0.8.6a.diff + + patch-network-protocols-fixes-0.8.6debian-0.8.6a.diff + + patch-playlist-crash-0.8.6debian-0.8.6a.diff + + patch-po-0.8.6debian-0.8.6a.diff + + patch-private-libcaca-0.8.6debian-0.8.6a.diff + + patch-remove-debug-messages-0.8.6debian-0.8.6a.diff + + patch-sanitise-javascript-0.8.6debian-0.8.6a.diff + + patch-sanity-checks-0.8.6debian-0.8.6a.diff + + patch-sdl-image-priority-0.8.6debian-0.8.6a.diff + + patch-utf8-0.8.6debian-0.8.6a.diff + + patch-version-information-0.8.6debian-0.8.6a.diff + + MOAB-02-01-2007-CVE-2007-0017.patch + + -- Sam Hocevar (Debian packages) Thu, 11 Jan 2007 18:17:41 +0100 + +vlc (0.8.6-svn20061012.debian-2) unstable; urgency=high + + * Maintainer upload. + * Acknowledge previous NMUs by Andreas Barth. Thanks. + (Closes: #405425, #400720, #403022). + + * debian/control: + + Put back mozilla-plugin-vlc package. + + * debian/rules: + + Build with mediacontrol bindings, needed for the Mozilla plugin. + + * 020_kfreebsd.diff: + + New patch courtesy of Petr Salinger. Fix a GNU/kFreeBSD FTBFS + (Closes: #399713). + + * patch-configure.ac-syntax-0.8.6debian-0.8.6a.diff: + + Fix "CFAGS" to "CFLAGS" in configure.ac. + + * patch-documentation-0.8.6debian-0.8.6a.diff: + + Documentation, translation and error messages updates. + + * patch-network-protocols-fixes-0.8.6debian-0.8.6a.diff: + + Various fixes for the IPv4, IPv6, SAP and HTTP protocols. + + * patch-po-0.8.6debian-0.8.6a.diff: + + Translation updates. + + * patch-version-information-0.8.6debian-0.8.6a.diff: + + Set version information to 0.8.6a, even if it's not really our real + version, to make it clear that the security issues were fixed. + + * patch-mozilla-plugin-0.8.6debian-0.8.6a.diff: + + Proper fix for the Mozilla plugin (Closes: #400720, #403022). + + * 000_bootstrap.diff: + + Rebootstrap tarball because of changes to configure.ac. + + * patch-badly-initialised-data-0.8.6debian-0.8.6a.diff: + + Fix various badly initialised variables in the code. + + * patch-i422-yuy2-crash-0.8.6debian-0.8.6a.diff: + + Fix a crash in the I422-YUY2 chroma conversion. + + * patch-integer-signedness-0.8.6debian-0.8.6a.diff: + + Fix integer signedness issues in the variable code. + + * patch-logo-filter-crash-0.8.6debian-0.8.6a.diff: + + Fix a crash in the logo filter. + + * patch-memory-leaks-0.8.6debian-0.8.6a.diff: + + Fix various memory leaks. + + * patch-missing-locks-0.8.6debian-0.8.6a.diff: + + Add missing mutex locks. + + * patch-mjpeg-separator-0.8.6debian-0.8.6a.diff: + + Fix MJPEG format support. + + * patch-playlist-crash-0.8.6debian-0.8.6a.diff: + + Fix a crash in the playlist code. + + * patch-private-libcaca-0.8.6debian-0.8.6a.diff: + + Do not use private libcaca symbols. + + * patch-remove-debug-messages-0.8.6debian-0.8.6a.diff: + + Disable debug messages and spurious messages to stderr. + + * patch-sanitise-javascript-0.8.6debian-0.8.6a.diff: + + Fix the javascript string sanitising. + + * patch-sanity-checks-0.8.6debian-0.8.6a.diff: + + Various sanity checks for untrusted data. + + * patch-sdl-image-priority-0.8.6debian-0.8.6a.diff: + + Downgraded the sdl-image plugin priority. + + * patch-utf8-0.8.6debian-0.8.6a.diff: + + Fix Unicode support in GUIs and file access. + + -- Sam Hocevar (Debian packages) Mon, 8 Jan 2007 09:43:07 +0100 + +vlc (0.8.6-svn20061012.debian-1.2) unstable; urgency=high + + * Non-maintainer upload. + * Fix format string vulnerability with patch + MOAB-02-01-2007-CVE-2007-0017.patch, CVE-2007-0017. Closes: #405425 + + -- Andreas Barth Sat, 6 Jan 2007 23:07:51 +0000 + +vlc (0.8.6-svn20061012.debian-1.1) unstable; urgency=high + + * Non-maintainer upload. + * remove broken package mozilla-plugin-vlc. Closes: #400720, #403022 + + -- Andreas Barth Sat, 23 Dec 2006 19:17:40 +0000 + +vlc (0.8.6-svn20061101.debian-1) UNRELEASED; urgency=high + + * New upstream SVN snapshot. + + -- Sam Hocevar (Debian packages) Wed, 1 Nov 2006 10:50:17 +0100 + +vlc (0.8.6-svn20061012.debian-1) unstable; urgency=low + + * New upstream SVN snapshot. + * Upstream fixed the BadWindow request issue (Closes: #392207). + + -- Sam Hocevar (Debian packages) Thu, 12 Oct 2006 20:43:45 +0200 + +vlc (0.8.6-svn20061008.debian-1) unstable; urgency=high + + * New upstream SVN snapshot. Fixes a heap smashing bug. + * debian/control: + + Build-depend on libgtk2.0-dev to work around #388521 (Closes: #391739). + + Replace XS-X-Vcs-Svn with -XS-Vcs-Svn. + + * debian/patches/020_notify.diff: + + Fix notify support. Thanks to Christophe Mutricy. + + -- Sam Hocevar (Debian packages) Sun, 8 Oct 2006 18:54:30 +0200 + +vlc (0.8.6-svn20061001.debian-4) unstable; urgency=low + + * Build-depend on libnotify and explicitly activate the libnotify plugin + (Closes: #391308). + * Re-enable DV support. libraw1394 is not waiting for us anyway. + + -- Sam Hocevar (Debian packages) Fri, 6 Oct 2006 10:24:26 +0200 + +vlc (0.8.6-svn20061001.debian-2) unstable; urgency=high + + * Temporarily disable DV support because the libraw1394 transition does + not look like it will happen soon. + + -- Sam Hocevar (Debian packages) Wed, 4 Oct 2006 14:00:16 +0200 + +vlc (0.8.6-svn20061001.debian-1) unstable; urgency=low + + * New upstream SVN snapshot. + + -- Sam Hocevar (Debian packages) Sun, 1 Oct 2006 17:57:57 +0200 + +vlc (0.8.6-svn20060925.debian-1) unstable; urgency=low + + [ Sam Hocevar ] + * New upstrean SVN snapshot. + * This release fixes issues with the French Freebox device (Closes: #388332). + + * debian/control: + + Added Clément Stenac to the uploaders. + + * 020_certificates_paths.diff: + + New patch from upstream that looks for SSL certificates in + /etc/ssl/certs/ca-certificates.crt (Closes: #365239). + + [ Clément Stenac ] + * Add VCS information to control + + -- Sam Hocevar (Debian packages) Mon, 25 Sep 2006 14:00:46 +0200 + +vlc (0.8.6-svn20060918.debian-1) unstable; urgency=low + + * New upstream SVN snapshot, with a slightly saner version number. + * debian/rules: + + Call dh_install with -si so that it does not try to install files that + are not for us (Closes: #387873). + + -- Sam Hocevar (Debian packages) Mon, 18 Sep 2006 12:38:26 +0200 + +vlc (0.8.6-svn20060911.0.8.5-1-svn.debian-5) unstable; urgency=low + + * debian/control: + + Added proper conflicts/replaces to the libvlc0 package because it + overwrites files from old vlc packages (Closes: #387844). + + -- Sam Hocevar (Debian packages) Sun, 17 Sep 2006 01:38:24 +0200 + +vlc (0.8.6-svn20060911.0.8.5-1-svn.debian-4) unstable; urgency=low + + * debian/control: + + Add libsdl-image1.2-dev to the build-dependencies. + + Shorten short descriptions and add “without X support” to the vlc-nox + short description. + + -- Sam Hocevar (Debian packages) Sat, 16 Sep 2006 20:08:53 +0200 + +vlc (0.8.6-svn20060911.0.8.5-1-svn.debian-3) unstable; urgency=low + + * debian/control: + + Distribute libvlc0 in a separate package. + + Created vlc-nox package that contains VLC and all its non-X related + plugins. + * debian/rules: + + Use dh_install. + + Bail out with an error if a plugin from vlc-nox got linked to libX11. + + -- Sam Hocevar (Debian packages) Thu, 14 Sep 2006 18:39:59 +0200 + +vlc (0.8.6-svn20060911.0.8.5-1-svn.debian-2) unstable; urgency=low + + * debian/patches/000_dup_builtins.diff: + + Fix a powerpc FTBFS due to duplicate libraries in link lines. + + -- Sam Hocevar (Debian packages) Mon, 11 Sep 2006 18:32:04 +0200 + +vlc (0.8.6-svn20060911.0.8.5-1-svn.debian-1) unstable; urgency=low + + * New upstream SVN snapshot, fixes an amd64 FTBFS. + + -- Sam Hocevar (Debian packages) Mon, 11 Sep 2006 13:56:19 +0200 + +vlc (0.8.6-svn20060910.0.8.5-1-svn.debian-1) unstable; urgency=low + + * New upstream SVN snapshot, from the forthcoming 0.8.5-1 branch. + * This branch's playlist window does not crash like the 0.8.6 does + (Closes: #375213, #385036, #384869). + + * Upstream fixed implicit pointer functions (Closes: #385192). + * Upstream's x264 build system now uses config.guess instead of uname to + detect system and CPU types (Closes: #385535). + * Upstream removed debug messages from the ts plugin (Closes: #385008, + Closes: #385323). + * Aspect ration in mkv files was fixed (Closes: #385876). + + * debian/control: + + Build-depend on libcaca-dev (>= 0.99.beta4-1) so that we no longer pull + useless build dependencies (Closes: #385536). + + Have VLC depend on ttf-dejavu again. It's used for subtitles and the + default skin. + * debian/copyright: + + Full copyright holders and license audit (Closes: #324978). + * debian/rules: + + No longer install old copyright files (Closes: #385200). + + Re-activated the speex module (Closes: #386204). + + Don't install TTF fonts, use the ones from ttf-dejavu instead. + + * debian/patches/020_freetype_font.diff: + + Renamed this patch into 020_dejavu_font.diff and made it use dejavu + fonts. + + -- Sam Hocevar (Debian packages) Sun, 10 Sep 2006 19:02:17 +0200 + +vlc (0.8.6-svn20060823.debian-3) unstable; urgency=low + + * debian/control: + + Added missing build-dep on libdc1394-13-dev (Closes: #384568, #384582). + + Build-depend on a newer libcaca for better colour ASCII rendering. + + -- Sam Hocevar (Debian packages) Fri, 25 Aug 2006 11:19:00 +0200 + +vlc (0.8.6-svn20060823.debian-2) unstable; urgency=low + + * debian/control: + + Added missing build-dep on libraw1394-dev. + * debian/rules: + + Replaced --enable-livedotcom with --enable-live555. + + -- Sam Hocevar (Debian packages) Fri, 25 Aug 2006 09:37:47 +0200 + +vlc (0.8.6-svn20060823.debian-1) unstable; urgency=low + + * New upstream SVN snapshot. + * debian/rules: + + Distribute a shared version of libvlc. + + Activated the twolame encoder. + * debian/control: + + Build-depend on a newer libavcodec so as to get WMV3 decoding support. + + Cleaned up package dependencies a bit. + + * debian/patches/000_ltmain.diff: + + Work around libtool not wanting to install our plugins. + + -- Sam Hocevar (Debian packages) Thu, 24 Aug 2006 18:06:12 +0200 + +vlc (0.8.5.debian-2) unstable; urgency=low + + * debian/rules: + + Fix generation of Arch: all transition packages. + + -- Sam Hocevar (Debian packages) Wed, 7 Jun 2006 14:46:22 +0200 + +vlc (0.8.5.debian-1) unstable; urgency=low + + * New upstream release (Closes: #364934). + * This release no longer disables audio input if the v4l video device does + not advertise an audio device (Closes: #316377). + * This release fixes PPC asm compilation issues in x264 (Closes: #366965). + + * debian/control: + + Merged wxvlc and vlc-plugin-alsa into vlc to get rid of circular + dependencies (Closes: #365816). + + Set policy to 3.7.2. + + libxosd-dev is installable again; build-depend on it (Closes: #364937). + + * debian/patches/030_x264_altivec.diff: + * debian/patches/030_x264_armvl.diff: + + Patches applied upstream. Removed. + + -- Sam Hocevar (Debian packages) Tue, 23 May 2006 16:15:56 +0200 + +vlc (0.8.5-test3.debian-3) unstable; urgency=low + + * debian/control: + + Build-depend on libdvdread-dev (>= 0.9.5) because libdvdread3-dev just + disappeared (Closes: #364681). + + -- Sam Hocevar (Debian packages) Tue, 25 Apr 2006 09:05:45 +0200 + +vlc (0.8.5-test3.debian-2) unstable; urgency=low + + * debian/control: + + Added missing libavc1394-dev build-dependency. + + * debian/patches/030_x264_altivec.diff: + + Fixed illegal implicit casts of vector types. + + * debian/patches/030_x264_armvl.diff: + + Added support for the armv4l CPU. + + -- Sam Hocevar (Debian packages) Mon, 24 Apr 2006 20:45:16 +0200 + +vlc (0.8.5-test3.debian-1) unstable; urgency=low + + * New upstream release. + + * Upstream fixed many bugs: + + Fixed the CPU features used by the deinterlace plugin and no + longer crashes on non-SSE machines (Closes: #363153). + + Properly build on amd64 wrt PIC (Closes: #339372, #330146, #330154). + + Fixed the double pane in settings dialog issue (Closes: #343031). + + Help flags now adapt to the locale and help formatting was fixed + (Closes: #347278). + + HTTP streaming no longer fails (Closes: #352599). + + Memory leak fixed (Closes: #359655). + + x264 build system supports ppc64 and mips64 (Closes: #361452, #358233). + + OGG muxing was fixed (Closes: #364321). + + * debian/control: + + Removed legacy dummy packages. + + Switched from dpatch to quilt. + + Removed now useless build-dependency on gcc-snapshot (Closes: #361729). + + Ditto for xlibs-static-pic (Closes: #364265). + + Build-depend on newer ffmpeg libraries so that we dynamically link + against them. + + Build-depend on newer Matroska libraries to fix .mkv support + (Closes: #348404). + + Build-depend on libxul-dev and xulrunner instead of mozilla-dev. + + Build-depend on newer live555 libraries. + + Depend on vlc-plugin-alsa. + + Removed the ttf-freefont dependency (Closes: #353459, #362071). + + * debian/vlc.mime: + + Fixed broken templates (Closes: #354101). + + * debian/patches/010_no-wx-updates.diff: + + Created from old dpatch. Disables broken "check for updates" button. + + * debian/patches/010_osdmenu-paths.diff + + Created from old dpatch. Fixes file paths for OSD plugin. + + * debian/patches/020_xulrunner.diff: + + Build using XULrunner (Closes: #364381). + + * debian/patches/020_freetype_font: + + Do not hardcode the default font, let VLC find one itself. + + -- Sam Hocevar (Debian packages) Mon, 24 Apr 2006 18:10:10 +0200 + +vlc (0.8.4.debian-2) unstable; urgency=low + + * debian/rules: + + Enable zeroconf/bonjour support (Closes: #348085). + + Enable musepack decoding support. + + Enable VCD navigation support. + * debian/control: + + Build-depend on more recent versions of libavcodec to fix CVE-2005-4048. + + Build-depend on libhal-dev (>= 0.5.5.1-3) for the dbus transition. + + Build-depend on libavahi-client-dev. + + Build-depend on libmpcdec-dev. + + Build-depend on libsysfs-dev so that the MP4 module can get an iPod’s + version number. + + Build-depend on libvcdinfo-dev. + * debian/vlc.mime: + + Put flags after the command, as per mailcap(5) (Closes: #340434). + + * src/libvlc.c configure.ac modules/services_discovery/hal.c: + + Backported HAL 0.5 patch from upstream, thanks to Clément Stenac and + Loïc Minier. As a result, we now build and install again on unstable + (Closes: #332927, #347598, #347847). + * extras/x264/configure: + + Support the armv5tel platform. + + -- Sam Hocevar (Debian packages) Sun, 22 Jan 2006 12:08:42 +0100 + +vlc (0.8.4.debian-1) unstable; urgency=low + + * New upstream release. + + -- Sam Hocevar (Debian packages) Sat, 26 Nov 2005 19:55:09 +0100 + +vlc (0.8.4-test2-2) unstable; urgency=low + + * extras/x264/configure: + + Teach the configure script about the Alpha platform. + + -- Sam Hocevar (Debian packages) Fri, 11 Nov 2005 18:49:31 +0100 + +vlc (0.8.4-test2-1) unstable; urgency=low + + * New upstream release. + * debian/control: + + Build-depend on a newer version of gnutls (Closes: #335774). + + Replaced occurrences of "wxwindows" with "wxwidgets" (Closes: #330141). + * debian/rules: + + Use dh_buildinfo because of all the static libraries we use. + * Upstream fixed the wx code so that it builds with newer versions of the + library (Closes: #332282, #332773). + + -- Sam Hocevar (Debian packages) Fri, 11 Nov 2005 10:41:35 +0100 + +vlc (0.8.4-svn20050920-3) unstable; urgency=low + + * configure.ac: + + Fixed a bug in the gnomevfs plugin configuration. + * debian/rules: + + Explicitly disable the GnomeVFS plugin (Closes: #329317). + * debian/control: + + Buuild-depend on yasm on amd64. + + -- Sam Hocevar (Debian packages) Wed, 21 Sep 2005 11:36:24 +0200 + +vlc (0.8.4-svn20050920-2) unstable; urgency=low + + * configure: + + Fixed the powerpc build with gcc-4.x. + * extras/x264/configure: + + Added missing Debian architectures to the configure script. + + -- Sam Hocevar (Debian packages) Tue, 20 Sep 2005 17:46:35 +0200 + +vlc (0.8.4-svn20050920-1) unstable; urgency=low + + * New SVN snapshot. + * configure.ac: + + Upstream fixed the AltiVec build on PPC. + * debian/control: + + Build-depend on a newer version of libavcodec. mp2v and mp1v encoders + work again (Closes: #324840). + + Build-depend on gcc-snapshot on i386 and amd64, because currently only + that version of gcc properly builds some of the MMX modules. + + -- Sam Hocevar (Debian packages) Tue, 20 Sep 2005 13:43:41 +0200 + +vlc (0.8.4-svn20050823-2) unstable; urgency=low + + * debian/control: + + Build-depend on libflac-dev (>= 1.1.2-3) because of the soname + change (Closes: #325948). + * debian/copyright: + + Fixed the FSF address. + + -- Sam Hocevar (Debian packages) Thu, 1 Sep 2005 12:36:10 +0200 + +vlc (0.8.4-svn20050823-1) unstable; urgency=low + + * New SVN snapshot. + * debian/control: + + Build-depend on libsmbclient-dev. + + Build-depend on libwxgtk2.6-dev (Closes: #285373), which means the + interface now works with non-UTF8 locales (Closes: #308770, #322665). + + Build-depend on a newer version of libavcodec. + * debian/rules: + + Activated SMB client support. + + Install desktop files in usr/share/applications instead of + usr/share/gnome/apps/Multimedia. + * debian/patches/00list: + + 20_no-wx-updates.dpatch: disabled the update check. + + 20_interfaces.dpatch: disabled deprecated patch. + * configure.ac: + + Fixes powerpc build. + * include/network.h src/misc/net.c: + + Fixes HTTP input (Closes: #322757). + + Fixes URL encoding in the RTSP module (Closes: #323813). + * modules/gui/skins2 modules/gui/wxwidgets: + + Fixes a compilation issue on 64-bit architectures (Closes: #324031). + * modules/visualization/xosd.c: + + Fixes libxosd initialisation (Closes: #324039). + + -- Sam Hocevar (Debian packages) Mon, 22 Aug 2005 14:43:48 +0200 + +vlc (0.8.4-svn20050810-2) unstable; urgency=low + + * debian/control: + + Build-depend on libarts1-dev (>= 1.4.2-1). + + Build-depend on a newer version of libavcodec. + + -- Sam Hocevar (Debian packages) Tue, 16 Aug 2005 17:36:21 +0200 + +vlc (0.8.4-svn20050810-1) unstable; urgency=low + + * New SVN snapshot. + * Rebuilt against libaa1 and new wxWin and SDL packages to complete the + aalib transition (Closes: #320874) and make the packages installable again + (Closes: #319292, #319598, #321461, #322166, #317380). + * debian/rules: + + Use DEB_BUILD_ARCH_CPU instead of DEB_BUILD_GNU_CPU. + * debian/vlc.desktop: + + Added desktop file, thanks to Mantas Kriauciunas (Closes: #290612). + * debian/control: + + Removed unused dummy packages (Closes: #321988, #322003, #322013). + + Build-depend on libmatroska-dev (>= 0.7.7). + + Build-depend on libwxgtk2.4-dev (>= 2.4.4). + + Build-depend on libdvbpsi4-dev instead of libdvbpsi3-dev. + * Build-depend on libsdl1.2-dev (>= 1.2.7+1.2.8cvs20041007-5.3). + + Build-depend on a newer version of libmatroska-dev and mozilla-dev + because of the C++ transition. + + Build-depend on libsvga1-dev instead of svgalib1-dev. + * This snapshot no longer uses tune=opteron on amd64 (Closes: #316161). + * The SVN version adds support for Freebox users (Closes: #317035). + * Various gcc-4.x FTBFS were fixed upstream (Closes: #317055). + * mozilla/support/npunix.c: fixed undeclared NPP_GetJavaClass + (Closes: #317067). + + -- Sam Hocevar (Debian packages) Wed, 10 Aug 2005 16:18:37 +0200 + +vlc (0.8.2-1) unstable; urgency=low + + * New upstream release. + * This version fixes the random playlist parsing (Closes: #308375), encodes + non-ASCII characters in RTSP requests (Closes: #279735) and fixes an issue + with large files (Closes: #306110). + * debian/control: + + Set policy to 3.6.2.1. + + Build-depend on libpng12-dev, xlibmesa-gl-dev. + + Build-depend on a more recent ffmpeg library set, to fix nasty visual + artifacts with post-processing (Closes: #300220). + + mozilla-plugin-vlc recommends mozilla-firefox in addition to + mozilla-browser (Closes: #308723). + + Now that sarge is out, removed legacy packages that disappeared in woody. + * debian/rules: + + Activated PNG output support. + + Activated GLX output support. + * The NEWS file documents the changed behaviour for SAP (Closes: #303262). + * Minor typo fixed in the manpage (Closes: #300339). + * po/de.po: merged corrections from Jens Seidel (Closes: #313890). + + -- Sam Hocevar (Debian packages) Sun, 26 Jun 2005 16:28:19 +0200 + +vlc (0.8.1.svn20050314-1) unstable; urgency=low + + * More recent SVN snapshot. + * This snapshot fixes issues in modules/gui/wxwindows/streamout.cpp that + caused FTBFS on 64-bit architectures (Closes: #289923). + * debian/control: + + Build-depend on new libmatroska and libavcodec versions. + + Unfortunate return to wxwidgets 2.4 until 2.5 enters testing. + + Upgraded libflac-dev build dependency to (>= 1.1.1-5) to resolve + dependency issues (Closes: #298067). + * debian/vlc.mime: merged Guido Guenther’s contribution (Closes: #297261). + + -- Sam Hocevar (Debian packages) Mon, 14 Mar 2005 10:53:59 +0100 + +vlc (0.8.1-3) unstable; urgency=low + + * debian/control: + + Build-depend on fixed ffmpeg packages (Closes: #289444). + + Build-depend on a newer libflac-dev so that resulting packages use + libflac6 (Closes: #289490). + * modules/gui/wxwindows/open.cpp: + + Compilation fix for 64 bits systems. + + -- Sam Hocevar (Debian packages) Mon, 10 Jan 2005 11:10:02 +0100 + +vlc (0.8.1-2) unstable; urgency=low + + * debian/control: + + Use ffmpeg from Debian instead of the contrib one. + + Use wxgtk2.5 instead of 2.4. + + Activated the ncurses UI (Closes: #286962). + * debian/gnome-vlc.desktop debian/gvlc.desktop: + + Fixed the icon location. + + -- Sam Hocevar (Debian packages) Thu, 6 Jan 2005 18:00:00 +0100 + +vlc (0.8.1-1) unstable; urgency=low + + * New upstream release. + * debian/gnome-vlc.desktop: + + Fixed program path (Closes: #280290). + * debian/control: + + Require an up-to-date liblivemedia. + + Build-depend on libgnutls11-dev. + + -- Sam Hocevar (Debian packages) Sun, 14 Nov 2004 22:21:23 +0100 + +vlc (0.8.0.final-1) unstable; urgency=low + + * Final 0.8.0 upstream release. + * src/misc/modules.c: + + Fixed a startup issue with the svlc shortcut (Closes: #274376). + * debian/control: + + Suggest the Mozilla and ALSA plugins. Only mentioned the others in + the package description because they are not of notable usefulness + (Closes: #275160). + * modules/access/http.c: + + Fix HTTP proxy handling (Closes: #278381). + + -- Sam Hocevar (Debian packages) Wed, 3 Nov 2004 14:52:05 +0100 + +vlc (0.8.0-test1-1) unstable; urgency=high + + * New upstream tarball. + * debian/rules: + + Fixed previously broken DVD support. + + Removed currently broken Speex support. + * debian/control: + + Build-depend on libdvdnav. + + -- Sam Hocevar (Debian packages) Sat, 4 Sep 2004 02:32:49 +0200 + +vlc (0.7.2.svn20040827-1) unstable; urgency=high + + * New SVN snapshot. + * debian/rules: + + Activated x264 support. + + Re-enabled libmodplug support. + + Build PIC plugins even on x86. + + Disabled SLP because its code is broken. + + Disabled the GNOME, Qt, GTK+ and KDE interfaces in favour of the + WxWidgets one. + + Activated HAL support. + * debian/control: + + Force the vlc-plugin-arts dependencies. + + Build-depend on jam and nasm because of x264. + + -- Sam Hocevar (Debian packages) Fri, 27 Aug 2004 21:31:13 +0200 + +vlc (0.7.2.final-11) unstable; urgency=medium + + * configure.ac: + + Fixed an LDFLAGS/CFLAGS confusion. + + Don't use -finline-limit since it now tries to inline functions that + have not been explicitely inlined (Closes: #265673). + * debian/patches/20_configure.dpatch: + + Don't manage this patch with dpatch since it causes ownership issues. + + -- Sam Hocevar (Debian packages) Sun, 15 Aug 2004 01:35:35 +0200 + +vlc (0.7.2.final-10) unstable; urgency=medium + + * The "I hope I got it right this time" upload. + * configure.ac: + + Use -maltivec -mabi=altivec for the memcpyaltivec and deinterlace + plugins on PowerPC. + + -- Sam Hocevar (Debian packages) Tue, 10 Aug 2004 18:01:47 +0200 + +vlc (0.7.2.final-9) unstable; urgency=low + + * debian/control: + + Added a missing dpatch build dependency (Closes: #263363). + + Removed the modplug plugin until libmodplug-dev enters Debian. + + -- Sam Hocevar (Debian packages) Tue, 10 Aug 2004 11:01:15 +0200 + +vlc (0.7.2.final-8) unstable; urgency=low + + * debian/control: + + Added a missing dpatch build dependency. + * configure.ac: + + Fixed the powerpc build by conditionally re-enabling -maltivec + -mabi=altivec. + + -- Sam Hocevar (Debian packages) Fri, 30 Jul 2004 00:05:58 +0200 + +vlc (0.7.2.final-7) unstable; urgency=low + + * debian/rules: + + Switch build system to dpatch. + + -- Sam Hocevar (Debian packages) Thu, 29 Jul 2004 17:03:51 +0200 + +vlc (0.7.2.final-6) unstable; urgency=low + + * configure.ac: don't use -maltivec -mabi=altivec, because we don't want + to trigger AltiVec optimisations in our generic code (Closes: #256578, + Closes: #260819). + + -- Sam Hocevar (Debian packages) Fri, 23 Jul 2004 17:21:21 +0200 + +vlc (0.7.2.final-5) unstable; urgency=low + + * debian/control: + + Build-depend on libdvbpsi3-dev, so that we can get rid of the previous + versions of this library. + + Recommend the videolan-doc package. + + Build-conflict on libavcodec-dev, just in case it enters Sid at an + unappropriate moment. + * debian/README.Debian: + + Removed mention of the libmpeg2 tree, which we no longer provide. + + -- Sam Hocevar (Debian packages) Tue, 20 Jul 2004 11:25:17 +0200 + +vlc (0.7.2.final-4) unstable; urgency=low + + * debian/rules: + + Activated Theora support (Closes: #259061). + + Re-enabled the KDE plugin (Closes: #258295). + * debian/control: + + Set policy to 3.6.1.1. + + -- Sam Hocevar (Debian packages) Tue, 13 Jul 2004 00:21:20 +0200 + +vlc (0.7.2.final-3) unstable; urgency=low + + * extras/ffmpeg/configure: fixed HPPA architecture detection. + + -- Sam Hocevar (Debian packages) Fri, 25 Jun 2004 11:55:33 +0200 + +vlc (0.7.2.final-2) unstable; urgency=low + + * extras/ffmpeg/libavcodec/svq1.c: fixed vector/vect namespace issues on + powerpc. + + -- Sam Hocevar (Debian packages) Tue, 22 Jun 2004 15:21:09 +0200 + +vlc (0.7.2.final-1) unstable; urgency=low + + * New upstream release. + * Temporarily disabled the KDE GUI plugin. + + -- Sam Hocevar (Debian packages) Sat, 29 May 2004 00:06:48 -0300 + +vlc (0.7.2-test2-1) unstable; urgency=low + + * New upstream snapshot. + + -- Sam Hocevar (Debian packages) Thu, 6 May 2004 11:11:25 +0200 + +vlc (0.7.2-test1-4) unstable; urgency=low + + * extras/ffmpeg/libacvodec/Makefile: + + Fixed a PARISC/HPPA mix-up. + * src/interface/interface.c: + + Removed the "switch interface" menu due to wxwin's utter bugosity. + + -- Sam Hocevar (Debian packages) Fri, 30 Apr 2004 13:15:59 +0200 + +vlc (0.7.2-test1-3) unstable; urgency=low + + * configure.ac: + + Link DTS plugins with libdts_pic.a, not libdts.a. + * debian/control: + + Build-depend on libid3tag0-dev for ID3 tag support. + + Made vlc depend on wxvlc for the moment. + * extras/ffmpeg/libacvodec/Makefile: + + Build motion_est.c with -O1. + + -- Sam Hocevar (Debian packages) Fri, 30 Apr 2004 10:49:59 +0200 + +vlc (0.7.2-test1-2) unstable; urgency=low + + * debian/control: + + Build-depend on libxml2-dev. + * extras/ffmpeg/libavcodec/ppc/dsputil_altivec.c: + + Syntax fixes for powerpc. + + -- Sam Hocevar (Debian packages) Wed, 28 Apr 2004 12:49:18 +0200 + +vlc (0.7.2-test1-1) unstable; urgency=low + + * New SVN snapshot. + * The skinned interface is now the default one (Closes: #245210). + * debian/control: + + Removed the libdv2-dev build-dependency. + + Set the liblivemedia-dev build-dependency to (>= 2004.04.23-1). + + Set the libmatroska-dev build-dependency to (>= 0.7.0). + + Build-depend on libfribidi-dev. + + Build-depend on libcdio-dev. + + Build-depend on libmodplug-dev. + * debian/rules: + + Activated fribidi support. + + Activated CDDA support via libcdio. + + Activated MOD support. + * configure.ac: + + Re-enabled i420_yuy2_altivec. + * src/interface/interface.c: + + Disable unavailable interfaces from the switch menu (Closes: #245209). + + -- Sam Hocevar (Debian packages) Mon, 26 Apr 2004 16:30:25 +0200 + +vlc (0.7.1-7) unstable; urgency=high + + * debian/control: + + Override kdelibs4's shlibs value to get VLC into testing. + + No longer build-depend on dvb-dev. + + -- Sam Hocevar (Debian packages) Tue, 20 Apr 2004 18:00:40 +0200 + +vlc (0.7.1-6) unstable; urgency=low + + * debian/control: + + Removed the build dependency on gcc-3.2 because gcc-3.3 no longer ICEs + on ppc/mpegvideo_altivec.o (Closes: #236442). + + Build depend on fixed libsdl1.2-dev (>= 1.2.7-5). + + -- Sam Hocevar (Debian packages) Tue, 6 Apr 2004 10:27:35 +0200 + +vlc (0.7.1-5) unstable; urgency=low + + * debian/control: + + Added a build-dependency on libaudiofile-dev to fix the m68k build. + * debian/rules: + + Added symlinks for mozilla-firefox (Closes: #239352). + + -- Sam Hocevar (Debian packages) Tue, 30 Mar 2004 23:10:20 +0200 + +vlc (0.7.1-4) unstable; urgency=medium + + * extras/ffmpeg/libavcodec/ppc/mpegvideo_ppc.c: + + Replaced fprintf() with av_log() to fix the powerpc build. + + -- Sam Hocevar (Debian packages) Sun, 21 Mar 2004 13:59:07 +0100 + +vlc (0.7.1-3) unstable; urgency=medium + + * debian/rules: + + Activated DTS decoding support. + * debian/control: + + Build-depend on libx11-dev, libxext-dev, libxt-dev instead of xlibs-dev. + + Build-depend on libxv-dev, xlibs-static-pic instead of xlibs-pic. + + -- Sam Hocevar (Debian packages) Sat, 20 Mar 2004 18:13:43 +0100 + +vlc (0.7.1-2) unstable; urgency=medium + + * debian/control: + + Build-depend on zlib1g-dev because ffmpeg uses it by default. + * configure.ac: + + Add -lz to the link flags for plugins that use ffmpeg. + + Disabled i420_yuy2_altivec for now, because it only has a C version of + the AltiVec routines. + + -- Sam Hocevar (Debian packages) Thu, 4 Mar 2004 17:34:58 +0100 + +vlc (0.7.1-1) unstable; urgency=medium + + * New upstream release. + * debian/copyright: + + Added faad2 and ffmpeg authors to the copyright (Closes: #212766). + * mozilla/vlcplugin.h: + + Added the 'video/x-ms-asf' MIME type to the plugin (Closes: #232690). + + -- Sam Hocevar (Debian packages) Wed, 3 Mar 2004 10:47:21 +0100 + +vlc (0.7.0-3) unstable; urgency=medium + + * ppc/mpegvideo_altivec.c: + + Build this file with GCC 3.2 to work around an ICE. + + -- Sam Hocevar (Debian packages) Wed, 21 Jan 2004 15:36:30 +0100 + +vlc (0.7.0-2) unstable; urgency=low + + * debian/rules: + + Look for faad in extras/faad2, not extras/faad. + * modules/demux/mkv.cpp: + + Updated mkv module for the latest Matroska version (Closes: #227923). + * modules/video_output/caca.c: + + Updated caca module for the latest libcaca version. + + -- Sam Hocevar (Debian packages) Tue, 20 Jan 2004 18:30:58 +0100 + +vlc (0.7.0-1) unstable; urgency=low + + * New upstream release. + * debian/control: + + Build-depend on fixed dvb-dev packages. + + Build-depend on fixed linux-kernel-headers packages. + * debian/rules: + + Look for faad in extras/faad2, not extras/faad. + + Enable postprocessing in the ffmpeg configuration. + + Activated libcaca video output. + * doc/vlc.1: + + Fixed a minor typo (Closes: #223605). + + -- Sam Hocevar (Debian packages) Sun, 4 Jan 2004 03:29:22 +0100 + +vlc (0.6.2+cvs20031030-2) unstable; urgency=low + + * debian/control: + + Build-depend on a newer wxwindows version to avoid incompatibilities. + + Build-depend on linux-kernel-headers and build-conflict on dvb-dev + because these packages cannot be installed together. + * debian/rules: + + Temporarily disabled the framebuffer video output plugin because of + current code errors in linux-kernel-headers. + + -- Sam Hocevar (Debian packages) Sat, 1 Nov 2003 11:01:40 +0100 + +vlc (0.6.2+cvs20031030-1) unstable; urgency=low + + * New CVS snapshot. + * debian/rules: + + Disabled the deprecated satellite plugin; the dvb plugin is now + the recommended one (Closes: #216367). + + Don't install fortunes in /usr/share/games, they are too private for + common mortals (Closes: #212856). They are still available in the + /usr/share/doc/vlc directory though. + + Activated the speex codec. + + Activated the PVR input module. + * debian/control: + + Depend on ttf-freefont for subtitles. + + Upgraded debhelper build-dependency to (>= 4.0). + + -- Sam Hocevar (Debian packages) Fri, 31 Oct 2003 11:08:57 +0100 + +vlc (0.6.2-3) unstable; urgency=low + + * debian/control: + + Set libxosd-dev build-dependency to (>= 2.2.4-1.3) because previous + versions were broken on s390 (Closes: #208383). + + Rewrote long descriptions (Closes: #209602, #209615, #209628, #209636, + Closes: #209774, #209914, #210028, #210095). + + -- Sam Hocevar (Debian packages) Mon, 15 Sep 2003 21:28:43 +0200 + +vlc (0.6.2-2) unstable; urgency=low + + * debian/control: + + Set libmatroska-dev build-dependency to (>= 0.5.0-3) because previous + versions were broken on platforms where PIC/non-PIC cannot be mixed in + objects (Closes: #208383). + + Set policy to 3.6.1.0. + + -- Sam Hocevar (Debian packages) Fri, 5 Sep 2003 02:32:54 +0200 + +vlc (0.6.2-1) unstable; urgency=low + + * New upstream release. + * debian/control: + + Added a build-dependency on freetype6-dev. + + Added a build-dependency on libdvbpsi2-dev. + + We now recommend gnome-vlc | wxvlc. + + We now suggest fortune-mod. + * This release now uses libfreetype to render subtitles, and we recommend + ttf-freefont | ttf-thryomanes, so that the old .rle font is no longer + needed (Closes: #203013). + * extras/faad: + + aclocal-1.6 && autoconf && automake-1.6 -a -c -f && libtoolize -c -f + * extras/faad/common/mp4v2: + + aclocal-1.4 && autoconf && autoheader && automake-1.4 --foreign -a -c \ + && libtoolize -c -f + * extras/mpeg2dec: + + aclocal-1.7 && autoconf && automake-1.7 -a -c && libtoolize -c -f + + -- Sam Hocevar (Debian packages) Tue, 2 Sep 2003 10:45:24 +0200 + +vlc (0.6.0+cvs-20030716-2) unstable; urgency=low + + * debian/control: + + Updated debhelper build-dependency to (>= 3.4.4) because we now + use debian/compat. + + Use ${misc:Depends} everywhere. + + -- Sam Hocevar (Debian packages) Wed, 16 Jul 2003 16:55:31 +0200 + +vlc (0.6.0+cvs-20030716-1) unstable; urgency=low + + * New CVS snapshot. + * debian/control: + + Set policy to 3.6.0. No changes required. + + Extended the package description. + * modules/video_output/x11/xcommon.c: + + Fix for crashes in the Mozilla plugin (Closes: #200920). + * mozilla/*: + + Compilation fixes for Mozilla 1.4 headers (Closes: #201093). + + -- Sam Hocevar (Debian packages) Wed, 16 Jul 2003 16:55:31 +0200 + +vlc (0.6.0+cvs-20030705-1) unstable; urgency=low + + * New CVS snapshot. + + Includes previous Debian fixes. + + Errors in plugins now properly trigger build abort so that no build + failures are missed. Thanks to LaMont Jones for pointing out the problem. + * debian/rules: + + Enabled Matroska support. + + Only build builtins in the first compile pass so that we don't mix PIC + and non-PIC code (Closes: #199968). Phew, I hope I got it right this + time. + * extras/ffmpeg: + + Re-applied the Alpha build fix from 0.6.0+cvs-20030627-2 that had + disappeared in 0.6.0+cvs-20030703-1. + + -- Sam Hocevar (Debian packages) Sat, 5 Jul 2003 01:09:11 +0200 + +vlc (0.6.0+cvs-20030703-1) unstable; urgency=low + + * New CVS snapshot. + + Includes previous Debian fixes. + + Build should be a bit faster now. + * extras/faad: + + aclocal-1.6 && autoconf && automake-1.6 -a -c -f && libtoolize -c -f + * extras/faad/common/id3lib: + + mkdir doc examples + + aclocal-1.4 && autoconf && automake-1.4 -a -c && libtoolize -c -f + * extras/mpeg2dec: + + aclocal-1.7 && autoconf && automake-1.7 -a -c && libtoolize -c -f + + Fixes build on parisc (Closes: #199693). + + -- Sam Hocevar (Debian packages) Thu, 3 Jul 2003 11:25:57 +0200 + +vlc (0.6.0+cvs-20030627-2) unstable; urgency=low + + * extras/ffmpeg: + + Fixed compilation for Alpha. + * debian/rules: + + Enabled the video4linux input plugin (Closes: #199427). + + -- Sam Hocevar (Debian packages) Sun, 29 Jun 2003 21:12:10 +0200 + +vlc (0.6.0+cvs-20030627-1) unstable; urgency=low + + * New upstream release. + * debian/rules: + + Replaced $(DEB_BUILD_ARCH) with `dpkg-architecture -qDEB_BUILD_GNU_CPU` + so that the rules can be called directly. + + Use the -s flag instead of -a so that debhelper properly handles the + i386-only plugin packages. + + Split the build rule into configure and build. + * debian/control: + + Removed leading "a"s from package descriptions. + + Set policy to 3.5.10. + + -- Sam Hocevar (Debian packages) Sat, 21 Jun 2003 17:55:07 +0200 + +vlc (0.5.3-3) unstable; urgency=low + + * Built-in modules were linked twice in the mozilla plugin; removed the + non-PIC ones (Closes: #194384). + + -- Samuel Hocevar Fri, 23 May 2003 11:15:19 +0200 + +vlc (0.5.3-2) unstable; urgency=low + + * Changed the libvlc0-dev section to libdevel. + * We now build the static objects twice: once the normal way before we + link them with VLC, and once with -fPIC so that they can be linked to + the Mozilla plugin. + * Updated extras/faad/config.{sub,guess}. + + -- Samuel Hocevar Fri, 14 Apr 2003 15:14:07 +0200 + +vlc (0.5.3-1) unstable; urgency=low + + * New upstream release. + * Fixed a clock skew issue in debian/rules. + + -- Samuel Hocevar Tue, 8 Apr 2003 15:20:20 +0100 + +vlc (0.5.2-4) unstable; urgency=low + + * Changed the section of gnome-vlc and kvlc according to new Debian + archive sections. + * Updated woody-buildpackage so that packages say "stable". + + -- Samuel Hocevar Tue, 1 Apr 2003 18:08:01 +0200 + +vlc (0.5.2-3) unstable; urgency=low + + * Added explicit dependencies on vlc to legacy packages to make linda and + lintian happier. + * Added correct versioned build-dependency on debhelper. + * Updated the autotools helper files in extras/faad. + + -- Samuel Hocevar Wed, 26 Mar 2003 02:50:34 +0100 + +vlc (0.5.2-2) unstable; urgency=low + + * Bumped up standards version to 0.5.9.0. + * Added build-dependencies on libidl0 and libglib2.0-0 to work around + mozilla-dev's currently broken dependencies. + * We now link against libdvdread3 instead of libdvdread2. + + -- Samuel Hocevar Tue, 25 Mar 2003 23:21:51 +0100 + +vlc (0.5.2-1) unstable; urgency=low + + * New upstream release. + * Removed vlc-plugin-dvb, vlc-plugin-xosd, vlc-plugin-aa, vlc-plugin-lirc and + vlc-plugin-dv packages because the dependencies are quite small, and merged + them into the main vlc package. + * Removed the vlc-mad, vlc-arts, vlc-lirc and vlc-aa legacy packages because + they were not in woody. + + -- Samuel Hocevar Tue, 11 Mar 2003 20:32:36 +0100 + +vlc (0.5.1-1) unstable; urgency=low + + * New upstream release. + * The vlc-glide package is now Architecture: i386 only. + * The vlc-plugin-mad package Provides: mp3-decoder. + * The deprecated vlc-* packages have a proper link to /usr/share/doc/vlc/. + + -- Samuel Hocevar Sat, 15 Feb 2003 03:43:33 +0100 + +vlc (0.5.0-1) unstable; urgency=low + + * New upstream release (Closes: #157166). + * Audio MPEG and A52 decoders now use external libraries (libmad, liba52). + * Build-Depends are now valid (Closes: #147103). + * More robust AVI parser (Closes: #158037). + * An issue with X taking more and more CPU was fixed (Closes: #153286). + * Package now includes a NEWS file. + * New package containing a Mozilla plugin. + * New codec packages: Ogg/Vorbis, DV. + * New GUI package: wxvlc (wxWindows). + * New debian/woody-buildpackage file that can be used to build Woody + packages. + * Made the GNOME desktop entries more user-friendly (Closes: #149749). + + -- Samuel Hocevar Thu, 4 Jul 2002 17:44:25 +0200 + +vlc (0.4.1-1) unstable; urgency=low + + * New upstream release. + + -- Samuel Hocevar Mon, 3 Jun 2002 23:43:35 +0200 + +vlc (0.4.0-1) unstable; urgency=low + + * New upstream release. + + -- Samuel Hocevar Thu, 23 May 2002 01:27:05 +0200 + +vlc (0.3.1-1) unstable; urgency=low + + * New upstream release. + * Fixes a crash in the Gtk+ interface. + + -- Samuel Hocevar Thu, 18 Apr 2002 06:43:42 +0200 + +vlc (0.3.0-1) unstable; urgency=low + + * New upstream release. + * Reworked Gtk interface (Closes: #138732), with a working preferences + dialog (Closes: #134142, #134147). + * The ALSA plugin now supports S/PDIF (Closes: #118301). + + -- Samuel Hocevar Sat, 6 Apr 2002 04:27:50 +0200 + +vlc (0.2.92-8) unstable; urgency=high + + * Only link with libXv.a if libXv_pic.a wasn't found, which fixes + package builds on sid. + * Added -ffunction-sections to the compilation of mpeg_vdec.a when + the architecture is hppa. + + -- Samuel Hocevar Sun, 6 Jan 2002 06:56:08 +0100 + +vlc (0.2.92-7) unstable; urgency=high + + * Fixed configure.in so that it doesn't fail on hppa. + * Fixed a symbol resolution issue that made vlc crash when libdvdcss + was installed. + + -- Samuel Hocevar Sat, 5 Jan 2002 03:46:23 +0100 + +vlc (0.2.92-6) unstable; urgency=high + + * Attempt to fix IA64 and hppa builds. + + -- Samuel Hocevar Fri, 4 Jan 2002 14:11:02 +0100 + +vlc (0.2.92-5) unstable; urgency=high + + * Many fixes imported from the 0.2.92 upstream release (VCD input, + buffer management, decoder error management). + * Removed a stupid dependency on libc6 which prevented the package + from being built on alpha. + + -- Samuel Hocevar Wed, 2 Jan 2002 04:16:44 +0100 + +vlc (0.2.92-4) unstable; urgency=high + + * Put debian/control and debian/rules in sync again (Closes: #126697). + * Replaced the 48x48 XPM icons with 32x32 icons to comply with policy + (Closes: #126939). + * Don't spawn the Gtk+ or the Gnome interface if no $DISPLAY variable is + present, which fixes the framebuffer output (Closes: #101753). + + -- Samuel Hocevar Sun, 30 Dec 2001 02:59:01 +0100 + +vlc (0.2.92-3) unstable; urgency=high + + * Removed references to vlc-mad (Closes: #126194). + + -- Samuel Hocevar Sat, 22 Dec 2001 21:04:27 +0100 + +vlc (0.2.92-2) unstable; urgency=high + + * Bumped urgency to high to get this stable version into testing; all + reported critical bugs were fixed. + * Bumped Standards-Version to 3.5.6. + * Fixed a PowerPC compilation issue. + * Fixed a crash in the VCD input. + + -- Samuel Hocevar Thu, 20 Dec 2001 23:24:21 +0100 + +vlc (0.2.92-1) unstable; urgency=low + + * Using the stable 0.2.92 CVS branch, has lots of stability fixes. + * Disabled broken ALSA audio output (Closes: #110869, #119846). + * Changed configure.in so that vlc is linked against libXv.a, + not xvideo.so and sdl.so (Closes: #111790). + * Added versioned build-dep to libasound2-dev (Closes: #121057). + + -- Samuel Hocevar Wed, 19 Dec 2001 17:06:44 +0100 + +vlc (0.2.91-2) unstable; urgency=low + + * Added "Video" menu hints (Closes: #121036). + + -- Samuel Hocevar Sun, 25 Nov 2001 02:25:34 +0100 + +vlc (0.2.91-1) unstable; urgency=low + + * New upstream release. + * This release fixes IFO parsing issues (Closes: #119369). + * vlc will dlopen() an installed libdvdcss if available, to play + encrypted DVDs (Closes: #89856). + * vlc is now in sync with the official libdvdcss (Closes: #118194). + + -- Samuel Hocevar Mon, 12 Nov 2001 17:14:29 +0100 + +vlc (0.2.90-3) unstable; urgency=low + + * Added stricter Build-Depends on libsdl1.2-dev (Closes: #117180). + + -- Samuel Hocevar Fri, 26 Oct 2001 16:06:01 +0200 + +vlc (0.2.90-2) unstable; urgency=low + + * Various upstream bugfixes. + * Compiled against libsdl1.2-debian (Closes: #116709). + + -- Samuel Hocevar Tue, 23 Oct 2001 02:09:39 +0200 + +vlc (0.2.90-1) unstable; urgency=low + + * Fixed syntax error in build dependencies (Closes: #109722). + * XVideo module now compiled as built-in, to avoid PIC and non-PIC + code collision (Closes: #111790). + + -- Samuel Hocevar Wed, 10 Oct 2001 15:00:29 +0200 + +vlc (0.2.83-2) unstable; urgency=low + + * Fixed build dependencies for architectures not supporting libasound2 + (Closes: #109722). + + -- Samuel Hocevar Fri, 24 Aug 2001 12:47:45 +0200 + +vlc (0.2.83-1) unstable; urgency=low + + * New upstream release. + * Activated subtitles in overlay mode (Closes: #97471). + + -- Samuel Hocevar Wed, 22 Aug 2001 15:18:01 +0200 + +vlc (0.2.82-1) unstable; urgency=low + + * New upstream release. + * Fixed broken manpage symlinks (Closes: #99561). + + -- Samuel Hocevar Tue, 7 Aug 2001 12:39:16 +0200 + +vlc (0.2.81-1) unstable; urgency=low + + * New upstream release. + + -- Samuel Hocevar Sat, 28 Jul 2001 04:13:57 +0200 + +vlc (0.2.80-1) unstable; urgency=low + + * New upstream release. + + -- Samuel Hocevar Tue, 5 Jun 2001 04:41:06 +0200 + +vlc (0.2.73-2) unstable; urgency=low + + * We now build without MMX in the main application (Closes: #96036). + + -- Samuel Hocevar Fri, 4 May 2001 07:13:04 +0200 + +vlc (0.2.73-1) unstable; urgency=low + + * New upstream release. + + -- Samuel Hocevar Sat, 28 Apr 2001 07:02:35 +0200 + +vlc (0.2.72-1) unstable; urgency=low + + * New upstream release. + + -- Samuel Hocevar Mon, 16 Apr 2001 14:33:53 +0200 + +vlc (0.2.71-1) unstable; urgency=low + + * New upstream release. + + -- Samuel Hocevar Fri, 13 Apr 2001 08:13:26 +0200 + +vlc (0.2.70-1) unstable; urgency=low + + * New upstream release. + * Non-i386 package builds really fixed (Closes: #89285). + + -- Samuel Hocevar Sat, 7 Apr 2001 05:52:00 +0200 + +vlc (0.2.63-3) unstable; urgency=low + + * Added versioned conflicts/replaces to vlc-gtk (Closes: #88796). + + -- Samuel Hocevar Wed, 7 Mar 2001 20:47:48 +0100 + +vlc (0.2.63-2) unstable; urgency=low + + * Glide shouldn't cause any non-x86 problems anymore (Closes: #88583). + + -- Samuel Hocevar Mon, 5 Mar 2001 12:50:28 +0100 + +vlc (0.2.63-1) unstable; urgency=low + + * New upstream release. + + -- Samuel Hocevar Mon, 5 Mar 2001 00:41:16 +0100 + +vlc (0.2.62-2) unstable; urgency=low + + * Removed a few lintian warnings. + + -- Samuel Hocevar Sat, 3 Mar 2001 10:29:31 +0100 + +vlc (0.2.62-1) unstable; urgency=low + + * New release. Glide and GGI packages build again. + * Updated vlc.1 manpage (Closes: #87478). + * Fixed debian/control (Closes: #83707). + * The framebuffer plugin doesn't hijack ^C anymore (Closes: #87500). + + -- Samuel Hocevar Fri, 2 Mar 2001 17:32:24 +0100 + +vlc (0.2.61-1) unstable; urgency=low + + * New release. The package build works again. + + -- Samuel Hocevar Fri, 16 Feb 2001 08:09:59 +0100 + +vlc (0.2.60-1) unstable; urgency=low + + * New release. The package build is most presumably FUBAR. + + -- Samuel Hocevar Wed, 14 Feb 2001 08:33:46 +0100 + +vlc (0.2.50nocss-1) unstable; urgency=low + + * Only build vlc-glide under x86 (Closes: #84046). + * Switched PentiumPro optimization off (Closes: #83707). + + -- Samuel Hocevar Mon, 5 Feb 2001 20:49:15 +0100 + +vlc (0.2.50-1) unstable; urgency=low + + * Unstable release. + + -- Samuel Hocevar Wed, 31 Jan 2001 04:30:37 +0100 + +vlc (0.1.99i) unstable; urgency=low + + * Fixed the framerate display + + -- Samuel Hocevar Tue, 24 Oct 2000 11:08:01 +0200 + +vlc (0.1.99i) unstable; urgency=low + + * fixed the support for field pictures, which involved a few dozens + bugs in the video parser and video decoder. + * renamed an inconsistent variable in src/input/input_file.c. + * added support for I+ synchro (all Is and the first P). + * fixed a motion compensation bug which generated some distortion + on B images. + * fixed a motion compensation bug for skipped macroblocks. + * fixed a synchro bug for field images. + * fixed the --server option which didn't work if a ~/.vlcrc existed. + + -- Samuel Hocevar Mon, 28 Aug 2000 02:34:18 +0200 + +vlc (0.1.99h) unstable; urgency=low + + * added support for the SDL vout : the --display fullscreen allows + fullscreen when possible. Disabled by default. + * updated debian directory to build vlc-sdl. + * removed CCFLAGS flags which were improperly used. + * added hints for powerpc build. + * fixed the input_file exit bug. + * removed the frame statistics output. + * removed a verbose message in intf_sdl.c. + * added a few sanity checks in the audio mpeg and ac3 decoders. + * temporarily got rid of vlc.channels. + + -- Samuel Hocevar Tue, 22 Aug 2000 01:31:58 +0200 + +vlc (0.1.99g) unstable; urgency=low + + * removed all "*vlc" aliases except "gvlc" and "fbvlc". The other sucked. + * new --synchro flag which lets you force which images are decoded. + * fixed 32bpp MMX YUV, made the comments clearer, removed an emms. + * now scaling is on by default, so that people won't tell that the vlc + cannot do scaling :-) + * fixed 8bpp YUV. + * fixed the fscked up Bresenham algorithm in all YUV functions. + * fixed a dumb bug in the Makefile that prevented inclusion of the + -march=pentium directive. thanks Meuuh, blame sam. + * separate Debian packages + + -- Samuel Hocevar Wed, 16 Aug 2000 01:07:14 +0200 + +vlc (0.1.99f) unstable; urgency=low + + * plugin detection now works + * "gvlc", "fbvlc", "ggivlc" aliases now work + * fixed functions that weren't properly inlined + * removed bloat from the MMX YUV plugin + * vlc.init becomes ~/.vlcrc + * removed float operations in the video decoder, and all emms asm functions + * borrowed linuxvideo's MMX motion compensation + * fixed an undefined symbol in the MMX YUV plugin + + -- Samuel Hocevar Tue, 8 Aug 2000 11:24:01 +0200 + +vlc (0.1.99e) unstable; urgency=low + + * new bitstream syntax and slight performance increase + + -- Samuel Hocevar Thu, 20 Jul 2000 15:14:06 +0200 + +vlc (0.1.99d) unstable; urgency=low + + * .deb is now more lintian-friendly + * removed a few useless warning messages + * new plugin API + * plugin auto-detection + * removed the default --enable-ppro option because it didn't work on K6-2 + * the framebuffer client now leaves the console in a working state + * the dithered 8 bpp YUV transformation works again (blame bbp !) + * the YUV transformations are now plugins as well + * alternative symlinks like gvlc, fbvlc are now created at compile time + * borrowed libmpeg2's GPLed MMX YUV transformations (16 and 32 bits) + * fixed an endianness problem which occurred on iMacs + + -- Samuel Hocevar Wed, 12 Jul 2000 01:24:40 +0200 + +vlc (0.1.99c) unstable; urgency=low + + * Caught Delete Window event in Gnome and X11 modes + * Fixed manpage + * GGI output now works + * Fixed a segfault on exit for the Gnome plugin + * Sound support almost works under BeOS + + -- Samuel Hocevar Tue, 20 Jun 2000 03:01:12 +0200 + +vlc (0.1.99b) unstable; urgency=low + + * Added a ChangeLog file + * Updated the VLAN code + * Fixed a bug preventing to quit + + -- Samuel Hocevar Sat, 17 Jun 2000 03:46:16 +0200 + +vlc (0.1.99a) unstable; urgency=low + + * Fixed some compile flag errors + + -- Samuel Hocevar Thu, 15 Jun 2000 20:48:54 +0200 + +vlc (0.1.99-1) unstable; urgency=low + + * Initial Release. + + -- Samuel Hocevar Mon, 13 Mar 2000 02:21:45 +0100 diff --git a/clean b/clean new file mode 100644 index 00000000..3f6a7c63 --- /dev/null +++ b/clean @@ -0,0 +1,14 @@ +extras/analyser/vlc +extras/analyser/zsh_gen +debian/libvlc-bin.postinst +debian/libvlc-bin.postrm +debian/libvlc-bin.triggers +debian/shlibs.local +share/lua/extensions/*.luac +share/lua/intf/*.luac +share/lua/intf/modules/*.luac +share/lua/meta/art/*.luac +share/lua/meta/reader/filename.luac +share/lua/modules/*.luac +share/lua/playlist/*.luac +share/lua/sd/*.luac diff --git a/control b/control new file mode 100644 index 00000000..2f947d2f --- /dev/null +++ b/control @@ -0,0 +1,487 @@ +Source: vlc +Section: video +Priority: optional +Maintainer: Debian Multimedia Maintainers +Uploaders: + Loic Minier , + Christophe Mutricy , + Mohammed Adnène Trojette , + Reinhard Tartler , + Benjamin Drung , + Edward Wang , + Mateusz Łukasik , + Sebastian Ramacher +Build-Depends: + autopoint, + bison, + debhelper-compat (= 13), + dpkg-dev (>= 1.22.5), + gettext, + flex, + liba52-0.7.4-dev, + libaa1-dev, + libarchive-dev (>= 3.1.0), + libaribb24-dev, + libasound2-dev (>= 1.0.24) [linux-any], + libass-dev (>= 0.9.8), + libavahi-client-dev, + libavc1394-dev (>= 0.5.3) [linux-any], + libavcodec-dev (>= 7:3.0), + libavformat-dev (>= 7:3.0), + libbluray-dev (>= 1:1.0.0), + libcaca-dev (>= 0.99.beta4), + libcairo2-dev (>= 1.13.1), + libcddb2-dev, + libchromaprint-dev (>= 0.6.0), + libdav1d-dev, + libdbus-1-dev (>= 1.6.0), + libdc1394-dev (>= 2.1.0) [linux-any], + libdca-dev, + libdvbpsi-dev (>= 1.2.0), + libdvdnav-dev (>= 4.9.0), + libdvdread-dev (>= 4.9.0), + libebml-dev (>= 1.3.6), + libegl1-mesa-dev, + libfaad-dev, + libflac-dev (>= 1.1.2-3), + libfluidsynth-dev (>= 1.1.2), + libfreetype-dev, + libfribidi-dev, + libgl-dev, + libgles2-mesa-dev, + libgnutls28-dev (>= 3.3.6), + libgtk-3-dev, + libharfbuzz-dev, + libidn-dev, + libiso9660-dev (>= 0.72), + libjack-jackd2-dev | libjack-dev, + libkate-dev (>= 0.3.0), + liblirc-dev, + liblua5.2-dev, + libmad0-dev, + libmatroska-dev (>= 1.0.0), + libmpcdec-dev, + libmpeg2-4-dev, + libmpg123-dev, + libmtp-dev (>= 1.0.0), + libncurses-dev, + libnfs-dev (>= 1.10.0) [linux-any], + libnotify-dev, + libogg-dev (>= 1.0), + libopenmpt-modplug-dev (>= 0.8.9) | libmodplug-dev (>= 1:0.8.9), + libopus-dev (>= 1.0.3), + libpng-dev, + libpostproc-dev (>= 7:3.0), + libprotobuf-dev (>= 2.5.0), + libpulse-dev (>= 1.0), + libqt5svg5-dev, + libqt5x11extras5-dev, + libraw1394-dev (>= 2.0.1) [linux-any], + libresid-builder-dev, + librsvg2-dev, + libsamplerate0-dev, + libsecret-1-dev, + libshine-dev (>= 3.0.0), + libshout-dev, + libsidplay2-dev, + libsmbclient-dev [!hurd-any], + libsoxr-dev (>= 0.1.2), + libspatialaudio-dev, + libspeex-dev (>= 1.0.5), + libspeexdsp-dev (>= 1.0.5), + libsrt-gnutls-dev, + libssh2-1-dev, + libswscale-dev (>= 7:3.0), + libsystemd-dev [linux-any], + libtag-dev (>= 2.0), + libtheora-dev (>= 1.0), + libtwolame-dev (>= 0.3.8), + libudev-dev [linux-any], + libupnp-dev, + libv4l-dev [linux-any], + libva-dev [linux-any], + libvcdinfo-dev (>= 0.7.22), + libvdpau-dev, + libvncserver-dev (>= 0.9.9), + libvorbis-dev, + libx11-dev, + libx264-dev (>= 2:0.86), + libx265-dev, + libxcb-composite0-dev, + libxcb-keysyms1-dev (>= 0.3.4), + libxcb-randr0-dev (>= 1.3), + libxcb-shm0-dev, + libxcb-xv0-dev (>= 1.1.90.1), + libxcb1-dev (>= 1.6), + libxext-dev, + libxi-dev, + libxinerama-dev, + libxml2-dev, + libxpm-dev, + libzvbi-dev (>= 0.2.28), + lua5.2, + pkgconf, + protobuf-compiler, + python3:native, + qtbase5-dev (>= 5.6), + qtbase5-private-dev (>= 5.6), + wayland-protocols [linux-any], + zlib1g-dev, + zsh +Standards-Version: 4.7.0 +Homepage: https://www.videolan.org/vlc/ +Vcs-Git: https://salsa.debian.org/multimedia-team/vlc.git +Vcs-Browser: https://salsa.debian.org/multimedia-team/vlc +Rules-Requires-Root: no + +Package: vlc +Architecture: any +Depends: + vlc-bin (= ${binary:Version}), + vlc-plugin-base (= ${binary:Version}), + vlc-plugin-qt (= ${binary:Version}), + vlc-plugin-video-output (= ${binary:Version}), + ${misc:Depends} +Recommends: + vlc-l10n (= ${source:Version}), + vlc-plugin-access-extra (= ${binary:Version}), + vlc-plugin-notify (= ${binary:Version}), + vlc-plugin-samba (= ${binary:Version}) [linux-any], + vlc-plugin-skins2 (= ${binary:Version}), + vlc-plugin-video-splitter (= ${binary:Version}), + vlc-plugin-visualization (= ${binary:Version}) +Suggests: + vlc-plugin-fluidsynth (= ${source:Version}), + vlc-plugin-jack (= ${source:Version}), + vlc-plugin-pipewire [linux-any], + vlc-plugin-svg (= ${source:Version}) +Provides: mp3-decoder +Description: multimedia player and streamer + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + VLC can also be used as a streaming server that duplicates the stream it + reads and multicasts them through the network to other clients, or serves + them through HTTP. + . + VLC has support for on-the-fly transcoding of audio and video formats, either + for broadcasting purposes or for movie format transformations. Support for + most output methods is provided by this package, but features can be added by + installing additional plugins: + * vlc-plugin-access-extra + * vlc-plugin-fluidsynth + * vlc-plugin-jack + * vlc-plugin-notify + * vlc-plugin-samba + * vlc-plugin-skins2 + * vlc-plugin-svg + * vlc-plugin-video-splitter + * vlc-plugin-visualization + +Package: libvlc-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: + libvlc5 (= ${binary:Version}), + ${misc:Depends} +Description: development files for libvlc + This package contains headers and a static library required to build + standalone applications that use VLC features. + . + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + +Package: libvlc5 +Section: libs +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends} +Recommends: libvlc-bin (= ${binary:Version}) +Description: multimedia player and streamer library + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains the shared library required by applications using VLC + features. + +Package: libvlccore-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: + libvlccore9 (= ${binary:Version}), + ${misc:Depends} +Description: development files for libvlccore + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains headers and a static library required to build plugins + for VLC. + +Package: libvlccore9 +Section: libs +Multi-Arch: same +Architecture: any +Depends: + ${misc:Depends}, + ${shlibs:Depends} +Recommends: libproxy-tools +Provides: ${vlc:PluginABI} +Description: base library for VLC and its modules + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains the shared library required by VLC modules and libvlc. + +Package: libvlc-bin +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends} +Description: tools for VLC's base library + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains the vlc-cache-gen binary. + +Package: vlc-bin +Architecture: any +Depends: + libvlc-bin (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Description: binaries from VLC + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains the VLC's binaries. + +Package: vlc-data +Architecture: all +Multi-Arch: foreign +Depends: ${misc:Depends} +Description: common data for VLC + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains HTTP interface files, and Lua scripts for VLC media + player. + +Package: vlc-l10n +Section: localization +Architecture: all +Multi-Arch: foreign +Depends: ${misc:Depends} +Description: translations for VLC + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains localisations for VLC media player. + +Package: vlc-plugin-base +Architecture: any +Multi-Arch: same +Depends: + vlc-data (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Recommends: xdg-utils +Suggests: libdvdcss2 +Description: multimedia player and streamer (base plugins) + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains most plugins which are shipped in more specialied plugin + packages. + +Package: vlc-plugin-access-extra +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Enhances: vlc +Description: multimedia player and streamer (extra access plugins) + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains additional access plugins. + +Package: vlc-plugin-video-output +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Enhances: vlc +Description: multimedia player and streamer (video output plugins) + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains the video output plugins. + +Package: vlc-plugin-video-splitter +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Enhances: vlc +Description: multimedia player and streamer (video splitter plugins) + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains the video splitter plugins. + +Package: vlc-plugin-visualization +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Enhances: vlc +Description: multimedia player and streamer (visualization plugins) + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains the visualization plugins. + +Package: vlc-plugin-skins2 +Architecture: any +Multi-Arch: same +Depends: + fonts-freefont-ttf, + vlc-plugin-qt (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Recommends: vlc-bin +Enhances: vlc +Description: multimedia player and streamer (Skins2 plugin) + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains VLC's Skins2 interface. + +Package: vlc-plugin-qt +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Recommends: vlc-bin +Description: multimedia player and streamer (Qt plugin) + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This package contains VLC's Qt interface. + +Package: vlc-plugin-fluidsynth +Architecture: any +Multi-Arch: same +Depends: + fluid-soundfont-gm | timgm6mb-soundfont, + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Enhances: vlc +Description: FluidSynth plugin for VLC + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This plugin adds support for playing MIDI file via the FluidSynth software + synthesizer to the VLC media player. + +Package: vlc-plugin-jack +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Enhances: vlc +Description: JACK audio plugins for VLC + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + These plugins add support for JACK to the VLC media player. To + activate the audio output module, use the `--aout jack' flag or + select the `jack' audio output plugin from the preferences menu. + For the jack input, use `vlc jack://channels=...:ports=...' + +Package: vlc-plugin-notify +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Enhances: vlc +Description: LibNotify plugin for VLC + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This plugin adds support for libnotify track change notification to the + VLC media player. + +Package: vlc-plugin-svg +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Enhances: vlc +Description: SVG plugin for VLC + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This plugin allows you to render SVG graphics on top of the video. It is a text + renderer, and must be activated through the '--text-renderer svg' option. When + sent non-SVG data, it will convert it to SVG using a template that can be + specified by the svg-template-file option. + +Package: vlc-plugin-samba +Architecture: linux-any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends}, + ${vlc:PluginABI} +Enhances: vlc +Description: Samba plugin for VLC + VLC is the VideoLAN project's media player. It plays MPEG, MPEG-2, MPEG-4, + DivX, MOV, WMV, QuickTime, WebM, FLAC, MP3, Ogg/Vorbis files, DVDs, VCDs, + podcasts, and multimedia streams from various network sources. + . + This plugin adds support to access Samba shares from the VLC media player. diff --git a/copyright b/copyright new file mode 100644 index 00000000..ae9b1614 --- /dev/null +++ b/copyright @@ -0,0 +1,1542 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: vlc +Upstream-Source: https://www.videolan.org + +Files: * +Copyright: 1999, AT&T Laboratories Cambridge + 2013, Alex Merry + 2010, Antoine Cellerier + 2005-2006, Canonical Ltd, and Rosetta Contributors + 2008-2015, Cédric Valmary + 2016, Collection + 2004, Daniel Molkentin + 2003, Daniel Moreno + 2009, Eirik U. Birkeland + 2008-2015, Éric Lassauge + 2011-2015, Felix Paul Kühne + 1989-1999,2002-2009 Free Software Foundation, Inc + 2013, Guillaume Le Maout + 2012, John Freed + 2009, Jon Stødle + 2009, Laurent Aimar + 2006-2009, M2X + 2006, Michael Niedermayer + 2007-2012, Mirsal Ennaime + 2008-2010, Pierre d'Herbemont + 2006-2014, Rafaël Carré + 2002, RealVNC Ltd + 2005-2016, Rémi Denis-Courmont + 2007, Savoir-faire Linux + 2007, Société des arts technologiques + 2008-2015, Tòni Galhard + 1998-2022, VideoLAN team and VLC authors + 2002-2004, the xine project + 2018-2019, Haivision Systems Inc. +License: GPL-2+ + +Files: bin/override.c + compat/aligned_alloc.c + compat/asprintf.c + compat/atof.c + compat/atoll.c + compat/dirfd.c + compat/fdopendir.c + compat/ffsll.c + compat/flockfile.c + compat/freeaddrinfo.c + compat/fsync.c + compat/gai_strerror.c + compat/getdelim.c + compat/getpid.c + compat/gettimeofday.c + compat/gmtime_r.c + compat/inet_pton.c + compat/lldiv.c + compat/localtime_r.c + compat/nrand48.c + compat/pathconf.c + compat/poll.c + compat/realpath.c + compat/recvmsg.c + compat/rewind.c + compat/sendmsg.c + compat/setenv.c + compat/sigwait.c + compat/sincos.c + compat/strcasecmp.c + compat/strcasestr.c + compat/strdup.c + compat/strlcpy.c + compat/strndup.c + compat/strnlen.c + compat/strnstr.c + compat/strsep.c + compat/strtof.c + compat/strtok_r.c + compat/strtoll.c + compat/strverscmp.c + compat/swab.c + compat/test/* + compat/timegm.c + compat/timespec_get.c + compat/vasprintf.c + contrib/src/d3d11/dxgi1_3.idl + contrib/src/d3d11/dxgi1_4.idl + contrib/src/d3d11/dxgi1_5.idl + contrib/src/d3d11/dxgi1_6.idl + extras/package/macosx/codesign.sh + include/vlc/* + include/vlc_access.h + include/vlc_actions.h + include/vlc_addons.h + include/vlc_aout.h + include/vlc_aout_volume.h + include/vlc_arrays.h + include/vlc_atomic.h + include/vlc_avcodec.h + include/vlc_bits.h + include/vlc_block.h + include/vlc_block_helper.h + include/vlc_boxes.h + include/vlc_charset.h + include/vlc_codec.h + include/vlc_codecs.h + include/vlc_common.h + include/vlc_config.h + include/vlc_config_cat.h + include/vlc_configuration.h + include/vlc_cpu.h + include/vlc_demux.h + include/vlc_dialog.h + include/vlc_epg.h + include/vlc_es.h + include/vlc_es_out.h + include/vlc_events.h + include/vlc_extensions.h + include/vlc_filter.h + include/vlc_fingerprinter.h + include/vlc_fixups.h + include/vlc_fourcc.h + include/vlc_fs.h + include/vlc_gcrypt.h + include/vlc_http.h + include/vlc_httpd.h + include/vlc_image.h + include/vlc_inhibit.h + include/vlc_input.h + include/vlc_input_item.h + include/vlc_interface.h + include/vlc_interrupt.h + include/vlc_intf_strings.h + include/vlc_iso_lang.h + include/vlc_keystore.h + include/vlc_main.h + include/vlc_md5.h + include/vlc_media_library.h + include/vlc_memory.h + include/vlc_memstream.h + include/vlc_messages.h + include/vlc_meta.h + include/vlc_meta_fetcher.h + include/vlc_mime.h + include/vlc_modules.h + include/vlc_mouse.h + include/vlc_mtime.h + include/vlc_network.h + include/vlc_objects.h + include/vlc_opengl.h + include/vlc_picture.h + include/vlc_picture_fifo.h + include/vlc_picture_pool.h + include/vlc_playlist.h + include/vlc_plugin.h + include/vlc_probe.h + include/vlc_rand.h + include/vlc_renderer_discovery.h + include/vlc_services_discovery.h + include/vlc_sout.h + include/vlc_spu.h + include/vlc_stream.h + include/vlc_stream_extractor.h + include/vlc_strings.h + include/vlc_subpicture.h + include/vlc_text_style.h + include/vlc_threads.h + include/vlc_timestamp_helper.h + include/vlc_tls.h + include/vlc_url.h + include/vlc_variables.h + include/vlc_video_splitter.h + include/vlc_viewpoint.h + include/vlc_vlm.h + include/vlc_vod.h + include/vlc_vout.h + include/vlc_vout_display.h + include/vlc_vout_osd.h + include/vlc_vout_window.h + include/vlc_vout_wrapper.h + include/vlc_xlib.h + include/vlc_xml.h + lib/audio.c + lib/core.c + lib/dialog.c + lib/error.c + lib/event.c + lib/libvlc_internal.h + lib/log.c + lib/media.c + lib/media_discoverer.c + lib/media_internal.h + lib/media_library.c + lib/media_list.c + lib/media_list_internal.h + lib/media_list_path.h + lib/media_list_player.c + lib/media_player.c + lib/media_player_internal.h + lib/playlist.c + lib/renderer_discoverer.c + lib/renderer_discoverer_internal.h + lib/video.c + lib/vlm.c + modules/access/alsa.c + modules/access/attachment.c + modules/access/avcapture.m + modules/access/avio.c + modules/access/avio.h + modules/access/bluray.c + modules/access/cdda.c + modules/access/concat.c + modules/access/dc1394.c + modules/access/dcp/* + modules/access/decklink.cpp + modules/access/directory.c + modules/access/dshow/* + modules/access/dsm/* + modules/access/dtv/* + modules/access/dv.c + modules/access/dvb/* + modules/access/dvdnav.c + modules/access/dvdread.c + modules/access/file.c + modules/access/fs.c + modules/access/fs.h + modules/access/ftp.c + modules/access/http.c + modules/access/http/access.c + modules/access/http/chunked.c + modules/access/http/chunked_test.c + modules/access/http/conn.h + modules/access/http/connmgr.c + modules/access/http/connmgr.h + modules/access/http/file.c + modules/access/http/file.h + modules/access/http/file_test.c + modules/access/http/h1conn.c + modules/access/http/h1conn_test.c + modules/access/http/h2conn.c + modules/access/http/h2conn_test.c + modules/access/http/h2frame.c + modules/access/http/h2frame.h + modules/access/http/h2frame_test.c + modules/access/http/h2output.c + modules/access/http/h2output.h + modules/access/http/h2output_test.c + modules/access/http/hpack.c + modules/access/http/hpack.h + modules/access/http/hpackenc.c + modules/access/http/live.c + modules/access/http/live.h + modules/access/http/message.c + modules/access/http/message.h + modules/access/http/message_test.c + modules/access/http/resource.c + modules/access/http/resource.h + modules/access/http/transport.h + modules/access/http/tunnel.c + modules/access/http/tunnel_test.c + modules/access/idummy.c + modules/access/imem-access.c + modules/access/imem.c + modules/access/jack.c + modules/access/linsys/* + modules/access/live555.cpp + modules/access/mms/* + modules/access/mtp.c + modules/access/nfs.c + modules/access/oss.c + modules/access/pulse.c + modules/access/rdp.c + modules/access/rtp/input.c + modules/access/rtp/rtp.c + modules/access/rtp/rtp.h + modules/access/rtp/session.c + modules/access/rtp/srtp-test-aes.c + modules/access/rtp/srtp-test-recv.c + modules/access/rtp/srtp.c + modules/access/rtp/srtp.h + modules/access/rtp/xiph.c + modules/access/satip.c + modules/access/screen/mac.c + modules/access/screen/screen.c + modules/access/screen/screen.h + modules/access/screen/win32.c + modules/access/screen/xcb.c + modules/access/sdi.c + modules/access/sdi.h + modules/access/sdp.c + modules/access/sftp.c + modules/access/shm.c + modules/access/smb.c + modules/access/smb_common.h + modules/access/srt.c + modules/access/tcp.c + modules/access/timecode.c + modules/access/udp.c + modules/access/v4l2/* + modules/access/vcd/* + modules/access/vdr.c + modules/access/vnc.c + modules/access/wasapi.c + modules/access_output/dummy.c + modules/access_output/file.c + modules/access_output/http.c + modules/access_output/livehttp.c + modules/access_output/shout.c + modules/access_output/srt.c + modules/access_output/udp.c + modules/arm_neon/amplify.S + modules/arm_neon/chroma_neon.h + modules/arm_neon/chroma_yuv.c + modules/arm_neon/deinterleave_chroma.S + modules/arm_neon/i420_rgb.S + modules/arm_neon/i420_rv16.S + modules/arm_neon/i420_yuyv.S + modules/arm_neon/i422_yuyv.S + modules/arm_neon/nv12_rgb.S + modules/arm_neon/nv21_rgb.S + modules/arm_neon/simple_channel_mixer.S + modules/arm_neon/volume.c + modules/arm_neon/yuv_rgb.c + modules/arm_neon/yuyv_i422.S + modules/audio_filter/audiobargraph_a.c + modules/audio_filter/channel_mixer/* + modules/audio_filter/chorus_flanger.c + modules/audio_filter/compressor.c + modules/audio_filter/converter/* + modules/audio_filter/equalizer.c + modules/audio_filter/equalizer_presets.h + modules/audio_filter/gain.c + modules/audio_filter/karaoke.c + modules/audio_filter/normvol.c + modules/audio_filter/param_eq.c + modules/audio_filter/resampler/* + modules/audio_filter/scaletempo.c + modules/audio_filter/spatializer/spatializer.cpp + modules/audio_filter/stereo_widen.c + modules/audio_mixer/float.c + modules/audio_mixer/integer.c + modules/audio_output/adummy.c + modules/audio_output/alsa.c + modules/audio_output/amem.c + modules/audio_output/audiotrack.c + modules/audio_output/audiounit_ios.m + modules/audio_output/auhal.c + modules/audio_output/coreaudio_common.c + modules/audio_output/coreaudio_common.h + modules/audio_output/directsound.c + modules/audio_output/file.c + modules/audio_output/jack.c + modules/audio_output/kai.c + modules/audio_output/mmdevice.c + modules/audio_output/mmdevice.h + modules/audio_output/opensles_android.c + modules/audio_output/oss.c + modules/audio_output/pulse.c + modules/audio_output/sndio.c + modules/audio_output/tizen_audio.c + modules/audio_output/vlcpulse.c + modules/audio_output/vlcpulse.h + modules/audio_output/volume.h + modules/audio_output/wasapi.c + modules/audio_output/waveout.c + modules/audio_output/windows_audio_common.h + modules/audio_output/winstore.c + modules/codec/a52.c + modules/codec/adpcm.c + modules/codec/aes3.c + modules/codec/aom.c + modules/codec/araw.c + modules/codec/arib/* + modules/codec/atsc_a65.c + modules/codec/atsc_a65.h + modules/codec/avcodec/* + modules/codec/bpg.c + modules/codec/cc.c + modules/codec/cc.h + modules/codec/cdg.c + modules/codec/cea708.c + modules/codec/cea708.h + modules/codec/crystalhd.c + modules/codec/cvdsub.c + modules/codec/daala.c + modules/codec/dca.c + modules/codec/ddummy.c + modules/codec/dmo/* + modules/codec/dvbsub.c + modules/codec/edummy.c + modules/codec/faad.c + modules/codec/flac.c + modules/codec/fluidsynth.c + modules/codec/g711.c + modules/codec/gstreamer/* + modules/codec/hxxx_helper.c + modules/codec/hxxx_helper.h + modules/codec/jpeg.c + modules/codec/jpeg2000.h + modules/codec/kate.c + modules/codec/libass.c + modules/codec/libmpeg2.c + modules/codec/lpcm.c + modules/codec/mad.c + modules/codec/mft.c + modules/codec/mpg123.c + modules/codec/oggspots.c + modules/codec/omxil/mediacodec.c + modules/codec/omxil/mediacodec.h + modules/codec/omxil/mediacodec_jni.c + modules/codec/omxil/mediacodec_ndk.c + modules/codec/omxil/omxil.c + modules/codec/omxil/omxil.h + modules/codec/omxil/omxil_core.c + modules/codec/omxil/omxil_core.h + modules/codec/omxil/omxil_utils.h + modules/codec/omxil/qcom.c + modules/codec/omxil/utils.c + modules/codec/omxil/vout.c + modules/codec/opus.c + modules/codec/png.c + modules/codec/qsv.c + modules/codec/rawvideo.c + modules/codec/rtpvideo.c + modules/codec/schroedinger.c + modules/codec/scte18.c + modules/codec/scte18.h + modules/codec/scte27.c + modules/codec/sdl_image.c + modules/codec/shine.c + modules/codec/spdif.c + modules/codec/speex.c + modules/codec/spudec/* + modules/codec/stl.c + modules/codec/subsdec.c + modules/codec/substext.h + modules/codec/substx3g.c + modules/codec/subsusf.c + modules/codec/svcdsub.c + modules/codec/svg.c + modules/codec/synchro.c + modules/codec/synchro.h + modules/codec/telx.c + modules/codec/textst.c + modules/codec/theora.c + modules/codec/ttml/* + modules/codec/twolame.c + modules/codec/uleaddvaudio.c + modules/codec/videotoolbox.m + modules/codec/vorbis.c + modules/codec/vpx.c + modules/codec/vt_utils.c + modules/codec/vt_utils.h + modules/codec/webvtt/* + modules/codec/wmafixed/asf.h + modules/codec/wmafixed/bitstream.c + modules/codec/wmafixed/bitstream.h + modules/codec/wmafixed/bswap.h + modules/codec/wmafixed/wma.c + modules/codec/wmafixed/wmadata.h + modules/codec/xwd.c + modules/codec/zvbi.c + modules/control/intromsg.h + modules/demux/adaptive/* + modules/demux/aiff.c + modules/demux/asf/* + modules/demux/au.c + modules/demux/avformat/* + modules/demux/avi/* + modules/demux/caf.c + modules/demux/cdg.c + modules/demux/dash/* + modules/demux/demuxdump.c + modules/demux/dirac.c + modules/demux/directory.c + modules/demux/dvb-text.h + modules/demux/filter/* + modules/demux/flac.c + modules/demux/gme.c + modules/demux/hls/* + modules/demux/image.c + modules/demux/mjpeg.c + modules/demux/mkv/* + modules/demux/mod.c + modules/demux/mp4/* + modules/demux/mpeg/* + modules/demux/mxpeg_helper.h + modules/demux/nsc.c + modules/demux/nsv.c + modules/demux/nuv.c + modules/demux/ogg.c + modules/demux/ogg.h + modules/demux/oggseek.c + modules/demux/oggseek.h + modules/demux/opus.h + modules/demux/playlist/* + modules/demux/pva.c + modules/demux/rawaud.c + modules/demux/rawdv.c + modules/demux/rawdv.h + modules/demux/rawvid.c + modules/demux/sid.cpp + modules/demux/smf.c + modules/demux/smooth/* + modules/demux/stl.c + modules/demux/subtitle.c + modules/demux/subtitle_helper.h + modules/demux/tta.c + modules/demux/ttml.c + modules/demux/ty.c + modules/demux/vc1.c + modules/demux/vobsub.c + modules/demux/vobsub.h + modules/demux/voc.c + modules/demux/wav.c + modules/demux/webvtt.c + modules/demux/windows_audio_commons.h + modules/demux/xa.c + modules/demux/xiph.h + modules/demux/xiph_metadata.c + modules/demux/xiph_metadata.h + modules/gui/minimal_macosx/* + modules/gui/qt/adapters/* + modules/gui/qt/dialogs/* + modules/hw/d3d11/d3d11_deinterlace.c + modules/hw/d3d11/d3d11_filters.c + modules/hw/d3d11/d3d11_filters.h + modules/hw/d3d11/d3d11_instance.c + modules/hw/d3d11/d3d11_surface.c + modules/hw/d3d9/d3d9_filters.c + modules/hw/d3d9/d3d9_filters.h + modules/hw/d3d9/d3d9_instance.c + modules/hw/d3d9/dxa9.c + modules/hw/d3d9/dxva2_deinterlace.c + modules/hw/mmal/codec.c + modules/hw/mmal/deinterlace.c + modules/hw/mmal/mmal_picture.c + modules/hw/mmal/mmal_picture.h + modules/hw/mmal/vout.c + modules/hw/vaapi/chroma.c + modules/hw/vaapi/filters.c + modules/hw/vaapi/filters.h + modules/hw/vaapi/vlc_vaapi.c + modules/hw/vaapi/vlc_vaapi.h + modules/hw/vdpau/adjust.c + modules/hw/vdpau/avcodec.c + modules/hw/vdpau/chroma.c + modules/hw/vdpau/deinterlace.c + modules/hw/vdpau/display.c + modules/hw/vdpau/instance.c + modules/hw/vdpau/picture.c + modules/hw/vdpau/sharpen.c + modules/hw/vdpau/vlc_vdpau.c + modules/hw/vdpau/vlc_vdpau.h + modules/keystore/file.c + modules/keystore/file_crypt.h + modules/keystore/file_crypt_android.c + modules/keystore/file_crypt_win32.c + modules/keystore/keychain.m + modules/keystore/kwallet.c + modules/keystore/list_util.c + modules/keystore/list_util.h + modules/keystore/memory.c + modules/keystore/secret.c + modules/logger/android.c + modules/logger/console.c + modules/logger/journal.c + modules/meta_engine/ID3Genres.h + modules/meta_engine/ID3Meta.h + modules/meta_engine/ID3Tag.h + modules/meta_engine/ID3Text.h + modules/meta_engine/folder.c + modules/meta_engine/taglib.cpp + modules/misc/addons/* + modules/misc/fingerprinter.c + modules/misc/gnutls.c + modules/misc/inhibit/* + modules/misc/securetransport.c + modules/misc/webservices/* + modules/misc/xml/* + modules/mux/asf.c + modules/mux/avi.c + modules/mux/dummy.c + modules/mux/mp4/* + modules/mux/mpeg/* + modules/mux/mpjpeg.c + modules/mux/ogg.c + modules/mux/wav.c + modules/packetizer/a52.c + modules/packetizer/a52.h + modules/packetizer/avparser.c + modules/packetizer/avparser.h + modules/packetizer/copy.c + modules/packetizer/dirac.c + modules/packetizer/dts.c + modules/packetizer/dts_header.c + modules/packetizer/dts_header.h + modules/packetizer/flac.c + modules/packetizer/h264.c + modules/packetizer/h264_nal.c + modules/packetizer/h264_nal.h + modules/packetizer/h264_slice.c + modules/packetizer/h264_slice.h + modules/packetizer/hevc.c + modules/packetizer/hevc_nal.c + modules/packetizer/hevc_nal.h + modules/packetizer/hxxx_common.c + modules/packetizer/hxxx_common.h + modules/packetizer/hxxx_nal.c + modules/packetizer/hxxx_nal.h + modules/packetizer/hxxx_sei.c + modules/packetizer/hxxx_sei.h + modules/packetizer/mlp.c + modules/packetizer/mpeg4audio.c + modules/packetizer/mpeg4audio.h + modules/packetizer/mpeg4video.c + modules/packetizer/mpegaudio.c + modules/packetizer/mpegvideo.c + modules/packetizer/packetizer_helper.h + modules/packetizer/startcode_helper.h + modules/packetizer/vc1.c + modules/services_discovery/bonjour.m + modules/services_discovery/microdns.c + modules/services_discovery/os2drive.c + modules/services_discovery/pulse.c + modules/services_discovery/udev.c + modules/services_discovery/upnp.cpp + modules/services_discovery/upnp.hpp + modules/services_discovery/windrive.c + modules/services_discovery/xcb_apps.c + modules/spu/audiobargraph_v.c + modules/spu/dynamicoverlay/* + modules/spu/logo.c + modules/spu/marq.c + modules/spu/mosaic.c + modules/spu/mosaic.h + modules/spu/remoteosd.c + modules/spu/rss.c + modules/spu/subsdelay.c + modules/stream_extractor/archive.c + modules/stream_filter/accesstweaks.c + modules/stream_filter/adf.c + modules/stream_filter/aribcam.c + modules/stream_filter/cache_block.c + modules/stream_filter/cache_read.c + modules/stream_filter/decomp.c + modules/stream_filter/hds/* + modules/stream_filter/inflate.c + modules/stream_filter/prefetch.c + modules/stream_filter/record.c + modules/stream_filter/skiptags.c + modules/stream_out/autodel.c + modules/stream_out/bridge.c + modules/stream_out/chromaprint.c + modules/stream_out/chromaprint_data.h + modules/stream_out/chromecast/* + modules/stream_out/delay.c + modules/stream_out/description.c + modules/stream_out/display.c + modules/stream_out/dummy.c + modules/stream_out/duplicate.c + modules/stream_out/es.c + modules/stream_out/gather.c + modules/stream_out/mosaic_bridge.c + modules/stream_out/record.c + modules/stream_out/rtcp.c + modules/stream_out/rtp.h + modules/stream_out/rtpfmt.c + modules/stream_out/rtsp.c + modules/stream_out/setid.c + modules/stream_out/smem.c + modules/stream_out/standard.c + modules/stream_out/stats.c + modules/stream_out/transcode/audio.c + modules/stream_out/transcode/spu.c + modules/stream_out/transcode/transcode.c + modules/stream_out/transcode/video.c + modules/stream_out/vod.c + modules/text_renderer/freetype/* + modules/text_renderer/nsspeechsynthesizer.m + modules/text_renderer/svg.c + modules/text_renderer/tdummy.c + modules/video_chroma/chain.c + modules/video_chroma/copy.c + modules/video_chroma/copy.h + modules/video_chroma/cvpx.c + modules/video_chroma/d3d11_fmt.c + modules/video_chroma/d3d11_fmt.h + modules/video_chroma/d3d9_fmt.c + modules/video_chroma/d3d9_fmt.h + modules/video_chroma/dxgi_fmt.c + modules/video_chroma/dxgi_fmt.h + modules/video_chroma/grey_yuv.c + modules/video_chroma/i420_10_p010.c + modules/video_chroma/i420_nv12.c + modules/video_chroma/i420_rgb.c + modules/video_chroma/i420_rgb.h + modules/video_chroma/i420_rgb16.c + modules/video_chroma/i420_rgb16_x86.c + modules/video_chroma/i420_rgb8.c + modules/video_chroma/i420_rgb_c.h + modules/video_chroma/i420_rgb_sse2.h + modules/video_chroma/i420_yuy2.c + modules/video_chroma/i420_yuy2.h + modules/video_chroma/i422_i420.c + modules/video_chroma/i422_yuy2.c + modules/video_chroma/i422_yuy2.h + modules/video_chroma/omxdl.c + modules/video_chroma/rv32.c + modules/video_chroma/swscale.c + modules/video_chroma/yuvp.c + modules/video_chroma/yuy2_i420.c + modules/video_chroma/yuy2_i422.c + modules/video_filter/adjust.c + modules/video_filter/adjust_sat_hue.c + modules/video_filter/adjust_sat_hue.h + modules/video_filter/alphamask.c + modules/video_filter/anaglyph.c + modules/video_filter/antiflicker.c + modules/video_filter/ball.c + modules/video_filter/blend.cpp + modules/video_filter/blendbench.c + modules/video_filter/bluescreen.c + modules/video_filter/canvas.c + modules/video_filter/ci_filters.m + modules/video_filter/colorthres.c + modules/video_filter/croppadd.c + modules/video_filter/deinterlace/algo_basic.c + modules/video_filter/deinterlace/algo_basic.h + modules/video_filter/deinterlace/algo_ivtc.c + modules/video_filter/deinterlace/algo_ivtc.h + modules/video_filter/deinterlace/algo_phosphor.c + modules/video_filter/deinterlace/algo_phosphor.h + modules/video_filter/deinterlace/algo_x.c + modules/video_filter/deinterlace/algo_x.h + modules/video_filter/deinterlace/algo_yadif.c + modules/video_filter/deinterlace/algo_yadif.h + modules/video_filter/deinterlace/common.c + modules/video_filter/deinterlace/common.h + modules/video_filter/deinterlace/deinterlace.c + modules/video_filter/deinterlace/deinterlace.h + modules/video_filter/deinterlace/helpers.c + modules/video_filter/deinterlace/helpers.h + modules/video_filter/deinterlace/merge.c + modules/video_filter/deinterlace/merge.h + modules/video_filter/deinterlace/merge_arm.S + modules/video_filter/deinterlace/merge_arm64.S + modules/video_filter/deinterlace/mmx.h + modules/video_filter/edgedetection.c + modules/video_filter/erase.c + modules/video_filter/extract.c + modules/video_filter/filter_event_info.h + modules/video_filter/filter_picture.h + modules/video_filter/fps.c + modules/video_filter/freeze.c + modules/video_filter/gaussianblur.c + modules/video_filter/gradfun.c + modules/video_filter/gradfun.h + modules/video_filter/gradient.c + modules/video_filter/grain.c + modules/video_filter/hqdn3d.c + modules/video_filter/invert.c + modules/video_filter/magnify.c + modules/video_filter/mirror.c + modules/video_filter/motionblur.c + modules/video_filter/motiondetect.c + modules/video_filter/oldmovie.c + modules/video_filter/opencv_example.cpp + modules/video_filter/opencv_wrapper.c + modules/video_filter/posterize.c + modules/video_filter/postproc.c + modules/video_filter/psychedelic.c + modules/video_filter/puzzle.c + modules/video_filter/puzzle.h + modules/video_filter/puzzle_bezier.c + modules/video_filter/puzzle_bezier.h + modules/video_filter/puzzle_lib.c + modules/video_filter/puzzle_lib.h + modules/video_filter/puzzle_mgt.c + modules/video_filter/puzzle_mgt.h + modules/video_filter/puzzle_pce.c + modules/video_filter/puzzle_pce.h + modules/video_filter/ripple.c + modules/video_filter/scale.c + modules/video_filter/scene.c + modules/video_filter/sepia.c + modules/video_filter/sharpen.c + modules/video_filter/transform.c + modules/video_filter/vhs.c + modules/video_filter/wave.c + modules/video_output/aa.c + modules/video_output/android/* + modules/video_output/caca.c + modules/video_output/caopengllayer.m + modules/video_output/decklink.cpp + modules/video_output/drawable.c + modules/video_output/evas.c + modules/video_output/event_thread.c + modules/video_output/event_thread.h + modules/video_output/fb.c + modules/video_output/flaschen.c + modules/video_output/glx.c + modules/video_output/ios.m + modules/video_output/kva.c + modules/video_output/macosx.m + modules/video_output/opengl/* + modules/video_output/vdummy.c + modules/video_output/vmem.c + modules/video_output/wayland/* + modules/video_output/win32/* + modules/video_output/xcb/events.c + modules/video_output/xcb/events.h + modules/video_output/xcb/keys.c + modules/video_output/xcb/pictures.c + modules/video_output/xcb/pictures.h + modules/video_output/xcb/window.c + modules/video_output/xcb/x11.c + modules/video_output/xcb/xvideo.c + modules/video_output/yuv.c + modules/video_splitter/clone.c + modules/video_splitter/panoramix.c + modules/video_splitter/wall.c + modules/visualization/cyclic_buffer.h + modules/visualization/glspectrum.c + modules/visualization/goom.c + modules/visualization/projectm.cpp + modules/visualization/visual/* + modules/visualization/vsxu.cpp + src/android/* + src/audio_output/* + src/config/* + src/darwin/* + src/extras/* + src/input/* + src/interface/* + src/libvlc-module.c + src/libvlc.c + src/libvlc.h + src/linux/* + src/misc/* + src/missing.c + src/modules/* + src/network/* + src/os2/* + src/playlist/* + src/posix/* + src/stream_output/* + src/test/* + src/text/* + src/version.c + src/video_output/* + src/win32/* + test/libvlc/media_discoverer.c + test/libvlc/renderer_discoverer.c + test/libvlc/slaves.c + test/modules/keystore/* + test/modules/misc/* + test/modules/packetizer/* + test/src/* +Copyright: 2003, ANEVIA + 2010, Adrien Maglo + 2010, Alan Fischer + Arne Schirmacher + 2009, Baptiste Coudurier + 2017, Collabora Ltd + 2013, David Fuhrmann + 2012, David Geldreich + 2012-2014, Edward Wang + 2000-2001, Fabrice Bellard + 2012-2014, Felix Paul Kühne + 2016, François Revol + 1987-2009, Free Software Foundation, Inc + 2008-2010, Gabriel Finch + 2009, Geoffroy Couprie + 1997-1999, H. Dietz and R. Fisher + 2016, Janne Grunau + 2016, Julian Scheel + 2010-2015, KO Myung-Hun + 2009-2010, Keary Griffin + 2010-2012, Klagenfurt University + 2000, Klaus Schmidinger + 2001-2016, Laurent Aimar + 2009, Loren Merritt + 2004-2009, M2X + 2015, Martell Malone + 2015, Martin Gräßlin + 2012-2013, Martin Storsjö + 2007-2008, Matthias Bauer + 2002-2009, Michael Niedermayer + 1999, Michael Zucchi, The Free Software Foundation + 2012, Naohiro KORIYAMA + 2005, Neal Symms + 2010, Nolan Lum + 2013, Petri Hintukainen + 2007, Pierre d'Herbemont + 2007-2014, Rafaël Carré + 2002-2017, Rémi Denis-Courmont + 2015, Remlab Tmi + 2010-2014, Ronald Wright + 2007, Savoir-faire Linux + 2007, Société des arts technologiques + 2010, Steinar H. Gunderson + 2015-2017, Steve Lhomme + 2011, Sébastien Toque + 2002, The FFmpeg Project + 2010, Tobias Güntner + 2013, Vianney Boyer + 2010-2012, libbluray AUTHORS + 2013-2017, VideoLabs SAS + 2007, Vincent Penne + 2009-2012, Vovoid Media Technologies + 2001-2005, dvb.matt + 2014-2016, jusst technologies GmbH + 1996-2018, VideoLAN team and VLC authors + the deCSA authors +License: LGPL-2.1+ + +Files: debian/* +Copyright: 2010-2015, Benjamin Drung + 2009-2011, Christophe Mutricy + 2006-2014, Reinhard Tartler + 2006-2007, Sam Hocevar + 2013-2020, Sebastian Ramacher +License: GPL-2+ + +Files: modules/gui/macosx/PXSourceList/* +Copyright: 2009-2010 Alex Rozanski +License: BSD-3-clause +Comment: + See https://perspx.com/work/ + +Files: share/lua/http/css/ui-lightness/jquery-ui-1.8.13.custom.css + share/lua/http/js/jquery.jstree.js +Copyright: 2010, Ivan Bozhanov + 2010-2011, jQuery UI authors +License: Expat or GPL-2 + +Files: m4/c11.m4 + m4/codeset.m4 + m4/extern-inline.m4 + m4/gettext.m4 + m4/glibc2.m4 + m4/glibc21.m4 + m4/iconv.m4 + m4/intdiv0.m4 + m4/intl.m4 + m4/intldir.m4 + m4/intlmacosx.m4 + m4/intmax.m4 + m4/inttypes-pri.m4 + m4/inttypes_h.m4 + m4/lcmessage.m4 + m4/lib-ld.m4 + m4/lib-link.m4 + m4/lib-prefix.m4 + m4/lock.m4 + m4/longlong.m4 + m4/ltoptions.m4 + m4/ltsugar.m4 + m4/ltversion.m4 + m4/lt~obsolete.m4 + m4/nls.m4 + m4/po.m4 + m4/printf-posix.m4 + m4/progtest.m4 + m4/size_max.m4 + m4/stdint_h.m4 + m4/uintmax_t.m4 + m4/visibility.m4 + m4/wchar_t.m4 + m4/wint_t.m4 + m4/xsize.m4 +Copyright: 1994-2017, Free Software Foundation + 2015, Rémi Denis-Courmont +License: FSFULLR + +Files: modules/access/linsys/linsys_sdi.h + modules/access/linsys/linsys_sdiaudio.h + modules/access/linsys/linsys_sdivideo.h + modules/codec/omxil/OMX_Broadcom.h + modules/gui/macosx/SPMediaKeyTap.h + modules/gui/macosx/SPMediaKeyTap.m + modules/gui/macosx/VLCHUDButtonCell.h + modules/gui/macosx/VLCHUDButtonCell.m + modules/gui/macosx/VLCHUDCheckboxCell.h + modules/gui/macosx/VLCHUDCheckboxCell.m + modules/gui/macosx/VLCHUDOutlineView.h + modules/gui/macosx/VLCHUDOutlineView.m + modules/gui/macosx/VLCHUDPopUpButtonCell.h + modules/gui/macosx/VLCHUDPopUpButtonCell.m + modules/gui/macosx/VLCHUDScroller.h + modules/gui/macosx/VLCHUDScroller.m + modules/gui/macosx/VLCHUDSegmentedCell.h + modules/gui/macosx/VLCHUDSegmentedCell.m + modules/gui/macosx/VLCHUDSliderCell.h + modules/gui/macosx/VLCHUDSliderCell.m + modules/gui/macosx/VLCHUDStepperCell.h + modules/gui/macosx/VLCHUDStepperCell.m + modules/gui/macosx/VLCHUDTableCornerView.h + modules/gui/macosx/VLCHUDTableCornerView.m + modules/gui/macosx/VLCHUDTableView.h + modules/gui/macosx/VLCHUDTableView.m + modules/gui/macosx/VLCHUDTextFieldCell.h + modules/gui/macosx/VLCHUDTextFieldCell.m + modules/stream_out/chromecast/cast_channel.proto +Copyright: 2012, Broadcom Europe Ltd + 2008-2009, CineCert, LLC + 2011, Joachim Bengtsson + 2003-2015, John Hurst + 2004-2010, Linear Systems Ltd + 2010, Spotify AB + 2013, The Chromium Authors + 2008, Tim Davis + 2009, Tyler Bunnell + 2009, Steve Audette +License: BSD-3-clause + +Files: modules/codec/omxil/OMX_Audio.h + modules/codec/omxil/OMX_Component.h + modules/codec/omxil/OMX_Core.h + modules/codec/omxil/OMX_IVCommon.h + modules/codec/omxil/OMX_Image.h + modules/codec/omxil/OMX_Index.h + modules/codec/omxil/OMX_Other.h + modules/codec/omxil/OMX_Types.h + modules/codec/omxil/OMX_Video.h + modules/gui/qt/util/pictureflow.cpp + modules/gui/qt/util/pictureflow.hpp + modules/text_renderer/sapi.cpp + share/lua/modules/dkjson.lua +Copyright: 2007-2009, Ariya Hidayat + 2010-2011, David Heiko Kolf + 2015, Moti Zilberman + Qxt Foundation + 2008, The Khronos Group Inc +License: Expat + +Files: modules/codec/wmafixed/wmafixed.c + modules/codec/wmafixed/wmafixed.h +Copyright: 2007, Michael Giacomelli +License: GPL-2+ + +Files: include/vlc_update.h + modules/codec/webvtt/CSSGrammar.y + modules/codec/wmafixed/fft.c + modules/codec/wmafixed/fft.h + modules/codec/wmafixed/mdct.c + modules/codec/wmafixed/mdct.h + modules/codec/wmafixed/wmadec.h + modules/codec/wmafixed/wmadeci.c + src/misc/update.c + src/misc/update.h + src/misc/update_crypto.c +Copyright: 2006, Alexey Proskuryakov + 2004-2010, Apple Inc + 2008, Eric Seidel + 2012, Intel Corporation + 2002-2003, Lars Knoll + 2002, The FFmpeg Project + 1998, The Internet Society + 2017, VideoLabs, VideoLAN and VLC Authors + 2005-2009, VLC authors and VideoLAN +License: LGPL-2+ + +Files: m4/with_pkg.m4 +Copyright: 2008, Diego Pettenò + 2008, Jean-Baptiste Kempf + 2008, Luca Barbato +License: GPL-2+ with AutoConf exception + +Files: m4/ax_append_compile_flags.m4 + m4/ax_append_flag.m4 + m4/ax_check_compile_flag.m4 +Copyright: 2008, Guido U. Draheim + 2011, Maarten Bosmans +License: GPL-3+ with AutoConf exception + +Files: m4/ax_require_defined.m4 + m4/dolt.m4 + m4/stdcxx_11.m4 +Copyright: 2014, Alexey Sokolov + 2008, Benjamin Kosnik + 2014-2015, Google Inc + 2007-2010, Josh Triplett + 2014, Mike Frysinger + 2013, Roy Stogner + 2015-2016, VLC authors and VideoLAN + 2012, Zack Weinberg +License: FSFAP + +Files: modules/codec/opus_header.c + modules/codec/opus_header.h + modules/misc/webservices/json.c + modules/misc/webservices/json.h +Copyright: 2012, James McLaughlin + 2012, Xiph.Org Foundation +License: BSD-2-clause + +Files: modules/access/v4l2/linux/* + modules/notify/osx_notifications.m +Copyright: 2004-2005, The Growl Project + 2008-2015, the VideoLAN team + 1999-2012, the contributors +License: BSD-3-clause or GPL-2+ + +Files: doc/libvlc/QtPlayer/* + doc/libvlc/gtk_player.c + doc/libvlc/libvlc_DVD_ripper.c + doc/libvlc/wx_player.cpp + doc/libvlc/vlc-thumb.c +Copyright: protonux + Rafaël Carré + Vincent Schüßler +License: WTFPL + +Files: modules/access/v4l2/linux/v4l2-common.h +Copyright: 2012, Nokia Corporation +License: GPL-2 + +Files: modules/gui/macosx/AppleRemote.h + modules/gui/macosx/AppleRemote.m +Copyright: 2006-2009, VLC authors and VideoLAN + 2006, martinkahr.com +License: Expat or GPL-2+ + +Files: modules/codec/webvtt/CSSGrammar.c + modules/codec/webvtt/CSSGrammar.h +Copyright: 1984-2015, Free Software Foundation, Inc +License: GPL-3+ with Bison exception + +Files: modules/control/unimotion.c +Copyright: 2005, Christian Klein + 2006, Lincoln Ramsay +License: BSD-3-clause and LGPL-2.1 + +Files: compat/memrchr.c +Copyright: 2007, Todd C. Miller +License: ISC + +Files: modules/codec/fdkaac.c +Copyright: 2012, Sergio Ammirata +License: BSD-2-clause or LGPL-2.1+ + +Files: modules/control/unimotion.h +Copyright: 2006, Lincoln Ramsay +License: LGPL-2.1 + +Files: share/vlc.appdata.xml.in.in +Copyright: 2016, Jean-Baptiste Kempf +License: CC0 or GPL-2+ + +License: BSD-2-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the Institute nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: CC0 + Statement of Purpose + . + The laws of most jurisdictions throughout the world automatically confer + exclusive Copyright and Related Rights (defined below) upon the creator and + subsequent owner(s) (each and all, an "owner") of an original work of + authorship and/or a database (each, a "Work"). + . + Certain owners wish to permanently relinquish those rights to a Work for the + purpose of contributing to a commons of creative, cultural and scientific + works ("Commons") that the public can reliably and without fear of later + claims of infringement build upon, modify, incorporate in other works, reuse + and redistribute as freely as possible in any form whatsoever and for any + purposes, including without limitation commercial purposes. These owners may + contribute to the Commons to promote the ideal of a free culture and the + further production of creative, cultural and scientific works, or to gain + reputation or greater distribution for their Work in part through the use and + efforts of others. + . + For these and/or other purposes and motivations, and without any expectation + of additional consideration or compensation, the person associating CC0 with a + Work (the "Affirmer"), to the extent that he or she is an owner of Copyright + and Related Rights in the Work, voluntarily elects to apply CC0 to the Work + and publicly distribute the Work under its terms, with knowledge of his or her + Copyright and Related Rights in the Work and the meaning and intended legal + effect of CC0 on those rights. + . + 1. Copyright and Related Rights. A Work made available under CC0 may be + protected by copyright and related or neighboring rights ("Copyright and + Related Rights"). Copyright and Related Rights include, but are not limited + to, the following: + . + the right to reproduce, adapt, distribute, perform, display, communicate, + and translate a Work; + . + moral rights retained by the original author(s) and/or performer(s); + . + publicity and privacy rights pertaining to a person's image or likeness + depicted in a Work; + . + rights protecting against unfair competition in regards to a Work, subject + to the limitations in paragraph 4(a), below; + . + rights protecting the extraction, dissemination, use and reuse of data in + a Work; + . + database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation thereof, + including any amended or successor version of such directive); and + . + other similar, equivalent or corresponding rights throughout the world + based on applicable law or treaty, and any national implementations + thereof. + . + 2. Waiver. To the greatest extent permitted by, but not in contravention of, + applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and + unconditionally waives, abandons, and surrenders all of Affirmer's Copyright + and Related Rights and associated claims and causes of action, whether now + known or unknown (including existing as well as future claims and causes of + action), in the Work (i) in all territories worldwide, (ii) for the maximum + duration provided by applicable law or treaty (including future time + extensions), (iii) in any current or future medium and for any number of + copies, and (iv) for any purpose whatsoever, including without limitation + commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes + the Waiver for the benefit of each member of the public at large and to the + detriment of Affirmer's heirs and successors, fully intending that such Waiver + shall not be subject to revocation, rescission, cancellation, termination, or + any other legal or equitable action to disrupt the quiet enjoyment of the Work + by the public as contemplated by Affirmer's express Statement of Purpose. + . + 3. Public License Fallback. Should any part of the Waiver for any reason be + judged legally invalid or ineffective under applicable law, then the Waiver + shall be preserved to the maximum extent permitted taking into account + Affirmer's express Statement of Purpose. In addition, to the extent the Waiver + is so judged Affirmer hereby grants to each affected person a royalty-free, + non transferable, non sublicensable, non exclusive, irrevocable and + unconditional license to exercise Affirmer's Copyright and Related Rights in + the Work (i) in all territories worldwide, (ii) for the maximum duration + provided by applicable law or treaty (including future time extensions), (iii) + in any current or future medium and for any number of copies, and (iv) for any + purpose whatsoever, including without limitation commercial, advertising or + promotional purposes (the "License"). The License shall be deemed effective as + of the date CC0 was applied by Affirmer to the Work. Should any part of the + License for any reason be judged legally invalid or ineffective under + applicable law, such partial invalidity or ineffectiveness shall not + invalidate the remainder of the License, and in such case Affirmer hereby + affirms that he or she will not (i) exercise any of his or her remaining + Copyright and Related Rights in the Work or (ii) assert any associated claims + and causes of action with respect to the Work, in either case contrary to + Affirmer's express Statement of Purpose. + . + 4. Limitations and Disclaimers. + . + No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + . + Affirmer offers the Work as-is and makes no representations or warranties + of any kind concerning the Work, express, implied, statutory or otherwise, + including without limitation warranties of title, merchantability, fitness + for a particular purpose, non infringement, or the absence of latent or + other defects, accuracy, or the present or absence of errors, whether or + not discoverable, all to the greatest extent permissible under applicable + law. + . + Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. Further, + Affirmer disclaims responsibility for obtaining any necessary consents, + permissions or other rights required for any use of the Work. + . + Affirmer understands and acknowledges that Creative Commons is not a party + to this document and has no duty or obligation with respect to this CC0 or + use of the Work. + +License: Expat + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + “Software”), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + . + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License: FSFAP + Copying and distribution of this file, with or without modification, are + permitted in any medium without royalty provided the copyright notice + and this notice are preserved. This file is offered as-is, without any + warranty. + +License: FSFULLR + This file is free software; the Free Software Foundation + gives unlimited permission to copy and/or distribute it, + with or without modifications, as long as this notice is preserved. + +License: GPL-2 + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + . + On Debian systems, the complete text of the GNU General Public + License version 2 can be found in `/usr/share/common-licenses/GPL-2'. + +License: GPL-2+ + This program is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any later + version. + . + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License along with + this program; if not, write to the Free Software Foundation, Inc., 51 Franklin + St, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of the GNU General Public License version 2 + can be found in /usr/share/common-licenses/GPL-2. + +License: GPL-2+ with AutoConf exception + This program is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any later + version. + . + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License along with + this program; if not, write to the Free Software Foundation, Inc., 51 Franklin + St, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of the GNU General Public License version 2 + can be found in /usr/share/common-licenses/GPL-2. + . + As a special exception, the respective Autoconf Macro's copyright owner + gives unlimited permission to copy, distribute and modify the configure + scripts that are the output of Autoconf when processing the Macro. You + need not follow the terms of the GNU General Public License when using + or distributing such scripts, even though portions of the text of the + Macro appear in them. The GNU General Public License (GPL) does govern + all other use of the material that constitutes the Autoconf Macro. + . + This special exception to the GPL applies to versions of the Autoconf + Macro released by the Autoconf Archive. When you make and distribute a + modified version of the Autoconf Macro, you may extend this special + exception to the GPL to apply to your modified version as well. + +License: GPL-3+ with AutoConf exception + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + . + You should have received a copy of the GNU General Public License + along with it. If not, see . + . + On Debian systems, the full text of the GNU General Public License version 3 + can be found in the file `/usr/share/common-licenses/GPL-3'. + . + As a special exception, the respective Autoconf Macro's copyright owner + gives unlimited permission to copy, distribute and modify the configure + scripts that are the output of Autoconf when processing the Macro. You + need not follow the terms of the GNU General Public License when using + or distributing such scripts, even though portions of the text of the + Macro appear in them. The GNU General Public License (GPL) does govern + all other use of the material that constitutes the Autoconf Macro. + . + This special exception to the GPL applies to versions of the Autoconf + Macro released by the Autoconf Archive. When you make and distribute a + modified version of the Autoconf Macro, you may extend this special + exception to the GPL to apply to your modified version as well. + +License: GPL-3+ with Bison exception + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + . + You should have received a copy of the GNU General Public License + along with it. If not, see . + . + On Debian systems, the full text of the GNU General Public License version 3 + can be found in the file `/usr/share/common-licenses/GPL-3'. + . + As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + +License: ISC + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + . + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +License: LGPL-2+ + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + . + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + for more details. + . + You should have received a copy of the GNU Library General Public License + along with this library; if not, write to the Free Software Foundation, Inc., + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + . + On Debian systems, the full text of the GNU Library General Public License + version 2 can be found in the file `/usr/share/common-licenses/LGPL-2'. + +License: LGPL-2.1 + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + . + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of the GNU Lesser General Public + License can be found in /usr/share/common-licenses/LGPL-2.1 file. + +License: LGPL-2.1+ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + . + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of the GNU Lesser General Public + License can be found in /usr/share/common-licenses/LGPL-2.1 file. + +License: WTFPL + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + . + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + . + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + . + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/filter-plugin.py b/filter-plugin.py new file mode 100644 index 00000000..84a007c5 --- /dev/null +++ b/filter-plugin.py @@ -0,0 +1,31 @@ +#!/usr/bin/python3 + +# Inverse dh-exec-filter-profiles +# Author: Sebastian Ramacher + +import os +import re +import sys + + +remove_plugins = os.getenv("removeplugins") +if remove_plugins is not None: + remove_plugins = set(remove_plugins.split(" ")) +else: + remove_plugins = set() + +plugin_re = re.compile(r"^(\S*) \[([a-zA-Z1-9.,_-]*)\]$") + + +for line in sys.stdin.readlines(): + line = line.rstrip("\n") + match = plugin_re.match(line) + if not match: + print(line) + continue + + path = match.group(1) + plugins = match.group(2) + plugins = set(plugins.split(',')) + if not plugins & remove_plugins: + print(path) diff --git a/gbp.conf b/gbp.conf new file mode 100644 index 00000000..73ff49d0 --- /dev/null +++ b/gbp.conf @@ -0,0 +1,8 @@ +[DEFAULT] +debian-branch = master +upstream-branch = upstream +pristine-tar = True +compression = xz + +[dch] +meta = True diff --git a/libvlc-bin.install b/libvlc-bin.install new file mode 100644 index 00000000..a296739a --- /dev/null +++ b/libvlc-bin.install @@ -0,0 +1 @@ +usr/lib/*/vlc/vlc-cache-gen diff --git a/libvlc-bin.lintian-overrides b/libvlc-bin.lintian-overrides new file mode 100644 index 00000000..7d05e127 --- /dev/null +++ b/libvlc-bin.lintian-overrides @@ -0,0 +1,2 @@ +# Maintainer scripts create plugins.dat there. +libvlc-bin binary: package-contains-empty-directory usr/lib/*/vlc/plugins/ diff --git a/libvlc-bin.postinst.in b/libvlc-bin.postinst.in new file mode 100644 index 00000000..59da0869 --- /dev/null +++ b/libvlc-bin.postinst.in @@ -0,0 +1,34 @@ +#!/bin/sh +set -e + +run_vlc_cache_gen() { + if ! test -d /usr/lib/#DEB_HOST_MULTIARCH#/vlc/plugins + then + return + fi + files=`find /usr/lib/#DEB_HOST_MULTIARCH#/vlc/plugins -name '*.so' -type f -print -quit` + if test -n "$files" + then + # run vlc-cache-gen since there are plugins + if ! /usr/lib/#DEB_HOST_MULTIARCH#/vlc/vlc-cache-gen /usr/lib/#DEB_HOST_MULTIARCH#/vlc/plugins 2>&1 + then + echo "WARNING: Regenerating VLC plugin cache failed." + echo "Please run '/usr/lib/#DEB_HOST_MULTIARCH#/vlc/vlc-cache-gen /usr/lib/#DEB_HOST_MULTIARCH#/vlc/plugins' manually." + fi + else + # no plugins, so remove plugins.dat + rm -f /usr/lib/#DEB_HOST_MULTIARCH#/vlc/plugins/plugins.dat + fi +} + +case "$1" in + triggered) + run_vlc_cache_gen + exit 0 + ;; + configure) + dpkg-trigger /usr/lib/#DEB_HOST_MULTIARCH#/vlc/plugins + ;; +esac + +#DEBHELPER# diff --git a/libvlc-bin.prerm.in b/libvlc-bin.prerm.in new file mode 100644 index 00000000..28ac6dc3 --- /dev/null +++ b/libvlc-bin.prerm.in @@ -0,0 +1,10 @@ +#! /bin/sh +set -e + +#DEBHELPER# + +case "$1" in + remove) + rm -f /usr/lib/#DEB_HOST_MULTIARCH#/vlc/plugins/plugins.dat + ;; +esac diff --git a/libvlc-dev.examples b/libvlc-dev.examples new file mode 100644 index 00000000..9bdd87c4 --- /dev/null +++ b/libvlc-dev.examples @@ -0,0 +1,5 @@ +doc/libvlc/QtPlayer +doc/libvlc/gtk_player.c +doc/libvlc/libvlc_DVD_ripper.c +doc/libvlc/vlc-thumb.c +doc/libvlc/wx_player.cpp diff --git a/libvlc-dev.install b/libvlc-dev.install new file mode 100644 index 00000000..ffaa00c9 --- /dev/null +++ b/libvlc-dev.install @@ -0,0 +1,3 @@ +usr/include/vlc/*.h +usr/lib/*/libvlc.so +usr/lib/*/pkgconfig/libvlc.pc diff --git a/libvlc5.install b/libvlc5.install new file mode 100644 index 00000000..2137b901 --- /dev/null +++ b/libvlc5.install @@ -0,0 +1 @@ +usr/lib/*/libvlc.so.* diff --git a/libvlc5.symbols b/libvlc5.symbols new file mode 100644 index 00000000..2a84ca60 --- /dev/null +++ b/libvlc5.symbols @@ -0,0 +1,314 @@ +libvlc.so.5 libvlc5 #MINVER# +* Build-Depends-Package: libvlc-dev + libvlc_add_intf@Base 1.1.0 + libvlc_audio_equalizer_get_amp_at_index@Base 2.2.0~pre1 + libvlc_audio_equalizer_get_band_count@Base 2.2.0~pre1 + libvlc_audio_equalizer_get_band_frequency@Base 2.2.0~pre1 + libvlc_audio_equalizer_get_preamp@Base 2.2.0~pre1 + libvlc_audio_equalizer_get_preset_count@Base 2.2.0~pre1 + libvlc_audio_equalizer_get_preset_name@Base 2.2.0~pre1 + libvlc_audio_equalizer_new@Base 2.2.0~pre1 + libvlc_audio_equalizer_new_from_preset@Base 2.2.0~pre1 + libvlc_audio_equalizer_release@Base 2.2.0~pre1 + libvlc_audio_equalizer_set_amp_at_index@Base 2.2.0~pre1 + libvlc_audio_equalizer_set_preamp@Base 2.2.0~pre1 + libvlc_audio_filter_list_get@Base 2.0.0 + libvlc_audio_get_channel@Base 1.1.0 + libvlc_audio_get_delay@Base 1.1.1 + libvlc_audio_get_mute@Base 1.1.0 + libvlc_audio_get_track@Base 1.1.0 + libvlc_audio_get_track_count@Base 1.1.0 + libvlc_audio_get_track_description@Base 1.1.0 + libvlc_audio_get_volume@Base 1.1.0 + libvlc_audio_output_device_count@Base 1.1.0 + libvlc_audio_output_device_enum@Base 2.2.0~pre1 + libvlc_audio_output_device_get@Base 3.0.0 + libvlc_audio_output_device_id@Base 1.1.0 + libvlc_audio_output_device_list_get@Base 2.1.0 + libvlc_audio_output_device_list_release@Base 2.1.0 + libvlc_audio_output_device_longname@Base 1.1.0 + libvlc_audio_output_device_set@Base 1.1.0 + libvlc_audio_output_get_device_type@Base 1.1.0 + libvlc_audio_output_list_get@Base 1.1.0 + libvlc_audio_output_list_release@Base 1.1.0 + libvlc_audio_output_set@Base 1.1.0 + libvlc_audio_output_set_device_type@Base 1.1.0 + libvlc_audio_set_callbacks@Base 2.0.0 + libvlc_audio_set_channel@Base 1.1.0 + libvlc_audio_set_delay@Base 1.1.1 + libvlc_audio_set_format@Base 2.0.0 + libvlc_audio_set_format_callbacks@Base 2.0.0 + libvlc_audio_set_mute@Base 1.1.0 + libvlc_audio_set_track@Base 1.1.0 + libvlc_audio_set_volume@Base 1.1.0 + libvlc_audio_set_volume_callback@Base 2.0.0 + libvlc_audio_toggle_mute@Base 1.1.0 + libvlc_chapter_descriptions_release@Base 3.0.0 + libvlc_clearerr@Base 1.1.0 + libvlc_clock@Base 2.0.0 + libvlc_dialog_dismiss@Base 3.0.0 + libvlc_dialog_get_context@Base 3.0.0 + libvlc_dialog_post_action@Base 3.0.0 + libvlc_dialog_post_login@Base 3.0.0 + libvlc_dialog_set_callbacks@Base 3.0.0 + libvlc_dialog_set_context@Base 3.0.0 + libvlc_errmsg@Base 1.1.0 + libvlc_event_attach@Base 1.1.0 + libvlc_event_detach@Base 1.1.0 + libvlc_event_type_name@Base 2.2.2 + libvlc_free@Base 2.0.0 + libvlc_get_changeset@Base 1.1.0 + libvlc_get_compiler@Base 1.1.0 + libvlc_get_fullscreen@Base 1.1.0 + libvlc_get_log_verbosity@Base 1.1.0 + libvlc_get_version@Base 1.1.0 + libvlc_log_clear@Base 1.1.0 + libvlc_log_close@Base 1.1.0 + libvlc_log_count@Base 1.1.0 + libvlc_log_get_context@Base 2.1.0 + libvlc_log_get_iterator@Base 1.1.0 + libvlc_log_get_object@Base 2.1.0 + libvlc_log_iterator_free@Base 1.1.0 + libvlc_log_iterator_has_next@Base 1.1.0 + libvlc_log_iterator_next@Base 1.1.0 + libvlc_log_open@Base 1.1.0 + libvlc_log_set@Base 2.1.0 + libvlc_log_set_file@Base 2.1.0 + libvlc_log_unset@Base 2.1.0 + libvlc_media_add_option@Base 1.1.0 + libvlc_media_add_option_flag@Base 1.1.0 + libvlc_media_discoverer_event_manager@Base 1.1.0 + libvlc_media_discoverer_is_running@Base 1.1.0 + libvlc_media_discoverer_list_get@Base 3.0.0 + libvlc_media_discoverer_list_release@Base 3.0.0 + libvlc_media_discoverer_localized_name@Base 1.1.0 + libvlc_media_discoverer_media_list@Base 1.1.0 + libvlc_media_discoverer_new@Base 3.0.0 + libvlc_media_discoverer_new_from_name@Base 1.1.0 + libvlc_media_discoverer_release@Base 1.1.0 + libvlc_media_discoverer_start@Base 3.0.0 + libvlc_media_discoverer_stop@Base 3.0.0 + libvlc_media_duplicate@Base 1.1.0 + libvlc_media_event_manager@Base 1.1.0 + libvlc_media_get_codec_description@Base 3.0.0 + libvlc_media_get_duration@Base 1.1.0 + libvlc_media_get_meta@Base 1.1.0 + libvlc_media_get_mrl@Base 1.1.0 + libvlc_media_get_parsed_status@Base 3.0.0 + libvlc_media_get_state@Base 1.1.0 + libvlc_media_get_stats@Base 1.1.0 + libvlc_media_get_tracks_info@Base 1.1.0 + libvlc_media_get_type@Base 3.0.0 + libvlc_media_get_user_data@Base 1.1.0 + libvlc_media_is_parsed@Base 1.1.0 + libvlc_media_library_load@Base 1.1.0 + libvlc_media_library_media_list@Base 1.1.0 + libvlc_media_library_new@Base 1.1.0 + libvlc_media_library_release@Base 1.1.0 + libvlc_media_library_retain@Base 1.1.0 + libvlc_media_list_add_media@Base 1.1.0 + libvlc_media_list_count@Base 1.1.0 + libvlc_media_list_event_manager@Base 1.1.0 + libvlc_media_list_index_of_item@Base 1.1.0 + libvlc_media_list_insert_media@Base 1.1.0 + libvlc_media_list_is_readonly@Base 1.1.0 + libvlc_media_list_item_at_index@Base 1.1.0 + libvlc_media_list_lock@Base 1.1.0 + libvlc_media_list_media@Base 1.1.0 + libvlc_media_list_new@Base 1.1.0 + libvlc_media_list_player_event_manager@Base 1.1.0 + libvlc_media_list_player_get_media_player@Base 3.0.0 + libvlc_media_list_player_get_state@Base 1.1.0 + libvlc_media_list_player_is_playing@Base 1.1.0 + libvlc_media_list_player_new@Base 1.1.0 + libvlc_media_list_player_next@Base 1.1.0 + libvlc_media_list_player_pause@Base 1.1.0 + libvlc_media_list_player_play@Base 1.1.0 + libvlc_media_list_player_play_item@Base 1.1.0 + libvlc_media_list_player_play_item_at_index@Base 1.1.0 + libvlc_media_list_player_previous@Base 1.1.0 + libvlc_media_list_player_release@Base 1.1.0 + libvlc_media_list_player_retain@Base 2.0.0 + libvlc_media_list_player_set_media_list@Base 1.1.0 + libvlc_media_list_player_set_media_player@Base 1.1.0 + libvlc_media_list_player_set_pause@Base 3.0.0 + libvlc_media_list_player_set_playback_mode@Base 1.1.0 + libvlc_media_list_player_stop@Base 1.1.0 + libvlc_media_list_release@Base 1.1.0 + libvlc_media_list_remove_index@Base 1.1.0 + libvlc_media_list_retain@Base 1.1.0 + libvlc_media_list_set_media@Base 1.1.0 + libvlc_media_list_unlock@Base 1.1.0 + libvlc_media_new_as_node@Base 1.1.0 + libvlc_media_new_callbacks@Base 3.0.0 + libvlc_media_new_fd@Base 1.1.5 + libvlc_media_new_location@Base 1.1.0 + libvlc_media_new_path@Base 1.1.0 + libvlc_media_parse@Base 1.1.0 + libvlc_media_parse_async@Base 1.1.0 + libvlc_media_parse_stop@Base 3.0.0 + libvlc_media_parse_with_options@Base 3.0.0 + libvlc_media_player_add_slave@Base 3.0.0 + libvlc_media_player_can_pause@Base 1.1.0 + libvlc_media_player_event_manager@Base 1.1.0 + libvlc_media_player_get_agl@Base 1.1.0 + libvlc_media_player_get_chapter@Base 1.1.0 + libvlc_media_player_get_chapter_count@Base 1.1.0 + libvlc_media_player_get_chapter_count_for_title@Base 1.1.0 + libvlc_media_player_get_fps@Base 1.1.0 + libvlc_media_player_get_full_chapter_descriptions@Base 3.0.0 + libvlc_media_player_get_full_title_descriptions@Base 3.0.0 + libvlc_media_player_get_hwnd@Base 1.1.0 + libvlc_media_player_get_length@Base 1.1.0 + libvlc_media_player_get_media@Base 1.1.0 + libvlc_media_player_get_nsobject@Base 1.1.0 + libvlc_media_player_get_position@Base 1.1.0 + libvlc_media_player_get_rate@Base 1.1.0 + libvlc_media_player_get_role@Base 3.0.0 + libvlc_media_player_get_state@Base 1.1.0 + libvlc_media_player_get_time@Base 1.1.0 + libvlc_media_player_get_title@Base 1.1.0 + libvlc_media_player_get_title_count@Base 1.1.0 + libvlc_media_player_get_xwindow@Base 1.1.0 + libvlc_media_player_has_vout@Base 1.1.0 + libvlc_media_player_is_playing@Base 1.1.0 + libvlc_media_player_is_seekable@Base 1.1.0 + libvlc_media_player_navigate@Base 2.0.0 + libvlc_media_player_new@Base 1.1.0 + libvlc_media_player_new_from_media@Base 1.1.0 + libvlc_media_player_next_chapter@Base 1.1.0 + libvlc_media_player_next_frame@Base 1.1.0 + libvlc_media_player_pause@Base 1.1.0 + libvlc_media_player_play@Base 1.1.0 + libvlc_media_player_previous_chapter@Base 1.1.0 + libvlc_media_player_program_scrambled@Base 2.2.0~pre1 + libvlc_media_player_release@Base 1.1.0 + libvlc_media_player_retain@Base 1.1.0 + libvlc_media_player_set_agl@Base 1.1.0 + libvlc_media_player_set_android_context@Base 3.0.0 + libvlc_media_player_set_chapter@Base 1.1.0 + libvlc_media_player_set_equalizer@Base 2.2.0~pre1 + libvlc_media_player_set_hwnd@Base 1.1.0 + libvlc_media_player_set_media@Base 1.1.0 + libvlc_media_player_set_nsobject@Base 1.1.0 + libvlc_media_player_set_pause@Base 1.1.1 + libvlc_media_player_set_position@Base 1.1.0 + libvlc_media_player_set_rate@Base 1.1.0 + libvlc_media_player_set_renderer@Base 3.0.0 + libvlc_media_player_set_role@Base 3.0.0 + libvlc_media_player_set_time@Base 1.1.0 + libvlc_media_player_set_title@Base 1.1.0 + libvlc_media_player_set_video_title_display@Base 2.1.0 + libvlc_media_player_set_xwindow@Base 1.1.0 + libvlc_media_player_stop@Base 1.1.0 + libvlc_media_player_will_play@Base 1.1.0 + libvlc_media_release@Base 1.1.0 + libvlc_media_retain@Base 1.1.0 + libvlc_media_save_meta@Base 1.1.0 + libvlc_media_set_meta@Base 1.1.0 + libvlc_media_set_user_data@Base 1.1.0 + libvlc_media_slaves_add@Base 3.0.0 + libvlc_media_slaves_clear@Base 3.0.0 + libvlc_media_slaves_get@Base 3.0.0 + libvlc_media_slaves_release@Base 3.0.0 + libvlc_media_subitems@Base 1.1.0 + libvlc_media_tracks_get@Base 2.1.0 + libvlc_media_tracks_release@Base 2.1.0 + libvlc_module_description_list_release@Base 2.0.0 + libvlc_new@Base 1.1.0 + libvlc_playlist_play@Base 1.1.0 + libvlc_printerr@Base 1.1.0 + libvlc_release@Base 1.1.0 + libvlc_renderer_discoverer_event_manager@Base 3.0.0 + libvlc_renderer_discoverer_list_get@Base 3.0.0 + libvlc_renderer_discoverer_list_release@Base 3.0.0 + libvlc_renderer_discoverer_new@Base 3.0.0 + libvlc_renderer_discoverer_release@Base 3.0.0 + libvlc_renderer_discoverer_start@Base 3.0.0 + libvlc_renderer_discoverer_stop@Base 3.0.0 + libvlc_renderer_item_flags@Base 3.0.0 + libvlc_renderer_item_icon_uri@Base 3.0.0 + libvlc_renderer_item_name@Base 3.0.0 + libvlc_renderer_item_type@Base 3.0.0 + libvlc_renderer_item_hold@Base 3.0.0 + libvlc_renderer_item_release@Base 3.0.0 + libvlc_retain@Base 1.1.0 + libvlc_set_app_id@Base 2.1.0 + libvlc_set_exit_handler@Base 2.0.0 + libvlc_set_fullscreen@Base 1.1.0 + libvlc_set_log_verbosity@Base 1.1.0 + libvlc_set_user_agent@Base 1.1.1 + libvlc_title_descriptions_release@Base 3.0.0 + libvlc_toggle_fullscreen@Base 1.1.0 + libvlc_toggle_teletext@Base 1.1.0 + libvlc_track_description_list_release@Base 2.0.0 + libvlc_track_description_release@Base 1.1.0 + libvlc_video_filter_list_get@Base 2.0.0 + libvlc_video_get_adjust_float@Base 1.1.1 + libvlc_video_get_adjust_int@Base 1.1.1 + libvlc_video_get_aspect_ratio@Base 1.1.0 + libvlc_video_get_chapter_description@Base 1.1.0 + libvlc_video_get_crop_geometry@Base 1.1.0 + libvlc_video_get_cursor@Base 1.1.0 + libvlc_video_get_height@Base 1.1.0 + libvlc_video_get_logo_int@Base 1.1.0 + libvlc_video_get_marquee_int@Base 1.1.0 + libvlc_video_get_marquee_string@Base 1.1.0 + libvlc_video_get_scale@Base 1.1.0 + libvlc_video_get_size@Base 1.1.0 + libvlc_video_get_spu@Base 1.1.0 + libvlc_video_get_spu_count@Base 1.1.0 + libvlc_video_get_spu_delay@Base 2.0.0 + libvlc_video_get_spu_description@Base 1.1.0 + libvlc_video_get_teletext@Base 1.1.0 + libvlc_video_get_title_description@Base 1.1.0 + libvlc_video_get_track@Base 1.1.0 + libvlc_video_get_track_count@Base 1.1.0 + libvlc_video_get_track_description@Base 1.1.0 + libvlc_video_get_width@Base 1.1.0 + libvlc_video_new_viewpoint@Base 3.0.0 + libvlc_video_set_adjust_float@Base 1.1.1 + libvlc_video_set_adjust_int@Base 1.1.1 + libvlc_video_set_aspect_ratio@Base 1.1.0 + libvlc_video_set_callbacks@Base 1.1.1 + libvlc_video_set_crop_geometry@Base 1.1.0 + libvlc_video_set_deinterlace@Base 1.1.0 + libvlc_video_set_format@Base 1.1.1 + libvlc_video_set_format_callbacks@Base 2.0.0 + libvlc_video_set_key_input@Base 1.1.0 + libvlc_video_set_logo_int@Base 1.1.0 + libvlc_video_set_logo_string@Base 1.1.0 + libvlc_video_set_marquee_int@Base 1.1.0 + libvlc_video_set_marquee_string@Base 1.1.0 + libvlc_video_set_mouse_input@Base 1.1.0 + libvlc_video_set_scale@Base 1.1.0 + libvlc_video_set_spu@Base 1.1.0 + libvlc_video_set_spu_delay@Base 2.0.0 + libvlc_video_set_subtitle_file@Base 1.1.0 + libvlc_video_set_teletext@Base 1.1.0 + libvlc_video_set_track@Base 1.1.0 + libvlc_video_take_snapshot@Base 1.1.0 + libvlc_video_update_viewpoint@Base 3.0.0 + libvlc_vlm_add_broadcast@Base 1.1.0 + libvlc_vlm_add_input@Base 1.1.0 + libvlc_vlm_add_vod@Base 1.1.0 + libvlc_vlm_change_media@Base 1.1.0 + libvlc_vlm_del_media@Base 1.1.0 + libvlc_vlm_get_event_manager@Base 1.1.0 + libvlc_vlm_get_media_instance_length@Base 1.1.0 + libvlc_vlm_get_media_instance_position@Base 1.1.0 + libvlc_vlm_get_media_instance_rate@Base 1.1.0 + libvlc_vlm_get_media_instance_time@Base 1.1.0 + libvlc_vlm_pause_media@Base 1.1.0 + libvlc_vlm_play_media@Base 1.1.0 + libvlc_vlm_release@Base 1.1.0 + libvlc_vlm_seek_media@Base 1.1.0 + libvlc_vlm_set_enabled@Base 1.1.0 + libvlc_vlm_set_input@Base 1.1.0 + libvlc_vlm_set_loop@Base 1.1.0 + libvlc_vlm_set_mux@Base 1.1.0 + libvlc_vlm_set_output@Base 1.1.0 + libvlc_vlm_show_media@Base 1.1.0 + libvlc_vlm_stop_media@Base 1.1.0 + libvlc_vprinterr@Base 1.1.0 + libvlc_wait@Base 1.1.0 diff --git a/libvlccore-dev.install b/libvlccore-dev.install new file mode 100644 index 00000000..b90fe24b --- /dev/null +++ b/libvlccore-dev.install @@ -0,0 +1,4 @@ +usr/include/vlc/plugins/*.h +usr/lib/*/libvlccore.so +usr/lib/*/pkgconfig/vlc-plugin.pc +usr/lib/*/vlc/libcompat.a diff --git a/libvlccore9.install b/libvlccore9.install new file mode 100644 index 00000000..8066c95a --- /dev/null +++ b/libvlccore9.install @@ -0,0 +1 @@ +usr/lib/*/libvlccore.so.* diff --git a/libvlccore9.symbols b/libvlccore9.symbols new file mode 100644 index 00000000..48a118df --- /dev/null +++ b/libvlccore9.symbols @@ -0,0 +1,762 @@ +libvlccore.so.9 libvlccore9 #MINVER# +* Build-Depends-Package: libvlccore-dev + AddMD5@Base 2.0.0 + EndMD5@Base 2.0.0 + FromCharset@Base 2.0.0 + GetLang_1@Base 2.0.0 + GetLang_2B@Base 2.0.0 + GetLang_2T@Base 2.0.0 + InitMD5@Base 2.0.0 + NTPtime64@Base 2.0.0 + ToCharset@Base 2.0.0 + VLC_CompileBy@Base 2.0.0 + VLC_CompileHost@Base 2.0.0 + VLC_Compiler@Base 2.0.0 + access_vaDirectoryControlHelper@Base 3.0.0 + addon_entry_Hold@Base 2.2.0~pre1 + addon_entry_New@Base 2.2.0~pre1 + addon_entry_Release@Base 2.2.0~pre1 + addons_manager_Delete@Base 2.2.0~pre1 + addons_manager_Gather@Base 2.2.0~pre1 + addons_manager_Install@Base 2.2.0~pre1 + addons_manager_LoadCatalog@Base 2.2.0~pre1 + addons_manager_New@Base 2.2.0~pre1 + addons_manager_Remove@Base 2.2.0~pre1 + aout_BitsPerSample@Base 2.0.0 + aout_ChannelExtract@Base 2.0.0 + aout_ChannelReorder@Base 2.0.0 + aout_CheckChannelExtraction@Base 2.0.0 + aout_CheckChannelReorder@Base 2.0.0 + aout_Deinterleave@Base 2.1.0 + aout_DeviceGet@Base 2.1.0 + aout_DeviceSet@Base 2.1.0 + aout_DevicesList@Base 2.1.0 + aout_FiltersAdjustResampling@Base 2.1.0 + aout_FiltersChangeViewpoint@Base 3.0.0 + aout_FiltersDelete@Base 2.1.0 + aout_FiltersDrain@Base 3.0.0 + aout_FiltersFlush@Base 3.0.0 + aout_FiltersNew@Base 2.1.0 + aout_FiltersPlay@Base 2.1.0 + aout_FormatPrepare@Base 2.0.0 + aout_FormatPrint@Base 2.0.0 + aout_FormatPrintChannels@Base 2.0.0 + aout_Interleave@Base 2.1.0 + aout_MuteGet@Base 2.1.0 + aout_MuteSet@Base 2.1.0 + aout_VolumeGet@Base 2.0.0 + aout_VolumeSet@Base 2.0.0 + aout_VolumeUpdate@Base 3.0.0 + aout_filter_RequestVout@Base 2.0.0 + block_Alloc@Base 2.0.0 + block_FifoCount@Base 2.0.0 + block_FifoEmpty@Base 2.0.0 + block_FifoGet@Base 2.0.0 + block_FifoNew@Base 2.0.0 + block_FifoPut@Base 2.0.0 + block_FifoRelease@Base 2.0.0 + block_FifoShow@Base 2.0.0 + block_File@Base 2.0.0 + block_FilePath@Base 2.1.0 + block_Init@Base 2.0.0 + block_Realloc@Base 2.0.0 + block_TryRealloc@Base 3.0.0 + block_heap_Alloc@Base 2.0.0 + block_mmap_Alloc@Base 2.0.0 + block_shm_Alloc@Base 2.1.0 + config_AddIntf@Base 2.0.0 + config_ChainCreate@Base 2.0.0 + config_ChainDestroy@Base 2.0.0 + config_ChainDuplicate@Base 2.0.0 + config_ChainParse@Base 2.0.0 + config_ChainParseOptions@Base 2.1.0 + config_ExistIntf@Base 2.0.0 + config_FindConfig@Base 2.0.0 + config_GetDataDir@Base 2.0.0 + config_GetFloat@Base 2.0.0 + config_GetInt@Base 2.0.0 + config_GetIntChoices@Base 2.1.0 + config_GetLibDir@Base 2.0.0 + config_GetPsz@Base 2.0.0 + config_GetPszChoices@Base 2.1.0 + config_GetType@Base 2.0.0 + config_GetUserDir@Base 2.0.0 + config_PutFloat@Base 2.0.0 + config_PutInt@Base 2.0.0 + config_PutPsz@Base 2.0.0 + config_RemoveIntf@Base 2.0.0 + config_ResetAll@Base 2.0.0 + config_SaveConfigFile@Base 2.0.0 + config_StringEscape@Base 2.0.0 + config_StringUnescape@Base 2.0.0 + date_Change@Base 2.0.0 + date_Decrement@Base 2.0.0 + date_Get@Base 2.0.0 + date_Increment@Base 2.0.0 + date_Init@Base 2.0.0 + date_Move@Base 2.0.0 + date_Set@Base 2.0.0 + decoder_AbortPictures@Base 3.0.0 + decoder_GetDisplayDate@Base 2.0.0 + decoder_GetDisplayRate@Base 2.0.0 + decoder_GetInputAttachments@Base 2.0.0 + decoder_NewAudioBuffer@Base 2.0.0 + decoder_NewSubpicture@Base 2.0.0 + demux_Delete@Base 3.0.0 + demux_New@Base 3.0.0 + demux_PacketizerDestroy@Base 2.0.0 + demux_PacketizerNew@Base 2.0.0 + demux_vaControl@Base 3.0.0 + demux_vaControlHelper@Base 2.0.0 + es_format_Clean@Base 2.0.0 + es_format_Copy@Base 2.0.0 + es_format_Init@Base 2.0.0 + es_format_InitFromVideo@Base 2.0.0 + es_format_IsSimilar@Base 2.0.0 + filter_AddProxyCallbacks@Base 3.0.0 + filter_Blend@Base 2.0.0 + filter_ConfigureBlend@Base 2.0.0 + filter_DelProxyCallbacks@Base 3.0.0 + filter_DeleteBlend@Base 2.0.0 + filter_NewBlend@Base 2.0.0 + filter_chain_AppendConverter@Base 3.0.0 + filter_chain_AppendFilter@Base 2.0.0 + filter_chain_AppendFromString@Base 2.0.0 + filter_chain_Delete@Base 2.0.0 + filter_chain_DeleteFilter@Base 2.0.0 + filter_chain_GetFmtOut@Base 2.0.0 + filter_chain_IsEmpty@Base 3.0.0 + filter_chain_MouseEvent@Base 2.0.0 + filter_chain_MouseFilter@Base 2.0.0 + filter_chain_NewVideo@Base 3.0.0 + filter_chain_Reset@Base 2.0.0 + filter_chain_SubFilter@Base 2.0.0 + filter_chain_VideoFilter@Base 2.0.0 + filter_chain_VideoFlush@Base 2.0.0 + fingerprinter_Create@Base 2.1.0 + fingerprinter_Destroy@Base 2.1.0 + httpd_ClientIP@Base 2.0.0 + httpd_FileDelete@Base 2.0.0 + httpd_FileNew@Base 2.0.0 + httpd_HandlerDelete@Base 2.0.0 + httpd_HandlerNew@Base 2.0.0 + httpd_HostDelete@Base 2.0.0 + httpd_MsgAdd@Base 2.0.0 + httpd_MsgGet@Base 2.0.0 + httpd_RedirectDelete@Base 2.0.0 + httpd_RedirectNew@Base 2.0.0 + httpd_ServerIP@Base 2.0.0 + httpd_StreamDelete@Base 2.0.0 + httpd_StreamHeader@Base 2.0.0 + httpd_StreamNew@Base 2.0.0 + httpd_StreamSend@Base 2.0.0 + httpd_StreamSetHTTPHeaders@Base 2.2.0~pre1 + httpd_UrlCatch@Base 2.0.0 + httpd_UrlDelete@Base 2.0.0 + httpd_UrlNew@Base 2.0.0 + image_Ext2Fourcc@Base 2.0.0 + image_HandlerCreate@Base 2.0.0 + image_HandlerDelete@Base 2.0.0 + image_Mime2Fourcc@Base 2.0.0 + image_Type2Fourcc@Base 2.0.0 + input_Close@Base 2.0.0 + input_Control@Base 2.0.0 + input_Create@Base 2.0.0 + input_CreateFilename@Base 2.0.0 + input_DecoderCreate@Base 2.0.0 + input_DecoderDecode@Base 2.0.0 + input_DecoderDelete@Base 2.0.0 + input_DecoderDrain@Base 3.0.0 + input_DecoderFlush@Base 3.0.0 + input_GetItem@Base 2.0.0 + input_Read@Base 2.0.0 + input_Start@Base 2.0.0 + input_Stop@Base 2.0.0 + input_item_AddInfo@Base 2.0.0 + input_item_AddOpaque@Base 3.0.0 + input_item_AddOption@Base 2.0.0 + input_item_AddOptions@Base 3.0.0 + input_item_AddSlave@Base 3.0.0 + input_item_Copy@Base 2.0.0 + input_item_CopyOptions@Base 2.0.0 + input_item_DelInfo@Base 2.0.0 + input_item_GetDuration@Base 2.0.0 + input_item_GetInfo@Base 2.0.0 + input_item_GetMeta@Base 2.2.0 + input_item_GetName@Base 2.0.0 + input_item_GetNowPlayingFb@Base 3.0.0 + input_item_GetTitleFbName@Base 2.0.0 + input_item_GetURI@Base 2.0.0 + input_item_HasErrorWhenReading@Base 2.0.0 + input_item_Hold@Base 2.1.0 + input_item_IsArtFetched@Base 2.0.0 + input_item_IsPreparsed@Base 2.0.0 + input_item_MergeInfos@Base 2.0.0 + input_item_MetaMatch@Base 2.2.0 + input_item_NewExt@Base 2.0.0 + input_item_Release@Base 2.1.0 + input_item_ReplaceInfos@Base 2.0.0 + input_item_SetDuration@Base 2.0.0 + input_item_SetMeta@Base 2.2.0 + input_item_SetName@Base 2.0.0 + input_item_SetURI@Base 2.0.0 + input_item_WriteMeta@Base 2.0.0 + input_item_node_AppendItem@Base 2.0.0 + input_item_node_AppendNode@Base 2.0.0 + input_item_node_Create@Base 2.0.0 + input_item_node_Delete@Base 2.0.0 + input_item_slave_GetType@Base 3.0.0 + input_item_slave_New@Base 3.0.0 + input_resource_GetAout@Base 2.2.0~pre1 + input_resource_HoldAout@Base 2.1.0 + input_resource_New@Base 2.0.0 + input_resource_PutAout@Base 2.2.0~pre1 + input_resource_Release@Base 2.0.0 + input_resource_ResetAout@Base 2.2.0~pre1 + input_resource_Terminate@Base 2.0.0 + input_resource_TerminateVout@Base 2.0.0 + input_vaControl@Base 2.0.0 + intf_Create@Base 2.0.0 + libvlc_ArtRequest@Base 2.2.0~pre1 + libvlc_InternalAddIntf@Base 2.0.0 + libvlc_InternalCleanup@Base 2.0.0 + libvlc_InternalCreate@Base 2.0.0 + libvlc_InternalDestroy@Base 2.0.0 + libvlc_InternalInit@Base 2.0.0 + libvlc_InternalPlay@Base 2.2.0~pre1 + libvlc_MetadataCancel@Base 3.0.0 + libvlc_MetadataRequest@Base 3.0.0 + libvlc_Quit@Base 2.0.0 + libvlc_SetExitHandler@Base 2.0.0 + mdate@Base 2.0.0 + module_config_free@Base 2.0.0 + module_config_get@Base 2.0.0 + module_exists@Base 2.0.0 + module_find@Base 2.0.0 + module_get_capability@Base 2.0.0 + module_get_help@Base 2.0.0 + module_get_name@Base 2.0.0 + module_get_object@Base 2.0.0 + module_get_score@Base 2.0.0 + module_gettext@Base 2.0.0 + module_list_free@Base 2.0.0 + module_list_get@Base 2.0.0 + module_need@Base 2.0.0 + module_provides@Base 2.0.0 + module_unneed@Base 2.0.0 + msleep@Base 2.0.0 + mwait@Base 2.0.0 + net_Accept@Base 2.0.0 + net_AcceptSingle@Base 2.0.0 + net_Connect@Base 2.0.0 + net_ConnectDgram@Base 2.0.0 + net_Gets@Base 2.0.0 + net_Listen@Base 2.0.0 + net_ListenClose@Base 2.0.0 + net_OpenDgram@Base 2.0.0 + net_Printf@Base 2.0.0 + net_Read@Base 2.0.0 + net_SetCSCov@Base 2.0.0 + net_Write@Base 2.0.0 + net_vaPrintf@Base 2.0.0 + picture_BlendSubpicture@Base 2.0.0 + picture_Clone@Base 3.0.0 + picture_Copy@Base 2.1.0 + picture_CopyPixels@Base 2.0.0 + picture_CopyProperties@Base 2.1.0 + picture_Export@Base 2.0.0 + picture_Hold@Base 2.1.0 + picture_New@Base 2.0.0 + picture_NewFromFormat@Base 2.0.0 + picture_NewFromResource@Base 2.0.0 + picture_Release@Base 2.1.0 + picture_Reset@Base 2.0.0 + picture_Setup@Base 2.0.0 + picture_fifo_Delete@Base 2.0.0 + picture_fifo_Flush@Base 2.0.0 + picture_fifo_New@Base 2.0.0 + picture_fifo_OffsetDate@Base 2.0.0 + picture_fifo_Peek@Base 2.0.0 + picture_fifo_Pop@Base 2.0.0 + picture_fifo_Push@Base 2.0.0 + picture_pool_Enum@Base 3.0.0 + picture_pool_Get@Base 2.0.0 + picture_pool_GetSize@Base 2.0.0 + picture_pool_New@Base 2.0.0 + picture_pool_NewExtended@Base 2.0.0 + picture_pool_NewFromFormat@Base 2.0.0 + picture_pool_Release@Base 3.0.0 + picture_pool_Reserve@Base 2.0.0 + picture_pool_Wait@Base 3.0.0 + plane_CopyPixels@Base 2.0.0 + playlist_Add@Base 2.0.0 + playlist_AddExt@Base 2.0.0 + playlist_AddInput@Base 2.0.0 + playlist_AssertLocked@Base 2.0.0 + playlist_ChildSearchName@Base 2.0.0 + playlist_Clear@Base 2.0.0 + playlist_Control@Base 2.0.0 + playlist_CurrentInput@Base 2.0.0 + playlist_CurrentInputLocked@Base 3.0.0 + playlist_CurrentPlayingItem@Base 2.0.0 + playlist_Deactivate@Base 2.1.0 + playlist_EnableAudioFilter@Base 2.1.0 + playlist_Export@Base 2.0.0 + playlist_GetAout@Base 2.1.0 + playlist_GetNodeDuration@Base 2.1.0 + playlist_Import@Base 2.0.0 + playlist_IsServicesDiscoveryLoaded@Base 2.0.0 + playlist_ItemGetById@Base 2.0.0 + playlist_ItemGetByInput@Base 2.0.0 + playlist_LiveSearchUpdate@Base 2.0.0 + playlist_Lock@Base 2.0.0 + playlist_MuteGet@Base 2.1.0 + playlist_MuteSet@Base 2.1.0 + playlist_NodeAddCopy@Base 2.0.0 + playlist_NodeAddInput@Base 2.0.0 + playlist_NodeCreate@Base 2.0.0 + playlist_NodeDelete@Base 2.0.0 + playlist_RecursiveNodeSort@Base 2.0.0 + playlist_ServicesDiscoveryAdd@Base 2.0.0 + playlist_ServicesDiscoveryControl@Base 2.0.0 + playlist_ServicesDiscoveryRemove@Base 2.0.0 + playlist_SetRenderer@Base 3.0.0 + playlist_Status@Base 2.0.0 + playlist_TreeMove@Base 2.0.0 + playlist_TreeMoveMany@Base 2.0.0 + playlist_Unlock@Base 2.0.0 + playlist_VolumeGet@Base 2.1.0 + playlist_VolumeSet@Base 2.1.0 + playlist_VolumeUp@Base 2.1.0 + sdp_AddAttribute@Base 2.0.0 + sdp_AddMedia@Base 2.0.0 + secstotimestr@Base 2.0.0 + sout_AccessOutControl@Base 2.0.0 + sout_AccessOutDelete@Base 2.0.0 + sout_AccessOutNew@Base 2.0.0 + sout_AccessOutRead@Base 2.0.0 + sout_AccessOutSeek@Base 2.0.0 + sout_AccessOutWrite@Base 2.0.0 + sout_AnnounceRegisterSDP@Base 2.0.0 + sout_AnnounceUnRegister@Base 2.0.0 + sout_EncoderCreate@Base 2.0.0 + sout_MuxAddStream@Base 2.0.0 + sout_MuxDelete@Base 2.0.0 + sout_MuxDeleteStream@Base 2.0.0 + sout_MuxFlush@Base 3.0.0 + sout_MuxGetStream@Base 2.0.0 + sout_MuxNew@Base 2.0.0 + sout_MuxSendBuffer@Base 2.0.0 + sout_StreamChainDelete@Base 2.0.0 + sout_StreamChainNew@Base 2.0.0 + spu_ChangeFilters@Base 2.0.0 + spu_ChangeSources@Base 2.0.0 + spu_ClearChannel@Base 2.0.0 + spu_Create@Base 2.0.0 + spu_Destroy@Base 2.0.0 + spu_PutSubpicture@Base 2.0.0 + spu_RegisterChannel@Base 2.0.0 + spu_Render@Base 2.0.0 + subpicture_Delete@Base 2.0.0 + subpicture_New@Base 2.0.0 + subpicture_NewFromPicture@Base 2.0.0 + subpicture_Update@Base 2.0.0 + subpicture_region_ChainDelete@Base 2.0.0 + subpicture_region_Copy@Base 3.0.0 + subpicture_region_Delete@Base 2.0.0 + subpicture_region_New@Base 2.0.0 + text_segment_ChainDelete@Base 3.0.0 + text_segment_Copy@Base 3.0.0 + text_segment_Delete@Base 3.0.0 + text_segment_New@Base 3.0.0 + text_segment_NewInheritStyle@Base 3.0.0 + text_style_Copy@Base 2.0.0 + text_style_Create@Base 3.0.0 + text_style_Delete@Base 2.0.0 + text_style_Duplicate@Base 2.0.0 + text_style_Merge@Base 3.0.0 + text_style_New@Base 2.0.0 + update_Check@Base 2.0.0 + update_Delete@Base 2.0.0 + update_Download@Base 2.0.0 + update_GetRelease@Base 2.0.0 + update_NeedUpgrade@Base 2.0.0 + update_New@Base 2.0.0 + us_asprintf@Base 2.0.0 + us_atof@Base 2.0.0 + us_strtod@Base 2.0.0 + us_strtof@Base 2.0.0 + us_vasprintf@Base 2.0.0 + utf8_fprintf@Base 2.0.0 + utf8_vfprintf@Base 2.0.0 + var_AddCallback@Base 2.0.0 + var_AddListCallback@Base 3.0.0 + var_Change@Base 2.0.0 + var_Create@Base 2.0.0 + var_DelCallback@Base 2.0.0 + var_DelListCallback@Base 3.0.0 + var_Destroy@Base 2.0.0 + var_FreeList@Base 2.0.0 + var_Get@Base 2.0.0 + var_GetAndSet@Base 2.0.0 + var_GetChecked@Base 2.0.0 + var_Inherit@Base 2.0.0 + var_InheritURational@Base 2.0.0 + var_LocationParse@Base 2.0.0 + var_Set@Base 2.0.0 + var_SetChecked@Base 2.0.0 + var_TriggerCallback@Base 2.0.0 + var_Type@Base 2.0.0 + video_format_ApplyRotation@Base 2.2.0~pre1 + video_format_CopyCrop@Base 2.0.0 + video_format_FixRgb@Base 2.0.0 + video_format_GetTransform@Base 2.2.0~pre1 + video_format_IsSimilar@Base 2.0.0 + video_format_Print@Base 2.0.0 + video_format_ScaleCropAr@Base 2.0.0 + video_format_Setup@Base 2.0.0 + video_format_TransformBy@Base 2.2.0~pre1 + video_format_TransformTo@Base 2.2.0~pre1 + vlc_CPU@Base 2.0.0 + vlc_GetCPUCount@Base 2.0.0 + vlc_Log@Base 2.0.0 + vlc_LogSet@Base 2.1.0 + vlc_UrlClean@Base 2.1.0 + vlc_UrlParse@Base 2.1.0 + vlc_UrlParseFixup@Base 3.0.0 + vlc_accept@Base 2.0.0 + vlc_accept_i11e@Base 3.0.0 + vlc_access_NewMRL@Base 3.0.0 + vlc_actions_get_id@Base 3.0.0 + vlc_actions_get_key_names@Base 3.0.0 + vlc_actions_get_keycodes@Base 3.0.0 + vlc_b64_decode@Base 2.0.0 + vlc_b64_decode_binary@Base 2.0.0 + vlc_b64_decode_binary_to_buffer@Base 2.0.0 + vlc_b64_encode@Base 2.0.0 + vlc_b64_encode_binary@Base 2.0.0 + vlc_cancel@Base 2.0.0 + vlc_clone@Base 2.0.0 + vlc_close@Base 3.0.0 + vlc_cond_broadcast@Base 2.0.0 + vlc_cond_destroy@Base 2.0.0 + vlc_cond_init@Base 2.0.0 + vlc_cond_signal@Base 2.0.0 + vlc_cond_timedwait@Base 2.0.0 + vlc_cond_wait@Base 2.0.0 + vlc_control_cancel@Base 2.0.0 + vlc_credential_clean@Base 3.0.0 + vlc_credential_get@Base 3.0.0 + vlc_credential_init@Base 3.0.0 + vlc_credential_store@Base 3.0.0 + vlc_demux_chained_ControlVa@Base 3.0.0 + vlc_demux_chained_Delete@Base 3.0.0 + vlc_demux_chained_New@Base 3.0.0 + vlc_demux_chained_Send@Base 3.0.0 + vlc_dialog_display_error@Base 3.0.0 + vlc_dialog_display_error_va@Base 3.0.0 + vlc_dialog_display_progress@Base 3.0.0 + vlc_dialog_display_progress_va@Base 3.0.0 + vlc_dialog_id_dismiss@Base 3.0.0 + vlc_dialog_id_get_context@Base 3.0.0 + vlc_dialog_id_post_action@Base 3.0.0 + vlc_dialog_id_post_login@Base 3.0.0 + vlc_dialog_id_set_context@Base 3.0.0 + vlc_dialog_is_cancelled@Base 3.0.0 + vlc_dialog_provider_set_callbacks@Base 3.0.0 + vlc_dialog_provider_set_ext_callback@Base 3.0.0 + vlc_dialog_release@Base 3.0.0 + vlc_dialog_update_progress@Base 3.0.0 + vlc_dialog_update_progress_text@Base 3.0.0 + vlc_dialog_update_progress_text_va@Base 3.0.0 + vlc_dialog_wait_login@Base 3.0.0 + vlc_dialog_wait_login_va@Base 3.0.0 + vlc_dialog_wait_question@Base 3.0.0 + vlc_dialog_wait_question_va@Base 3.0.0 + vlc_drand48@Base 2.0.0 + vlc_dup@Base 2.0.0 + vlc_epg_AddEvent@Base 2.0.0 + vlc_epg_Delete@Base 2.0.0 + vlc_epg_Duplicate@Base 3.0.0 + vlc_epg_New@Base 2.0.0 + vlc_epg_SetCurrent@Base 2.0.0 + vlc_epg_event_Delete@Base 3.0.0 + vlc_epg_event_Duplicate@Base 3.0.0 + vlc_epg_event_New@Base 3.0.0 + vlc_error@Base 2.0.0 + vlc_event_attach@Base 2.0.0 + vlc_event_detach@Base 2.0.0 + vlc_ext_dialog_update@Base 3.0.0 + vlc_fifo_DequeueAllUnlocked@Base 3.0.0 + vlc_fifo_DequeueUnlocked@Base 3.0.0 + vlc_fifo_GetBytes@Base 3.0.0 + vlc_fifo_GetCount@Base 3.0.0 + vlc_fifo_Lock@Base 3.0.0 + vlc_fifo_QueueUnlocked@Base 3.0.0 + vlc_fifo_Signal@Base 3.0.0 + vlc_fifo_Unlock@Base 3.0.0 + vlc_fifo_Wait@Base 3.0.0 + vlc_fifo_WaitCond@Base 3.0.0 + vlc_filenamecmp@Base 3.0.0 + vlc_fopen@Base 2.0.0 + vlc_fourcc_AreUVPlanesSwapped@Base 2.0.0 + vlc_fourcc_GetChromaDescription@Base 2.0.0 + vlc_fourcc_GetCodec@Base 2.0.0 + vlc_fourcc_GetCodecAudio@Base 2.0.0 + vlc_fourcc_GetCodecFromString@Base 2.0.0 + vlc_fourcc_GetDescription@Base 2.0.0 + vlc_fourcc_GetRGBFallback@Base 2.0.0 + vlc_fourcc_GetYUVFallback@Base 2.0.0 + vlc_fourcc_IsYUV@Base 2.0.0 + vlc_getProxyUrl@Base 2.1.0 + vlc_getaddrinfo@Base 2.0.0 + vlc_getaddrinfo_i11e@Base 3.0.0 + vlc_getcwd@Base 2.0.0 + vlc_getnameinfo@Base 2.0.0 + vlc_gettext@Base 2.0.0 + vlc_gl_Create@Base 2.0.0 + vlc_gl_Hold@Base 3.0.0 + vlc_gl_Release@Base 3.0.0 + vlc_gl_surface_CheckSize@Base 3.0.0 + vlc_gl_surface_Create@Base 3.0.0 + vlc_gl_surface_Destroy@Base 3.0.0 + vlc_global_mutex@Base 2.0.0 + vlc_html_color@Base 3.0.0 + vlc_http_HostNew@Base 2.0.0 + vlc_http_auth_Deinit@Base 3.0.0 + vlc_http_auth_FormatAuthorizationHeader@Base 3.0.0 + vlc_http_auth_Init@Base 3.0.0 + vlc_http_auth_ParseAuthenticationInfoHeader@Base 3.0.0 + vlc_http_auth_ParseWwwAuthenticateHeader@Base 3.0.0 + vlc_http_cookies_destroy@Base 3.0.0 + vlc_http_cookies_fetch@Base 3.0.0 + vlc_http_cookies_new@Base 3.0.0 + vlc_http_cookies_store@Base 3.0.0 + vlc_https_HostNew@Base 2.0.0 + vlc_iconv@Base 2.0.0 + vlc_iconv_close@Base 2.0.0 + vlc_iconv_open@Base 2.0.0 + vlc_interrupt_create@Base 3.0.0 + vlc_interrupt_destroy@Base 3.0.0 + vlc_interrupt_forward_start@Base 3.0.0 + vlc_interrupt_forward_stop@Base 3.0.0 + vlc_interrupt_kill@Base 3.0.0 + vlc_interrupt_raise@Base 3.0.0 + vlc_interrupt_register@Base 3.0.0 + vlc_interrupt_set@Base 3.0.0 + vlc_interrupt_unregister@Base 3.0.0 + vlc_join@Base 2.0.0 + vlc_keycode2str@Base 2.0.0 + vlc_keystore_create@Base 3.0.0 + vlc_keystore_find@Base 3.0.0 + vlc_keystore_release@Base 3.0.0 + vlc_keystore_release_entries@Base 3.0.0 + vlc_keystore_remove@Base 3.0.0 + vlc_keystore_store@Base 3.0.0 + vlc_killed@Base 3.0.0 + vlc_list_children@Base 2.0.0 + vlc_list_release@Base 2.0.0 + vlc_loaddir@Base 2.0.0 + vlc_lrand48@Base 2.0.0 + vlc_lstat@Base 2.0.0 + vlc_memfd@Base 3.0.0 + vlc_memstream_close@Base 3.0.0 + vlc_memstream_flush@Base 3.0.0 + vlc_memstream_open@Base 3.0.0 + vlc_memstream_printf@Base 3.0.0 + vlc_memstream_putc@Base 3.0.0 + vlc_memstream_puts@Base 3.0.0 + vlc_memstream_vprintf@Base 3.0.0 + vlc_memstream_write@Base 3.0.0 + vlc_meta_AddExtra@Base 2.0.0 + vlc_meta_CopyExtraNames@Base 2.0.0 + vlc_meta_Delete@Base 2.0.0 + vlc_meta_Get@Base 2.2.0 + vlc_meta_GetExtra@Base 2.0.0 + vlc_meta_GetExtraCount@Base 2.0.0 + vlc_meta_GetStatus@Base 2.0.0 + vlc_meta_Merge@Base 2.0.0 + vlc_meta_New@Base 2.0.0 + vlc_meta_Set@Base 2.2.0 + vlc_meta_SetStatus@Base 2.0.0 + vlc_meta_TypeToLocalizedString@Base 2.2.0 + vlc_mime_Ext2Mime@Base 2.1.0 + vlc_mkdir@Base 2.0.0 + vlc_mkstemp@Base 2.0.0 + vlc_module_load@Base 2.0.0 + vlc_module_unload@Base 2.0.0 + vlc_mrand48@Base 2.0.0 + vlc_mutex_destroy@Base 2.0.0 + vlc_mutex_init@Base 2.0.0 + vlc_mutex_init_recursive@Base 2.0.0 + vlc_mutex_lock@Base 2.0.0 + vlc_mutex_trylock@Base 2.0.0 + vlc_mutex_unlock@Base 2.0.0 + vlc_mwait_i11e@Base 3.0.0 + vlc_ngettext@Base 2.1.0 + vlc_obj_malloc@Base 3.0.0 + vlc_obj_calloc@Base 3.0.0 + vlc_obj_free@Base 3.0.0 + vlc_object_create@Base 2.0.0 + vlc_object_find_name@Base 2.0.0 + vlc_object_get_name@Base 2.0.0 + vlc_object_hold@Base 2.0.0 + vlc_object_release@Base 2.0.0 + vlc_open@Base 2.0.0 + vlc_openat@Base 2.0.0 + vlc_opendir@Base 2.0.0 + vlc_path2uri@Base 2.1.0 + vlc_pipe@Base 2.0.0 + vlc_poll_i11e@Base 3.0.0 + vlc_rand_bytes@Base 2.0.0 + vlc_rd_get_names@Base 3.0.0 + vlc_rd_new@Base 3.0.0 + vlc_rd_probe_add@Base 3.0.0 + vlc_rd_release@Base 3.0.0 + vlc_read_i11e@Base 3.0.0 + vlc_readdir@Base 2.0.0 + vlc_readdir_helper_additem@Base 3.0.0 + vlc_readdir_helper_finish@Base 3.0.0 + vlc_readdir_helper_init@Base 3.0.0 + vlc_readv_i11e@Base 3.0.0 + vlc_recvfrom_i11e@Base 3.0.0 + vlc_recvmsg_i11e@Base 3.0.0 + vlc_rename@Base 2.0.0 + vlc_renderer_item_demux_filter@Base 3.0.0 + vlc_renderer_item_flags@Base 3.0.0 + vlc_renderer_item_hold@Base 3.0.0 + vlc_renderer_item_icon_uri@Base 3.0.0 + vlc_renderer_item_name@Base 3.0.0 + vlc_renderer_item_new@Base 3.0.0 + vlc_renderer_item_release@Base 3.0.0 + vlc_renderer_item_sout@Base 3.0.0 + vlc_renderer_item_type@Base 3.0.0 + vlc_restorecancel@Base 2.0.0 + vlc_rtsp_HostNew@Base 2.0.0 + vlc_rwlock_destroy@Base 2.0.0 + vlc_rwlock_init@Base 2.0.0 + vlc_rwlock_rdlock@Base 2.0.0 + vlc_rwlock_unlock@Base 2.0.0 + vlc_rwlock_wrlock@Base 2.0.0 + vlc_savecancel@Base 2.0.0 + vlc_scandir@Base 2.0.0 + vlc_sd_Create@Base 2.0.0 + vlc_sd_Destroy@Base 2.0.0 + vlc_sd_GetNames@Base 2.0.0 + vlc_sd_probe_Add@Base 2.0.0 + vlc_sdp_Start@Base 2.0.0 + vlc_sem_destroy@Base 2.0.0 + vlc_sem_init@Base 2.0.0 + vlc_sem_post@Base 2.0.0 + vlc_sem_wait@Base 2.0.0 + vlc_sem_wait_i11e@Base 3.0.0 + vlc_sendmsg_i11e@Base 3.0.0 + vlc_sendto_i11e@Base 3.0.0 + vlc_socket@Base 2.0.2 + vlc_socketpair@Base 3.0.0 + vlc_stat@Base 2.0.0 + vlc_str2keycode@Base 2.0.0 + vlc_strcasestr@Base 2.0.0 + vlc_stream_Block@Base 3.0.0 + vlc_stream_CommonNew@Base 3.0.0 + vlc_stream_Delete@Base 3.0.0 + vlc_stream_Eof@Base 3.0.0 + vlc_stream_FilterDefaultReadDir@Base 3.0.0 + vlc_stream_FilterNew@Base 3.0.0 + vlc_stream_MemoryNew@Base 3.0.0 + vlc_stream_NewMRL@Base 3.0.0 + vlc_stream_NewURL@Base 3.0.0 + vlc_stream_Peek@Base 3.0.0 + vlc_stream_Read@Base 3.0.0 + vlc_stream_ReadBlock@Base 3.0.0 + vlc_stream_ReadDir@Base 3.0.0 + vlc_stream_ReadLine@Base 3.0.0 + vlc_stream_ReadPartial@Base 3.0.0 + vlc_stream_Seek@Base 3.0.0 + vlc_stream_Tell@Base 3.0.0 + vlc_stream_directory_Attach@Base 3.0.0 + vlc_stream_extractor_Attach@Base 3.0.0 + vlc_stream_extractor_CreateMRL@Base 3.0.0 + vlc_stream_fifo_Close@Base 3.0.0 + vlc_stream_fifo_New@Base 3.0.0 + vlc_stream_fifo_Queue@Base 3.0.0 + vlc_stream_fifo_Write@Base 3.0.0 + vlc_stream_vaControl@Base 3.0.0 + vlc_strerror@Base 2.2.0~pre1 + vlc_strerror_c@Base 2.2.0~pre1 + vlc_strfinput@Base 3.0.0 + vlc_strftime@Base 3.0.0 + vlc_testcancel@Base 2.0.0 + vlc_thread_id@Base 3.0.0 + vlc_thread_self@Base 3.0.0 + vlc_threadvar_create@Base 2.0.0 + vlc_threadvar_delete@Base 2.0.0 + vlc_threadvar_get@Base 2.0.0 + vlc_threadvar_set@Base 2.0.0 + vlc_timer_create@Base 2.0.0 + vlc_timer_destroy@Base 2.0.0 + vlc_timer_getoverrun@Base 2.0.0 + vlc_timer_schedule@Base 2.0.0 + vlc_tls_ClientCreate@Base 2.0.0 + vlc_tls_ClientSessionCreate@Base 2.1.0 + vlc_tls_Delete@Base 2.1.0 + vlc_tls_GetLine@Base 3.0.0 + vlc_tls_Read@Base 3.0.0 + vlc_tls_ServerCreate@Base 3.0.0 + vlc_tls_ServerSessionCreate@Base 3.0.0 + vlc_tls_SessionDelete@Base 2.1.0 + vlc_tls_SocketOpen@Base 3.0.0 + vlc_tls_SocketOpenAddrInfo@Base 3.0.0 + vlc_tls_SocketOpenTCP@Base 3.0.0 + vlc_tls_SocketOpenTLS@Base 3.0.0 + vlc_tls_SocketPair@Base 3.0.0 + vlc_tls_Write@Base 3.0.0 + vlc_towc@Base 3.0.0 + vlc_unlink@Base 2.0.0 + vlc_ureduce@Base 2.0.0 + vlc_uri2path@Base 3.0.0 + vlc_uri_compose@Base 3.0.0 + vlc_uri_decode@Base 3.0.0 + vlc_uri_decode_duplicate@Base 3.0.0 + vlc_uri_encode@Base 3.0.0 + vlc_uri_fixup@Base 3.0.0 + vlc_uri_resolve@Base 3.0.0 + vlc_vaLog@Base 2.0.0 + vlc_write@Base 3.0.0 + vlc_write_i11e@Base 3.0.0 + vlc_writev@Base 3.0.0 + vlc_writev_i11e@Base 3.0.0 + vlc_xml_decode@Base 3.0.0 + vlc_xml_encode@Base 3.0.0 + vlm_Control@Base 2.0.0 + vlm_Delete@Base 2.0.0 + vlm_ExecuteCommand@Base 2.0.0 + vlm_MessageAdd@Base 2.0.0 + vlm_MessageDelete@Base 2.0.0 + vlm_MessageNew@Base 2.0.0 + vlm_MessageSimpleNew@Base 2.0.0 + vlm_New@Base 2.0.0 + vout_ChangeAspectRatio@Base 2.2.0~pre1 + vout_Close@Base 2.0.0 + vout_FlushSubpictureChannel@Base 2.0.0 + vout_GetPicture@Base 2.0.0 + vout_GetSnapshot@Base 2.0.0 + vout_OSDEpg@Base 2.0.0 + vout_OSDIcon@Base 2.0.0 + vout_OSDMessage@Base 2.0.0 + vout_OSDSlider@Base 2.0.0 + vout_OSDText@Base 2.0.0 + vout_PutPicture@Base 2.0.0 + vout_PutSubpicture@Base 2.0.0 + vout_RegisterSubpictureChannel@Base 2.0.0 + vout_Request@Base 2.0.0 + vout_display_GetDefaultDisplaySize@Base 2.0.0 + vout_display_PlacePicture@Base 2.0.0 + vout_display_SendMouseMovedDisplayCoordinates@Base 2.2.0~pre1 + vout_window_Delete@Base 2.0.0 + vout_window_New@Base 2.0.0 + xml_Create@Base 2.0.0 + xml_Delete@Base 2.0.0 + xml_ReaderCreate@Base 2.0.0 + xml_ReaderDelete@Base 2.0.0 + xml_ReaderReset@Base 2.0.0 diff --git a/patches/0001-configure-fix-linking-on-RISC-V-ISA.patch b/patches/0001-configure-fix-linking-on-RISC-V-ISA.patch new file mode 100644 index 00000000..d48636ca --- /dev/null +++ b/patches/0001-configure-fix-linking-on-RISC-V-ISA.patch @@ -0,0 +1,20 @@ +From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= +Date: Sat, 16 Jun 2018 21:31:45 +0300 +Subject: configure: fix linking on RISC-V ISA + +--- + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.ac b/configure.ac +index 8fa2a87..079a00d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -113,6 +113,7 @@ case "${host_os}" in + ;; + linux*) + SYS=linux ++ test "${host_cpu}" = "riscv64" && CFLAGS="${CFLAGS} -pthread" + ;; + bsdi*) + SYS=bsdi diff --git a/patches/0002-Do-not-generate-cache-during-build.patch b/patches/0002-Do-not-generate-cache-during-build.patch new file mode 100644 index 00000000..3c329789 --- /dev/null +++ b/patches/0002-Do-not-generate-cache-during-build.patch @@ -0,0 +1,72 @@ +From: Sebastian Ramacher +Date: Tue, 7 Jul 2020 00:18:39 +0200 +Subject: Do not generate cache during build + +The generated cache is not used in the package. It causes spurious build +failures on the arm64 and ppc64el builds, that are not reproducible +elsewhere. +--- + Makefile.am | 16 ---------------- + bin/Makefile.am | 18 ------------------ + 2 files changed, 34 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index ba1d4fc..9d00f51 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -162,22 +162,6 @@ endif + TESTS = test/run_vlc.sh + dist_noinst_SCRIPTS += test/run_vlc.sh + +-if BUILD_VLC +-############################################################################### +-# Installing plugins cache +-############################################################################### +-install-exec-hook: +- if test "$(build)" = "$(host)"; then \ +- PATH="$(DESTDIR)$(bindir):$$PATH" \ +- LD_LIBRARY_PATH="$(DESTDIR)$(libdir):$$LD_LIBRARY_PATH" \ +- DYLD_LIBRARY_PATH="$(DESTDIR)$(libdir):$$DYLD_LIBRARY_PATH" \ +- "$(DESTDIR)$(vlclibdir)/vlc-cache-gen$(EXEEXT)" \ +- "$(DESTDIR)$(vlclibdir)/plugins" ; \ +- else \ +- echo "Cross-compilation: cache generation skipped!" ; \ +- fi +-endif +- + uninstall-hook: + rm -f -- "$(DESTDIR)$(vlclibdir)/plugins/plugins.dat" + +diff --git a/bin/Makefile.am b/bin/Makefile.am +index 4de299d..a2acc3c 100644 +--- a/bin/Makefile.am ++++ b/bin/Makefile.am +@@ -124,14 +124,6 @@ vlc_cache_gen_LDFLAGS = -Wc,-static + vlc_cache_gen_DEPENDENCIES = vlc_win32_rc.$(OBJEXT) + endif + +-# +-# Plug-ins cache +-# +-if HAVE_DYNAMIC_PLUGINS +-noinst_DATA = ../modules/plugins.dat +-endif +-MOSTLYCLEANFILES = $(noinst_DATA) +- + if HAVE_OSX + if BUILD_VLC + install-data-local: +@@ -139,13 +131,3 @@ install-data-local: + + endif + endif +- +-.PHONY: ../modules/plugins.dat +- +-../modules/plugins.dat: vlc-cache-gen$(EXEEXT) +- $(AM_V_at)rm -f ../modules/plugins.dat +- $(AM_V_GEN)if test "$(build)" = "$(host)"; then \ +- ./vlc-cache-gen$(EXEEXT) `realpath ../modules` ; \ +- else \ +- echo "Cross-compilation: cache generation skipped!" ; \ +- fi diff --git a/patches/0003-Bump-module-ABI-for-time_t-transition.patch b/patches/0003-Bump-module-ABI-for-time_t-transition.patch new file mode 100644 index 00000000..0a06d878 --- /dev/null +++ b/patches/0003-Bump-module-ABI-for-time_t-transition.patch @@ -0,0 +1,23 @@ +From: Sebastian Ramacher +Date: Wed, 28 Feb 2024 23:55:22 +0100 +Subject: Bump module ABI for time_t transition + +--- + include/vlc_plugin.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/vlc_plugin.h b/include/vlc_plugin.h +index ce28562..00f5667 100644 +--- a/include/vlc_plugin.h ++++ b/include/vlc_plugin.h +@@ -188,8 +188,8 @@ enum vlc_module_properties + /** + * Current plugin ABI version + */ +-# define MODULE_SYMBOL 3_0_0f +-# define MODULE_SUFFIX "__3_0_0f" ++# define MODULE_SYMBOL 3_0_0ft64 ++# define MODULE_SUFFIX "__3_0_0ft64" + + /***************************************************************************** + * Add a few defines. You do not want to read this section. Really. diff --git a/patches/0004-demux-image-detect-ICC-profile-before-JFIF-data.patch b/patches/0004-demux-image-detect-ICC-profile-before-JFIF-data.patch new file mode 100644 index 00000000..d9de9fbf --- /dev/null +++ b/patches/0004-demux-image-detect-ICC-profile-before-JFIF-data.patch @@ -0,0 +1,42 @@ +From: Steve Lhomme +Date: Wed, 5 Jun 2024 11:55:39 +0200 +Subject: demux: image: detect ICC profile before JFIF data + +Fixes #18857 + +(cherry picked from commit 5ffd36ffa26a83ae498373f7d0ace1d82ab952f4) +Signed-off-by: Steve Lhomme +--- + modules/demux/image.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/modules/demux/image.c b/modules/demux/image.c +index 239f5d4..e72d5a4 100644 +--- a/modules/demux/image.c ++++ b/modules/demux/image.c +@@ -392,7 +392,7 @@ static uint8_t FindJpegMarker(size_t *position, const uint8_t *data, size_t size + static bool IsJfif(stream_t *s) + { + const uint8_t *header; +- ssize_t peek = vlc_stream_Peek(s, &header, 256); ++ ssize_t peek = vlc_stream_Peek(s, &header, 4096); + if(peek < 256) + return false; + size_t size = (size_t) peek; +@@ -400,6 +400,16 @@ static bool IsJfif(stream_t *s) + + if (FindJpegMarker(&position, header, size) != 0xd8) + return false; ++ if (FindJpegMarker(&position, header, size) == 0xe2) // ICC Profile ++ { ++ size_t icc_size = GetWBE(&header[position]); ++ position += 2; ++ if (position + 12 > size) ++ return false; ++ if (memcmp(&header[position], "ICC_PROFILE\0", 12)) ++ return false; ++ position += icc_size - 2; ++ } + if (FindJpegMarker(&position, header, size) != 0xe0) + return false; + position += 2; /* Skip size */ diff --git a/patches/0005-demux-avi-do-not-set-up-invalid-bitsperpixel.patch b/patches/0005-demux-avi-do-not-set-up-invalid-bitsperpixel.patch new file mode 100644 index 00000000..dfdf5d7e --- /dev/null +++ b/patches/0005-demux-avi-do-not-set-up-invalid-bitsperpixel.patch @@ -0,0 +1,25 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Tue, 11 Jun 2024 17:26:11 +0700 +Subject: demux: avi: do not set up invalid bitsperpixel + +UINT16_MAX is set and propagated from the bitmap header reader + +refs #28661 +--- + modules/demux/avi/avi.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c +index 4a8296d..7059ca9 100644 +--- a/modules/demux/avi/avi.c ++++ b/modules/demux/avi/avi.c +@@ -737,7 +737,8 @@ static int Open( vlc_object_t * p_this ) + tk->fmt.video.i_width = p_bih->biWidth; + tk->fmt.video.i_visible_height = + tk->fmt.video.i_height = p_bih->biHeight; +- tk->fmt.video.i_bits_per_pixel = p_bih->biBitCount; ++ if( p_bih->biBitCount <= 32 ) ++ tk->fmt.video.i_bits_per_pixel = p_bih->biBitCount; + tk->fmt.video.i_frame_rate = tk->i_rate; + tk->fmt.video.i_frame_rate_base = tk->i_scale; + diff --git a/patches/0006-opus_header-fix-channel-mapping-family-1-parsing.patch b/patches/0006-opus_header-fix-channel-mapping-family-1-parsing.patch new file mode 100644 index 00000000..c276c6c7 --- /dev/null +++ b/patches/0006-opus_header-fix-channel-mapping-family-1-parsing.patch @@ -0,0 +1,24 @@ +From: Tristan Matthews +Date: Wed, 1 Feb 2023 23:39:36 -0500 +Subject: opus_header: fix channel mapping family 1 parsing + +Fixes #27808 + +(cherry picked from commit 79fa6af0a98921f9d34933761f4fe20ef6c35309) +--- + modules/codec/opus_header.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/codec/opus_header.c b/modules/codec/opus_header.c +index 4069a5c..b134b20 100644 +--- a/modules/codec/opus_header.c ++++ b/modules/codec/opus_header.c +@@ -205,7 +205,7 @@ int opus_header_parse(const unsigned char *packet, int len, OpusHeader *h) + h->nb_coupled = ch; + + /* Multi-stream support */ +- if(h->channel_mapping == 2) ++ if(h->channel_mapping <= 2) + { + if (h->nb_coupled + h->nb_streams > 255) + return 0; diff --git a/patches/0007-vlc_common-remove-warnings-on-VLC_OBJECT.patch b/patches/0007-vlc_common-remove-warnings-on-VLC_OBJECT.patch new file mode 100644 index 00000000..33ccb0c6 --- /dev/null +++ b/patches/0007-vlc_common-remove-warnings-on-VLC_OBJECT.patch @@ -0,0 +1,33 @@ +From: Alexandre Janniaux +Date: Fri, 21 Jun 2024 16:11:28 +0200 +Subject: vlc_common: remove warnings on VLC_OBJECT + +Fix an infinite amount of warnings on Darwin: + + ../../include/vlc_variables.h:563:5: warning: due to lvalue conversion of the controlling expression, association of type 'const struct vlc_common_members' will never be selected because it is qualified [-Wunreachable-code-generic-assoc] + var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT + ^ + ../../include/vlc_variables.h:122:39: note: expanded from macro 'var_Create' + #define var_Create(a,b,c) var_Create( VLC_OBJECT(a), b, c ) + ^ + ../../include/vlc_common.h:481:15: note: expanded from macro 'VLC_OBJECT' + const struct vlc_common_members: (const vlc_object_t *)(&(x)->obj) \ +--- + include/vlc_common.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/vlc_common.h b/include/vlc_common.h +index 0898785..bc689c4 100644 +--- a/include/vlc_common.h ++++ b/include/vlc_common.h +@@ -477,8 +477,8 @@ struct vlc_common_members + #if !defined(__cplusplus) + # define VLC_OBJECT(x) \ + _Generic((x)->obj, \ +- struct vlc_common_members: (vlc_object_t *)(&(x)->obj), \ +- const struct vlc_common_members: (const vlc_object_t *)(&(x)->obj) \ ++ vlc_object_t: (vlc_object_t *)(&(x)->obj), \ ++ struct vlc_common_members: (vlc_object_t *)(x) \ + ) + #else + # define VLC_OBJECT( x ) ((vlc_object_t *)&(x)->obj) diff --git a/patches/0008-transcode-fix-destructive-assignment-after-drain.patch b/patches/0008-transcode-fix-destructive-assignment-after-drain.patch new file mode 100644 index 00000000..3ad33c5e --- /dev/null +++ b/patches/0008-transcode-fix-destructive-assignment-after-drain.patch @@ -0,0 +1,42 @@ +From: Alaric Senat +Date: Mon, 24 Jun 2024 18:11:23 +0200 +Subject: transcode: fix destructive assignment after drain + +The drain checks are done after the first encoder output fetch. At this +point, `out` is already filled with some frames gotten from the encoder +some lines above: + +``` +// ... + if( p_sys->i_threads >= 1 ) + { + /* Pick up any return data the encoder thread wants to output. */ + vlc_mutex_lock( &p_sys->lock_out ); + *out = p_sys->p_buffers; + p_sys->p_buffers = NULL; + vlc_mutex_unlock( &p_sys->lock_out ); + } + +// ... +``` + +This assignment currently leaks all previously gathered frames to +replace them by the drained output. This patch appends the drained +frames to the existing output instead. +--- + modules/stream_out/transcode/video.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/stream_out/transcode/video.c b/modules/stream_out/transcode/video.c +index 9070bab..e2065af 100644 +--- a/modules/stream_out/transcode/video.c ++++ b/modules/stream_out/transcode/video.c +@@ -906,7 +906,7 @@ end: + + vlc_join( p_stream->p_sys->thread, NULL ); + vlc_mutex_lock( &p_sys->lock_out ); +- *out = p_sys->p_buffers; ++ block_ChainAppend(out, p_sys->p_buffers); + p_sys->p_buffers = NULL; + vlc_mutex_unlock( &p_sys->lock_out ); + diff --git a/patches/0009-transcode-fix-picture-fifo-leak.patch b/patches/0009-transcode-fix-picture-fifo-leak.patch new file mode 100644 index 00000000..99d9c11f --- /dev/null +++ b/patches/0009-transcode-fix-picture-fifo-leak.patch @@ -0,0 +1,42 @@ +From: Alaric Senat +Date: Mon, 24 Jun 2024 18:11:59 +0200 +Subject: transcode: fix picture fifo leak + +Draining sets the abort flag. It was skipping the picture fifo deletion +before. +--- + modules/stream_out/transcode/video.c | 17 ++++++++++------- + 1 file changed, 10 insertions(+), 7 deletions(-) + +diff --git a/modules/stream_out/transcode/video.c b/modules/stream_out/transcode/video.c +index e2065af..c6fe9a5 100644 +--- a/modules/stream_out/transcode/video.c ++++ b/modules/stream_out/transcode/video.c +@@ -658,17 +658,20 @@ static int transcode_video_encoder_open( sout_stream_t *p_stream, + void transcode_video_close( sout_stream_t *p_stream, + sout_stream_id_sys_t *id ) + { +- if( p_stream->p_sys->i_threads >= 1 && !p_stream->p_sys->b_abort ) ++ if( p_stream->p_sys->i_threads >= 1 ) + { +- vlc_mutex_lock( &p_stream->p_sys->lock_out ); +- p_stream->p_sys->b_abort = true; +- vlc_cond_signal( &p_stream->p_sys->cond ); +- vlc_mutex_unlock( &p_stream->p_sys->lock_out ); ++ if (!p_stream->p_sys->b_abort) ++ { ++ vlc_mutex_lock( &p_stream->p_sys->lock_out ); ++ p_stream->p_sys->b_abort = true; ++ vlc_cond_signal( &p_stream->p_sys->cond ); ++ vlc_mutex_unlock( &p_stream->p_sys->lock_out ); + +- vlc_join( p_stream->p_sys->thread, NULL ); ++ vlc_join( p_stream->p_sys->thread, NULL ); ++ block_ChainRelease( p_stream->p_sys->p_buffers ); ++ } + + picture_fifo_Delete( p_stream->p_sys->pp_pics ); +- block_ChainRelease( p_stream->p_sys->p_buffers ); + } + + if( p_stream->p_sys->i_threads >= 1 ) diff --git a/patches/0010-sftp-fix-seek-for-large-files-on-32-bit-OS.patch b/patches/0010-sftp-fix-seek-for-large-files-on-32-bit-OS.patch new file mode 100644 index 00000000..05bfa8b2 --- /dev/null +++ b/patches/0010-sftp-fix-seek-for-large-files-on-32-bit-OS.patch @@ -0,0 +1,22 @@ +From: Aleksey Vasenev +Date: Sun, 23 Jun 2024 22:41:39 +0300 +Subject: sftp: fix seek for large files on 32-bit OS + +(cherry picked from commit 4698e0336447de8dc6f7214743082cc55b6ebd77) +--- + modules/access/sftp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/access/sftp.c b/modules/access/sftp.c +index 6ea5865..edf41fb 100644 +--- a/modules/access/sftp.c ++++ b/modules/access/sftp.c +@@ -547,7 +547,7 @@ static int Seek( stream_t* p_access, uint64_t i_pos ) + { + access_sys_t *sys = p_access->p_sys; + +- libssh2_sftp_seek( sys->file, i_pos ); ++ libssh2_sftp_seek64( sys->file, i_pos ); + return VLC_SUCCESS; + } + diff --git a/patches/0011-qt-hardcode-the-name-of-the-shortcut-for-the-AMD-VQ-.patch b/patches/0011-qt-hardcode-the-name-of-the-shortcut-for-the-AMD-VQ-.patch new file mode 100644 index 00000000..aacb32a9 --- /dev/null +++ b/patches/0011-qt-hardcode-the-name-of-the-shortcut-for-the-AMD-VQ-.patch @@ -0,0 +1,34 @@ +From: Steve Lhomme +Date: Wed, 3 Jul 2024 14:12:17 +0200 +Subject: qt: hardcode the name of the shortcut for the AMD VQ Enhancer + +Otherwise the name is the same of the DLL which doesn't correspond to +the shortcut we need to use. + +Fixes #28691 +--- + modules/gui/qt/components/preferences_widgets.cpp | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/modules/gui/qt/components/preferences_widgets.cpp b/modules/gui/qt/components/preferences_widgets.cpp +index 64121b6..b634d53 100644 +--- a/modules/gui/qt/components/preferences_widgets.cpp ++++ b/modules/gui/qt/components/preferences_widgets.cpp +@@ -632,9 +632,15 @@ ModuleListConfigControl::~ModuleListConfigControl() + void ModuleListConfigControl::checkbox_lists( module_t *p_parser ) + { + const char *help = module_get_help( p_parser ); +- checkbox_lists( qtr( module_GetLongName( p_parser ) ), ++ const char *module_name = module_GetLongName( p_parser ); ++ const char *module_shortcut = module_get_object( p_parser ); ++ ++ if ( !strcmp(module_name, "AMD VQ Enhancer")) ++ module_shortcut = "amf_vqenhancer"; ++ ++ checkbox_lists( qtr( module_name ), + help != NULL ? qtr( help ): "", +- module_get_object( p_parser ) ); ++ module_shortcut ); + } + + void ModuleListConfigControl::checkbox_lists( QString label, QString help, const char* psz_module ) diff --git a/patches/0012-packetizer-h264-fix-reading-prediction-weight-tables.patch b/patches/0012-packetizer-h264-fix-reading-prediction-weight-tables.patch new file mode 100644 index 00000000..d0782135 --- /dev/null +++ b/patches/0012-packetizer-h264-fix-reading-prediction-weight-tables.patch @@ -0,0 +1,52 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Tue, 2 Jul 2024 10:31:51 +0200 +Subject: packetizer: h264: fix reading prediction weight tables + +(cherry picked from commit f878115e184a4d896e4df39bccbde32ea6d9357c) +--- + modules/packetizer/h264_nal.c | 4 ++-- + modules/packetizer/h264_nal.h | 1 + + modules/packetizer/h264_slice.c | 3 ++- + 3 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/modules/packetizer/h264_nal.c b/modules/packetizer/h264_nal.c +index 10c267e..2c70771 100644 +--- a/modules/packetizer/h264_nal.c ++++ b/modules/packetizer/h264_nal.c +@@ -591,8 +591,8 @@ static bool h264_parse_picture_parameter_set_rbsp( bs_t *p_bs, + } + } + +- bs_read_ue( p_bs ); /* num_ref_idx_l0_default_active_minus1 */ +- bs_read_ue( p_bs ); /* num_ref_idx_l1_default_active_minus1 */ ++ p_pps->num_ref_idx_l01_default_active_minus1[0] = bs_read_ue( p_bs ); ++ p_pps->num_ref_idx_l01_default_active_minus1[1] = bs_read_ue( p_bs ); + p_pps->weighted_pred_flag = bs_read( p_bs, 1 ); + p_pps->weighted_bipred_idc = bs_read( p_bs, 2 ); + bs_read_se( p_bs ); /* pic_init_qp_minus26 */ +diff --git a/modules/packetizer/h264_nal.h b/modules/packetizer/h264_nal.h +index edb9c04..5f6d74a 100644 +--- a/modules/packetizer/h264_nal.h ++++ b/modules/packetizer/h264_nal.h +@@ -150,6 +150,7 @@ struct h264_picture_parameter_set_t + uint8_t i_redundant_pic_present_flag; + uint8_t weighted_pred_flag; + uint8_t weighted_bipred_idc; ++ uint32_t num_ref_idx_l01_default_active_minus1[2]; + }; + + struct h264_sequence_parameter_set_extension_t +diff --git a/modules/packetizer/h264_slice.c b/modules/packetizer/h264_slice.c +index d05256e..1c4d2a2 100644 +--- a/modules/packetizer/h264_slice.c ++++ b/modules/packetizer/h264_slice.c +@@ -101,7 +101,8 @@ bool h264_decode_slice( const uint8_t *p_buffer, size_t i_buffer, + if( p_pps->i_redundant_pic_present_flag ) + bs_read_ue( &s ); /* redudant_pic_count */ + +- unsigned num_ref_idx_l01_active_minus1[2] = {0 , 0}; ++ uint32_t num_ref_idx_l01_active_minus1[2] = { p_pps->num_ref_idx_l01_default_active_minus1[0], ++ p_pps->num_ref_idx_l01_default_active_minus1[1] }; + + if( i_slice_type == 1 || i_slice_type == 6 ) /* B slices */ + bs_read1( &s ); /* direct_spatial_mv_pred_flag */ diff --git a/patches/0013-demux-adaptive-fix-start-with-indexes-only.patch b/patches/0013-demux-adaptive-fix-start-with-indexes-only.patch new file mode 100644 index 00000000..f661cd4b --- /dev/null +++ b/patches/0013-demux-adaptive-fix-start-with-indexes-only.patch @@ -0,0 +1,59 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Wed, 26 Jun 2024 16:36:01 +0700 +Subject: demux: adaptive: fix start with indexes only + +refs #28683 + +(cherry picked from commit 9f9c466bc14c1dcd75564c7cd18d031ea9e76325) +--- + modules/demux/adaptive/SegmentTracker.cpp | 6 +++--- + modules/demux/adaptive/Streams.cpp | 3 +++ + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/modules/demux/adaptive/SegmentTracker.cpp b/modules/demux/adaptive/SegmentTracker.cpp +index 1ffae9e..f40013a 100644 +--- a/modules/demux/adaptive/SegmentTracker.cpp ++++ b/modules/demux/adaptive/SegmentTracker.cpp +@@ -296,7 +296,7 @@ SegmentTracker::prepareChunk(bool switch_allowed, Position pos) const + bool b_gap = true; + ISegment *datasegment = pos.rep->getNextMediaSegment(pos.number, &pos.number, &b_gap); + +- if(!datasegment) ++ if(!datasegment && (!pos.rep->needsIndex() || pos.index_sent)) + return ChunkEntry(); + + ISegment *segment = nullptr; +@@ -322,12 +322,12 @@ SegmentTracker::prepareChunk(bool switch_allowed, Position pos) const + if(!segmentChunk) + return ChunkEntry(); + +- if(segment != datasegment) /* need to set for init */ ++ if(segment != datasegment && datasegment) /* need to set for init */ + segmentChunk->discontinuitySequenceNumber = datasegment->getDiscontinuitySequenceNumber(); + + vlc_tick_t startTime = VLC_TICK_INVALID; + vlc_tick_t duration = 0; +- vlc_tick_t displayTime = datasegment->getDisplayTime(); ++ vlc_tick_t displayTime = datasegment ? datasegment->getDisplayTime() : VLC_TICK_INVALID; + /* timings belong to timeline and are not set on the segment or need profile timescale */ + if(pos.rep->getPlaybackTimeDurationBySegmentNumber(pos.number, &startTime, &duration)) + startTime += VLC_TICK_0; +diff --git a/modules/demux/adaptive/Streams.cpp b/modules/demux/adaptive/Streams.cpp +index c15d7e1..f2a4719 100644 +--- a/modules/demux/adaptive/Streams.cpp ++++ b/modules/demux/adaptive/Streams.cpp +@@ -625,11 +625,14 @@ ChunkInterface * AbstractStream::getNextChunk() const + { + const bool b_restarting = fakeEsOut()->restarting(); + ChunkInterface *ck = segmentTracker->getNextChunk(!b_restarting); ++ + if(ck && !fakeEsOut()->hasSegmentStartTimes()) + fakeEsOut()->setSegmentStartTimes(startTimeContext); + + if(ck && !fakeEsOut()->hasSynchronizationReference()) + { ++ if(!fakeEsOut()->hasSegmentStartTimes()) ++ return ck; + assert(fakeEsOut()->hasSegmentStartTimes()); + SynchronizationReference r; + if(segmentTracker->getSynchronizationReference(currentSequence, startTimeContext.media, r)) diff --git a/patches/0014-UPnP-remove-SAT-IP-channel-list-fallback.patch b/patches/0014-UPnP-remove-SAT-IP-channel-list-fallback.patch new file mode 100644 index 00000000..d78d3e0e --- /dev/null +++ b/patches/0014-UPnP-remove-SAT-IP-channel-list-fallback.patch @@ -0,0 +1,194 @@ +From: =?utf-8?q?Felix_Paul_K=C3=BChne?= +Date: Thu, 4 Jul 2024 06:29:28 +0200 +Subject: UPnP: remove SAT>IP channel list fallback + +When introducing SAT>IP support, we added a fallback mechanism on +officially published channel lists in case the user neither specified +a custom list nor the used set-top box provided one. + +With the end of the SAT>IP Alliance that was dissolved 3 years ago, the +fallback server is no longer available and there will be no replacement +so this feature was removed. + +Fixes #28684 + +(cherry picked from commit 3df7b6e1187030591febd8e1bdd2712c0d6af132) +--- + modules/services_discovery/upnp.cpp | 125 +++++++++--------------------------- + 1 file changed, 31 insertions(+), 94 deletions(-) + +diff --git a/modules/services_discovery/upnp.cpp b/modules/services_discovery/upnp.cpp +index 428aeff..8b021af 100644 +--- a/modules/services_discovery/upnp.cpp ++++ b/modules/services_discovery/upnp.cpp +@@ -73,14 +73,7 @@ const char* MEDIA_SERVER_DEVICE_TYPE = "urn:schemas-upnp-org:device:MediaServer: + const char* CONTENT_DIRECTORY_SERVICE_TYPE = "urn:schemas-upnp-org:service:ContentDirectory:1"; + const char* SATIP_SERVER_DEVICE_TYPE = "urn:ses-com:device:SatIPServer:1"; + +-#define SATIP_CHANNEL_LIST N_("SAT>IP channel list") + #define SATIP_CHANNEL_LIST_URL N_("Custom SAT>IP channel list URL") +-static const char *const ppsz_satip_channel_lists[] = { +- "auto", "ASTRA_19_2E", "ASTRA_28_2E", "ASTRA_23_5E", "MasterList", "ServerList", "CustomList" +-}; +-static const char *const ppsz_readible_satip_channel_lists[] = { +- N_("Auto"), "Astra 19.2°E", "Astra 28.2°E", "Astra 23.5°E", N_("Master List"), N_("Server List"), N_("Custom List") +-}; + + /* + * VLC handle +@@ -128,9 +121,7 @@ vlc_module_begin() + set_capability( "services_discovery", 0 ); + set_callbacks( SD::Open, SD::Close ); + +- add_string( "satip-channelist", "auto", SATIP_CHANNEL_LIST, +- SATIP_CHANNEL_LIST, false ) +- change_string_list( ppsz_satip_channel_lists, ppsz_readible_satip_channel_lists ) ++ add_obsolete_string( "satip-channelist" ) /* since 3.0.22 */ + add_string( "satip-channellist-url", NULL, SATIP_CHANNEL_LIST_URL, + SATIP_CHANNEL_LIST_URL, false ) + +@@ -606,114 +597,60 @@ MediaServerList::parseSatipServer( IXML_Element* p_device_element, const char *p + { + SD::MediaServerDesc* p_server = NULL; + +- char *psz_satip_channellist = var_InheritString( m_sd, "satip-channelist"); +- +- /* In Auto mode, default to MasterList list from satip.info */ +- bool automode = false; +- if( !psz_satip_channellist || /* On lookup failure or empty string, use auto mode */ +- strcmp(psz_satip_channellist, "auto") == 0 || +- strcmp(psz_satip_channellist, "Auto") == 0 ) /* for backwards compatibility */ +- { +- automode = true; +- if( psz_satip_channellist ) +- free(psz_satip_channellist); +- psz_satip_channellist = strdup( "MasterList" ); +- if( unlikely( !psz_satip_channellist ) ) +- return; +- } +- + vlc_url_t url; + vlc_UrlParse( &url, psz_base_url ); + + /* Part 1: a user may have provided a custom playlist url */ +- if (strcmp(psz_satip_channellist, "CustomList") == 0) { +- char *psz_satip_playlist_url = var_InheritString( m_sd, "satip-channellist-url" ); +- if ( psz_satip_playlist_url ) { +- p_server = new(std::nothrow) SD::MediaServerDesc( psz_udn, psz_friendly_name, psz_satip_playlist_url, iconUrl ); +- +- if( likely( p_server ) ) { +- p_server->satIpHost = url.psz_host; +- p_server->isSatIp = true; +- if( !addServer( p_server ) ) { +- delete p_server; +- } +- } ++ char *psz_satip_playlist_url = var_InheritString( m_sd, "satip-channellist-url" ); ++ if ( psz_satip_playlist_url ) { ++ p_server = new(std::nothrow) SD::MediaServerDesc( psz_udn, psz_friendly_name, psz_satip_playlist_url, iconUrl ); + +- /* to comply with the SAT>IP specification, we don't fall back on another channel list if this path failed */ +- free( psz_satip_channellist ); +- free( psz_satip_playlist_url ); +- vlc_UrlClean( &url ); +- return; ++ if ( likely( p_server ) ) { ++ p_server->satIpHost = url.psz_host; ++ p_server->isSatIp = true; ++ if( !addServer( p_server ) ) { ++ delete p_server; ++ } + } ++ ++ /* to comply with the SAT>IP specification, we don't fall back on another channel list if this path failed */ ++ free( psz_satip_playlist_url ); ++ vlc_UrlClean( &url ); ++ return; + } + + /* Part 2: device playlist + * In Automatic mode, or if requested by the user, check for a SAT>IP m3u list on the device */ +- if (automode || strcmp(psz_satip_channellist, "ServerList") == 0) { +- const char* psz_m3u_url = xml_getChildElementValue( p_device_element, "satip:X_SATIPM3U" ); +- if ( psz_m3u_url ) { +- if ( strncmp( "http", psz_m3u_url, 4) ) +- { +- char* psz_url = NULL; +- if ( UpnpResolveURL2( psz_base_url, psz_m3u_url, &psz_url ) == UPNP_E_SUCCESS ) +- { +- p_server = new(std::nothrow) SD::MediaServerDesc( psz_udn, psz_friendly_name, psz_url, iconUrl ); +- free(psz_url); +- } +- } else { +- p_server = new(std::nothrow) SD::MediaServerDesc( psz_udn, psz_friendly_name, psz_m3u_url, iconUrl ); +- } +- +- if ( unlikely( !p_server ) ) ++ const char* psz_m3u_url = xml_getChildElementValue( p_device_element, "satip:X_SATIPM3U" ); ++ if ( psz_m3u_url ) { ++ if ( strncmp( "http", psz_m3u_url, 4) ) ++ { ++ char* psz_url = NULL; ++ if ( UpnpResolveURL2( psz_base_url, psz_m3u_url, &psz_url ) == UPNP_E_SUCCESS ) + { +- free( psz_satip_channellist ); +- vlc_UrlClean( &url ); +- return; ++ p_server = new(std::nothrow) SD::MediaServerDesc( psz_udn, psz_friendly_name, psz_url, iconUrl ); ++ free(psz_url); + } +- +- p_server->satIpHost = url.psz_host; +- p_server->isSatIp = true; +- if ( !addServer( p_server ) ) +- delete p_server; + } else { +- msg_Dbg( m_sd, "SAT>IP server '%s' did not provide a playlist", url.psz_host); ++ p_server = new(std::nothrow) SD::MediaServerDesc( psz_udn, psz_friendly_name, psz_m3u_url, iconUrl ); + } + +- if (!automode) { +- /* to comply with the SAT>IP specifications, we don't fallback on another channel list if this path failed, +- * but in Automatic mode, we continue */ +- free(psz_satip_channellist); ++ if ( unlikely( !p_server ) ) { + vlc_UrlClean( &url ); + return; + } +- } +- +- /* Part 3: satip.info playlist +- * In the normal case, fetch a playlist from the satip website, +- * which will be processed by a lua script a bit later, to make it work sanely +- * MasterList is a list of usual Satellites */ +- +- char *psz_url; +- if (asprintf( &psz_url, "http://www.satip.info/Playlists/%s.m3u", +- psz_satip_channellist ) < 0 ) { +- vlc_UrlClean( &url ); +- free( psz_satip_channellist ); +- return; +- } +- +- p_server = new(std::nothrow) SD::MediaServerDesc( psz_udn, +- psz_friendly_name, psz_url, iconUrl ); + +- if( likely( p_server ) ) { + p_server->satIpHost = url.psz_host; + p_server->isSatIp = true; +- if( !addServer( p_server ) ) { ++ if ( !addServer( p_server ) ) { + delete p_server; ++ } else { ++ msg_Err( m_sd, "SAT>IP server '%s' did not provide a playlist", url.psz_host); + } ++ ++ /* to comply with the SAT>IP specifications, we don't fallback on another channel list if this path failed */ ++ vlc_UrlClean( &url ); + } +- free( psz_url ); +- free( psz_satip_channellist ); +- vlc_UrlClean( &url ); + } + + void MediaServerList::removeServer( const std::string& udn ) diff --git a/patches/0015-spectrogram-fix-FFT-result-scaling-factor.patch b/patches/0015-spectrogram-fix-FFT-result-scaling-factor.patch new file mode 100644 index 00000000..c75d7592 --- /dev/null +++ b/patches/0015-spectrogram-fix-FFT-result-scaling-factor.patch @@ -0,0 +1,85 @@ +From: Maxime Even +Date: Tue, 9 Jul 2024 13:20:25 +0200 +Subject: spectrogram: fix FFT result scaling factor +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +This function is just a scaling operation that passes a value between 0 and +FFT_SCALING_VALUE to a value between 0 and 2^16-1. + +It is therefore a power that must be applied here and not a xor. + +Moreover, the initial formula was quite wrong since it was assuming that the max_input +value, which is a signed int 16, was 2^15 = 32768 where it is in fact 2^15-1=32767. + +Moreover, the initial formula wasn't taking into account that, since the +output of the fft_perform is the sum of two variables which have for max value +(FFT_BUFFER_SIZE / 2 * INT16_MAX)^2, then we need to multiply the final max +value by 2. + +Corrects the following compiler warnings: + visualization/glspectrum.c:528:43: warning: result of ‘2^16’ is 18; did you mean ‘1 << 16’ (65536)? [-Wxor-used-as-pow] + visualization/visual/effects.c:216:40: warning: result of ‘2^16’ is 18; did you mean ‘1 << 16’ (65536)? [-Wxor-used-as-pow] + +Fixes #28506 + +Co-authored-by: Disha Baghel + +(cherry picked from commit 77a08a60f72bda081d144119e4d0a57a9c3c72f6) +--- + modules/visualization/glspectrum.c | 8 +++++--- + modules/visualization/visual/effects.c | 5 ++++- + modules/visualization/visual/fft.h | 4 ++++ + 3 files changed, 13 insertions(+), 4 deletions(-) + +diff --git a/modules/visualization/glspectrum.c b/modules/visualization/glspectrum.c +index fdd0127..bf0ffd6 100644 +--- a/modules/visualization/glspectrum.c ++++ b/modules/visualization/glspectrum.c +@@ -445,9 +445,11 @@ static void *Thread( void *p_data ) + window_scale_in_place (p_buffer1, &wind_ctx); + fft_perform (p_buffer1, p_output, p_state); + +- for (i = 0; i< FFT_BUFFER_SIZE; ++i) +- p_dest[i] = p_output[i] * (2 ^ 16) +- / ((FFT_BUFFER_SIZE / 2 * 32768) ^ 2); ++ for( i = 0; i< FFT_BUFFER_SIZE ; i++ ) ++ { ++ /* Scale the output between 0 and UINT16MAX */ ++ p_dest[i] = p_output[i] * UINT16_MAX / FFT_SCALING_VALUE; ++ } + + for (i = 0 ; i < NB_BANDS; i++) + { +diff --git a/modules/visualization/visual/effects.c b/modules/visualization/visual/effects.c +index 8cb8c13..9b7b07a 100644 +--- a/modules/visualization/visual/effects.c ++++ b/modules/visualization/visual/effects.c +@@ -214,7 +214,10 @@ static int spectrum_Run(visual_effect_t * p_effect, vlc_object_t *p_aout, + window_scale_in_place( p_buffer1, &wind_ctx ); + fft_perform( p_buffer1, p_output, p_state); + for( i = 0; i< FFT_BUFFER_SIZE ; i++ ) +- p_dest[i] = p_output[i] * ( 2 ^ 16 ) / ( ( FFT_BUFFER_SIZE / 2 * 32768 ) ^ 2 ); ++ { ++ /* Scale the output between 0 and UINT16MAX */ ++ p_dest[i] = p_output[i] * UINT16_MAX / FFT_SCALING_VALUE; ++ } + + /* Compute the horizontal position of the first band */ + i_band_width = floor( p_effect->i_width / i_nb_bands); +diff --git a/modules/visualization/visual/fft.h b/modules/visualization/visual/fft.h +index f4c8a6b..fd3b24f 100644 +--- a/modules/visualization/visual/fft.h ++++ b/modules/visualization/visual/fft.h +@@ -29,6 +29,10 @@ + + #define FFT_BUFFER_SIZE (1 << FFT_BUFFER_SIZE_LOG) + ++#define FFT_MAX_VALUE_OUTPUT ((uint64_t)(FFT_BUFFER_SIZE/2 * INT16_MAX)) ++ ++#define FFT_SCALING_VALUE (FFT_MAX_VALUE_OUTPUT * FFT_MAX_VALUE_OUTPUT * 2) ++ + /* sound sample - should be an signed 16 bit value */ + typedef short int sound_sample; + diff --git a/patches/0016-spectrogram-convert-int16-to-unsigned-for-correct-ra.patch b/patches/0016-spectrogram-convert-int16-to-unsigned-for-correct-ra.patch new file mode 100644 index 00000000..2e0b9dbc --- /dev/null +++ b/patches/0016-spectrogram-convert-int16-to-unsigned-for-correct-ra.patch @@ -0,0 +1,51 @@ +From: Maxime Even +Date: Mon, 8 Jul 2024 17:41:39 +0200 +Subject: spectrogram: convert int16 to unsigned for correct range + +p_dest is used to set the height of the column, and it is used +as a variable defined from zero to 2^16 - 1. It is therefore +considered in the rest of the program as an unsigned int 16. +Moreover, the value that we put inside are a sum of two squared +real value, so they are necessarily positive. + +(cherry picked from commit 94a8d152eadd53073305c95d221eca7623b4ed6c) +--- + modules/visualization/glspectrum.c | 2 +- + modules/visualization/visual/effects.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/modules/visualization/glspectrum.c b/modules/visualization/glspectrum.c +index bf0ffd6..96ee3fe 100644 +--- a/modules/visualization/glspectrum.c ++++ b/modules/visualization/glspectrum.c +@@ -381,7 +381,7 @@ static void *Thread( void *p_data ) + float p_output[FFT_BUFFER_SIZE]; /* Raw FFT Result */ + int16_t p_buffer1[FFT_BUFFER_SIZE]; /* Buffer on which we perform + the FFT (first channel) */ +- int16_t p_dest[FFT_BUFFER_SIZE]; /* Adapted FFT result */ ++ uint16_t p_dest[FFT_BUFFER_SIZE]; /* Adapted FFT result */ + float *p_buffl = (float*)block->p_buffer; /* Original buffer */ + + int16_t *p_buffs; /* int16_t converted buffer */ +diff --git a/modules/visualization/visual/effects.c b/modules/visualization/visual/effects.c +index 9b7b07a..d5a7209 100644 +--- a/modules/visualization/visual/effects.c ++++ b/modules/visualization/visual/effects.c +@@ -109,7 +109,7 @@ static int spectrum_Run(visual_effect_t * p_effect, vlc_object_t *p_aout, + + int i , j , y , k; + int i_line; +- int16_t p_dest[FFT_BUFFER_SIZE]; /* Adapted FFT result */ ++ uint16_t p_dest[FFT_BUFFER_SIZE]; /* Adapted FFT result */ + int16_t p_buffer1[FFT_BUFFER_SIZE]; /* Buffer on which we perform + the FFT (first channel) */ + +@@ -450,7 +450,7 @@ static int spectrometer_Run(visual_effect_t * p_effect, vlc_object_t *p_aout, + + int i , j , k; + int i_line = 0; +- int16_t p_dest[FFT_BUFFER_SIZE]; /* Adapted FFT result */ ++ uint16_t p_dest[FFT_BUFFER_SIZE]; /* Adapted FFT result */ + int16_t p_buffer1[FFT_BUFFER_SIZE]; /* Buffer on which we perform + the FFT (first channel) */ + float *p_buffl = /* Original buffer */ diff --git a/patches/0017-spectrogram-allows-better-visualization-of-low-frequ.patch b/patches/0017-spectrogram-allows-better-visualization-of-low-frequ.patch new file mode 100644 index 00000000..d5f07328 --- /dev/null +++ b/patches/0017-spectrogram-allows-better-visualization-of-low-frequ.patch @@ -0,0 +1,67 @@ +From: Maxime Even +Date: Mon, 8 Jul 2024 17:51:14 +0200 +Subject: spectrogram: allows better visualization of low frequencies + +In some cases, Y which represents the height of a column was equal to 1 +and therefore when passed through the log, the output displayed was +zero, by adding this 0.1, this allows you to see a column when y = 1 +without really changing the height of each column + +(cherry picked from commit c347fed91e76bd31387171e1ff67224c21194362) +--- + modules/visualization/glspectrum.c | 7 +++++-- + modules/visualization/visual/effects.c | 7 +++++-- + 2 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/modules/visualization/glspectrum.c b/modules/visualization/glspectrum.c +index 96ee3fe..832a52d 100644 +--- a/modules/visualization/glspectrum.c ++++ b/modules/visualization/glspectrum.c +@@ -58,6 +58,8 @@ static void Close(vlc_object_t *); + #define HEIGHT_TEXT N_("Video height") + #define HEIGHT_LONGTEXT N_("The height of the visualization window, in pixels.") + ++#define LOG_OFFSET 0.1 ++ + vlc_module_begin() + set_shortname(N_("glSpectrum")) + set_description(N_("3D OpenGL spectrum visualization")) +@@ -466,8 +468,9 @@ static void *Thread( void *p_data ) + if (p_dest[j] > y) + y = p_dest[j]; + } +- /* Calculate the height of the bar */ +- float new_height = y != 0 ? logf(y) * 0.4f : 0; ++ /* Calculate the height of the bar ++ This log_offset makes it possible to display low values */ ++ float new_height = y != 0 ? logf( y + LOG_OFFSET ) * 0.4f : 0; + height[i] = new_height > height[i] + ? new_height : height[i]; + } +diff --git a/modules/visualization/visual/effects.c b/modules/visualization/visual/effects.c +index d5a7209..6961c54 100644 +--- a/modules/visualization/visual/effects.c ++++ b/modules/visualization/visual/effects.c +@@ -46,6 +46,8 @@ + #define GRAD_ANGLE_MAX 0.5 + #define GRAD_INCR 0.01 + ++#define LOG_OFFSET 0.1 ++ + /***************************************************************************** + * dummy_Run + *****************************************************************************/ +@@ -231,10 +233,11 @@ static int spectrum_Run(visual_effect_t * p_effect, vlc_object_t *p_aout, + if ( p_dest[j] > y ) + y = p_dest[j]; + } +- /* Calculate the height of the bar */ ++ /* Calculate the height of the bar ++ This log_offset makes it possible to display low values */ + if( y != 0 ) + { +- height[i] = log( y ) * 30; ++ height[i] = log( y + LOG_OFFSET ) * 30; + if( height[i] > 380 ) + height[i] = 380; + } diff --git a/patches/0018-magnify-check-the-image-conversion-worked.patch b/patches/0018-magnify-check-the-image-conversion-worked.patch new file mode 100644 index 00000000..0a53a82b --- /dev/null +++ b/patches/0018-magnify-check-the-image-conversion-worked.patch @@ -0,0 +1,44 @@ +From: Steve Lhomme +Date: Thu, 18 Jul 2024 09:23:58 +0200 +Subject: magnify: check the image conversion worked + +return NULL on failure as we cannot produce the required output. + +Fixes #28707 + +(cherry picked from commit 990de75bc0a7db5f2c4e4cb88e868b75b689ac7d) (rebased) +rebased: +- picture_CopyPixels is called picture_CopyVisiblePixels on 4.0 +Signed-off-by: Steve Lhomme +--- + modules/video_filter/magnify.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/modules/video_filter/magnify.c b/modules/video_filter/magnify.c +index 5f94f2d..375e6e7 100644 +--- a/modules/video_filter/magnify.c ++++ b/modules/video_filter/magnify.c +@@ -244,6 +244,11 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) + /* */ + fmt_out = p_filter->fmt_out.video; + p_converted = image_Convert( p_sys->p_image, p_pic, &fmt_in, &fmt_out ); ++ if (unlikely(!p_converted)) ++ { ++ picture_Release( p_outpic ); ++ return NULL; ++ } + memcpy(p_pic->p, orig_planes, sizeof orig_planes); + + picture_CopyPixels( p_outpic, p_converted ); +@@ -267,6 +272,11 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) + fmt_out.i_height = fmt_out.i_visible_height = (fmt_out.i_visible_height/VIS_ZOOM) & ~1; + p_converted = image_Convert( p_sys->p_image, p_pic, + &p_pic->format, &fmt_out ); ++ if (unlikely(!p_converted)) ++ { ++ picture_Release( p_outpic ); ++ return NULL; ++ } + + /* It will put only what can be copied at the top left */ + picture_CopyVisiblePixels( p_outpic, p_converted ); diff --git a/patches/0019-opencv-check-the-image-conversion-worked.patch b/patches/0019-opencv-check-the-image-conversion-worked.patch new file mode 100644 index 00000000..aaa563e2 --- /dev/null +++ b/patches/0019-opencv-check-the-image-conversion-worked.patch @@ -0,0 +1,38 @@ +From: Steve Lhomme +Date: Thu, 18 Jul 2024 09:27:00 +0200 +Subject: opencv: check the image conversion worked + +Otherwise we release the output picture that would have been used and returned. + +(cherry picked from commit 19813291fcfb31ddd91a2e4d0f1d37ad3239d300) (rebased) +rebased: +- p_filter->p_sys is p_sys on 4.0 +Signed-off-by: Steve Lhomme +--- + modules/video_filter/opencv_wrapper.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +diff --git a/modules/video_filter/opencv_wrapper.c b/modules/video_filter/opencv_wrapper.c +index 5da26a1..2d5966b 100644 +--- a/modules/video_filter/opencv_wrapper.c ++++ b/modules/video_filter/opencv_wrapper.c +@@ -444,9 +444,16 @@ static picture_t* Filter( filter_t* p_filter, picture_t* p_pic ) + p_filter->p_sys->p_proc_image, + &(p_filter->p_sys->p_proc_image->format), + &fmt_out ); +- +- picture_CopyPixels( p_outpic, p_outpic_tmp ); +- CopyInfoAndRelease( p_outpic, p_outpic_tmp ); ++ if (unlikely(!p_outpic_tmp)) ++ { ++ picture_Release(p_outpic); ++ p_outpic = NULL; ++ } ++ else ++ { ++ picture_CopyPixels( p_outpic, p_outpic_tmp ); ++ CopyInfoAndRelease( p_outpic, p_outpic_tmp ); ++ } + } else if( p_filter->p_sys->i_internal_chroma == CINPUT ) { + picture_CopyPixels( p_outpic, p_filter->p_sys->p_proc_image ); + picture_CopyProperties( p_outpic, p_filter->p_sys->p_proc_image ); diff --git a/patches/0020-packetizer-hxxx_common-rename-function-pointer.patch b/patches/0020-packetizer-hxxx_common-rename-function-pointer.patch new file mode 100644 index 00000000..20821b9a --- /dev/null +++ b/patches/0020-packetizer-hxxx_common-rename-function-pointer.patch @@ -0,0 +1,39 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Thu, 27 Jun 2024 15:08:55 +0700 +Subject: packetizer: hxxx_common: rename function pointer + +(cherry picked from commit 6e7b32f64db918b3aa2deefe885571b734d32f53) +--- + modules/packetizer/hxxx_common.c | 3 ++- + modules/packetizer/hxxx_common.h | 4 ++-- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/modules/packetizer/hxxx_common.c b/modules/packetizer/hxxx_common.c +index 3ba7cbc..a6cacfd 100644 +--- a/modules/packetizer/hxxx_common.c ++++ b/modules/packetizer/hxxx_common.c +@@ -111,7 +111,8 @@ block_t * cc_storage_get_current( cc_storage_t *p_ccs, decoder_cc_desc_t *p_desc + * Will prepend a SPS and PPS before each keyframe + ****************************************************************************/ + block_t *PacketizeXXC1( decoder_t *p_dec, uint8_t i_nal_length_size, +- block_t **pp_block, pf_annexb_nal_packetizer pf_nal_parser ) ++ block_t **pp_block, ++ pf_annexb_nal_parse pf_nal_parser ) + { + block_t *p_block; + block_t *p_ret = NULL; +diff --git a/modules/packetizer/hxxx_common.h b/modules/packetizer/hxxx_common.h +index eff2f0b..93b33c4 100644 +--- a/modules/packetizer/hxxx_common.h ++++ b/modules/packetizer/hxxx_common.h +@@ -37,8 +37,8 @@ block_t * cc_storage_get_current( cc_storage_t *p_ccs, decoder_cc_desc_t * ); + + /* */ + +-typedef block_t * (*pf_annexb_nal_packetizer)(decoder_t *, bool *, block_t *); +-block_t *PacketizeXXC1( decoder_t *, uint8_t, block_t **, pf_annexb_nal_packetizer ); ++typedef block_t * (*pf_annexb_nal_parse)(decoder_t *, bool *, block_t *); ++block_t *PacketizeXXC1( decoder_t *, uint8_t, block_t **, pf_annexb_nal_parse ); + + #endif // HXXX_COMMON_H + diff --git a/patches/0021-packetizer-hxxx-pass-opaque-to-callbacks-instead-of-.patch b/patches/0021-packetizer-hxxx-pass-opaque-to-callbacks-instead-of-.patch new file mode 100644 index 00000000..b0c096d0 --- /dev/null +++ b/patches/0021-packetizer-hxxx-pass-opaque-to-callbacks-instead-of-.patch @@ -0,0 +1,116 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Thu, 27 Jun 2024 18:25:07 +0700 +Subject: packetizer: hxxx: pass opaque to callbacks instead of decoder + +(cherry picked from commit 09655dea51c0d383cc86c0f5020e3bea160c69bf) +--- + modules/packetizer/h264.c | 9 +++++++-- + modules/packetizer/hevc.c | 9 +++++++-- + modules/packetizer/hxxx_common.c | 8 ++++---- + modules/packetizer/hxxx_common.h | 6 ++++-- + 4 files changed, 22 insertions(+), 10 deletions(-) + +diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c +index b58e8e6..b015079 100644 +--- a/modules/packetizer/h264.c ++++ b/modules/packetizer/h264.c +@@ -152,6 +152,10 @@ static int PacketizeValidate( void *p_private, block_t * ); + static block_t * PacketizeDrain( void *p_private ); + + static block_t *ParseNALBlock( decoder_t *, bool *pb_ts_used, block_t * ); ++static inline block_t *ParseNALBlockW( void *opaque, bool *pb_ts_used, block_t *p_frag ) ++{ ++ return ParseNALBlock( (decoder_t *) opaque, pb_ts_used, p_frag ); ++} + + static block_t *OutputPicture( decoder_t *p_dec ); + static void PutSPS( decoder_t *p_dec, block_t *p_frag ); +@@ -530,8 +534,9 @@ static block_t *PacketizeAVC1( decoder_t *p_dec, block_t **pp_block ) + { + decoder_sys_t *p_sys = p_dec->p_sys; + +- return PacketizeXXC1( p_dec, p_sys->i_avcC_length_size, +- pp_block, ParseNALBlock ); ++ return PacketizeXXC1( p_dec, VLC_OBJECT(p_dec), ++ p_sys->i_avcC_length_size, pp_block, ++ ParseNALBlockW ); + } + + /***************************************************************************** +diff --git a/modules/packetizer/hevc.c b/modules/packetizer/hevc.c +index 990cc03..dc8877a 100644 +--- a/modules/packetizer/hevc.c ++++ b/modules/packetizer/hevc.c +@@ -69,6 +69,10 @@ static void PacketizeFlush( decoder_t * ); + static void PacketizeReset(void *p_private, bool b_broken); + static block_t *PacketizeParse(void *p_private, bool *pb_ts_used, block_t *); + static block_t *ParseNALBlock(decoder_t *, bool *pb_ts_used, block_t *); ++static inline block_t *ParseNALBlockW( void *opaque, bool *pb_ts_used, block_t *p_frag ) ++{ ++ return ParseNALBlock( (decoder_t *) opaque, pb_ts_used, p_frag ); ++} + static int PacketizeValidate(void *p_private, block_t *); + static block_t * PacketizeDrain(void *); + static bool ParseSEICallback( const hxxx_sei_data_t *, void * ); +@@ -297,8 +301,9 @@ static block_t *PacketizeHVC1(decoder_t *p_dec, block_t **pp_block) + { + decoder_sys_t *p_sys = p_dec->p_sys; + +- return PacketizeXXC1( p_dec, p_sys->i_nal_length_size, +- pp_block, ParseNALBlock ); ++ return PacketizeXXC1( p_dec, VLC_OBJECT(p_dec), ++ p_sys->i_nal_length_size, pp_block, ++ ParseNALBlockW ); + } + + static block_t *PacketizeAnnexB(decoder_t *p_dec, block_t **pp_block) +diff --git a/modules/packetizer/hxxx_common.c b/modules/packetizer/hxxx_common.c +index a6cacfd..043dc38 100644 +--- a/modules/packetizer/hxxx_common.c ++++ b/modules/packetizer/hxxx_common.c +@@ -110,8 +110,8 @@ block_t * cc_storage_get_current( cc_storage_t *p_ccs, decoder_cc_desc_t *p_desc + * Will always use 4 byte 0 0 0 1 startcodes + * Will prepend a SPS and PPS before each keyframe + ****************************************************************************/ +-block_t *PacketizeXXC1( decoder_t *p_dec, uint8_t i_nal_length_size, +- block_t **pp_block, ++block_t *PacketizeXXC1( void *p_private, vlc_object_t *p_obj, ++ uint8_t i_nal_length_size, block_t **pp_block, + pf_annexb_nal_parse pf_nal_parser ) + { + block_t *p_block; +@@ -146,7 +146,7 @@ block_t *PacketizeXXC1( decoder_t *p_dec, uint8_t i_nal_length_size, + if( i_size <= 0 || + i_size > ( p_block->p_buffer + p_block->i_buffer - p ) ) + { +- msg_Err( p_dec, "Broken frame : size %d is too big", i_size ); ++ msg_Err( p_obj, "Broken frame : size %d is too big", i_size ); + break; + } + +@@ -185,7 +185,7 @@ block_t *PacketizeXXC1( decoder_t *p_dec, uint8_t i_nal_length_size, + + /* Parse the NAL */ + block_t *p_pic; +- if( ( p_pic = pf_nal_parser( p_dec, &b_dummy, p_nal ) ) ) ++ if( ( p_pic = pf_nal_parser( p_private, &b_dummy, p_nal ) ) ) + { + block_ChainAppend( &p_ret, p_pic ); + } +diff --git a/modules/packetizer/hxxx_common.h b/modules/packetizer/hxxx_common.h +index 93b33c4..c2a6df0 100644 +--- a/modules/packetizer/hxxx_common.h ++++ b/modules/packetizer/hxxx_common.h +@@ -37,8 +37,10 @@ block_t * cc_storage_get_current( cc_storage_t *p_ccs, decoder_cc_desc_t * ); + + /* */ + +-typedef block_t * (*pf_annexb_nal_parse)(decoder_t *, bool *, block_t *); +-block_t *PacketizeXXC1( decoder_t *, uint8_t, block_t **, pf_annexb_nal_parse ); ++typedef block_t * (*pf_annexb_nal_parse)(void *, bool *, block_t *); ++block_t *PacketizeXXC1( void *, vlc_object_t *obj, ++ uint8_t, block_t **, ++ pf_annexb_nal_parse ); + + #endif // HXXX_COMMON_H + diff --git a/patches/0022-packetizer-hxxx-add-missing-drain-for-non-annexb-con.patch b/patches/0022-packetizer-hxxx-add-missing-drain-for-non-annexb-con.patch new file mode 100644 index 00000000..0f37185b --- /dev/null +++ b/patches/0022-packetizer-hxxx-add-missing-drain-for-non-annexb-con.patch @@ -0,0 +1,78 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Thu, 27 Jun 2024 18:24:03 +0700 +Subject: packetizer: hxxx: add missing drain for non annexb content + +(cherry picked from commit 4f0a39ada1bd9314601e80d7f48855462524d1fc) +--- + modules/packetizer/h264.c | 2 +- + modules/packetizer/hevc.c | 2 +- + modules/packetizer/hxxx_common.c | 8 ++++++-- + modules/packetizer/hxxx_common.h | 3 ++- + 4 files changed, 10 insertions(+), 5 deletions(-) + +diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c +index b015079..5a4a519 100644 +--- a/modules/packetizer/h264.c ++++ b/modules/packetizer/h264.c +@@ -536,7 +536,7 @@ static block_t *PacketizeAVC1( decoder_t *p_dec, block_t **pp_block ) + + return PacketizeXXC1( p_dec, VLC_OBJECT(p_dec), + p_sys->i_avcC_length_size, pp_block, +- ParseNALBlockW ); ++ ParseNALBlockW, PacketizeDrain ); + } + + /***************************************************************************** +diff --git a/modules/packetizer/hevc.c b/modules/packetizer/hevc.c +index dc8877a..e63023b 100644 +--- a/modules/packetizer/hevc.c ++++ b/modules/packetizer/hevc.c +@@ -303,7 +303,7 @@ static block_t *PacketizeHVC1(decoder_t *p_dec, block_t **pp_block) + + return PacketizeXXC1( p_dec, VLC_OBJECT(p_dec), + p_sys->i_nal_length_size, pp_block, +- ParseNALBlockW ); ++ ParseNALBlockW, PacketizeDrain ); + } + + static block_t *PacketizeAnnexB(decoder_t *p_dec, block_t **pp_block) +diff --git a/modules/packetizer/hxxx_common.c b/modules/packetizer/hxxx_common.c +index 043dc38..386d49b 100644 +--- a/modules/packetizer/hxxx_common.c ++++ b/modules/packetizer/hxxx_common.c +@@ -112,13 +112,17 @@ block_t * cc_storage_get_current( cc_storage_t *p_ccs, decoder_cc_desc_t *p_desc + ****************************************************************************/ + block_t *PacketizeXXC1( void *p_private, vlc_object_t *p_obj, + uint8_t i_nal_length_size, block_t **pp_block, +- pf_annexb_nal_parse pf_nal_parser ) ++ pf_annexb_nal_parse pf_nal_parser, ++ pf_annexb_nal_drain pf_nal_drain ) + { + block_t *p_block; + block_t *p_ret = NULL; + uint8_t *p; + +- if( !pp_block || !*pp_block ) ++ if( !pp_block ) ++ return pf_nal_drain ? pf_nal_drain( p_private ) : NULL; ++ ++ if( !*pp_block ) + return NULL; + if( (*pp_block)->i_flags&(BLOCK_FLAG_CORRUPTED) ) + { +diff --git a/modules/packetizer/hxxx_common.h b/modules/packetizer/hxxx_common.h +index c2a6df0..1c8241e 100644 +--- a/modules/packetizer/hxxx_common.h ++++ b/modules/packetizer/hxxx_common.h +@@ -38,9 +38,10 @@ block_t * cc_storage_get_current( cc_storage_t *p_ccs, decoder_cc_desc_t * ); + /* */ + + typedef block_t * (*pf_annexb_nal_parse)(void *, bool *, block_t *); ++typedef block_t * (*pf_annexb_nal_drain)(void *); + block_t *PacketizeXXC1( void *, vlc_object_t *obj, + uint8_t, block_t **, +- pf_annexb_nal_parse ); ++ pf_annexb_nal_parse, pf_annexb_nal_drain ); + + #endif // HXXX_COMMON_H + diff --git a/patches/0023-demux-asf-add-missing-subpayloads-drain-on-EOF.patch b/patches/0023-demux-asf-add-missing-subpayloads-drain-on-EOF.patch new file mode 100644 index 00000000..7138d490 --- /dev/null +++ b/patches/0023-demux-asf-add-missing-subpayloads-drain-on-EOF.patch @@ -0,0 +1,31 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Fri, 16 Aug 2024 11:30:16 +0700 +Subject: demux: asf: add missing subpayloads drain on EOF + +refs #28716 + +(cherry picked from commit 6bf0a1407b5b9aef792ef94a57142254d079e8fd) +--- + modules/demux/asf/asf.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/modules/demux/asf/asf.c b/modules/demux/asf/asf.c +index a4b5b47..3111c61 100644 +--- a/modules/demux/asf/asf.c ++++ b/modules/demux/asf/asf.c +@@ -236,7 +236,15 @@ static int Demux( demux_t *p_demux ) + msg_Warn( p_demux, "found a new ASF header" ); + } + else ++ { + p_sys->b_eof = true; ++ for ( int i=0; itrack[i]; ++ if ( tk && tk->info.p_frame ) ++ Packet_Enqueue( &p_sys->packet_sys, i, &tk->info.p_frame ); ++ } ++ } + } + + if ( p_sys->i_time == VLC_TICK_INVALID ) diff --git a/patches/0024-demux-AVI-insert-packetizer-for-XVID-MPEG-4-video.patch b/patches/0024-demux-AVI-insert-packetizer-for-XVID-MPEG-4-video.patch new file mode 100644 index 00000000..6e99e38d --- /dev/null +++ b/patches/0024-demux-AVI-insert-packetizer-for-XVID-MPEG-4-video.patch @@ -0,0 +1,26 @@ +From: Mangal Kushwah +Date: Thu, 8 Aug 2024 21:30:19 +0530 +Subject: demux: AVI insert packetizer for XVID MPEG-4 video + +Older DivX-encoded videos commonly use an method called packed +bitstream which puts several video frames into a single AVI chunk. +Since Packed bitstream isn't standard MPEG-4 it causes playback issues +with some hw decoders. + +(cherry picked from commit 980e4d7449e9e06bef525d9049dff5b9b5ecd673) +--- + modules/demux/avi/avi.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c +index 7059ca9..bcc3511 100644 +--- a/modules/demux/avi/avi.c ++++ b/modules/demux/avi/avi.c +@@ -719,6 +719,7 @@ static int Open( vlc_object_t * p_this ) + { + tk->fmt.i_codec = + tk->fmt.i_original_fourcc = VLC_FOURCC( 'X', 'V', 'I', 'D' ); ++ tk->fmt.b_packetized = false; + } + + /* Shitty files storing chroma in biCompression */ diff --git a/patches/0025-codec-videotoolbox-remove-sw-decoder-fallback-for-mp.patch b/patches/0025-codec-videotoolbox-remove-sw-decoder-fallback-for-mp.patch new file mode 100644 index 00000000..86c76f21 --- /dev/null +++ b/patches/0025-codec-videotoolbox-remove-sw-decoder-fallback-for-mp.patch @@ -0,0 +1,29 @@ +From: Mangal Kushwah +Date: Fri, 9 Aug 2024 19:30:05 +0530 +Subject: codec: videotoolbox: remove sw decoder fallback for mp4v + +commit 7a2bf498d545d500d30636970fa930eb54de5569 insert packetizer for +xvid mpeg4 video, so now hw decoder can decode xvid encoded video +without any playback issues. + +(cherry picked from commit a9343f68bb19a1c20e45e1029848326020b0c69e) +--- + modules/codec/videotoolbox.m | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/modules/codec/videotoolbox.m b/modules/codec/videotoolbox.m +index e07d3c6..7d408bf 100644 +--- a/modules/codec/videotoolbox.m ++++ b/modules/codec/videotoolbox.m +@@ -1024,11 +1024,6 @@ static CMVideoCodecType CodecPrecheck(decoder_t *p_dec) + + case VLC_CODEC_MP4V: + { +- if (p_dec->fmt_in.i_original_fourcc == VLC_FOURCC( 'X','V','I','D' )) { +- msg_Warn(p_dec, "XVID decoding not implemented, fallback on software"); +- return -1; +- } +- + msg_Dbg(p_dec, "Will decode MP4V with original FourCC '%4.4s'", (char *)&p_dec->fmt_in.i_original_fourcc); + return kCMVideoCodecType_MPEG4Video; + } diff --git a/patches/0026-Use-vlc_fourcc_GetCodec-to-map-XVID-to-MP4V.patch b/patches/0026-Use-vlc_fourcc_GetCodec-to-map-XVID-to-MP4V.patch new file mode 100644 index 00000000..a543b7a1 --- /dev/null +++ b/patches/0026-Use-vlc_fourcc_GetCodec-to-map-XVID-to-MP4V.patch @@ -0,0 +1,21 @@ +From: Mangal Kushwah +Date: Sat, 31 Aug 2024 16:45:07 +0530 +Subject: Use `vlc_fourcc_GetCodec` to map XVID to MP4V + +--- + modules/demux/avi/avi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c +index bcc3511..a3204ea 100644 +--- a/modules/demux/avi/avi.c ++++ b/modules/demux/avi/avi.c +@@ -713,7 +713,7 @@ static int Open( vlc_object_t * p_this ) + } + else + { +- tk->fmt.i_codec = p_bih->biCompression; ++ tk->fmt.i_codec = vlc_fourcc_GetCodec(VIDEO_ES, p_bih->biCompression); + if( tk->fmt.i_codec == VLC_CODEC_MP4V && + !strncasecmp( (char*)&p_strh->i_handler, "XVID", 4 ) ) + { diff --git a/patches/0027-dav1d-treat-RGB-formats-separately.patch b/patches/0027-dav1d-treat-RGB-formats-separately.patch new file mode 100644 index 00000000..e52b83e7 --- /dev/null +++ b/patches/0027-dav1d-treat-RGB-formats-separately.patch @@ -0,0 +1,95 @@ +From: Tristan Matthews +Date: Sat, 31 Aug 2024 12:58:27 -0400 +Subject: dav1d: treat RGB formats separately + +This avoids incorrectly matching as GBR. +Fixes #28763 which was missing checks for the matrix and primaries. + +This also replaces the loop with a constant-time lookup. + +(cherry picked from commit ece317a245e8c32a5efc11d5e82dcd8a28a2f10b) +--- + modules/codec/dav1d.c | 59 +++++++++++++++++++++++---------------------------- + 1 file changed, 26 insertions(+), 33 deletions(-) + +diff --git a/modules/codec/dav1d.c b/modules/codec/dav1d.c +index d135e61..525a5e0 100644 +--- a/modules/codec/dav1d.c ++++ b/modules/codec/dav1d.c +@@ -84,43 +84,34 @@ struct decoder_sys_t + Dav1dContext *c; + }; + +-static const struct +-{ +- vlc_fourcc_t i_chroma; +- enum Dav1dPixelLayout i_chroma_id; +- uint8_t i_bitdepth; +- enum Dav1dTransferCharacteristics transfer_characteristics; +-} chroma_table[] = +-{ +- /* Transfer characteristic-dependent mappings must come first */ +- {VLC_CODEC_GBR_PLANAR, DAV1D_PIXEL_LAYOUT_I444, 8, DAV1D_TRC_SRGB}, +- {VLC_CODEC_GBR_PLANAR_10L, DAV1D_PIXEL_LAYOUT_I444, 10, DAV1D_TRC_SRGB}, +- +- {VLC_CODEC_GREY, DAV1D_PIXEL_LAYOUT_I400, 8, DAV1D_TRC_UNKNOWN}, +- {VLC_CODEC_I420, DAV1D_PIXEL_LAYOUT_I420, 8, DAV1D_TRC_UNKNOWN}, +- {VLC_CODEC_I422, DAV1D_PIXEL_LAYOUT_I422, 8, DAV1D_TRC_UNKNOWN}, +- {VLC_CODEC_I444, DAV1D_PIXEL_LAYOUT_I444, 8, DAV1D_TRC_UNKNOWN}, +- +- {VLC_CODEC_I420_10L, DAV1D_PIXEL_LAYOUT_I420, 10, DAV1D_TRC_UNKNOWN}, +- {VLC_CODEC_I422_10L, DAV1D_PIXEL_LAYOUT_I422, 10, DAV1D_TRC_UNKNOWN}, +- {VLC_CODEC_I444_10L, DAV1D_PIXEL_LAYOUT_I444, 10, DAV1D_TRC_UNKNOWN}, +- +- {VLC_CODEC_I420_12L, DAV1D_PIXEL_LAYOUT_I420, 12, DAV1D_TRC_UNKNOWN}, +- {VLC_CODEC_I422_12L, DAV1D_PIXEL_LAYOUT_I422, 12, DAV1D_TRC_UNKNOWN}, +- {VLC_CODEC_I444_12L, DAV1D_PIXEL_LAYOUT_I444, 12, DAV1D_TRC_UNKNOWN}, +-}; +- + static vlc_fourcc_t FindVlcChroma(const Dav1dPicture *img) + { ++ static const vlc_fourcc_t chroma_table_rgb[] = { VLC_CODEC_GBR_PLANAR, VLC_CODEC_GBR_PLANAR_10L }; ++ static const vlc_fourcc_t chroma_table[][3] = { ++ [DAV1D_PIXEL_LAYOUT_I400] = { VLC_CODEC_GREY, VLC_CODEC_GREY_10L, VLC_CODEC_GREY_12L }, ++ [DAV1D_PIXEL_LAYOUT_I420] = { VLC_CODEC_I420, VLC_CODEC_I420_10L, VLC_CODEC_I420_12L }, ++ [DAV1D_PIXEL_LAYOUT_I422] = { VLC_CODEC_I422, VLC_CODEC_I422_10L, VLC_CODEC_I422_12L }, ++ [DAV1D_PIXEL_LAYOUT_I444] = { VLC_CODEC_I444, VLC_CODEC_I444_10L, VLC_CODEC_I444_12L }, ++ }; ++ ++ // AV1 signals RGB with the combination of the identity matrix, the BT.709 primaries and the sRGB/YCC transfer function. ++ // See: "5.5.2. Color config syntax" from https://aomediacodec.github.io/av1-spec/av1-spec.pdf ++ if( img->p.layout == DAV1D_PIXEL_LAYOUT_I444 && ++ img->seq_hdr->mtrx == DAV1D_MC_IDENTITY && ++ img->seq_hdr->pri == DAV1D_COLOR_PRI_BT709 && ++ img->seq_hdr->trc == DAV1D_TRC_SRGB ) ++ { ++ if( img->seq_hdr->hbd < 0 || img->seq_hdr->hbd >= (int)ARRAY_SIZE(chroma_table_rgb) ) ++ return 0; ++ return chroma_table_rgb[img->seq_hdr->hbd]; ++ } + +- for (unsigned int i = 0; i < ARRAY_SIZE(chroma_table); i++) +- if (chroma_table[i].i_chroma_id == img->p.layout && +- chroma_table[i].i_bitdepth == img->p.bpc && +- (chroma_table[i].transfer_characteristics == DAV1D_TRC_UNKNOWN || +- chroma_table[i].transfer_characteristics == img->seq_hdr->trc)) +- return chroma_table[i].i_chroma; ++ if( img->seq_hdr->layout < 0 || img->seq_hdr->layout >= (int)ARRAY_SIZE(chroma_table) ) ++ return 0; ++ if( img->seq_hdr->hbd < 0 || img->seq_hdr->hbd >= (int)ARRAY_SIZE(chroma_table[0]) ) ++ return 0; + +- return 0; ++ return chroma_table[img->seq_hdr->layout][img->seq_hdr->hbd]; + } + + static int NewPicture(Dav1dPicture *img, void *cookie) +@@ -179,6 +170,8 @@ static int NewPicture(Dav1dPicture *img, void *cookie) + v->multiview_mode = dec->fmt_in.video.multiview_mode; + v->pose = dec->fmt_in.video.pose; + dec->fmt_out.video.i_chroma = dec->fmt_out.i_codec = FindVlcChroma(img); ++ if (dec->fmt_out.i_codec == 0) ++ return -1; + + if (decoder_UpdateVideoFormat(dec) == VLC_SUCCESS) + { diff --git a/patches/0028-dav1d-add-dav1d-all-layers-flag.patch b/patches/0028-dav1d-add-dav1d-all-layers-flag.patch new file mode 100644 index 00000000..93539e4a --- /dev/null +++ b/patches/0028-dav1d-add-dav1d-all-layers-flag.patch @@ -0,0 +1,45 @@ +From: Tristan Matthews +Date: Thu, 5 Sep 2024 10:21:11 -0400 +Subject: dav1d: add dav1d-all-layers flag + +This will output all spatial layers if requested, defaults to false (the built-in dav1d +behavior would defaults this to true). + +Fix suggested-by Maryla Ustarroz + +Fixes #28776 + +(cherry picked from commit 6ffede3f445586e5d368de936666cabb84f6a16f) +--- + modules/codec/dav1d.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/modules/codec/dav1d.c b/modules/codec/dav1d.c +index 525a5e0..42fcc59 100644 +--- a/modules/codec/dav1d.c ++++ b/modules/codec/dav1d.c +@@ -53,6 +53,8 @@ static void CloseDecoder(vlc_object_t *); + #define THREAD_FRAMES_LONGTEXT N_( "Max number of threads used for frame decoding, default 0=auto" ) + #define THREAD_TILES_TEXT N_("Tiles Threads") + #define THREAD_TILES_LONGTEXT N_( "Max number of threads used for tile decoding, default 0=auto" ) ++#define LAYERS_TEXT N_("All Layers") ++#define LAYERS_LONGTEXT N_( "Whether or not to display all spatial layers, default false" ) + + + vlc_module_begin () +@@ -73,6 +75,7 @@ vlc_module_begin () + add_integer_with_range("dav1d-thread-tiles", 0, 0, DAV1D_MAX_TILE_THREADS, + THREAD_TILES_TEXT, THREAD_TILES_LONGTEXT, false) + #endif ++ add_bool( "dav1d-all-layers", false, LAYERS_TEXT, LAYERS_LONGTEXT, false) + vlc_module_end () + + /***************************************************************************** +@@ -363,6 +366,7 @@ static int OpenDecoder(vlc_object_t *p_this) + if (p_sys->s.n_frame_threads == 0) + p_sys->s.n_frame_threads = (i_core_count < 16) ? i_core_count : 16; + #endif ++ p_sys->s.all_layers = var_InheritBool( p_this, "dav1d-all-layers" ); + p_sys->s.allocator.cookie = dec; + p_sys->s.allocator.alloc_picture_callback = NewPicture; + p_sys->s.allocator.release_picture_callback = FreePicture; diff --git a/patches/0029-dts_header-initialize-SUBSTREAM_LBR-size-to-0.patch b/patches/0029-dts_header-initialize-SUBSTREAM_LBR-size-to-0.patch new file mode 100644 index 00000000..8b87099b --- /dev/null +++ b/patches/0029-dts_header-initialize-SUBSTREAM_LBR-size-to-0.patch @@ -0,0 +1,26 @@ +From: Thomas Guillem +Date: Wed, 11 Sep 2024 08:15:52 +0200 +Subject: dts_header: initialize SUBSTREAM_LBR size to 0 + +It's a substream and can't work alone, so a size of 0 is legitimate. + +Fixes #28773 (Use of uninitialised value) + +(cherry picked from commit b23f09b258dc63c2221af502ec856630f68817e5) +Signed-off-by: Thomas Guillem +--- + modules/packetizer/dts_header.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules/packetizer/dts_header.c b/modules/packetizer/dts_header.c +index 53249dd..8d6d5c8 100644 +--- a/modules/packetizer/dts_header.c ++++ b/modules/packetizer/dts_header.c +@@ -342,6 +342,7 @@ static int dts_header_ParseLBRExtSubstream( vlc_dts_header_t *p_header, + bs_skip( &s, 16 ); + uint16_t nLBRScaledBitRate_LSW = bs_read( &s, 16 ); + p_header->i_bitrate = nLBRScaledBitRate_LSW | ((nLBRBitRateMSnybbles & 0xF0) << 12); ++ p_header->i_frame_size = 0; + return VLC_SUCCESS; + } + diff --git a/patches/0030-packetizer-dts-check-for-frame_size-for-the-first-sy.patch b/patches/0030-packetizer-dts-check-for-frame_size-for-the-first-sy.patch new file mode 100644 index 00000000..e00102bf --- /dev/null +++ b/patches/0030-packetizer-dts-check-for-frame_size-for-the-first-sy.patch @@ -0,0 +1,26 @@ +From: Thomas Guillem +Date: Wed, 11 Sep 2024 08:16:36 +0200 +Subject: packetizer: dts: check for frame_size for the first sync + +Only substreams are allowed to have a frame_size of 0. + +(cherry picked from commit 16b31aa57e3919dbe661c213868dee4b8bc1e3bd) +Signed-off-by: Thomas Guillem +--- + modules/packetizer/dts.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/modules/packetizer/dts.c b/modules/packetizer/dts.c +index a57c698..5d0deb4 100644 +--- a/modules/packetizer/dts.c ++++ b/modules/packetizer/dts.c +@@ -205,7 +205,8 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t **pp_block ) + + /* Check if frame is valid and get frame info */ + if( vlc_dts_header_Parse( &p_sys->first, p_header, +- VLC_DTS_HEADER_SIZE ) != VLC_SUCCESS ) ++ VLC_DTS_HEADER_SIZE ) != VLC_SUCCESS ++ || p_sys->first.i_frame_size == 0 ) + { + msg_Dbg( p_dec, "emulated sync word" ); + block_SkipByte( &p_sys->bytestream ); diff --git a/patches/0031-aom-make-BGR-matching-stricter.patch b/patches/0031-aom-make-BGR-matching-stricter.patch new file mode 100644 index 00000000..3460afbc --- /dev/null +++ b/patches/0031-aom-make-BGR-matching-stricter.patch @@ -0,0 +1,78 @@ +From: Tristan Matthews +Date: Mon, 9 Sep 2024 17:27:24 -0400 +Subject: aom: make BGR matching stricter + +This is equivalent to the fix in ece317a245e8c32a5efc11d5e82dcd8a28a2f10b +as the aom decoder had the same issue reported in #28776. + +(cherry picked from commit 0001e85a098ee4e6e2526eaec8a76899c2b23b90) +--- + modules/codec/aom.c | 41 +++++++++++++++++++++++------------------ + 1 file changed, 23 insertions(+), 18 deletions(-) + +diff --git a/modules/codec/aom.c b/modules/codec/aom.c +index 0c4d344..09e0370 100644 +--- a/modules/codec/aom.c ++++ b/modules/codec/aom.c +@@ -89,38 +89,43 @@ static const struct + vlc_fourcc_t i_chroma; + enum aom_img_fmt i_chroma_id; + uint8_t i_bitdepth; +- uint8_t i_needs_hack; +- ++ enum aom_transfer_characteristics transfer_characteristics; ++ enum aom_color_primaries color_primaries; ++ enum aom_matrix_coefficients matrix_coefficients; + } chroma_table[] = + { +- { VLC_CODEC_I420, AOM_IMG_FMT_I420, 8, 0 }, +- { VLC_CODEC_I422, AOM_IMG_FMT_I422, 8, 0 }, +- { VLC_CODEC_I444, AOM_IMG_FMT_I444, 8, 0 }, ++ /* Transfer characteristic-dependent mappings must come first */ ++ { VLC_CODEC_GBR_PLANAR, AOM_IMG_FMT_I444, 8, AOM_CICP_TC_SRGB, AOM_CICP_CP_BT_709, AOM_CICP_MC_IDENTITY }, ++ { VLC_CODEC_GBR_PLANAR_10L, AOM_IMG_FMT_I44416, 10, AOM_CICP_TC_SRGB , AOM_CICP_CP_BT_709, AOM_CICP_MC_IDENTITY }, + +- { VLC_CODEC_YV12, AOM_IMG_FMT_YV12, 8, 0 }, ++ { VLC_CODEC_I420, AOM_IMG_FMT_I420, 8, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED }, ++ { VLC_CODEC_I422, AOM_IMG_FMT_I422, 8, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED }, ++ { VLC_CODEC_I444, AOM_IMG_FMT_I444, 8, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED }, + +- { VLC_CODEC_GBR_PLANAR, AOM_IMG_FMT_I444, 8, 1 }, +- { VLC_CODEC_GBR_PLANAR_10L, AOM_IMG_FMT_I44416, 10, 1 }, ++ { VLC_CODEC_YV12, AOM_IMG_FMT_YV12, 8, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED }, + +- { VLC_CODEC_I420_10L, AOM_IMG_FMT_I42016, 10, 0 }, +- { VLC_CODEC_I422_10L, AOM_IMG_FMT_I42216, 10, 0 }, +- { VLC_CODEC_I444_10L, AOM_IMG_FMT_I44416, 10, 0 }, ++ { VLC_CODEC_I420_10L, AOM_IMG_FMT_I42016, 10, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED }, ++ { VLC_CODEC_I422_10L, AOM_IMG_FMT_I42216, 10, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED }, ++ { VLC_CODEC_I444_10L, AOM_IMG_FMT_I44416, 10, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED }, + +- { VLC_CODEC_I420_12L, AOM_IMG_FMT_I42016, 12, 0 }, +- { VLC_CODEC_I422_12L, AOM_IMG_FMT_I42216, 12, 0 }, +- { VLC_CODEC_I444_12L, AOM_IMG_FMT_I44416, 12, 0 }, ++ { VLC_CODEC_I420_12L, AOM_IMG_FMT_I42016, 12, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED }, ++ { VLC_CODEC_I422_12L, AOM_IMG_FMT_I42216, 12, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED }, ++ { VLC_CODEC_I444_12L, AOM_IMG_FMT_I44416, 12, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED }, + +- { VLC_CODEC_I444_16L, AOM_IMG_FMT_I44416, 16, 0 }, ++ { VLC_CODEC_I444_16L, AOM_IMG_FMT_I44416, 16, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED }, + }; + + static vlc_fourcc_t FindVlcChroma( struct aom_image *img ) + { +- uint8_t hack = (img->fmt & AOM_IMG_FMT_I444) && (img->tc == AOM_CICP_TC_SRGB); +- + for( unsigned int i = 0; i < ARRAY_SIZE(chroma_table); i++ ) + if( chroma_table[i].i_chroma_id == img->fmt && + chroma_table[i].i_bitdepth == img->bit_depth && +- chroma_table[i].i_needs_hack == hack ) ++ ( chroma_table[i].transfer_characteristics == AOM_CICP_TC_UNSPECIFIED || ++ chroma_table[i].transfer_characteristics == img->tc ) && ++ ( chroma_table[i].color_primaries == AOM_CICP_CP_UNSPECIFIED || ++ chroma_table[i].color_primaries == img->cp ) && ++ ( chroma_table[i].matrix_coefficients == AOM_CICP_MC_UNSPECIFIED || ++ chroma_table[i].matrix_coefficients == img->mc ) ) + return chroma_table[i].i_chroma; + + return 0; diff --git a/patches/0032-taglib-.m4v-are-already-registered-as-MP4-files.patch b/patches/0032-taglib-.m4v-are-already-registered-as-MP4-files.patch new file mode 100644 index 00000000..0054f0d6 --- /dev/null +++ b/patches/0032-taglib-.m4v-are-already-registered-as-MP4-files.patch @@ -0,0 +1,30 @@ +From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= +Date: Thu, 7 Feb 2019 17:58:11 +0100 +Subject: taglib: .m4v are already registered as MP4 files + +https://github.com/taglib/taglib/pull/662 +(cherry picked from commit 84962e474bfefa242527f7c3ddffe6ed4f697fbe) (rebased) +--- + modules/meta_engine/taglib.cpp | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 84b401c..73bc5d8 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -142,7 +142,6 @@ File *VLCTagLib::ExtResolver::createFile(FileName fileName, bool, AudioProper + #if TAGLIB_VERSION >= TAGLIB_VERSION_1_11 + static VLCTagLib::ExtResolver aacresolver(".aac"); + #endif +-static VLCTagLib::ExtResolver m4vresolver(".m4v"); + static bool b_extensions_registered = false; + + // taglib is not thread safe +@@ -911,7 +910,6 @@ static int ReadMeta( vlc_object_t* p_this) + #if TAGLIB_VERSION >= TAGLIB_VERSION_1_11 + FileRef::addFileTypeResolver( &aacresolver ); + #endif +- FileRef::addFileTypeResolver( &m4vresolver ); + b_extensions_registered = true; + } + diff --git a/patches/0033-modules-taglib-simplify-reading-embedded-art.patch b/patches/0033-modules-taglib-simplify-reading-embedded-art.patch new file mode 100644 index 00000000..67f6bebb --- /dev/null +++ b/patches/0033-modules-taglib-simplify-reading-embedded-art.patch @@ -0,0 +1,248 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Mon, 5 Aug 2019 15:24:45 +0200 +Subject: modules: taglib: simplify reading embedded art + +(cherry picked from commit 3533f90eb44398abe6cff1b14ece757654449acf) (rebased) +rebased: +- 294cbdbaee0209bc88ca7bec9164da8da4ac44ef has been merged above +--- + modules/meta_engine/taglib.cpp | 215 +++++++++++++++++++++-------------------- + 1 file changed, 110 insertions(+), 105 deletions(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 73bc5d8..8770d0c 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -460,6 +460,114 @@ static void ReadMetaFromASF( ASF::Tag* tag, demux_meta_t* p_demux_meta, vlc_meta + } + } + ++/** ++ * Fills attachments list from ID3 APIC tags ++ * @param tag: the APIC tags list ++ * @param p_demux_meta: the demuxer meta ++ * @param p_meta: the meta ++ */ ++static void ProcessAPICListFromId3v2( const ID3v2::FrameList &list, ++ demux_meta_t* p_demux_meta, vlc_meta_t* p_meta ) ++{ ++ /* Preferred type of image ++ * The 21 types are defined in id3v2 standard: ++ * http://www.id3.org/id3v2.4.0-frames */ ++ static const uint8_t scores[] = { ++ 0, /* Other */ ++ 5, /* 32x32 PNG image that should be used as the file icon */ ++ 4, /* File icon of a different size or format. */ ++ 20, /* Front cover image of the album. */ ++ 19, /* Back cover image of the album. */ ++ 13, /* Inside leaflet page of the album. */ ++ 18, /* Image from the album itself. */ ++ 17, /* Picture of the lead artist or soloist. */ ++ 16, /* Picture of the artist or performer. */ ++ 14, /* Picture of the conductor. */ ++ 15, /* Picture of the band or orchestra. */ ++ 9, /* Picture of the composer. */ ++ 8, /* Picture of the lyricist or text writer. */ ++ 7, /* Picture of the recording location or studio. */ ++ 10, /* Picture of the artists during recording. */ ++ 11, /* Picture of the artists during performance. */ ++ 6, /* Picture from a movie or video related to the track. */ ++ 1, /* Picture of a large, coloured fish. */ ++ 12, /* Illustration related to the track. */ ++ 3, /* Logo of the band or performer. */ ++ 2 /* Logo of the publisher (record company). */ ++ }; ++ ++ const ID3v2::AttachedPictureFrame *defaultPic = nullptr; ++ for( auto iter = list.begin(); iter != list.end(); ++iter ) ++ { ++ const ID3v2::AttachedPictureFrame* p = ++ dynamic_cast(*iter); ++ if( !p ) ++ continue; ++ if(defaultPic == nullptr) ++ { ++ defaultPic = p; ++ } ++ else ++ { ++ int scorea = defaultPic->type() >= ARRAY_SIZE(scores) ? 0 : scores[defaultPic->type()]; ++ int scoreb = p->type() >= ARRAY_SIZE(scores) ? 0 : scores[p->type()]; ++ if(scoreb > scorea) ++ defaultPic = p; ++ } ++ } ++ ++ for( auto iter = list.begin(); iter != list.end(); ++iter ) ++ { ++ const ID3v2::AttachedPictureFrame* p = ++ dynamic_cast(*iter); ++ if( !p ) ++ continue; ++ // Get the mime and description of the image. ++ String description = p->description(); ++ String mimeType = p->mimeType(); ++ ++ /* some old iTunes version not only sets incorrectly the mime type ++ * or the description of the image, ++ * but also embeds incorrectly the image. ++ * Recent versions seem to behave correctly */ ++ if( mimeType == "PNG" || description == "\xC2\x89PNG" ) ++ { ++ msg_Warn( p_demux_meta, "Invalid picture embedded by broken iTunes version" ); ++ continue; ++ } ++ ++ char *psz_name; ++ if( asprintf( &psz_name, "%i", p_demux_meta->i_attachments ) == -1 ) ++ continue; ++ ++ input_attachment_t *p_attachment = ++ vlc_input_attachment_New( psz_name, ++ mimeType.toCString(), ++ description.toCString(), ++ p->picture().data(), ++ p->picture().size() ); ++ free( psz_name ); ++ if( !p_attachment ) ++ continue; ++ ++ msg_Dbg( p_demux_meta, "Found embedded art: %s (%zu bytes)", ++ p_attachment->psz_mime, p_attachment->i_data ); ++ ++ TAB_APPEND_CAST( (input_attachment_t**), ++ p_demux_meta->i_attachments, p_demux_meta->attachments, ++ p_attachment ); ++ ++ if( p == defaultPic ) ++ { ++ char *psz_url; ++ if( asprintf( &psz_url, "attachment://%s", ++ p_attachment->psz_name ) == -1 ) ++ continue; ++ vlc_meta_SetArtURL( p_meta, psz_url ); ++ free( psz_url ); ++ } ++ } ++} + + static void ReadMetaFromBasicTag(const Tag* tag, vlc_meta_t *dest) + { +@@ -579,115 +687,12 @@ static void ReadMetaFromId3v2( ID3v2::Tag* tag, demux_meta_t* p_demux_meta, vlc_ + vlc_meta_DiscNumber, vlc_meta_DiscTotal ); + } + +- /* Preferred type of image +- * The 21 types are defined in id3v2 standard: +- * http://www.id3.org/id3v2.4.0-frames */ +- static const int pi_cover_score[] = { +- 0, /* Other */ +- 5, /* 32x32 PNG image that should be used as the file icon */ +- 4, /* File icon of a different size or format. */ +- 20, /* Front cover image of the album. */ +- 19, /* Back cover image of the album. */ +- 13, /* Inside leaflet page of the album. */ +- 18, /* Image from the album itself. */ +- 17, /* Picture of the lead artist or soloist. */ +- 16, /* Picture of the artist or performer. */ +- 14, /* Picture of the conductor. */ +- 15, /* Picture of the band or orchestra. */ +- 9, /* Picture of the composer. */ +- 8, /* Picture of the lyricist or text writer. */ +- 7, /* Picture of the recording location or studio. */ +- 10, /* Picture of the artists during recording. */ +- 11, /* Picture of the artists during performance. */ +- 6, /* Picture from a movie or video related to the track. */ +- 1, /* Picture of a large, coloured fish. */ +- 12, /* Illustration related to the track. */ +- 3, /* Logo of the band or performer. */ +- 2 /* Logo of the publisher (record company). */ +- }; +- #define PI_COVER_SCORE_SIZE (sizeof (pi_cover_score) / sizeof (pi_cover_score[0])) +- int i_score = -1; +- + // Try now to get embedded art + list = tag->frameListMap()[ "APIC" ]; +- if( list.isEmpty() ) +- return; +- +- for( iter = list.begin(); iter != list.end(); iter++ ) +- { +- ID3v2::AttachedPictureFrame* p_apic = +- dynamic_cast(*iter); +- if( !p_apic ) +- continue; +- input_attachment_t *p_attachment; +- +- const char *psz_mime; +- char *psz_name, *psz_description; +- +- // Get the mime and description of the image. +- // If the description is empty, take the type as a description +- psz_mime = p_apic->mimeType().toCString( true ); +- if( p_apic->description().size() > 0 ) +- psz_description = strdup( p_apic->description().toCString( true ) ); +- else +- { +- if( asprintf( &psz_description, "%i", p_apic->type() ) == -1 ) +- psz_description = NULL; +- } +- +- if( !psz_description ) +- continue; +- psz_name = psz_description; +- +- /* some old iTunes version not only sets incorrectly the mime type +- * or the description of the image, +- * but also embeds incorrectly the image. +- * Recent versions seem to behave correctly */ +- if( !strncmp( psz_mime, "PNG", 3 ) || +- !strncmp( psz_name, "\xC2\x89PNG", 5 ) ) +- { +- msg_Warn( p_demux_meta, "Invalid picture embedded by broken iTunes version" ); +- free( psz_description ); +- continue; +- } +- +- const ByteVector picture = p_apic->picture(); +- const char *p_data = picture.data(); +- const unsigned i_data = picture.size(); +- +- msg_Dbg( p_demux_meta, "Found embedded art: %s (%s) is %u bytes", +- psz_name, psz_mime, i_data ); +- +- p_attachment = vlc_input_attachment_New( psz_name, psz_mime, +- psz_description, p_data, i_data ); +- if( !p_attachment ) +- { +- free( psz_description ); +- continue; +- } +- TAB_APPEND_CAST( (input_attachment_t**), +- p_demux_meta->i_attachments, p_demux_meta->attachments, +- p_attachment ); +- free( psz_description ); +- +- unsigned i_pic_type = p_apic->type(); +- if( i_pic_type >= PI_COVER_SCORE_SIZE ) +- i_pic_type = 0; // Defaults to "Other" +- +- if( pi_cover_score[i_pic_type] > i_score ) +- { +- i_score = pi_cover_score[i_pic_type]; +- char *psz_url; +- if( asprintf( &psz_url, "attachment://%s", +- p_attachment->psz_name ) == -1 ) +- continue; +- vlc_meta_SetArtURL( p_meta, psz_url ); +- free( psz_url ); +- } +- } ++ if( !list.isEmpty() ) ++ ProcessAPICListFromId3v2( list, p_demux_meta, p_meta ); + } + +- + /** + * Read the meta information from XiphComments + * @param tag: the Xiph Comment diff --git a/patches/0034-taglib-IOStream-Return-the-url-as-fileName.patch b/patches/0034-taglib-IOStream-Return-the-url-as-fileName.patch new file mode 100644 index 00000000..5aa17305 --- /dev/null +++ b/patches/0034-taglib-IOStream-Return-the-url-as-fileName.patch @@ -0,0 +1,27 @@ +From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= +Date: Mon, 18 Mar 2019 15:09:39 +0100 +Subject: taglib: IOStream: Return the url as fileName + +Since the only part that matters to taglib is the filename, and more +specifically the extension part. + +(cherry picked from commit 026a76066efa78f1934ab2c177669a2e6a519cff) +--- + modules/meta_engine/taglib.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 8770d0c..bec6838 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -176,7 +176,9 @@ public: + + FileName name() const + { +- return m_stream->psz_location; ++ // Taglib only cares about the file name part, so it doesn't matter ++ // whether we include the mrl scheme or not ++ return m_stream->psz_url; + } + + ByteVector readBlock(ulong length) diff --git a/patches/0035-taglib-Always-use-IOStream-to-read-the-media.patch b/patches/0035-taglib-Always-use-IOStream-to-read-the-media.patch new file mode 100644 index 00000000..8b98183b --- /dev/null +++ b/patches/0035-taglib-Always-use-IOStream-to-read-the-media.patch @@ -0,0 +1,87 @@ +From: Steve Lhomme +Date: Mon, 16 Sep 2024 13:21:17 +0200 +Subject: taglib: Always use IOStream to read the media + +(cherry picked from commit 4bc7607f31f80264b5e61fbd187f2f8d2f3bb604) (edited) +edited: +- keep the support for taglib older than 1.11 which doesn't have the + proper FileRef constructor to use it +- the aacresolver is only called for Taglib 1.11+ on 3.0 +- 4.0 doesn't make a difference for UWP or regular Windows +--- + modules/meta_engine/taglib.cpp | 35 +++++++++-------------------------- + 1 file changed, 9 insertions(+), 26 deletions(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index bec6838..adf3a24 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -891,15 +891,15 @@ static int ReadMeta( vlc_object_t* p_this) + if( unlikely(psz_uri == NULL) ) + return VLC_ENOMEM; + +- char *psz_path = vlc_uri2path( psz_uri ); +-#if VLC_WINSTORE_APP && TAGLIB_VERSION >= TAGLIB_VERSION_1_11 +- if( psz_path == NULL ) ++ if( !b_extensions_registered ) + { +- free( psz_uri ); +- return VLC_EGENERIC; ++#if TAGLIB_VERSION >= TAGLIB_VERSION_1_11 ++ FileRef::addFileTypeResolver( &aacresolver ); ++#endif ++ b_extensions_registered = true; + } +- free( psz_path ); + ++#if TAGLIB_VERSION >= TAGLIB_VERSION_1_11 + stream_t *p_stream = vlc_access_NewMRL( p_this, psz_uri ); + free( psz_uri ); + if( p_stream == NULL ) +@@ -907,19 +907,12 @@ static int ReadMeta( vlc_object_t* p_this) + + VlcIostream s( p_stream ); + f = FileRef( &s ); +-#else /* VLC_WINSTORE_APP */ ++#else // !TAGLIB_VERSION_1_11 ++ char *psz_path = vlc_uri2path( psz_uri ); + free( psz_uri ); + if( psz_path == NULL ) + return VLC_EGENERIC; + +- if( !b_extensions_registered ) +- { +-#if TAGLIB_VERSION >= TAGLIB_VERSION_1_11 +- FileRef::addFileTypeResolver( &aacresolver ); +-#endif +- b_extensions_registered = true; +- } +- + #if defined(_WIN32) + wchar_t *wpath = ToWide( psz_path ); + if( wpath == NULL ) +@@ -927,23 +920,13 @@ static int ReadMeta( vlc_object_t* p_this) + free( psz_path ); + return VLC_EGENERIC; + } +-#if TAGLIB_VERSION >= TAGLIB_VERSION_1_11 +- FileStream stream( wpath, true ); +- f = FileRef( &stream ); +-#else /* TAGLIB_VERSION */ + f = FileRef( wpath ); +-#endif /* TAGLIB_VERSION */ + free( wpath ); + #else /* _WIN32 */ +-#if TAGLIB_VERSION >= TAGLIB_VERSION_1_11 +- FileStream stream( psz_path, true ); +- f = FileRef( &stream ); +-#else /* TAGLIB_VERSION */ + f = FileRef( psz_path ); +-#endif /* TAGLIB_VERSION */ + #endif /* _WIN32 */ + free( psz_path ); +-#endif /* VLC_WINSTORE_APP */ ++#endif // !TAGLIB_VERSION_1_11 + + if( f.isNull() ) + return VLC_EGENERIC; diff --git a/patches/0036-taglib-Enable-prefetch-cache-on-the-IOStream.patch b/patches/0036-taglib-Enable-prefetch-cache-on-the-IOStream.patch new file mode 100644 index 00000000..bcbc85ca --- /dev/null +++ b/patches/0036-taglib-Enable-prefetch-cache-on-the-IOStream.patch @@ -0,0 +1,26 @@ +From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= +Date: Tue, 8 Oct 2019 17:21:20 +0200 +Subject: taglib: Enable prefetch/cache on the IOStream + +We can't do it through vlc_stream_NewURL as it will include the +skiptags filter + +(cherry picked from commit 976cd219465a72daa02d22e60c9ac4c704c0b18b) +--- + modules/meta_engine/taglib.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index adf3a24..31ab839 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -904,6 +904,9 @@ static int ReadMeta( vlc_object_t* p_this) + free( psz_uri ); + if( p_stream == NULL ) + return VLC_EGENERIC; ++ stream_t* p_filter = vlc_stream_FilterNew( p_stream, "prefetch,cache" ); ++ if( p_filter ) ++ p_stream = p_filter; + + VlcIostream s( p_stream ); + f = FileRef( &s ); diff --git a/patches/0037-taglib-fix-Wdeprecated-copy-warnings.patch b/patches/0037-taglib-fix-Wdeprecated-copy-warnings.patch new file mode 100644 index 00000000..8d4a2791 --- /dev/null +++ b/patches/0037-taglib-fix-Wdeprecated-copy-warnings.patch @@ -0,0 +1,125 @@ +From: Alexandre Janniaux +Date: Fri, 7 Feb 2020 23:50:00 +0100 +Subject: taglib: fix -Wdeprecated-copy warnings +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +Warnings were happening because we were using copy operator= as the +assigned object was already initialized. This patch use the copy +constructor or move constructor instead if available. + +Those warnings were: + +../../modules/meta_engine/taglib.cpp: In function ‘void ReadMetaFromXiph(TagLib::Ogg::XiphComment*, demux_meta_t*, vlc_meta_t*)’: +../../modules/meta_engine/taglib.cpp:672:39: warning: implicitly-declared ‘TagLib::StringList& TagLib::StringList::operator=(const TagLib::StringList&)’ is deprecated [-Wdeprecated-copy] + 672 | list = tag->fieldListMap()[keyName]; \ + | ^ +../../modules/meta_engine/taglib.cpp:681:5: note: in expansion of macro ‘SET’ + 681 | SET( "COPYRIGHT", Copyright ); + | ^~~ +In file included from /usr/include/taglib/fileref.h:30, + from ../../modules/meta_engine/taglib.cpp:58: +/usr/include/taglib/tstringlist.h:59:5: note: because ‘TagLib::StringList’ has user-provided ‘TagLib::StringList::StringList(const TagLib::StringList&)’ + 59 | StringList(const StringList &l); + | ^~~~~~~~~~ + +Signed-off-by: Jean-Baptiste Kempf +(cherry picked from commit be4f907a0e834c10277b8217520f745238da1c13) +--- + modules/meta_engine/taglib.cpp | 51 +++++++++++++++++++++++++----------------- + 1 file changed, 30 insertions(+), 21 deletions(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 31ab839..2ef0593 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -703,17 +703,20 @@ static void ReadMetaFromId3v2( ID3v2::Tag* tag, demux_meta_t* p_demux_meta, vlc_ + */ + static void ReadMetaFromXiph( Ogg::XiphComment* tag, demux_meta_t* p_demux_meta, vlc_meta_t* p_meta ) + { +- StringList list; + bool hasTrackTotal = false; +-#define SET( keyName, metaName ) \ +- list = tag->fieldListMap()[keyName]; \ +- if( !list.isEmpty() ) \ +- vlc_meta_Set##metaName( p_meta, (*list.begin()).toCString( true ) ); ++#define SET( keyName, metaName ) \ ++ { \ ++ StringList tmp_list { tag->fieldListMap()[keyName] }; \ ++ if( !tmp_list.isEmpty() ) \ ++ vlc_meta_Set##metaName( p_meta, (*tmp_list.begin()).toCString( true ) ); \ ++ } + + #define SET_EXTRA( keyName, metaName ) \ +- list = tag->fieldListMap()[keyName]; \ +- if( !list.isEmpty() ) \ +- vlc_meta_AddExtra( p_meta, keyName, (*list.begin()).toCString( true ) ); ++ { \ ++ StringList tmp_list = tag->fieldListMap()[keyName]; \ ++ if( !tmp_list.isEmpty() ) \ ++ vlc_meta_AddExtra( p_meta, keyName, (*tmp_list.begin()).toCString( true ) ); \ ++ } + + SET( "COPYRIGHT", Copyright ); + SET( "ORGANIZATION", Publisher ); +@@ -729,25 +732,31 @@ static void ReadMetaFromXiph( Ogg::XiphComment* tag, demux_meta_t* p_demux_meta, + #undef SET + #undef SET_EXTRA + +- list = tag->fieldListMap()["TRACKNUMBER"]; +- if( !list.isEmpty() ) ++ StringList track_number_list = tag->fieldListMap()["TRACKNUMBER"]; ++ if( !track_number_list.isEmpty() ) + { +- int i_values = ExtractCoupleNumberValues( p_meta, (*list.begin()).toCString( true ), ++ int i_values = ExtractCoupleNumberValues( p_meta, (*track_number_list.begin()).toCString( true ), + vlc_meta_TrackNumber, vlc_meta_TrackTotal ); + hasTrackTotal = i_values == 2; + } + if( !hasTrackTotal ) + { +- list = tag->fieldListMap()["TRACKTOTAL"]; +- if( list.isEmpty() ) +- list = tag->fieldListMap()["TOTALTRACKS"]; +- if( !list.isEmpty() ) +- vlc_meta_SetTrackTotal( p_meta, (*list.begin()).toCString( true ) ); ++ StringList track_total_list { tag->fieldListMap()["TRACKTOTAL"] }; ++ if( track_total_list.isEmpty() ) ++ { ++ StringList total_tracks_list { tag->fieldListMap()["TOTALTRACKS"] }; ++ if( !total_tracks_list.isEmpty() ) ++ vlc_meta_SetTrackTotal( p_meta, (*total_tracks_list.begin()).toCString( true ) ); ++ } ++ else ++ { ++ vlc_meta_SetTrackTotal( p_meta, (*track_total_list.begin()).toCString( true ) ); ++ } + } + + // Try now to get embedded art +- StringList mime_list = tag->fieldListMap()[ "COVERARTMIME" ]; +- StringList art_list = tag->fieldListMap()[ "COVERART" ]; ++ StringList mime_list { tag->fieldListMap()[ "COVERARTMIME" ] }; ++ StringList art_list { tag->fieldListMap()[ "COVERART" ] }; + + input_attachment_t *p_attachment; + +@@ -774,14 +783,14 @@ static void ReadMetaFromXiph( Ogg::XiphComment* tag, demux_meta_t* p_demux_meta, + } + else + { +- art_list = tag->fieldListMap()[ "METADATA_BLOCK_PICTURE" ]; +- if( art_list.size() == 0 ) ++ StringList block_picture_list { tag->fieldListMap()[ "METADATA_BLOCK_PICTURE" ] }; ++ if( block_picture_list.size() == 0 ) + return; + + uint8_t *p_data; + int i_cover_score; + int i_cover_idx; +- int i_data = vlc_b64_decode_binary( &p_data, art_list[0].toCString(true) ); ++ int i_data = vlc_b64_decode_binary( &p_data, block_picture_list[0].toCString(true) ); + i_cover_score = i_cover_idx = 0; + /* TODO: Use i_cover_score / i_cover_idx to select the picture. */ + p_attachment = ParseFlacPicture( p_data, i_data, 0, diff --git a/patches/0038-meta_engine-taglib-increment-VlcIostream-readpos.patch b/patches/0038-meta_engine-taglib-increment-VlcIostream-readpos.patch new file mode 100644 index 00000000..28e2e174 --- /dev/null +++ b/patches/0038-meta_engine-taglib-increment-VlcIostream-readpos.patch @@ -0,0 +1,21 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Mon, 10 Aug 2020 14:32:32 +0200 +Subject: meta_engine: taglib: increment VlcIostream readpos + +(cherry picked from commit 0cbcf504b43a02ddb7ecc1c65c0c1e82f39b4f1c) +--- + modules/meta_engine/taglib.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 2ef0593..85279bc 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -189,6 +189,7 @@ public: + return ByteVector::null; + else if ((size_t)i_read != length) + res.resize(i_read); ++ m_previousPos += i_read; + return res; + } + diff --git a/patches/0039-meta_engine-taglib-reject-read-on-failed-seek.patch b/patches/0039-meta_engine-taglib-reject-read-on-failed-seek.patch new file mode 100644 index 00000000..202e808e --- /dev/null +++ b/patches/0039-meta_engine-taglib-reject-read-on-failed-seek.patch @@ -0,0 +1,72 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Mon, 10 Aug 2020 14:38:00 +0200 +Subject: meta_engine: taglib: reject read on failed seek + +(cherry picked from commit 837b583e4e4e531ff8b11f13300c7cbc565beb9f) (rebased) +rebased: +- 3.0 already has 1.11 ifdef +--- + modules/meta_engine/taglib.cpp | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 85279bc..58d7683 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -166,6 +166,7 @@ public: + VlcIostream(stream_t* p_stream) + : m_stream( p_stream ) + , m_previousPos( 0 ) ++ , m_borked( false ) + { + } + +@@ -183,6 +184,8 @@ public: + + ByteVector readBlock(ulong length) + { ++ if(m_borked) ++ return ByteVector::null; + ByteVector res(length, 0); + ssize_t i_read = vlc_stream_Read( m_stream, res.data(), length); + if (i_read < 0) +@@ -219,18 +222,29 @@ public: + void seek(long offset, Position p) + { + uint64_t pos = 0; ++ long len; + switch (p) + { + case Current: + pos = m_previousPos; + break; + case End: +- pos = length(); ++ len = length(); ++ if(len > -1) ++ { ++ pos = len; ++ } ++ else ++ { ++ m_borked = true; ++ return; ++ } + break; + default: + break; + } +- if (vlc_stream_Seek( m_stream, pos + offset ) == 0) ++ m_borked = (vlc_stream_Seek( m_stream, pos + offset ) != 0); ++ if(!m_borked) + m_previousPos = pos + offset; + } + +@@ -259,6 +273,7 @@ public: + private: + stream_t* m_stream; + int64_t m_previousPos; ++ bool m_borked; + }; + #endif /* TAGLIB_VERSION_1_11 */ + diff --git a/patches/0040-meta_engine-taglib-add-sequential-read-limit-on-VlcI.patch b/patches/0040-meta_engine-taglib-add-sequential-read-limit-on-VlcI.patch new file mode 100644 index 00000000..59e155af --- /dev/null +++ b/patches/0040-meta_engine-taglib-add-sequential-read-limit-on-VlcI.patch @@ -0,0 +1,78 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Mon, 10 Aug 2020 14:52:11 +0200 +Subject: meta_engine: taglib: add sequential read limit on VlcIostream + +(cherry picked from commit d375284a144e6b18896deda3a86b9560bc04f3d8) (rebased) +rebased: +- 3.0 already has 1.11 ifdef +--- + modules/meta_engine/taglib.cpp | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 58d7683..a52c67c 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -99,6 +99,7 @@ using namespace TagLib; + + + #include ++#include + + namespace VLCTagLib + { +@@ -167,6 +168,8 @@ public: + : m_stream( p_stream ) + , m_previousPos( 0 ) + , m_borked( false ) ++ , m_seqReadLength( 0 ) ++ , m_seqReadLimit( std::numeric_limits::max() ) + { + } + +@@ -184,7 +187,7 @@ public: + + ByteVector readBlock(ulong length) + { +- if(m_borked) ++ if(m_borked || m_seqReadLength >= m_seqReadLimit) + return ByteVector::null; + ByteVector res(length, 0); + ssize_t i_read = vlc_stream_Read( m_stream, res.data(), length); +@@ -193,6 +196,7 @@ public: + else if ((size_t)i_read != length) + res.resize(i_read); + m_previousPos += i_read; ++ m_seqReadLength += i_read; + return res; + } + +@@ -219,6 +223,11 @@ public: + return true; + } + ++ void setMaxSequentialRead(long s) ++ { ++ m_seqReadLimit = s; ++ } ++ + void seek(long offset, Position p) + { + uint64_t pos = 0; +@@ -246,6 +255,7 @@ public: + m_borked = (vlc_stream_Seek( m_stream, pos + offset ) != 0); + if(!m_borked) + m_previousPos = pos + offset; ++ m_seqReadLength = 0; + } + + void clear() +@@ -274,6 +284,8 @@ private: + stream_t* m_stream; + int64_t m_previousPos; + bool m_borked; ++ long m_seqReadLength; ++ long m_seqReadLimit; + }; + #endif /* TAGLIB_VERSION_1_11 */ + diff --git a/patches/0041-meta_engine-taglib-restrict-unlimited-reads-on-strea.patch b/patches/0041-meta_engine-taglib-restrict-unlimited-reads-on-strea.patch new file mode 100644 index 00000000..dac57eff --- /dev/null +++ b/patches/0041-meta_engine-taglib-restrict-unlimited-reads-on-strea.patch @@ -0,0 +1,34 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Mon, 10 Aug 2020 14:55:02 +0200 +Subject: meta_engine: taglib: restrict unlimited reads on streams + +taglib reads unlimited if no IDv3 or MPEG header is found at the +beginning. + +(cherry picked from commit 8ec8b0d2add84b6d6b0c043e1c4f241998915ecd) (rebased) +rebased: +- only used with Taglib 1.11+ which is not always the case with 3.0 +--- + modules/meta_engine/taglib.cpp | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index a52c67c..0b7b582 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -946,7 +946,14 @@ static int ReadMeta( vlc_object_t* p_this) + p_stream = p_filter; + + VlcIostream s( p_stream ); +- f = FileRef( &s ); ++#ifndef VLC_PATCHED_TAGLIB_ID3V2_READSTYLE ++ uint64_t dummy; ++ if( vlc_stream_GetSize( p_stream, &dummy ) != VLC_SUCCESS ) ++ s.setMaxSequentialRead( 2048 ); ++ else ++ s.setMaxSequentialRead( 1024 * 2048 ); ++#endif ++ f = FileRef( &s, false, AudioProperties::ReadStyle::Fast ); + #else // !TAGLIB_VERSION_1_11 + char *psz_path = vlc_uri2path( psz_uri ); + free( psz_uri ); diff --git a/patches/0042-meta-taglib-reject-non-expected-schemes.patch b/patches/0042-meta-taglib-reject-non-expected-schemes.patch new file mode 100644 index 00000000..b19796d1 --- /dev/null +++ b/patches/0042-meta-taglib-reject-non-expected-schemes.patch @@ -0,0 +1,54 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Wed, 2 Sep 2020 16:53:13 +0200 +Subject: meta: taglib: reject non expected schemes + +refs #25035 + +(cherry picked from commit 8191ac5727a3525a6bee99e1674167a7894f9ccb) (rebased) +rebased: +- 3.0 already has a26e2ba370d898dda04c718176af7d2e329dab7a above +--- + modules/meta_engine/taglib.cpp | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 0b7b582..ced4f56 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -910,6 +910,23 @@ static int ReadWAVMeta( const RIFF::WAV::File *wav, demux_meta_t *demux_meta ) + return VLC_SUCCESS; + } + ++static bool isSchemeCompatible( const char *psz_uri ) ++{ ++ const char *p = strstr( psz_uri, "://" ); ++ if( p == NULL ) ++ return false; ++ ++ size_t i_len = p - psz_uri; ++ const char * compatibleschemes[] = ++ { ++ "file", "smb", ++ }; ++ for( size_t i=0; i= TAGLIB_VERSION_1_11 diff --git a/patches/0043-taglib-fix-variable-shadowing.patch b/patches/0043-taglib-fix-variable-shadowing.patch new file mode 100644 index 00000000..2224dc08 --- /dev/null +++ b/patches/0043-taglib-fix-variable-shadowing.patch @@ -0,0 +1,35 @@ +From: Steve Lhomme +Date: Fri, 25 Jun 2021 13:09:14 +0200 +Subject: taglib: fix variable shadowing + +list is already a different local list defined earlier in the function. + +(cherry picked from commit 34ca2a286edda76a9718cfa1e50bd3e4ea51702c) +--- + modules/meta_engine/taglib.cpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index ced4f56..a48e102 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -869,15 +869,15 @@ static void ReadMetaFromMP4( MP4::Tag* tag, demux_meta_t *p_demux_meta, vlc_meta + + if( tag->itemListMap().contains("covr") ) + { +- MP4::CoverArtList list = tag->itemListMap()["covr"].toCoverArtList(); +- const char *psz_format = list[0].format() == MP4::CoverArt::PNG ? "image/png" : "image/jpeg"; ++ MP4::CoverArtList cover_list = tag->itemListMap()["covr"].toCoverArtList(); ++ const char *psz_format = cover_list[0].format() == MP4::CoverArt::PNG ? "image/png" : "image/jpeg"; + + msg_Dbg( p_demux_meta, "Found embedded art (%s) is %i bytes", +- psz_format, list[0].data().size() ); ++ psz_format, cover_list[0].data().size() ); + + input_attachment_t *p_attachment = + vlc_input_attachment_New( "cover", psz_format, "cover", +- list[0].data().data(), list[0].data().size() ); ++ cover_list[0].data().data(), cover_list[0].data().size() ); + if( p_attachment ) + { + TAB_APPEND_CAST( (input_attachment_t**), diff --git a/patches/0044-taglib-Don-t-convert-base64-strings-to-UTF8.patch b/patches/0044-taglib-Don-t-convert-base64-strings-to-UTF8.patch new file mode 100644 index 00000000..6c7cc4f4 --- /dev/null +++ b/patches/0044-taglib-Don-t-convert-base64-strings-to-UTF8.patch @@ -0,0 +1,35 @@ +From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= +Date: Mon, 13 Sep 2021 12:08:53 +0200 +Subject: taglib: Don't convert base64 strings to UTF8 + +The convertion will incur a cost which we don't want to pay since the +art needs to be encoded in base64, which doesn't include anything +outside of ASCII + +(cherry picked from commit 65dfe0cdc97bbb98ad34a690989636d40f326e32) +--- + modules/meta_engine/taglib.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index a48e102..256e8e4 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -800,7 +800,7 @@ static void ReadMetaFromXiph( Ogg::XiphComment* tag, demux_meta_t* p_demux_meta, + const char* psz_description = "cover"; + + uint8_t *p_data; +- int i_data = vlc_b64_decode_binary( &p_data, art_list[0].toCString(true) ); ++ int i_data = vlc_b64_decode_binary( &p_data, art_list[0].toCString(false) ); + + msg_Dbg( p_demux_meta, "Found embedded art: %s (%s) is %i bytes", + psz_name, psz_mime, i_data ); +@@ -818,7 +818,7 @@ static void ReadMetaFromXiph( Ogg::XiphComment* tag, demux_meta_t* p_demux_meta, + uint8_t *p_data; + int i_cover_score; + int i_cover_idx; +- int i_data = vlc_b64_decode_binary( &p_data, block_picture_list[0].toCString(true) ); ++ int i_data = vlc_b64_decode_binary( &p_data, block_picture_list[0].toCString(false) ); + i_cover_score = i_cover_idx = 0; + /* TODO: Use i_cover_score / i_cover_idx to select the picture. */ + p_attachment = ParseFlacPicture( p_data, i_data, 0, diff --git a/patches/0045-taglib-ByteVector-null-is-now-deprecated.patch b/patches/0045-taglib-ByteVector-null-is-now-deprecated.patch new file mode 100644 index 00000000..f364c021 --- /dev/null +++ b/patches/0045-taglib-ByteVector-null-is-now-deprecated.patch @@ -0,0 +1,27 @@ +From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= +Date: Fri, 26 Nov 2021 18:08:47 +0100 +Subject: taglib: ByteVector::null is now deprecated + +(cherry picked from commit d2663d6c3fe3af76bdefd58367b4a45c598b83e4) +--- + modules/meta_engine/taglib.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 256e8e4..206abb1 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -188,11 +188,11 @@ public: + ByteVector readBlock(ulong length) + { + if(m_borked || m_seqReadLength >= m_seqReadLimit) +- return ByteVector::null; ++ return {}; + ByteVector res(length, 0); + ssize_t i_read = vlc_stream_Read( m_stream, res.data(), length); + if (i_read < 0) +- return ByteVector::null; ++ return {}; + else if ((size_t)i_read != length) + res.resize(i_read); + m_previousPos += i_read; diff --git a/patches/0046-taglib-Remove-usages-of-deprecated-itemListMap.patch b/patches/0046-taglib-Remove-usages-of-deprecated-itemListMap.patch new file mode 100644 index 00000000..2e8ee3a5 --- /dev/null +++ b/patches/0046-taglib-Remove-usages-of-deprecated-itemListMap.patch @@ -0,0 +1,48 @@ +From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= +Date: Fri, 26 Nov 2021 18:17:19 +0100 +Subject: taglib: Remove usages of deprecated itemListMap + +contains() was added in 1.10 and item() is supported since 1.9 + +(cherry picked from commit ac59d0ba59ba800c52c0a92ec1d9576d2653dbe2) +--- + modules/meta_engine/taglib.cpp | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 206abb1..d0ced96 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -849,15 +849,15 @@ static void ReadMetaFromMP4( MP4::Tag* tag, demux_meta_t *p_demux_meta, vlc_meta + { + MP4::Item list; + #define SET( keyName, metaName ) \ +- if( tag->itemListMap().contains(keyName) ) \ ++ if( tag->contains(keyName) ) \ + { \ +- list = tag->itemListMap()[keyName]; \ ++ list = tag->item(keyName); \ + vlc_meta_Set##metaName( p_meta, list.toStringList().front().toCString( true ) ); \ + } + #define SET_EXTRA( keyName, metaName ) \ +- if( tag->itemListMap().contains(keyName) ) \ +- { \ +- list = tag->itemListMap()[keyName]; \ ++ if( tag->contains(keyName) ) \ ++ { \ ++ list = tag->item(keyName); \ + vlc_meta_AddExtra( p_meta, metaName, list.toStringList().front().toCString( true ) ); \ + } + +@@ -867,9 +867,9 @@ static void ReadMetaFromMP4( MP4::Tag* tag, demux_meta_t *p_demux_meta, vlc_meta + #undef SET + #undef SET_EXTRA + +- if( tag->itemListMap().contains("covr") ) ++ if( tag->contains("covr") ) + { +- MP4::CoverArtList cover_list = tag->itemListMap()["covr"].toCoverArtList(); ++ MP4::CoverArtList cover_list = tag->item("covr").toCoverArtList(); + const char *psz_format = cover_list[0].format() == MP4::CoverArt::PNG ? "image/png" : "image/jpeg"; + + msg_Dbg( p_demux_meta, "Found embedded art (%s) is %i bytes", diff --git a/patches/0047-taglib-Remove-use-of-deprecated-String-isNull.patch b/patches/0047-taglib-Remove-use-of-deprecated-String-isNull.patch new file mode 100644 index 00000000..16d3ef67 --- /dev/null +++ b/patches/0047-taglib-Remove-use-of-deprecated-String-isNull.patch @@ -0,0 +1,24 @@ +From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= +Date: Fri, 26 Nov 2021 18:19:41 +0100 +Subject: taglib: Remove use of deprecated String::isNull + +(cherry picked from commit c404fdb24183031a419667639846edddca3401f8) (edited) +edited: +- 294cbdbaee0209bc88ca7bec9164da8da4ac44ef was merged before this patch +--- + modules/meta_engine/taglib.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index d0ced96..0c0cebd 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -602,7 +602,7 @@ static void ProcessAPICListFromId3v2( const ID3v2::FrameList &list, + static void ReadMetaFromBasicTag(const Tag* tag, vlc_meta_t *dest) + { + #define SET( accessor, meta ) \ +- if( !tag->accessor().isNull() && !tag->accessor().isEmpty() ) \ ++ if( !tag->accessor().isEmpty() ) \ + vlc_meta_Set##meta( dest, tag->accessor().toCString(true) ) + #define SETINT( accessor, meta ) \ + if( tag->accessor() ) \ diff --git a/patches/0048-taglib-Remove-explicit-invocation-of-default-constru.patch b/patches/0048-taglib-Remove-explicit-invocation-of-default-constru.patch new file mode 100644 index 00000000..8baf5de1 --- /dev/null +++ b/patches/0048-taglib-Remove-explicit-invocation-of-default-constru.patch @@ -0,0 +1,24 @@ +From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= +Date: Wed, 16 Feb 2022 09:52:38 +0100 +Subject: taglib: Remove explicit invocation of default constructor + +This is already done implicitly + +(cherry picked from commit 93842f650548d6f29ec13cf0679bf49cf5ce107c) +--- + modules/meta_engine/taglib.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 0c0cebd..a52adfe 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -117,7 +117,7 @@ namespace VLCTagLib + } + + template +-VLCTagLib::ExtResolver::ExtResolver(const std::string & ext) : FileTypeResolver() ++VLCTagLib::ExtResolver::ExtResolver(const std::string & ext) + { + this->ext = ext; + std::transform(this->ext.begin(), this->ext.end(), this->ext.begin(), ::toupper); diff --git a/patches/0049-taglib-Implement-new-StreamTypeResolver-interface-wh.patch b/patches/0049-taglib-Implement-new-StreamTypeResolver-interface-wh.patch new file mode 100644 index 00000000..671656ff --- /dev/null +++ b/patches/0049-taglib-Implement-new-StreamTypeResolver-interface-wh.patch @@ -0,0 +1,69 @@ +From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= +Date: Wed, 9 Feb 2022 14:14:08 +0100 +Subject: taglib: Implement new StreamTypeResolver interface when available + +refs #26602 + +(cherry picked from commit 268b5b8bc1f1109c4fc69b22e53095c6d81faa76) (rebased) +--- + modules/meta_engine/taglib.cpp | 31 +++++++++++++++++++++++++++++++ + 1 file changed, 31 insertions(+) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index a52adfe..e3e80cc 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -101,15 +101,27 @@ using namespace TagLib; + #include + #include + ++#if defined(VLC_PATCHED_TAGLIB_IOSTREAM_RESOLVERS) || \ ++ TAGLIB_VERSION >= VERSION_INT(1, 12, 0) ++#define USE_IOSTREAM_RESOLVER 1 ++#endif ++ + namespace VLCTagLib + { + template ++#ifdef USE_IOSTREAM_RESOLVER ++ class ExtResolver : public FileRef::StreamTypeResolver ++#else + class ExtResolver : public FileRef::FileTypeResolver ++#endif + { + public: + ExtResolver(const std::string &); + ~ExtResolver() {} + virtual File *createFile(FileName, bool, AudioProperties::ReadStyle) const; ++#ifdef USE_IOSTREAM_RESOLVER ++ virtual File *createFileFromStream(IOStream*, bool, AudioProperties::ReadStyle) const; ++#endif + + protected: + std::string ext; +@@ -140,6 +152,25 @@ File *VLCTagLib::ExtResolver::createFile(FileName fileName, bool, AudioProper + return 0; + } + ++#ifdef USE_IOSTREAM_RESOLVER ++template ++File* VLCTagLib::ExtResolver::createFileFromStream(IOStream* s, bool, AudioProperties::ReadStyle) const ++{ ++ std::string filename = std::string(s->name()); ++ std::size_t namesize = filename.size(); ++ ++ if (namesize > ext.length()) ++ { ++ std::string fext = filename.substr(namesize - ext.length(), ext.length()); ++ std::transform(fext.begin(), fext.end(), fext.begin(), ::toupper); ++ if(fext == ext) ++ return new T(s, ID3v2::FrameFactory::instance(), false, AudioProperties::Fast); ++ } ++ ++ return nullptr; ++} ++#endif ++ + #if TAGLIB_VERSION >= TAGLIB_VERSION_1_11 + static VLCTagLib::ExtResolver aacresolver(".aac"); + #endif diff --git a/patches/0050-taglib-Use-nullptr-instead-of-0-for-pointers.patch b/patches/0050-taglib-Use-nullptr-instead-of-0-for-pointers.patch new file mode 100644 index 00000000..8724bfce --- /dev/null +++ b/patches/0050-taglib-Use-nullptr-instead-of-0-for-pointers.patch @@ -0,0 +1,22 @@ +From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= +Date: Wed, 9 Feb 2022 14:18:11 +0100 +Subject: taglib: Use nullptr instead of 0 for pointers + +(cherry picked from commit 89e20ea0d87f414f763ce38ff5579aec61f71b42) +--- + modules/meta_engine/taglib.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index e3e80cc..e50f559 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -149,7 +149,7 @@ File *VLCTagLib::ExtResolver::createFile(FileName fileName, bool, AudioProper + return new T(fileName, false, AudioProperties::Fast); + } + +- return 0; ++ return nullptr; + } + + #ifdef USE_IOSTREAM_RESOLVER diff --git a/patches/0051-taglib-Fix-invalid-version-check.patch b/patches/0051-taglib-Fix-invalid-version-check.patch new file mode 100644 index 00000000..e0d2a44f --- /dev/null +++ b/patches/0051-taglib-Fix-invalid-version-check.patch @@ -0,0 +1,22 @@ +From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= +Date: Fri, 18 Feb 2022 08:26:41 +0100 +Subject: taglib: Fix invalid version check + +(cherry picked from commit 53260ca5ae906f1e35791d14e4b588d25c04e51b) +--- + modules/meta_engine/taglib.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index e50f559..810ad2c 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -102,7 +102,7 @@ using namespace TagLib; + #include + + #if defined(VLC_PATCHED_TAGLIB_IOSTREAM_RESOLVERS) || \ +- TAGLIB_VERSION >= VERSION_INT(1, 12, 0) ++ TAGLIB_VERSION >= VERSION_INT(1, 13, 0) + #define USE_IOSTREAM_RESOLVER 1 + #endif + diff --git a/patches/0052-meta-taglib-use-std-min.patch b/patches/0052-meta-taglib-use-std-min.patch new file mode 100644 index 00000000..24ac8f6a --- /dev/null +++ b/patches/0052-meta-taglib-use-std-min.patch @@ -0,0 +1,22 @@ +From: Marvin Scholz +Date: Mon, 11 Apr 2022 23:21:25 +0200 +Subject: meta: taglib: use std::min + +(cherry picked from commit 584fd17a9445d8d5f7d692b7416eec09b9240b0e) +--- + modules/meta_engine/taglib.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 810ad2c..9586510 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -679,7 +679,7 @@ static void ReadMetaFromId3v2( ID3v2::Tag* tag, demux_meta_t* p_demux_meta, vlc_ + * but in our case it will be a '\0' + * terminated string */ + char psz_ufid[64]; +- int max_size = __MIN( p_ufid->identifier().size(), 63); ++ int max_size = std::min( p_ufid->identifier().size(), 63); + strncpy( psz_ufid, p_ufid->identifier().data(), max_size ); + psz_ufid[max_size] = '\0'; + vlc_meta_SetTrackID( p_meta, psz_ufid ); diff --git a/patches/0053-taglib-don-t-cast-the-file-st_size-to-a-possibly-sma.patch b/patches/0053-taglib-don-t-cast-the-file-st_size-to-a-possibly-sma.patch new file mode 100644 index 00000000..9fa217ad --- /dev/null +++ b/patches/0053-taglib-don-t-cast-the-file-st_size-to-a-possibly-sma.patch @@ -0,0 +1,24 @@ +From: Steve Lhomme +Date: Wed, 4 Jan 2023 15:24:47 +0100 +Subject: taglib: don't cast the file st_size to a possibly smaller type + +We can just use auto and always get the proper type. + +(cherry picked from commit 7413126744e0b494856ba9acc5ae3c27ce4af625) +--- + modules/meta_engine/taglib.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 9586510..2891e06 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -1233,7 +1233,7 @@ static void WriteMetaToId3v2( ID3v2::Tag* tag, input_item_t* p_item ) + fclose( p_file ); + return; + } +- off_t file_size = st.st_size; ++ auto file_size = st.st_size; + + free( psz_path ); + diff --git a/patches/0054-taglib-remove-VLC-path-define-check.patch b/patches/0054-taglib-remove-VLC-path-define-check.patch new file mode 100644 index 00000000..c3dfeb92 --- /dev/null +++ b/patches/0054-taglib-remove-VLC-path-define-check.patch @@ -0,0 +1,25 @@ +From: Johannes Kauffmann +Date: Sat, 3 Jun 2023 17:35:09 +0200 +Subject: taglib: remove VLC path define check + +It is no longer needed with contribs taglib updated to 1.13. + +(cherry picked from commit c5851fd495ed6de1d3712e64a2b1cc1e4e9059f4) +--- + modules/meta_engine/taglib.cpp | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 2891e06..487a152 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -101,8 +101,7 @@ using namespace TagLib; + #include + #include + +-#if defined(VLC_PATCHED_TAGLIB_IOSTREAM_RESOLVERS) || \ +- TAGLIB_VERSION >= VERSION_INT(1, 13, 0) ++#if TAGLIB_VERSION >= VERSION_INT(1, 13, 0) + #define USE_IOSTREAM_RESOLVER 1 + #endif + diff --git a/patches/0055-Taglib-Use-ID3v2Tag-instead-of-tag-for-RIFF-WAV-File.patch b/patches/0055-Taglib-Use-ID3v2Tag-instead-of-tag-for-RIFF-WAV-File.patch new file mode 100644 index 00000000..2d0c11e4 --- /dev/null +++ b/patches/0055-Taglib-Use-ID3v2Tag-instead-of-tag-for-RIFF-WAV-File.patch @@ -0,0 +1,136 @@ +From: Vikram Kangotra +Date: Sat, 3 Feb 2024 02:52:52 +0530 +Subject: Taglib: Use ID3v2Tag() instead of tag() for RIFF::WAV::File + +`WriteMetaToId3v2` expects a `ID3v2::Tag` instead of `Tag`, but Since TagLib v2.0, +`RIFF::WAV::File::tag()` returns a `Tag` instead of `ID3v2::Tag`, hence replace +the usage of `tag()` method with `ID3v2Tag()`. + +https://github.com/taglib/taglib/blob/master/taglib/riff/wav/wavfile.h#L124 + +Additionally, to resolve the compilation error, the function signatures of +`insert` and `removeBlock` have been adjusted to align with the base class +functions. + +(cherry picked from commit ec29dfca1e59530dd412d779e0b045079b72ffb6) +--- + modules/meta_engine/taglib.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp +index 487a152..0e7996e 100644 +--- a/modules/meta_engine/taglib.cpp ++++ b/modules/meta_engine/taglib.cpp +@@ -137,7 +137,11 @@ VLCTagLib::ExtResolver::ExtResolver(const std::string & ext) + template + File *VLCTagLib::ExtResolver::createFile(FileName fileName, bool, AudioProperties::ReadStyle) const + { ++#if defined(_WIN32) && TAGLIB_VERSION >= VERSION_INT(2, 0, 0) ++ std::string filename = fileName.toString().to8Bit(true); ++#else + std::string filename = std::string(fileName); ++#endif + std::size_t namesize = filename.size(); + + if (namesize > ext.length()) +@@ -155,7 +159,11 @@ File *VLCTagLib::ExtResolver::createFile(FileName fileName, bool, AudioProper + template + File* VLCTagLib::ExtResolver::createFileFromStream(IOStream* s, bool, AudioProperties::ReadStyle) const + { ++#if defined(_WIN32) && TAGLIB_VERSION >= VERSION_INT(2, 0, 0) ++ std::string filename = s->name().toString().to8Bit(true); ++#else + std::string filename = std::string(s->name()); ++#endif + std::size_t namesize = filename.size(); + + if (namesize > ext.length()) +@@ -215,7 +223,11 @@ public: + return m_stream->psz_url; + } + ++#if TAGLIB_VERSION >= VERSION_INT(2, 0, 0) ++ ByteVector readBlock(size_t length) ++#else + ByteVector readBlock(ulong length) ++#endif + { + if(m_borked || m_seqReadLength >= m_seqReadLimit) + return {}; +@@ -235,11 +247,19 @@ public: + // Let's stay Read-Only for now + } + ++#if TAGLIB_VERSION >= VERSION_INT(2, 0, 0) ++ void insert(const ByteVector&, offset_t, size_t) ++#else + void insert(const ByteVector&, ulong, ulong) ++#endif + { + } + ++#if TAGLIB_VERSION >= VERSION_INT(2, 0, 0) ++ void removeBlock(offset_t, size_t) ++#else + void removeBlock(ulong, ulong) ++#endif + { + } + +@@ -258,7 +278,11 @@ public: + m_seqReadLimit = s; + } + ++#if TAGLIB_VERSION >= VERSION_INT(2, 0, 0) ++ void seek(offset_t offset, Position p) ++#else + void seek(long offset, Position p) ++#endif + { + uint64_t pos = 0; + long len; +@@ -293,12 +317,20 @@ public: + return; + } + ++#if TAGLIB_VERSION >= VERSION_INT(2, 0, 0) ++ offset_t tell() const ++#else + long tell() const ++#endif + { + return m_previousPos; + } + ++#if TAGLIB_VERSION >= VERSION_INT(2, 0, 0) ++ offset_t length() ++#else + long length() ++#endif + { + uint64_t i_size; + if (vlc_stream_GetSize( m_stream, &i_size ) != VLC_SUCCESS) +@@ -306,7 +338,11 @@ public: + return i_size; + } + ++#if TAGLIB_VERSION >= VERSION_INT(2, 0, 0) ++ void truncate(offset_t) ++#else + void truncate(long) ++#endif + { + } + +@@ -1425,7 +1461,11 @@ static int WriteMeta( vlc_object_t *p_this ) + if( RIFF::AIFF::File* riff_aiff = dynamic_cast(f.file()) ) + WriteMetaToId3v2( riff_aiff->tag(), p_item ); + else if( RIFF::WAV::File* riff_wav = dynamic_cast(f.file()) ) ++#if TAGLIB_VERSION >= VERSION_INT(2, 0, 0) ++ WriteMetaToId3v2( riff_wav->ID3v2Tag(), p_item ); ++#else + WriteMetaToId3v2( riff_wav->tag(), p_item ); ++#endif + } + else if( TrueAudio::File* trueaudio = dynamic_cast(f.file()) ) + { diff --git a/patches/0056-lua-don-t-use-operator-on-VLC-errors.patch b/patches/0056-lua-don-t-use-operator-on-VLC-errors.patch new file mode 100644 index 00000000..dee8a998 --- /dev/null +++ b/patches/0056-lua-don-t-use-operator-on-VLC-errors.patch @@ -0,0 +1,39 @@ +From: Steve Lhomme +Date: Wed, 18 Sep 2024 12:57:04 +0200 +Subject: lua: don't use | operator on VLC errors + +This could end up with unknown/invalid error values. + +(cherry picked from commit 586b28f4aab1f936d666bd3dab7904793c3012d7) +--- + modules/lua/extension.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/modules/lua/extension.c b/modules/lua/extension.c +index cc6bffc..c8bfe22 100644 +--- a/modules/lua/extension.c ++++ b/modules/lua/extension.c +@@ -971,7 +971,10 @@ int lua_ExecuteFunctionVa( extensions_manager_t *p_mgr, extension_t *p_ext, + i_ret = VLC_EGENERIC; + } + +- i_ret |= lua_DialogFlush( L ); ++ if (i_ret != VLC_SUCCESS) ++ lua_DialogFlush( L ); ++ else ++ i_ret = lua_DialogFlush( L ); + + exit: + return i_ret; +@@ -1013,7 +1016,10 @@ int lua_ExtensionTriggerMenu( extensions_manager_t *p_mgr, + i_ret = VLC_EGENERIC; + } + +- i_ret |= lua_DialogFlush( L ); ++ if (i_ret != VLC_SUCCESS) ++ lua_DialogFlush( L ); ++ else ++ i_ret = lua_DialogFlush( L ); + if( i_ret < VLC_SUCCESS ) + { + msg_Dbg( p_mgr, "Something went wrong in %s (%s:%d)", diff --git a/patches/0057-demux-mkv-fix-link-to-ALAC-documentation.patch b/patches/0057-demux-mkv-fix-link-to-ALAC-documentation.patch new file mode 100644 index 00000000..55442f2e --- /dev/null +++ b/patches/0057-demux-mkv-fix-link-to-ALAC-documentation.patch @@ -0,0 +1,33 @@ +From: Steve Lhomme +Date: Mon, 5 Aug 2024 10:58:29 +0200 +Subject: demux: mkv: fix link to ALAC documentation + +The 36 is the 12 bytes we write plus 24 bytes from ALACSpecificConfig. + +Also avoid subtracting 12 from a variable were we added 12 (our header). + +(cherry picked from commit d71ed1c6f081fba9e6e7ec4339734fc270ba0d64) +--- + modules/demux/mkv/matroska_segment_parse.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp +index 37a650d..2b93674 100644 +--- a/modules/demux/mkv/matroska_segment_parse.cpp ++++ b/modules/demux/mkv/matroska_segment_parse.cpp +@@ -56,12 +56,12 @@ static inline void fill_extra_data_alac( mkv_track_t *p_tk ) + if( unlikely( !p_tk->fmt.p_extra ) ) return; + p_tk->fmt.i_extra = p_tk->i_extra_data + 12; + uint8_t *p_extra = static_cast( p_tk->fmt.p_extra ); +- /* See "ALAC Specific Info (36 bytes) (required)" from +- alac.macosforge.org/trac/browser/trunk/ALACMagicCookieDescription.txt */ ++ /* 12 bytes + "ALAC Specific Info (24 bytes) (required)" from ++ https://github.com/macosforge/alac/blob/master/ALACMagicCookieDescription.txt */ + SetDWBE( p_extra, p_tk->fmt.i_extra ); + memcpy( p_extra + 4, "alac", 4 ); + SetDWBE( p_extra + 8, 0 ); +- memcpy( p_extra + 12, p_tk->p_extra_data, p_tk->fmt.i_extra - 12 ); ++ memcpy( p_extra + 12, p_tk->p_extra_data, p_tk->i_extra_data ); + } + + static inline void fill_extra_data( mkv_track_t *p_tk, unsigned int offset ) diff --git a/patches/0058-demux-mkv-write-the-actual-extra-data-size-in-the-AL.patch b/patches/0058-demux-mkv-write-the-actual-extra-data-size-in-the-AL.patch new file mode 100644 index 00000000..d0888de2 --- /dev/null +++ b/patches/0058-demux-mkv-write-the-actual-extra-data-size-in-the-AL.patch @@ -0,0 +1,26 @@ +From: Steve Lhomme +Date: Mon, 5 Aug 2024 11:04:09 +0200 +Subject: demux: mkv: write the actual extra data size in the ALAC extradata + +This is what avcodec/audio expects when detecting the extradata. + +See InitDecoderConfig() + +(cherry picked from commit d2265e981fa19a9f5f1299e968348ed3ca98ee60) +--- + modules/demux/mkv/matroska_segment_parse.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp +index 2b93674..706733e 100644 +--- a/modules/demux/mkv/matroska_segment_parse.cpp ++++ b/modules/demux/mkv/matroska_segment_parse.cpp +@@ -60,7 +60,7 @@ static inline void fill_extra_data_alac( mkv_track_t *p_tk ) + https://github.com/macosforge/alac/blob/master/ALACMagicCookieDescription.txt */ + SetDWBE( p_extra, p_tk->fmt.i_extra ); + memcpy( p_extra + 4, "alac", 4 ); +- SetDWBE( p_extra + 8, 0 ); ++ SetDWBE( p_extra + 8, p_tk->i_extra_data ); + memcpy( p_extra + 12, p_tk->p_extra_data, p_tk->i_extra_data ); + } + diff --git a/patches/0059-demux-mkv-handle-mkv-use-chapter-codec-option.patch b/patches/0059-demux-mkv-handle-mkv-use-chapter-codec-option.patch new file mode 100644 index 00000000..0fe5590d --- /dev/null +++ b/patches/0059-demux-mkv-handle-mkv-use-chapter-codec-option.patch @@ -0,0 +1,27 @@ +From: Steve Lhomme +Date: Thu, 19 Sep 2024 10:30:06 +0200 +Subject: demux: mkv: handle mkv-use-chapter-codec option + +For safety reasons some users may not want to handle any chapter codec. +The option was added 8697e6ef99ef0cec90bcf515052e5de1c09601ce but +never implemented. + +(cherry picked from commit 4b479fb554cf1474fc549334459512b0b096dbcc) +--- + modules/demux/mkv/matroska_segment_parse.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp +index 706733e..b9a2d27 100644 +--- a/modules/demux/mkv/matroska_segment_parse.cpp ++++ b/modules/demux/mkv/matroska_segment_parse.cpp +@@ -1257,6 +1257,9 @@ void matroska_segment_c::ParseChapterAtom( int i_level, KaxChapterAtom *ca, chap + { + debug( vars, "ChapterProcess" ); + ++ if ( !var_InheritBool( vars.p_demuxer, "mkv-use-chapter-codec") ) ++ return; ++ + chapter_codec_cmds_c *p_ccodec = NULL; + + for( size_t j = 0; j < cp.ListSize(); j++ ) diff --git a/patches/0060-hw-amf-keep-the-AMF-version-in-the-context.patch b/patches/0060-hw-amf-keep-the-AMF-version-in-the-context.patch new file mode 100644 index 00000000..c816e500 --- /dev/null +++ b/patches/0060-hw-amf-keep-the-AMF-version-in-the-context.patch @@ -0,0 +1,52 @@ +From: Steve Lhomme +Date: Tue, 3 Sep 2024 09:07:14 +0200 +Subject: hw/amf: keep the AMF version in the context + +For FRC we may need to disable it before 1.4.34. + +(cherry picked from commit de748458776f58f150edc06a4b9cac8c961dac20) +--- + modules/hw/amf/amf_helper.c | 6 +++--- + modules/hw/amf/amf_helper.h | 1 + + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/modules/hw/amf/amf_helper.c b/modules/hw/amf/amf_helper.c +index d83bef8..f0f6eae 100644 +--- a/modules/hw/amf/amf_helper.c ++++ b/modules/hw/amf/amf_helper.c +@@ -21,12 +21,12 @@ int vlc_AMFCreateContext(struct vlc_amf_context *c) + if (hLib == NULL) + return (-ENOTSUP); + +- amf_uint64 version = 0; ++ c->Version = 0; + AMF_RESULT res; + AMFQueryVersion_Fn queryVersion = (AMFQueryVersion_Fn)GetProcAddress(hLib, AMF_QUERY_VERSION_FUNCTION_NAME); + if (unlikely(queryVersion == NULL)) + goto error; +- res = queryVersion(&version); ++ res = queryVersion(&c->Version); + if (unlikely(res != AMF_OK)) + goto error; + +@@ -34,7 +34,7 @@ int vlc_AMFCreateContext(struct vlc_amf_context *c) + c->Context = NULL; + + AMFInit_Fn init = (AMFInit_Fn)GetProcAddress(hLib, AMF_INIT_FUNCTION_NAME); +- res = init(version, &c->pFactory); ++ res = init(c->Version, &c->pFactory); // use the highest possible value for that DLL + if (unlikely(res != AMF_OK)) + goto error; + +diff --git a/modules/hw/amf/amf_helper.h b/modules/hw/amf/amf_helper.h +index ff8487a..6befb49 100644 +--- a/modules/hw/amf/amf_helper.h ++++ b/modules/hw/amf/amf_helper.h +@@ -29,6 +29,7 @@ struct vlc_amf_context + { + AMT_TYPE(AMFFactory) *pFactory; + AMT_TYPE(AMFContext) *Context; ++ amf_uint64 Version; + void *Private; + }; + diff --git a/patches/0061-archive-Add-support-for-RAR-5.0-format.patch b/patches/0061-archive-Add-support-for-RAR-5.0-format.patch new file mode 100644 index 00000000..cac34f2f --- /dev/null +++ b/patches/0061-archive-Add-support-for-RAR-5.0-format.patch @@ -0,0 +1,29 @@ +From: Johan Gunnarsson +Date: Sun, 3 Nov 2019 00:23:00 +0100 +Subject: archive: Add support for RAR 5.0 format + +libarchive 3.4.0 adds support for RAR 5.0. See +https://www.rarlab.com/technote.htm#rarsign for description of signatures. + +Signed-off-by: Jean-Baptiste Kempf +(cherry picked from commit 059f6f5690005853f3e3160f5f896301b2f52ecd) +--- + modules/stream_extractor/archive.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/modules/stream_extractor/archive.c b/modules/stream_extractor/archive.c +index af69a29..75bbe01 100644 +--- a/modules/stream_extractor/archive.c ++++ b/modules/stream_extractor/archive.c +@@ -454,7 +454,10 @@ static int probe( stream_t* source ) + } const magicbytes[] = { + /* keep heaviest at top */ + { 257, 5, "ustar" }, //TAR +- { 0, 7, "Rar!\x1A\x07" }, //RAR ++#if ARCHIVE_VERSION_NUMBER >= 3004000 ++ { 0, 8, "Rar!\x1A\x07\x01" }, //RAR5.0 ++#endif ++ { 0, 7, "Rar!\x1A\x07" }, //RAR4.x + { 0, 6, "7z\xBC\xAF\x27\x1C" }, //7z + { 0, 4, "xar!" }, //XAR + { 0, 4, "PK\x03\x04" }, //ZIP diff --git a/patches/0062-archive-fix-the-type-used-for-libarchive_skip_cb.patch b/patches/0062-archive-fix-the-type-used-for-libarchive_skip_cb.patch new file mode 100644 index 00000000..ce4e1015 --- /dev/null +++ b/patches/0062-archive-fix-the-type-used-for-libarchive_skip_cb.patch @@ -0,0 +1,24 @@ +From: Steve Lhomme +Date: Wed, 4 Jan 2023 14:51:51 +0100 +Subject: archive: fix the type used for libarchive_skip_cb + +It is not using off_t. + +(cherry picked from commit 5da9f85b186a69e5b64d83470b32b7fd19dbf943) +--- + modules/stream_extractor/archive.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/stream_extractor/archive.c b/modules/stream_extractor/archive.c +index 75bbe01..c69c9f2 100644 +--- a/modules/stream_extractor/archive.c ++++ b/modules/stream_extractor/archive.c +@@ -131,7 +131,7 @@ static int libarchive_jump_cb( libarchive_t* p_arc, void* p_obj_current, + + + static la_int64_t libarchive_skip_cb( libarchive_t* p_arc, void* p_obj, +- off_t i_request ) ++ la_int64_t i_request ) + { + VLC_UNUSED( p_arc ); + diff --git a/patches/0063-stream_extractor-set-correct-offset-on-read-failure.patch b/patches/0063-stream_extractor-set-correct-offset-on-read-failure.patch new file mode 100644 index 00000000..aba9c6b2 --- /dev/null +++ b/patches/0063-stream_extractor-set-correct-offset-on-read-failure.patch @@ -0,0 +1,51 @@ +From: Francois Cartegnie +Date: Thu, 1 Jun 2023 17:44:52 +0700 +Subject: stream_extractor: set correct offset on read failure + +(cherry picked from commit 9f160402e3ea835f1d242e8ca5af89c57a3a2583) +--- + modules/stream_extractor/archive.c | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +diff --git a/modules/stream_extractor/archive.c b/modules/stream_extractor/archive.c +index c69c9f2..446d711 100644 +--- a/modules/stream_extractor/archive.c ++++ b/modules/stream_extractor/archive.c +@@ -609,16 +609,16 @@ eof: + return 0; + } + +-static int archive_skip_decompressed( stream_extractor_t* p_extractor, uint64_t i_skip ) ++static int archive_skip_decompressed( stream_extractor_t* p_extractor, uint64_t *pi_skip ) + { +- while( i_skip ) ++ while( *pi_skip ) + { +- ssize_t i_read = Read( p_extractor, NULL, i_skip ); ++ ssize_t i_read = Read( p_extractor, NULL, *pi_skip ); + + if( i_read < 1 ) + return VLC_EGENERIC; + +- i_skip -= i_read; ++ *pi_skip -= i_read; + } + + return VLC_SUCCESS; +@@ -663,9 +663,13 @@ static int Seek( stream_extractor_t* p_extractor, uint64_t i_req ) + i_skip = i_req; + i_offset = 0; + } +- +- if( archive_skip_decompressed( p_extractor, i_skip ) ) +- msg_Dbg( p_extractor, "failed to skip to seek position" ); ++ if( archive_skip_decompressed( p_extractor, &i_skip ) ) ++ { ++ msg_Warn( p_extractor, "failed to skip to seek position %" PRIu64 "/%" PRId64, ++ i_req, archive_entry_size( p_sys->p_entry ) ); ++ p_sys->i_offset += i_skip; ++ return VLC_EGENERIC; ++ } + } + + p_sys->i_offset = i_req; diff --git a/patches/0064-hw-amf-let-the-AMF-system-know-what-version-was-used.patch b/patches/0064-hw-amf-let-the-AMF-system-know-what-version-was-used.patch new file mode 100644 index 00000000..d2c4e683 --- /dev/null +++ b/patches/0064-hw-amf-let-the-AMF-system-know-what-version-was-used.patch @@ -0,0 +1,25 @@ +From: Steve Lhomme +Date: Wed, 25 Sep 2024 11:37:02 +0200 +Subject: hw/amf: let the AMF system know what version was used to compile + +With future drivers and old binaries it may trigger different code +pathes than the latest version. + +(cherry picked from commit e1c9c361849e6042185d123ab559d14fa7d7e8e3) +--- + modules/hw/amf/amf_helper.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/hw/amf/amf_helper.c b/modules/hw/amf/amf_helper.c +index f0f6eae..50f66b6 100644 +--- a/modules/hw/amf/amf_helper.c ++++ b/modules/hw/amf/amf_helper.c +@@ -34,7 +34,7 @@ int vlc_AMFCreateContext(struct vlc_amf_context *c) + c->Context = NULL; + + AMFInit_Fn init = (AMFInit_Fn)GetProcAddress(hLib, AMF_INIT_FUNCTION_NAME); +- res = init(c->Version, &c->pFactory); // use the highest possible value for that DLL ++ res = init(AMF_FULL_VERSION, &c->pFactory); + if (unlikely(res != AMF_OK)) + goto error; + diff --git a/patches/0065-avcodec-avoid-signedness-mismatch-warning.patch b/patches/0065-avcodec-avoid-signedness-mismatch-warning.patch new file mode 100644 index 00000000..9ed5133a --- /dev/null +++ b/patches/0065-avcodec-avoid-signedness-mismatch-warning.patch @@ -0,0 +1,27 @@ +From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= +Date: Sat, 5 May 2018 15:28:15 +0300 +Subject: avcodec: avoid signedness mismatch warning + +Bitmask should be unsigned, but ffmpeg seems confused with itself. + +(cherry picked from commit 8544233e7fde2965435e32a445494898440ecc30) +--- + modules/codec/avcodec/audio.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index 50a76c7..e5af0ca 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -593,9 +593,9 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + uint32_t pi_order_src[i_order_max]; + + int i_channels_src = 0; +- int64_t channel_layout = ++ uint64_t channel_layout = + p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout : +- av_get_default_channel_layout( p_sys->p_context->channels ); ++ (uint64_t)av_get_default_channel_layout( p_sys->p_context->channels ); + + if( channel_layout ) + { diff --git a/patches/0066-avcodec-use-p_dec-fmt_out-instead-of-context-channel.patch b/patches/0066-avcodec-use-p_dec-fmt_out-instead-of-context-channel.patch new file mode 100644 index 00000000..63752c21 --- /dev/null +++ b/patches/0066-avcodec-use-p_dec-fmt_out-instead-of-context-channel.patch @@ -0,0 +1,61 @@ +From: Ilkka Ollakka +Date: Wed, 5 Jul 2023 12:51:34 +0300 +Subject: avcodec: use p_dec->fmt_out instead of context channels on audio + channel-count + +reduces the need of ifdefs when adding ch_layout support + +(cherry picked from commit bddf5ba19111d1cc4463d9876c4bc4ba75f82d7f) +--- + modules/codec/avcodec/audio.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index e5af0ca..26166c0 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -484,15 +484,15 @@ static block_t * ConvertAVFrame( decoder_t *p_dec, AVFrame *frame ) + /* Interleave audio if required */ + if( av_sample_fmt_is_planar( ctx->sample_fmt ) ) + { +- p_block = block_Alloc(frame->linesize[0] * ctx->channels); ++ p_block = block_Alloc(frame->linesize[0] * p_dec->fmt_out.audio.i_channels ); + if ( likely(p_block) ) + { +- const void *planes[ctx->channels]; +- for (int i = 0; i < ctx->channels; i++) ++ const void *planes[p_dec->fmt_out.audio.i_channels]; ++ for (int i = 0; i < p_dec->fmt_out.audio.i_channels; i++) + planes[i] = frame->extended_data[i]; + + aout_Interleave(p_block->p_buffer, planes, frame->nb_samples, +- ctx->channels, p_dec->fmt_out.audio.i_format); ++ p_dec->fmt_out.audio.i_channels, p_dec->fmt_out.audio.i_format); + p_block->i_nb_samples = frame->nb_samples; + } + av_frame_free(&frame); +@@ -511,7 +511,7 @@ static block_t * ConvertAVFrame( decoder_t *p_dec, AVFrame *frame ) + { + aout_ChannelExtract( p_buffer->p_buffer, + p_dec->fmt_out.audio.i_channels, +- p_block->p_buffer, ctx->channels, ++ p_block->p_buffer, p_dec->fmt_out.audio.i_channels, + p_block->i_nb_samples, p_sys->pi_extraction, + p_dec->fmt_out.audio.i_bitspersample ); + p_buffer->i_nb_samples = p_block->i_nb_samples; +@@ -600,13 +600,13 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + if( channel_layout ) + { + for( unsigned i = 0; i < i_order_max +- && i_channels_src < p_sys->p_context->channels; i++ ) ++ && i_channels_src < p_dec->fmt_out.audio.i_channels; i++ ) + { + if( channel_layout & pi_channels_map[i][0] ) + pi_order_src[i_channels_src++] = pi_channels_map[i][1]; + } + +- if( i_channels_src != p_sys->p_context->channels && b_trust ) ++ if( i_channels_src != p_dec->fmt_out.audio.i_channels && b_trust ) + msg_Err( p_dec, "Channel layout not understood" ); + + /* Detect special dual mono case */ diff --git a/patches/0067-avcodec-audio-decoder-to-use-ch_layout.patch b/patches/0067-avcodec-audio-decoder-to-use-ch_layout.patch new file mode 100644 index 00000000..cb2ebabc --- /dev/null +++ b/patches/0067-avcodec-audio-decoder-to-use-ch_layout.patch @@ -0,0 +1,109 @@ +From: Ilkka Ollakka +Date: Wed, 5 Jul 2023 13:33:09 +0300 +Subject: avcodec: audio decoder to use ch_layout + +(cherry picked from commit 496f0f2a659c1339d1e37330d446e9b6ce96e76b) +--- + modules/codec/avcodec/audio.c | 42 ++++++++++++++++++++++++++++++++++-------- + 1 file changed, 34 insertions(+), 8 deletions(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index 26166c0..ad8a40a 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -139,7 +139,11 @@ static int OpenAudioCodec( decoder_t *p_dec ) + } + + ctx->sample_rate = p_dec->fmt_in.audio.i_rate; ++#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++ av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels ); ++#else + ctx->channels = p_dec->fmt_in.audio.i_channels; ++#endif + ctx->block_align = p_dec->fmt_in.audio.i_blockalign; + ctx->bit_rate = p_dec->fmt_in.i_bitrate; + ctx->bits_per_coded_sample = p_dec->fmt_in.audio.i_bitspersample; +@@ -395,12 +399,17 @@ static int DecodeBlock( decoder_t *p_dec, block_t **pp_block ) + ret = avcodec_receive_frame( ctx, frame ); + if( ret == 0 ) + { ++#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++ int channels = frame->ch_layout.nb_channels; ++#else ++ int channels = ctx->channels; ++#endif + /* checks and init from first decoded frame */ +- if( ctx->channels <= 0 || ctx->channels > INPUT_CHAN_MAX ++ if( channels <= 0 || channels > INPUT_CHAN_MAX + || ctx->sample_rate <= 0 ) + { + msg_Warn( p_dec, "invalid audio properties channels count %d, sample rate %d", +- ctx->channels, ctx->sample_rate ); ++ channels, ctx->sample_rate ); + goto drop; + } + else if( p_dec->fmt_out.audio.i_rate != (unsigned int)ctx->sample_rate ) +@@ -580,6 +589,16 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate; + + /* */ ++#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++ if( p_sys->i_previous_channels == p_sys->p_context->ch_layout.nb_channels && ++ p_sys->i_previous_layout == p_sys->p_context->ch_layout.u.mask ) ++ return; ++ if( b_trust ) ++ { ++ p_sys->i_previous_channels = p_sys->p_context->ch_layout.nb_channels; ++ p_sys->i_previous_layout = p_sys->p_context->ch_layout.u.mask; ++ } ++#else + if( p_sys->i_previous_channels == p_sys->p_context->channels && + p_sys->i_previous_layout == p_sys->p_context->channel_layout ) + return; +@@ -588,25 +607,32 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + p_sys->i_previous_channels = p_sys->p_context->channels; + p_sys->i_previous_layout = p_sys->p_context->channel_layout; + } ++#endif + + const unsigned i_order_max = sizeof(pi_channels_map)/sizeof(*pi_channels_map); + uint32_t pi_order_src[i_order_max]; + + int i_channels_src = 0; +- uint64_t channel_layout = ++#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++ uint64_t channel_layout_mask = p_sys->p_context->ch_layout.u.mask; ++ int channel_count = p_sys->p_context->ch_layout.nb_channels; ++#else ++ uint64_t channel_layout_mask = + p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout : + (uint64_t)av_get_default_channel_layout( p_sys->p_context->channels ); ++ int channel_count = p_sys->p_context->channels; ++#endif + +- if( channel_layout ) ++ if( channel_layout_mask ) + { + for( unsigned i = 0; i < i_order_max +- && i_channels_src < p_dec->fmt_out.audio.i_channels; i++ ) ++ && i_channels_src < channel_count; i++ ) + { +- if( channel_layout & pi_channels_map[i][0] ) ++ if( channel_layout_mask & pi_channels_map[i][0] ) + pi_order_src[i_channels_src++] = pi_channels_map[i][1]; + } + +- if( i_channels_src != p_dec->fmt_out.audio.i_channels && b_trust ) ++ if( i_channels_src != channel_count && b_trust ) + msg_Err( p_dec, "Channel layout not understood" ); + + /* Detect special dual mono case */ +@@ -638,7 +664,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + { + msg_Warn( p_dec, "no channel layout found"); + p_dec->fmt_out.audio.i_physical_channels = 0; +- p_dec->fmt_out.audio.i_channels = p_sys->p_context->channels; ++ p_dec->fmt_out.audio.i_channels = channel_count; + } + + aout_FormatPrepare( &p_dec->fmt_out.audio ); diff --git a/patches/0068-avcodec-use-p_enc-audio-channels-instead-of-context-.patch b/patches/0068-avcodec-use-p_enc-audio-channels-instead-of-context-.patch new file mode 100644 index 00000000..5d172847 --- /dev/null +++ b/patches/0068-avcodec-use-p_enc-audio-channels-instead-of-context-.patch @@ -0,0 +1,121 @@ +From: Ilkka Ollakka +Date: Tue, 4 Jul 2023 16:52:38 +0300 +Subject: avcodec: use p_enc audio channels instead of context channels in + encoder + +Allows to have less conditions in code when adding new ch_layout use + +(cherry-picked from commit 29747a8abb98ba53a64aa6761983891eeed2e0e4) +--- + modules/codec/avcodec/encoder.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c +index 4919ccf..52848de 100644 +--- a/modules/codec/avcodec/encoder.c ++++ b/modules/codec/avcodec/encoder.c +@@ -790,7 +790,7 @@ int InitVideoEnc( vlc_object_t *p_this ) + } + } + } +- if( i_channels_src != p_context->channels ) ++ if( i_channels_src != p_enc->fmt_out.audio.i_channels ) + msg_Err( p_enc, "Channel layout not understood" ); + + p_sys->i_channels_to_reorder = +@@ -897,7 +897,7 @@ int InitVideoEnc( vlc_object_t *p_this ) + if( ret ) + { + if( p_enc->fmt_in.i_cat != AUDIO_ES || +- (p_context->channels <= 2 && i_codec_id != AV_CODEC_ID_MP2 ++ (p_enc->fmt_out.audio.i_channels <= 2 && i_codec_id != AV_CODEC_ID_MP2 + && i_codec_id != AV_CODEC_ID_MP3) ) + errmsg: + { +@@ -922,7 +922,7 @@ errmsg: + goto error; + } + +- if( p_context->channels > 2 ) ++ if( p_enc->fmt_out.audio.i_channels > 2 ) + { + p_context->channels = 2; + p_context->channel_layout = channel_mask[p_context->channels][1]; +@@ -1028,7 +1028,7 @@ errmsg: + p_context->frame_size : + AV_INPUT_BUFFER_MIN_SIZE; + p_sys->i_buffer_out = av_samples_get_buffer_size(NULL, +- p_sys->p_context->channels, p_sys->i_frame_size, ++ p_enc->fmt_out.audio.i_channels, p_sys->i_frame_size, + p_sys->p_context->sample_fmt, DEFAULT_ALIGN); + p_sys->p_buffer = av_malloc( p_sys->i_buffer_out ); + if ( unlikely( p_sys->p_buffer == NULL ) ) +@@ -1278,7 +1278,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns + { + block_t *p_block = NULL; + //How much we need to copy from new packet +- const size_t leftover = leftover_samples * p_sys->p_context->channels * p_sys->i_sample_bytes; ++ const size_t leftover = leftover_samples * p_enc->fmt_out.audio.i_channels * p_sys->i_sample_bytes; + + av_frame_unref( p_sys->frame ); + p_sys->frame->format = p_sys->p_context->sample_fmt; +@@ -1301,7 +1301,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns + // We need to deinterleave from p_aout_buf to p_buffer the leftover bytes + if( p_sys->b_planar ) + aout_Deinterleave( p_sys->p_interleave_buf, p_sys->p_buffer, +- p_sys->i_frame_size, p_sys->p_context->channels, p_enc->fmt_in.i_codec ); ++ p_sys->i_frame_size, p_enc->fmt_out.audio.i_channels, p_enc->fmt_in.i_codec ); + else + memcpy( p_sys->p_buffer + buffer_delay, p_aout_buf->p_buffer, leftover); + +@@ -1319,7 +1319,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns + memset( p_sys->p_buffer + (leftover+buffer_delay), 0, padding_size ); + buffer_delay += padding_size; + } +- if( avcodec_fill_audio_frame( p_sys->frame, p_sys->p_context->channels, ++ if( avcodec_fill_audio_frame( p_sys->frame, p_enc->fmt_out.audio.i_channels, + p_sys->p_context->sample_fmt, p_sys->b_planar ? p_sys->p_interleave_buf : p_sys->p_buffer, + p_sys->i_buffer_out, + DEFAULT_ALIGN) < 0 ) +@@ -1349,7 +1349,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) + + //i_bytes_left is amount of bytes we get + i_samples_left = p_aout_buf ? p_aout_buf->i_nb_samples : 0; +- buffer_delay = p_sys->i_samples_delay * p_sys->i_sample_bytes * p_sys->p_context->channels; ++ buffer_delay = p_sys->i_samples_delay * p_sys->i_sample_bytes * p_enc->fmt_out.audio.i_channels; + + //p_sys->i_buffer_out = p_sys->i_frame_size * chan * p_sys->i_sample_bytes + //Calculate how many bytes we would need from current buffer to fill frame +@@ -1418,12 +1418,12 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) + p_sys->frame->channels = p_sys->p_context->channels; + + const int in_bytes = p_sys->frame->nb_samples * +- p_sys->p_context->channels * p_sys->i_sample_bytes; ++ p_enc->fmt_out.audio.i_channels* p_sys->i_sample_bytes; + + if( p_sys->b_planar ) + { + aout_Deinterleave( p_sys->p_buffer, p_aout_buf->p_buffer, +- p_sys->frame->nb_samples, p_sys->p_context->channels, p_enc->fmt_in.i_codec ); ++ p_sys->frame->nb_samples, p_enc->fmt_out.audio.i_channels, p_enc->fmt_in.i_codec ); + + } + else +@@ -1431,7 +1431,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) + memcpy(p_sys->p_buffer, p_aout_buf->p_buffer, in_bytes); + } + +- if( avcodec_fill_audio_frame( p_sys->frame, p_sys->p_context->channels, ++ if( avcodec_fill_audio_frame( p_sys->frame, p_enc->fmt_out.audio.i_channels, + p_sys->p_context->sample_fmt, + p_sys->p_buffer, + p_sys->i_buffer_out, +@@ -1457,7 +1457,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) + if( p_aout_buf->i_nb_samples > 0 ) + { + memcpy( p_sys->p_buffer + buffer_delay, p_aout_buf->p_buffer, +- p_aout_buf->i_nb_samples * p_sys->i_sample_bytes * p_sys->p_context->channels); ++ p_aout_buf->i_nb_samples * p_sys->i_sample_bytes * p_enc->fmt_out.audio.i_channels); + p_sys->i_samples_delay += p_aout_buf->i_nb_samples; + } + diff --git a/patches/0069-codec-avcodec-map-AYUV-as-RAWVIDEO-with-ffmpeg-6.0.patch b/patches/0069-codec-avcodec-map-AYUV-as-RAWVIDEO-with-ffmpeg-6.0.patch new file mode 100644 index 00000000..c1536864 --- /dev/null +++ b/patches/0069-codec-avcodec-map-AYUV-as-RAWVIDEO-with-ffmpeg-6.0.patch @@ -0,0 +1,27 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Tue, 23 Apr 2024 13:13:30 +0700 +Subject: codec: avcodec: map AYUV as RAWVIDEO with ffmpeg 6.0 + +(cherry picked from commit 955ef939467a628eb8da08e0d5eaefc9a3484cba) +--- + modules/codec/avcodec/fourcc.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/modules/codec/avcodec/fourcc.c b/modules/codec/avcodec/fourcc.c +index 33c6cae..97f3188 100644 +--- a/modules/codec/avcodec/fourcc.c ++++ b/modules/codec/avcodec/fourcc.c +@@ -182,8 +182,12 @@ static const struct vlc_avcodec_fourcc video_codecs[] = + /* AV_CODEC_ID_V210X */ + { VLC_CODEC_TMV, AV_CODEC_ID_TMV }, + { VLC_CODEC_V210, AV_CODEC_ID_V210 }, +-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 50, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100 ++#if LIBAVCODEC_VERSION_MICRO >= 100 ++# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 42, 102 ) ++ { VLC_CODEC_VUYA, AV_CODEC_ID_RAWVIDEO }, ++# elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 50, 100 ) + { VLC_CODEC_VUYA, AV_CODEC_ID_AYUV }, ++# endif + #endif + /* AV_CODEC_ID_DPX */ + { VLC_CODEC_MAD, AV_CODEC_ID_MAD }, diff --git a/patches/0070-avcodec-encoder-fix-channel_layout-conditionals.patch b/patches/0070-avcodec-encoder-fix-channel_layout-conditionals.patch new file mode 100644 index 00000000..6092fed3 --- /dev/null +++ b/patches/0070-avcodec-encoder-fix-channel_layout-conditionals.patch @@ -0,0 +1,63 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Thu, 13 Jun 2024 12:21:58 +0700 +Subject: avcodec: encoder: fix channel_layout conditionals + +--- + modules/codec/avcodec/encoder.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c +index 52848de..6bd58f5 100644 +--- a/modules/codec/avcodec/encoder.c ++++ b/modules/codec/avcodec/encoder.c +@@ -43,12 +43,13 @@ + #include + + #include +-#include + + #include "avcodec.h" + #include "avcommon.h" + +-#if LIBAVUTIL_VERSION_CHECK( 52,2,6,0,0 ) ++#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100)) ++ ++#if API_CHANNEL_LAYOUT + # include + #endif + +@@ -157,6 +158,7 @@ struct encoder_sys_t + + + /* Taken from audio.c*/ ++#if API_CHANNEL_LAYOUT + static const uint64_t pi_channels_map[][2] = + { + { AV_CH_FRONT_LEFT, AOUT_CHAN_LEFT }, +@@ -193,6 +195,7 @@ static const uint32_t channel_mask[][2] = { + {AOUT_CHANS_7_1, AV_CH_LAYOUT_7POINT1}, + {AOUT_CHANS_8_1, AV_CH_LAYOUT_OCTAGONAL}, + }; ++#endif + + static const char *const ppsz_enc_options[] = { + "keyint", "bframes", "vt", "qmin", "qmax", "codec", "hq", +@@ -746,7 +749,7 @@ int InitVideoEnc( vlc_object_t *p_this ) + p_context->time_base.num = 1; + p_context->time_base.den = p_context->sample_rate; + p_context->channels = p_enc->fmt_out.audio.i_channels; +-#if LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 0) ++#if API_CHANNEL_LAYOUT + p_context->channel_layout = channel_mask[p_context->channels][1]; + + /* Setup Channel ordering for multichannel audio +@@ -925,7 +928,9 @@ errmsg: + if( p_enc->fmt_out.audio.i_channels > 2 ) + { + p_context->channels = 2; ++#if API_CHANNEL_LAYOUT + p_context->channel_layout = channel_mask[p_context->channels][1]; ++#endif + + /* Change fmt_in in order to ask for a channels conversion */ + p_enc->fmt_in.audio.i_channels = diff --git a/patches/0071-codec-avcodec-fix-audio-channel_layout-conditionals.patch b/patches/0071-codec-avcodec-fix-audio-channel_layout-conditionals.patch new file mode 100644 index 00000000..add27326 --- /dev/null +++ b/patches/0071-codec-avcodec-fix-audio-channel_layout-conditionals.patch @@ -0,0 +1,60 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Sat, 17 Aug 2024 11:22:33 +0700 +Subject: codec: avcodec: fix audio channel_layout conditionals + +--- + modules/codec/avcodec/audio.c | 23 +++++++++++++++-------- + 1 file changed, 15 insertions(+), 8 deletions(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index ad8a40a..c74757c 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -41,8 +41,11 @@ + #include + #include + +-#include ++#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100)) + ++#if API_CHANNEL_LAYOUT ++# include ++#endif + + /***************************************************************************** + * decoder_sys_t : decoder descriptor +@@ -598,7 +601,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + p_sys->i_previous_channels = p_sys->p_context->ch_layout.nb_channels; + p_sys->i_previous_layout = p_sys->p_context->ch_layout.u.mask; + } +-#else ++#elif API_CHANNEL_LAYOUT + if( p_sys->i_previous_channels == p_sys->p_context->channels && + p_sys->i_previous_layout == p_sys->p_context->channel_layout ) + return; +@@ -612,15 +615,19 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + const unsigned i_order_max = sizeof(pi_channels_map)/sizeof(*pi_channels_map); + uint32_t pi_order_src[i_order_max]; + +- int i_channels_src = 0; ++ int i_channels_src = 0, channel_count; ++ uint64_t channel_layout_mask; + #if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) +- uint64_t channel_layout_mask = p_sys->p_context->ch_layout.u.mask; +- int channel_count = p_sys->p_context->ch_layout.nb_channels; +-#else +- uint64_t channel_layout_mask = ++ channel_layout_mask = p_sys->p_context->ch_layout.u.mask; ++ channel_count = p_sys->p_context->ch_layout.nb_channels; ++#elif API_CHANNEL_LAYOUT ++ channel_layout_mask = + p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout : + (uint64_t)av_get_default_channel_layout( p_sys->p_context->channels ); +- int channel_count = p_sys->p_context->channels; ++ channel_count = p_sys->p_context->channels; ++#else ++ channel_layout_mask = NULL; ++ channel_count = p_sys->p_context->channels; + #endif + + if( channel_layout_mask ) diff --git a/patches/0072-demux-mux-avformat-use-ch_layout-from-ffmpeg-5.1.patch b/patches/0072-demux-mux-avformat-use-ch_layout-from-ffmpeg-5.1.patch new file mode 100644 index 00000000..c25a72fe --- /dev/null +++ b/patches/0072-demux-mux-avformat-use-ch_layout-from-ffmpeg-5.1.patch @@ -0,0 +1,43 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Tue, 23 Apr 2024 13:14:53 +0700 +Subject: demux/mux: avformat: use ch_layout from ffmpeg 5.1 + +merger pick from commit a55ec32ab3760d9edb6f05481cd3a981aa42878d +and fixup 195f0c98599b55950c49a62f98d9d3495be310df +--- + modules/demux/avformat/demux.c | 4 ++++ + modules/demux/avformat/mux.c | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c +index 3b355bb..830dc01 100644 +--- a/modules/demux/avformat/demux.c ++++ b/modules/demux/avformat/demux.c +@@ -401,7 +401,11 @@ int avformat_OpenDemux( vlc_object_t *p_this ) + es_format_Init( &es_fmt, AUDIO_ES, fcc ); + es_fmt.i_original_fourcc = CodecTagToFourcc( cp->codec_tag ); + es_fmt.i_bitrate = cp->bit_rate; ++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 24, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100 ++ es_fmt.audio.i_channels = cp->ch_layout.nb_channels; ++#else + es_fmt.audio.i_channels = cp->channels; ++#endif + es_fmt.audio.i_rate = cp->sample_rate; + es_fmt.audio.i_bitspersample = cp->bits_per_coded_sample; + es_fmt.audio.i_blockalign = cp->block_align; +diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c +index c708276..8bf8735 100644 +--- a/modules/demux/avformat/mux.c ++++ b/modules/demux/avformat/mux.c +@@ -267,7 +267,11 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) + { + case AUDIO_ES: + codecpar->codec_type = AVMEDIA_TYPE_AUDIO; ++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 24, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100 ++ av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels ); ++#else + codecpar->channels = fmt->audio.i_channels; ++#endif + codecpar->sample_rate = fmt->audio.i_rate; + stream->time_base = (AVRational){1, codecpar->sample_rate}; + if (fmt->i_bitrate == 0) { diff --git a/patches/0073-avcodec-add-handling-of-new-ch_layout-in-audio-encod.patch b/patches/0073-avcodec-add-handling-of-new-ch_layout-in-audio-encod.patch new file mode 100644 index 00000000..d11d4f5d --- /dev/null +++ b/patches/0073-avcodec-add-handling-of-new-ch_layout-in-audio-encod.patch @@ -0,0 +1,58 @@ +From: Ilkka Ollakka +Date: Tue, 4 Jul 2023 16:53:43 +0300 +Subject: avcodec: add handling of new ch_layout in audio encoder + +conditioned to avcodec version where is it added + +(cherry picked from commit c4302ca59dd79efd7208a45a3fcdc44388fd03a8) +--- + modules/codec/avcodec/encoder.c | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c +index 6bd58f5..757f93b 100644 +--- a/modules/codec/avcodec/encoder.c ++++ b/modules/codec/avcodec/encoder.c +@@ -927,11 +927,14 @@ errmsg: + + if( p_enc->fmt_out.audio.i_channels > 2 ) + { ++#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++ av_channel_layout_default( &p_context->ch_layout, 2 ); ++#else + p_context->channels = 2; +-#if API_CHANNEL_LAYOUT ++# if API_CHANNEL_LAYOUT + p_context->channel_layout = channel_mask[p_context->channels][1]; ++# endif + #endif +- + /* Change fmt_in in order to ask for a channels conversion */ + p_enc->fmt_in.audio.i_channels = + p_enc->fmt_out.audio.i_channels = 2; +@@ -1288,8 +1291,12 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns + av_frame_unref( p_sys->frame ); + p_sys->frame->format = p_sys->p_context->sample_fmt; + p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay; ++#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++ av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout); ++#else + p_sys->frame->channel_layout = p_sys->p_context->channel_layout; + p_sys->frame->channels = p_sys->p_context->channels; ++#endif + + p_sys->frame->pts = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den / + CLOCK_FREQ / p_sys->p_context->time_base.num; +@@ -1419,8 +1426,12 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) + p_sys->frame->pts = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den / + CLOCK_FREQ / p_sys->p_context->time_base.num; + ++#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++ av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout); ++#else + p_sys->frame->channel_layout = p_sys->p_context->channel_layout; + p_sys->frame->channels = p_sys->p_context->channels; ++#endif + + const int in_bytes = p_sys->frame->nb_samples * + p_enc->fmt_out.audio.i_channels* p_sys->i_sample_bytes; diff --git a/patches/0074-avcodec-use-ch_layout-for-channel-layout-in-audio-en.patch b/patches/0074-avcodec-use-ch_layout-for-channel-layout-in-audio-en.patch new file mode 100644 index 00000000..b55fd618 --- /dev/null +++ b/patches/0074-avcodec-use-ch_layout-for-channel-layout-in-audio-en.patch @@ -0,0 +1,110 @@ +From: Ilkka Ollakka +Date: Tue, 4 Jul 2023 16:55:28 +0300 +Subject: avcodec: use ch_layout for channel layout in audio encoder + +channels and channel_layout has been deprecated in FFMPEG 5.1 and will be removed eventually + +also always create the mapping, as ch_layout is always there + +(cherry picked from commit b73dc8841d999c6be9de718cd2cd3aeb13279792) +--- + modules/codec/avcodec/encoder.c | 53 +++++++++++++++++------------------------ + 1 file changed, 22 insertions(+), 31 deletions(-) + +diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c +index 757f93b..ae746c9 100644 +--- a/modules/codec/avcodec/encoder.c ++++ b/modules/codec/avcodec/encoder.c +@@ -183,6 +183,7 @@ static const uint64_t pi_channels_map[][2] = + { AV_CH_STEREO_RIGHT, 0 }, + }; + ++# if !LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) + static const uint32_t channel_mask[][2] = { + {0,0}, + {AOUT_CHAN_CENTER, AV_CH_LAYOUT_MONO}, +@@ -195,6 +196,7 @@ static const uint32_t channel_mask[][2] = { + {AOUT_CHANS_7_1, AV_CH_LAYOUT_7POINT1}, + {AOUT_CHANS_8_1, AV_CH_LAYOUT_OCTAGONAL}, + }; ++# endif + #endif + + static const char *const ppsz_enc_options[] = { +@@ -748,49 +750,36 @@ int InitVideoEnc( vlc_object_t *p_this ) + date_Set( &p_sys->buffer_date, AV_NOPTS_VALUE ); + p_context->time_base.num = 1; + p_context->time_base.den = p_context->sample_rate; +- p_context->channels = p_enc->fmt_out.audio.i_channels; +-#if API_CHANNEL_LAYOUT +- p_context->channel_layout = channel_mask[p_context->channels][1]; + +- /* Setup Channel ordering for multichannel audio ++ /* Setup Channel ordering for audio + * as VLC channel order isn't same as libavcodec expects + */ + + p_sys->i_channels_to_reorder = 0; + +- /* Specified order ++ /* Create channel layout for avcodec + * Copied from audio.c + */ +- const unsigned i_order_max = 8 * sizeof(p_context->channel_layout); +- uint32_t pi_order_dst[AOUT_CHAN_MAX] = { }; ++#if API_CHANNEL_LAYOUT ++ uint32_t pi_order_dst[AOUT_CHAN_MAX] = { 0 }; + uint32_t order_mask = 0; + int i_channels_src = 0; +- +- if( p_context->channel_layout ) +- { +- msg_Dbg( p_enc, "Creating channel order for reordering"); +- for( unsigned i = 0; i < sizeof(pi_channels_map)/sizeof(*pi_channels_map); i++ ) +- { +- if( p_context->channel_layout & pi_channels_map[i][0] ) +- { +- msg_Dbg( p_enc, "%d %"PRIx64" mapped to %"PRIx64"", i_channels_src, pi_channels_map[i][0], pi_channels_map[i][1]); +- pi_order_dst[i_channels_src++] = pi_channels_map[i][1]; +- order_mask |= pi_channels_map[i][1]; +- } +- } +- } +- else ++ msg_Dbg( p_enc, "Creating channel order for reordering"); ++# if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++ av_channel_layout_default( &p_context->ch_layout, p_enc->fmt_out.audio.i_channels ); ++ uint64_t channel_mask = p_context->ch_layout.u.mask; ++# else ++ p_context->channels = p_enc->fmt_out.audio.i_channels; ++ p_context->channel_layout = channel_mask[p_context->channels][1]; ++ uint64_t channel_mask = p_context->channel_layout; ++# endif ++ for( unsigned i = 0; i < sizeof(pi_channels_map)/sizeof(*pi_channels_map); i++ ) + { +- msg_Dbg( p_enc, "Creating default channel order for reordering"); +- /* Create default order */ +- for( unsigned int i = 0; i < __MIN( i_order_max, (unsigned)p_sys->p_context->channels ); i++ ) ++ if( channel_mask & pi_channels_map[i][0] ) + { +- if( i < sizeof(pi_channels_map)/sizeof(*pi_channels_map) ) +- { +- msg_Dbg( p_enc, "%d channel is %"PRIx64"", i_channels_src, pi_channels_map[i][1]); +- pi_order_dst[i_channels_src++] = pi_channels_map[i][1]; +- order_mask |= pi_channels_map[i][1]; +- } ++ msg_Dbg( p_enc, "%d %"PRIx64" mapped to %"PRIx64"", i_channels_src, pi_channels_map[i][0], pi_channels_map[i][1]); ++ pi_order_dst[i_channels_src++] = pi_channels_map[i][1]; ++ order_mask |= pi_channels_map[i][1]; + } + } + if( i_channels_src != p_enc->fmt_out.audio.i_channels ) +@@ -799,6 +788,8 @@ int InitVideoEnc( vlc_object_t *p_this ) + p_sys->i_channels_to_reorder = + aout_CheckChannelReorder( NULL, pi_order_dst, order_mask, + p_sys->pi_reorder_layout ); ++#else ++ p_context->channels = p_enc->fmt_out.audio.i_channels; + #endif + + if ( p_enc->fmt_out.i_codec == VLC_CODEC_MP4A ) diff --git a/patches/0075-codec-avcodec-bypass-removed-define-for-Intel-workar.patch b/patches/0075-codec-avcodec-bypass-removed-define-for-Intel-workar.patch new file mode 100644 index 00000000..424ce112 --- /dev/null +++ b/patches/0075-codec-avcodec-bypass-removed-define-for-Intel-workar.patch @@ -0,0 +1,40 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Mon, 12 Aug 2024 19:32:42 +0700 +Subject: codec: avcodec: bypass removed define for Intel workarounds + +adapted from cherry picked commit 1280728ad305f00ceba3491ce11bf66107017a6c +--- + modules/codec/avcodec/d3d11va.c | 4 ++++ + modules/codec/avcodec/dxva2.c | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c +index e1560a9..5260628 100644 +--- a/modules/codec/avcodec/d3d11va.c ++++ b/modules/codec/avcodec/d3d11va.c +@@ -55,6 +55,10 @@ + #define D3D_DecoderSurface ID3D11VideoDecoderOutputView + #include "directx_va.h" + ++#ifndef FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO ++# define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 // moved to libavcodec/dxva2_internal.h :/ ++#endif ++ + static int Open(vlc_va_t *, AVCodecContext *, const AVPixFmtDescriptor *, enum PixelFormat, + const es_format_t *, picture_sys_t *p_sys); + static void Close(vlc_va_t *, void **); +diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c +index 2e6809a..037ad7d 100644 +--- a/modules/codec/avcodec/dxva2.c ++++ b/modules/codec/avcodec/dxva2.c +@@ -43,6 +43,10 @@ + #define D3D_DecoderSurface IDirect3DSurface9 + #include "directx_va.h" + ++#ifndef FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO ++# define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 // moved to libavcodec/dxva2_internal.h :/ ++#endif ++ + static int Open(vlc_va_t *, AVCodecContext *, const AVPixFmtDescriptor *, enum PixelFormat, + const es_format_t *, picture_sys_t *p_sys); + static void Close(vlc_va_t *, void **); diff --git a/patches/0076-codec-x265-handle-X265_MAX_FRAME_THREADS-on-newer-CP.patch b/patches/0076-codec-x265-handle-X265_MAX_FRAME_THREADS-on-newer-CP.patch new file mode 100644 index 00000000..4cbca90a --- /dev/null +++ b/patches/0076-codec-x265-handle-X265_MAX_FRAME_THREADS-on-newer-CP.patch @@ -0,0 +1,37 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Tue, 24 Sep 2024 18:43:08 +0700 +Subject: codec: x265: handle X265_MAX_FRAME_THREADS on newer CPU + +libx265 will bail out when hitting the limit + +x265 [error]: frameNumThreads (--frame-threads) must be [0 .. X265_MAX_FRAME_THREADS) + +(cherry picked from commit bbd294d1e46b86653873ec88d49e9a15cbaae68f) +--- + modules/codec/x265.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/modules/codec/x265.c b/modules/codec/x265.c +index 5585f2c..2943ea6 100644 +--- a/modules/codec/x265.c ++++ b/modules/codec/x265.c +@@ -36,6 +36,10 @@ + + #include + ++#ifndef X265_MAX_FRAME_THREADS ++# define X265_MAX_FRAME_THREADS 16 ++#endif ++ + /***************************************************************************** + * Module descriptor + *****************************************************************************/ +@@ -156,6 +160,8 @@ static int Open (vlc_object_t *p_this) + x265_param_default(param); + + param->frameNumThreads = vlc_GetCPUCount(); ++ if(param->frameNumThreads > X265_MAX_FRAME_THREADS) ++ param->frameNumThreads = X265_MAX_FRAME_THREADS; + param->bEnableWavefront = 0; // buggy in x265, use frame threading for now + param->maxCUSize = 16; /* use smaller macroblock */ + diff --git a/patches/0077-codec-x265-handle-4.0-encoding-API-change.patch b/patches/0077-codec-x265-handle-4.0-encoding-API-change.patch new file mode 100644 index 00000000..80a503db --- /dev/null +++ b/patches/0077-codec-x265-handle-4.0-encoding-API-change.patch @@ -0,0 +1,41 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Tue, 24 Sep 2024 18:53:11 +0700 +Subject: codec: x265: handle 4.0 encoding API change + +refs #28799 + +(cherry picked from commit 83e2c3955a563b60f74f05cea57e3ab5f447c8fb) +--- + modules/codec/x265.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/modules/codec/x265.c b/modules/codec/x265.c +index 2943ea6..50fe328 100644 +--- a/modules/codec/x265.c ++++ b/modules/codec/x265.c +@@ -74,6 +74,11 @@ static block_t *Encode(encoder_t *p_enc, picture_t *p_pict) + x265_picture pic; + + x265_picture_init(&p_sys->param, &pic); ++#ifdef MAX_SCALABLE_LAYERS ++ /* Handle API changes for scalable layers output in x265 4.0 */ ++ x265_picture *pics[MAX_SCALABLE_LAYERS] = {NULL}; ++ pics[0] = &pic; ++#endif + + if (likely(p_pict)) { + pic.pts = p_pict->date; +@@ -92,8 +97,13 @@ static block_t *Encode(encoder_t *p_enc, picture_t *p_pict) + + x265_nal *nal; + uint32_t i_nal = 0; ++#ifdef MAX_SCALABLE_LAYERS ++ x265_encoder_encode(p_sys->h, &nal, &i_nal, ++ likely(p_pict) ? &pic : NULL, pics); ++#else + x265_encoder_encode(p_sys->h, &nal, &i_nal, + likely(p_pict) ? &pic : NULL, &pic); ++#endif + + if (!i_nal) + return NULL; diff --git a/patches/0078-mux-avformat-fix-avio-callbacks-signature-with-ffmpe.patch b/patches/0078-mux-avformat-fix-avio-callbacks-signature-with-ffmpe.patch new file mode 100644 index 00000000..e4be1773 --- /dev/null +++ b/patches/0078-mux-avformat-fix-avio-callbacks-signature-with-ffmpe.patch @@ -0,0 +1,78 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Sun, 7 Jul 2024 11:14:05 +0200 +Subject: mux: avformat: fix avio callbacks signature with ffmpeg 6.1 + +API signature changes introduced depending on a positive define, +then removed later, making it break prior or post removal... + +(adapted from commit 503c04fad9239420be26d67aab4d5f63c53eb4f7) +--- + modules/codec/avcodec/avcommon_compat.h | 3 +++ + modules/demux/avformat/mux.c | 18 ++++++++++++++++++ + 2 files changed, 21 insertions(+) + +diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h +index 9d16b3d..561ad83 100644 +--- a/modules/codec/avcodec/avcommon_compat.h ++++ b/modules/codec/avcodec/avcommon_compat.h +@@ -77,6 +77,9 @@ + #ifndef FF_MAX_B_FRAMES + # define FF_MAX_B_FRAMES 16 // FIXME: remove this + #endif ++#ifndef FF_API_AVIO_WRITE_NONCONST // removed in ffmpeg 7 ++# define FF_API_AVIO_WRITE_NONCONST (LIBAVFORMAT_VERSION_MAJOR < 61) ++#endif + + #endif /* HAVE_LIBAVCODEC_AVCODEC_H */ + +diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c +index 8bf8735..033a87b 100644 +--- a/modules/demux/avformat/mux.c ++++ b/modules/demux/avformat/mux.c +@@ -74,11 +74,20 @@ static int AddStream( sout_mux_t *, sout_input_t * ); + static void DelStream( sout_mux_t *, sout_input_t * ); + static int Mux ( sout_mux_t * ); + ++#if FF_API_AVIO_WRITE_NONCONST + static int IOWrite( void *opaque, uint8_t *buf, int buf_size ); ++#else ++static int IOWrite( void *opaque, const uint8_t *buf, int buf_size ); ++#endif + static int64_t IOSeek( void *opaque, int64_t offset, int whence ); + #if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) ++# if FF_API_AVIO_WRITE_NONCONST + static int IOWriteTyped(void *opaque, uint8_t *buf, int buf_size, + enum AVIODataMarkerType type, int64_t time); ++# else ++int IOWriteTyped(void *opaque, const uint8_t *buf, int buf_size, ++ enum AVIODataMarkerType type, int64_t time); ++# endif + #endif + + /***************************************************************************** +@@ -411,8 +420,13 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input ) + } + + #if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) ++# if FF_API_AVIO_WRITE_NONCONST + int IOWriteTyped(void *opaque, uint8_t *buf, int buf_size, + enum AVIODataMarkerType type, int64_t time) ++# else ++int IOWriteTyped(void *opaque, const uint8_t *buf, int buf_size, ++ enum AVIODataMarkerType type, int64_t time) ++# endif + { + VLC_UNUSED(time); + +@@ -512,7 +526,11 @@ static int Control( sout_mux_t *p_mux, int i_query, va_list args ) + /***************************************************************************** + * I/O wrappers for libavformat + *****************************************************************************/ ++#if FF_API_AVIO_WRITE_NONCONST + static int IOWrite( void *opaque, uint8_t *buf, int buf_size ) ++#else ++static int IOWrite( void *opaque, const uint8_t *buf, int buf_size ) ++#endif + { + sout_mux_t *p_mux = opaque; + sout_mux_sys_t *p_sys = p_mux->p_sys; diff --git a/patches/0079-fetcher-don-t-download-network-metadata-if-the-user-.patch b/patches/0079-fetcher-don-t-download-network-metadata-if-the-user-.patch new file mode 100644 index 00000000..ace955ae --- /dev/null +++ b/patches/0079-fetcher-don-t-download-network-metadata-if-the-user-.patch @@ -0,0 +1,29 @@ +From: Steve Lhomme +Date: Mon, 14 Oct 2024 11:11:36 +0200 +Subject: fetcher: don't download network metadata if the user doesn't want to + +The option is defined as "Allow metadata network access". If it's false (default but query during the first run) that means the +user doesn't want to check metadata from the network. +So we should not start a network job when there's a possibility to do it. + +This is a regression from ea88b8d68e252445bcc305fd7a3dd45ef3ce0126. +Before that we only used FETCHER_SCOPE_LOCAL if the option wasn't set. + +(cherry picked from commit 1a85d6793948c88afe35692d8c17a82089a58f33) +--- + src/playlist/fetcher.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/playlist/fetcher.c b/src/playlist/fetcher.c +index 44c13a5..f11b420 100644 +--- a/src/playlist/fetcher.c ++++ b/src/playlist/fetcher.c +@@ -294,7 +294,7 @@ static void SearchLocal( playlist_fetcher_t* fetcher, struct fetcher_request* re + if( SearchByScope( fetcher, req, FETCHER_SCOPE_LOCAL ) == VLC_SUCCESS ) + return; /* done */ + +- if( var_InheritBool( fetcher->owner, "metadata-network-access" ) || ++ if( var_InheritBool( fetcher->owner, "metadata-network-access" ) && + req->options & META_REQUEST_OPTION_SCOPE_NETWORK ) + { + if( background_worker_Push( fetcher->network, req, NULL, 0 ) ) diff --git a/patches/0080-hds-fix-crash-if-bootstrap-data-or-URL-are-missing.patch b/patches/0080-hds-fix-crash-if-bootstrap-data-or-URL-are-missing.patch new file mode 100644 index 00000000..5c38d548 --- /dev/null +++ b/patches/0080-hds-fix-crash-if-bootstrap-data-or-URL-are-missing.patch @@ -0,0 +1,31 @@ +From: Tristan Matthews +Date: Wed, 16 Oct 2024 15:29:35 -0400 +Subject: hds: fix crash if bootstrap data or URL are missing + +(cherry picked from commit 01934b339cf5f467c9c2e3a7fb61c7458347684c) +--- + modules/stream_filter/hds/hds.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules/stream_filter/hds/hds.c b/modules/stream_filter/hds/hds.c +index 631691f..4d55538 100644 +--- a/modules/stream_filter/hds/hds.c ++++ b/modules/stream_filter/hds/hds.c +@@ -1557,7 +1557,7 @@ static int parse_Manifest( stream_t *s, manifest_t *m ) + new_stream->metadata_len = medias[i].metadata_len; + } + +- if( ! sys->live ) ++ if( ! sys->live && bootstraps[j].data ) + { + parse_BootstrapData( (vlc_object_t*)s, + new_stream, +@@ -1579,7 +1579,7 @@ static int parse_Manifest( stream_t *s, manifest_t *m ) + total_duration += chunk->duration; + } + } +- else ++ else if( bootstraps[j].url ) + { + if( !(new_stream->abst_url = strdup( bootstraps[j].url ) ) ) + { diff --git a/patches/0081-qt-add-option-to-use-dark-palette.patch b/patches/0081-qt-add-option-to-use-dark-palette.patch new file mode 100644 index 00000000..d974f4aa --- /dev/null +++ b/patches/0081-qt-add-option-to-use-dark-palette.patch @@ -0,0 +1,395 @@ +From: Pratik Patel +Date: Wed, 16 Oct 2024 19:54:22 +0530 +Subject: qt: add option to use dark palette + +--- + modules/gui/qt/components/simple_preferences.cpp | 19 ++++++++ + modules/gui/qt/dialogs/firstrun.cpp | 2 +- + modules/gui/qt/dialogs/firstrun.hpp | 6 +-- + modules/gui/qt/dialogs/help.cpp | 37 +++++++++----- + modules/gui/qt/qt.cpp | 62 +++++++++++++++++++++++- + modules/gui/qt/qt.hpp | 3 ++ + modules/gui/qt/ui/about.ui | 7 --- + modules/gui/qt/ui/sprefs_interface.ui | 7 +++ + modules/gui/qt/util/qvlcframe.hpp | 60 ++++++++++++++++++++++- + 9 files changed, 176 insertions(+), 27 deletions(-) + +diff --git a/modules/gui/qt/components/simple_preferences.cpp b/modules/gui/qt/components/simple_preferences.cpp +index 6192dbb..2204958 100644 +--- a/modules/gui/qt/components/simple_preferences.cpp ++++ b/modules/gui/qt/components/simple_preferences.cpp +@@ -27,6 +27,7 @@ + # include "config.h" + #endif + ++#include "qt.hpp" + #include "components/simple_preferences.hpp" + #include "components/preferences_widgets.hpp" + +@@ -771,6 +772,10 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, + /* defaults to qt */ + ui.qt->setChecked( true ); + } ++ ++ if ( var_InheritBool( p_intf, "qt-dark-palette" ) ) ++ ui.qtdark->setChecked( true ); /*dark palette*/ ++ + free( psz_intf ); + + optionWidgets["skinRB"] = ui.skins; +@@ -797,6 +802,20 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, + ui.styleStackedWidget, setCurrentIndex( int ) ); + ui.styleStackedWidget->setCurrentIndex( radioGroup->checkedId() ); + ++ CONFIG_BOOL( "qt-dark-palette", qtdark ); ++ // Connecting the stateChanged signal of the checkbox ++ connect(ui.qtdark, &QCheckBox::stateChanged, ui.stylesCombo, [combobox = ui.stylesCombo](const int state) { ++ if (state == Qt::CheckState::Checked) { ++ // Set the current style to "Fusion" ++ combobox->setCurrentText(QStringLiteral("Fusion")); ++ // Apply the dark palette ++ applyDarkPalette(); ++ } else { ++ // Remove the custom palette and revert to the default ++ QApplication::setPalette(QApplication::style()->standardPalette()); ++ } ++ }); ++ + CONNECT( ui.minimalviewBox, toggled( bool ), + ui.mainPreview, setNormalPreview( bool ) ); + CONFIG_BOOL( "qt-minimal-view", minimalviewBox ); +diff --git a/modules/gui/qt/dialogs/firstrun.cpp b/modules/gui/qt/dialogs/firstrun.cpp +index 43f7108..3b1a95a 100644 +--- a/modules/gui/qt/dialogs/firstrun.cpp ++++ b/modules/gui/qt/dialogs/firstrun.cpp +@@ -30,7 +30,7 @@ + #include + + FirstRun::FirstRun( QWidget *_p, intf_thread_t *_p_intf ) +- : QWidget( _p ), p_intf( _p_intf ) ++ : QVLCDialog( _p, _p_intf), p_intf( _p_intf ) + { + msg_Dbg( p_intf, "Boring first Run Wizard" ); + buildPrivDialog(); +diff --git a/modules/gui/qt/dialogs/firstrun.hpp b/modules/gui/qt/dialogs/firstrun.hpp +index 6d3a0d0..3854399 100644 +--- a/modules/gui/qt/dialogs/firstrun.hpp ++++ b/modules/gui/qt/dialogs/firstrun.hpp +@@ -22,12 +22,10 @@ + *****************************************************************************/ + + #include "qt.hpp" +- +-#include +-#include ++#include "util/qvlcframe.hpp" + + class QCheckBox; +-class FirstRun : public QWidget ++class FirstRun : public QVLCDialog + { + Q_OBJECT + public: +diff --git a/modules/gui/qt/dialogs/help.cpp b/modules/gui/qt/dialogs/help.cpp +index 4e3b2d8..8f63042 100644 +--- a/modules/gui/qt/dialogs/help.cpp ++++ b/modules/gui/qt/dialogs/help.cpp +@@ -87,12 +87,23 @@ AboutDialog::AboutDialog( intf_thread_t *_p_intf) + setWindowRole( "vlc-about" ); + setWindowModality( Qt::WindowModal ); + +- ui.version->setText(qfu( " " VERSION_MESSAGE ) ); +- ui.title->setText("

" + qtr( "VLC media player" ) + "

"); ++ QString linkColor; ++ if ( var_InheritBool( p_intf, "qt-dark-palette" ) ) { ++ ui.horizontalFrame->setStyleSheet("background-color: rgb(10, 10, 10);"); ++ ui.footer->setStyleSheet("background-color: rgb(25, 25, 25);"); ++ linkColor = "#ffa851"; ++ } else { ++ ui.horizontalFrame->setStyleSheet("background-color: rgb(230, 230, 230);"); ++ ui.footer->setStyleSheet("background-color: rgb(245, 245, 245);"); ++ linkColor = "#0057ae"; ++ } + +- ui.MainBlabla->setText("" + +- qtr( "

VLC media player is a free and open source media player, encoder, and streamer made by the volunteers of the VideoLAN community.

VLC uses its internal codecs, works on essentially every popular platform, and can read almost all files, CDs, DVDs, network streams, capture cards and other media formats!

Help and join us!" ) + +- "

"); ++ ui.version->setText(qfu( " " VERSION_MESSAGE ) ); ++ ui.title->setText("

" + qtr( "VLC media player" ) + "

"); ++ QString translatedString = qtr( "

VLC media player is a free and open source media player, encoder, and streamer made by the volunteers of the VideoLAN community.

VLC uses its internal codecs, works on essentially every popular platform, and can read almost all files, CDs, DVDs, network streams, capture cards and other media formats!

Help and join us!" ); ++ if ( var_InheritBool( p_intf, "qt-dark-palette" ) ) ++ translatedString.remove(QLatin1String("#0057ae")); ++ ui.MainBlabla->setText("" + translatedString + "

"); + + #if 0 + if( QDate::currentDate().dayOfYear() >= QT_XMAS_JOKE_DAY && var_InheritBool( p_intf, "qt-icon-change" ) ) +@@ -116,15 +127,17 @@ AboutDialog::AboutDialog( intf_thread_t *_p_intf) + /* People who wrote the software */ + ui.authorsPage->setText( qfu( psz_authors ) ); + +- ui.licenseButton->setText( "

"+qtr( "License" )+"

"); +- ui.licenseButton->installEventFilter( this ); +- +- ui.authorsButton->setText( "

"+qtr( "Authors" )+"

"); +- ui.authorsButton->installEventFilter( this ); ++ ui.licenseButton->setText(QString("

%2

") ++ .arg(linkColor, qtr("License"))); ++ ui.licenseButton->installEventFilter(this); + +- ui.creditsButton->setText( "

"+qtr( "Credits" )+"

"); +- ui.creditsButton->installEventFilter( this ); ++ ui.authorsButton->setText(QString("

%2

") ++ .arg(linkColor, qtr("Authors"))); ++ ui.authorsButton->installEventFilter(this); + ++ ui.creditsButton->setText(QString("

%2

") ++ .arg(linkColor, qtr("Credits"))); ++ ui.creditsButton->installEventFilter(this); + ui.version->installEventFilter( this ); + } + +diff --git a/modules/gui/qt/qt.cpp b/modules/gui/qt/qt.cpp +index cefc758..0286a7c 100644 +--- a/modules/gui/qt/qt.cpp ++++ b/modules/gui/qt/qt.cpp +@@ -121,6 +121,9 @@ static void ShowDialog ( intf_thread_t *, int, int, intf_dialog_args_t * ); + + #define ERROR_TEXT N_( "Show unimportant error and warnings dialogs" ) + ++#define QT_DARK_TEXT N_( "Applies a dark palette to the style." ) ++#define QT_DARK_LONGTEXT N_( "Applies a dark palette to the style. Works best with Fusion style." ) ++ + #define UPDATER_TEXT N_( "Activate the updates availability notification" ) + #define UPDATER_LONGTEXT N_( "Activate the automatic notification of new " \ + "versions of the software. It runs once every " \ +@@ -256,6 +259,8 @@ vlc_module_begin () + RECENTPLAY_FILTER_TEXT, RECENTPLAY_FILTER_LONGTEXT, false ) + add_integer( "qt-continue", 1, CONTINUE_PLAYBACK_TEXT, CONTINUE_PLAYBACK_TEXT, false ) + change_integer_list(i_continue_list, psz_continue_list_text ) ++ add_bool( "qt-dark-palette", false, QT_DARK_TEXT, ++ QT_DARK_LONGTEXT, false ) + + #ifdef UPDATE_CHECK + add_bool( "qt-updates-notif", true, UPDATER_TEXT, +@@ -403,6 +408,57 @@ static bool HasWayland( void ) + } + #endif + ++bool isDarkPaletteEnabled(intf_thread_t *p_intf) { ++ static const bool darkPalette = var_InheritBool( p_intf, "qt-dark-palette" ); ++ return darkPalette; ++} ++ ++void applyDarkPalette() { ++ QPalette darkPalette; ++ QColor darkColor("#2d2d2d"); ++ QColor gray("#808080"); ++ QColor lightGray("#aaaaaa"); ++ QColor baseColor("#191919"); ++ ++ // Active group (the currently focused window) ++ darkPalette.setColor(QPalette::Active, QPalette::Window, darkColor); ++ darkPalette.setColor(QPalette::Active, QPalette::WindowText, Qt::white); ++ darkPalette.setColor(QPalette::Active, QPalette::Base, baseColor); ++ darkPalette.setColor(QPalette::Active, QPalette::AlternateBase, darkColor); ++ darkPalette.setColor(QPalette::Active, QPalette::Button, darkColor); ++ darkPalette.setColor(QPalette::Active, QPalette::ButtonText, Qt::white); ++ darkPalette.setColor(QPalette::Active, QPalette::Text, Qt::white); ++ darkPalette.setColor(QPalette::Active, QPalette::Highlight, QColor("#2A82DA")); ++ darkPalette.setColor(QPalette::Active, QPalette::HighlightedText, Qt::white); ++ darkPalette.setColor(QPalette::Active, QPalette::Link, QColor("#FFA851")); ++ ++ // Inactive group (unfocused window) ++ darkPalette.setColor(QPalette::Inactive, QPalette::Window, darkColor); ++ darkPalette.setColor(QPalette::Inactive, QPalette::WindowText, lightGray); ++ darkPalette.setColor(QPalette::Inactive, QPalette::Base, baseColor); ++ darkPalette.setColor(QPalette::Inactive, QPalette::AlternateBase, darkColor); ++ darkPalette.setColor(QPalette::Inactive, QPalette::Button, darkColor); ++ darkPalette.setColor(QPalette::Inactive, QPalette::ButtonText, lightGray); ++ darkPalette.setColor(QPalette::Inactive, QPalette::Text, lightGray); ++ darkPalette.setColor(QPalette::Inactive, QPalette::Highlight, QColor("#2A82DA")); ++ darkPalette.setColor(QPalette::Inactive, QPalette::HighlightedText, lightGray); ++ ++ // Disabled group (grayed-out widgets) ++ darkPalette.setColor(QPalette::Disabled, QPalette::Window, darkColor); ++ darkPalette.setColor(QPalette::Disabled, QPalette::WindowText, lightGray); ++ darkPalette.setColor(QPalette::Disabled, QPalette::Base, baseColor); ++ darkPalette.setColor(QPalette::Disabled, QPalette::AlternateBase, darkColor); ++ darkPalette.setColor(QPalette::Disabled, QPalette::Button, lightGray.darker()); ++ darkPalette.setColor(QPalette::Disabled, QPalette::ButtonText, gray); ++ darkPalette.setColor(QPalette::Disabled, QPalette::Text, gray); ++ darkPalette.setColor(QPalette::Disabled, QPalette::Highlight, gray); ++ darkPalette.setColor(QPalette::Disabled, QPalette::HighlightedText, gray); ++ darkPalette.setColor(QPalette::Disabled, QPalette::Light, darkColor); ++ ++ // Apply the dark palette globally ++ QApplication::setPalette(darkPalette); ++} ++ + /* Open Interface */ + static int Open( vlc_object_t *p_this, bool isDialogProvider ) + { +@@ -637,9 +693,13 @@ static void *ThreadPlatform( void *obj, char *platform_name ) + + /* Loads and tries to apply the preferred QStyle */ + QString s_style = getSettings()->value( "MainWindow/QtStyle", "" ).toString(); +- if( s_style.compare("") != 0 ) ++ if (!s_style.isEmpty()) + QApplication::setStyle( s_style ); + ++ // Apply dark palette only if dark palette is enabled ++ if (isDarkPaletteEnabled(p_intf)) ++ applyDarkPalette(); ++ + /* Launch */ + app.exec(); + +diff --git a/modules/gui/qt/qt.hpp b/modules/gui/qt/qt.hpp +index e59583a..489ef75 100644 +--- a/modules/gui/qt/qt.hpp ++++ b/modules/gui/qt/qt.hpp +@@ -63,6 +63,9 @@ enum{ + NOTIFICATION_ALWAYS = 2, + }; + ++bool isDarkPaletteEnabled(intf_thread_t *); ++void applyDarkPalette(); ++ + struct intf_sys_t + { + vlc_thread_t thread; +diff --git a/modules/gui/qt/ui/about.ui b/modules/gui/qt/ui/about.ui +index ff05004..619227b 100644 +--- a/modules/gui/qt/ui/about.ui ++++ b/modules/gui/qt/ui/about.ui +@@ -65,10 +65,6 @@ + 0 + + +- +- background-color: rgb(245, 245, 245); +-color:rgb(0,0,0); +- + + + +@@ -288,9 +284,6 @@ margin-bottom: 6px; + 60 + + +- +- background-color: rgb(230, 230, 230);color:rgb(0,0,0); +- + + + 0 +diff --git a/modules/gui/qt/ui/sprefs_interface.ui b/modules/gui/qt/ui/sprefs_interface.ui +index da2faf5..d8425b3 100644 +--- a/modules/gui/qt/ui/sprefs_interface.ui ++++ b/modules/gui/qt/ui/sprefs_interface.ui +@@ -284,6 +284,13 @@ + + + ++ ++ ++ ++ Use a dark palette ++ ++ ++ + + + +diff --git a/modules/gui/qt/util/qvlcframe.hpp b/modules/gui/qt/util/qvlcframe.hpp +index fc422c2..ab32bc3 100644 +--- a/modules/gui/qt/util/qvlcframe.hpp ++++ b/modules/gui/qt/util/qvlcframe.hpp +@@ -36,6 +36,47 @@ + + #include "qt.hpp" + ++#ifdef _WIN32 ++ #include ++ #include ++ #include ++ ++ inline bool setImmersiveDarkModeAttribute(HWND hwnd, bool enable) { ++ typedef HRESULT(WINAPI *DwmSetWindowAttributeFunc)(HWND, DWORD, LPCVOID, DWORD); ++ static const auto dwmSetWindowAttributeFunc = []() -> DwmSetWindowAttributeFunc { ++ if (QSysInfo::windowsVersion() < QSysInfo::WinVersion::WV_WINDOWS10) ++ return nullptr; ++ ++ QLibrary dwmapidll("dwmapi"); ++ return reinterpret_cast(dwmapidll.resolve("DwmSetWindowAttribute")); ++ }(); ++ ++ if (!dwmSetWindowAttributeFunc || !hwnd) ++ return false; ++ ++ const BOOL pvAttribute = enable ? TRUE : FALSE; ++ ++ enum Attribute : DWORD { ++ DWMWA_USE_IMMERSIVE_DARK_MODE = 20, ++ DWMWA_USE_DARK_MODE_UNDOCUMENTED = 19 ++ }; ++ ++ return SUCCEEDED(dwmSetWindowAttributeFunc(hwnd, Attribute::DWMWA_USE_IMMERSIVE_DARK_MODE, &pvAttribute, sizeof(pvAttribute))) ++ || SUCCEEDED(dwmSetWindowAttributeFunc(hwnd, Attribute::DWMWA_USE_DARK_MODE_UNDOCUMENTED, &pvAttribute, sizeof(pvAttribute))); ++ } ++ ++ // Overloaded function to apply dark mode to QWidget* ++ inline bool setImmersiveDarkModeAttribute(QWidget *widget) { ++ if (widget->isWindow()) { ++ widget->ensurePolished(); ++ HWND hwnd = (HWND)widget->winId(); // Get native window handle ++ return setImmersiveDarkModeAttribute(hwnd,true); // Call the HWND version ++ } ++ return false; ++ } ++ ++#endif ++ + class QVLCTools + { + public: +@@ -102,7 +143,12 @@ class QVLCFrame : public QWidget + { + public: + QVLCFrame( intf_thread_t *_p_intf ) : QWidget( NULL ), p_intf( _p_intf ) +- {}; ++ { ++#ifdef Q_OS_WIN ++ if (isDarkPaletteEnabled(p_intf)) ++ setImmersiveDarkModeAttribute(this); ++#endif ++ }; + virtual ~QVLCFrame() {}; + + void toggleVisible() +@@ -155,6 +201,10 @@ public: + { + setWindowFlags( Qt::Dialog|Qt::WindowMinMaxButtonsHint| + Qt::WindowSystemMenuHint|Qt::WindowCloseButtonHint ); ++#ifdef Q_OS_WIN ++ if (isDarkPaletteEnabled(p_intf)) ++ setImmersiveDarkModeAttribute(this); ++#endif + } + virtual ~QVLCDialog() {}; + void toggleVisible() +@@ -191,7 +241,13 @@ protected: + class QVLCMW : public QMainWindow + { + public: +- QVLCMW( intf_thread_t *_p_intf ) : QMainWindow( NULL ), p_intf( _p_intf ){} ++ QVLCMW( intf_thread_t *_p_intf ) : QMainWindow( NULL ), p_intf( _p_intf ) ++ { ++#ifdef Q_OS_WIN ++ if (isDarkPaletteEnabled(p_intf)) ++ setImmersiveDarkModeAttribute(this); ++#endif ++ } + void toggleVisible() + { + if( isVisible() ) hide(); diff --git a/patches/0082-avcommon-rename-LIBAVUTIL_VERSION_CHECK-to-LIBAV_UTI.patch b/patches/0082-avcommon-rename-LIBAVUTIL_VERSION_CHECK-to-LIBAV_UTI.patch new file mode 100644 index 00000000..8f5ce5b2 --- /dev/null +++ b/patches/0082-avcommon-rename-LIBAVUTIL_VERSION_CHECK-to-LIBAV_UTI.patch @@ -0,0 +1,119 @@ +From: Steve Lhomme +Date: Thu, 7 Nov 2024 07:20:57 +0100 +Subject: avcommon: rename LIBAVUTIL_VERSION_CHECK to LIBAV_UTIL_VERSION_CHECK + +The LIBAVUTIL_VERSION_CHECK form will be for checks also done in 4.0. + +No functional changes. +--- + modules/codec/avcodec/audio.c | 2 +- + modules/codec/avcodec/avcommon_compat.h | 6 +++--- + modules/codec/avcodec/chroma.c | 2 +- + modules/codec/avcodec/encoder.c | 2 +- + modules/codec/avcodec/va.c | 2 +- + modules/codec/avcodec/video.c | 6 +++--- + 6 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index c74757c..44335ec 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -41,7 +41,7 @@ + #include + #include + +-#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100)) ++#define API_CHANNEL_LAYOUT (LIBAV_UTIL_VERSION_CHECK( 52, 2, 6, 0, 100)) + + #if API_CHANNEL_LAYOUT + # include +diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h +index 561ad83..bb2b9ae 100644 +--- a/modules/codec/avcodec/avcommon_compat.h ++++ b/modules/codec/avcodec/avcommon_compat.h +@@ -86,15 +86,15 @@ + #ifdef HAVE_LIBAVUTIL_AVUTIL_H + # include + +-/* LIBAVUTIL_VERSION_CHECK checks for the right version of libav and FFmpeg ++/* LIBAV_UTIL_VERSION_CHECK checks for the right version of libav and FFmpeg + * a is the major version + * b and c the minor and micro versions of libav + * d and e the minor and micro versions of FFmpeg */ +-#define LIBAVUTIL_VERSION_CHECK( a, b, c, d, e ) \ ++#define LIBAV_UTIL_VERSION_CHECK( a, b, c, d, e ) \ + ( (LIBAVUTIL_VERSION_MICRO < 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \ + (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) ) + +-#if !LIBAVUTIL_VERSION_CHECK( 52, 11, 0, 32, 100 ) ++#if !LIBAV_UTIL_VERSION_CHECK( 52, 11, 0, 32, 100 ) + # define AV_PIX_FMT_FLAG_HWACCEL PIX_FMT_HWACCEL + #endif + +diff --git a/modules/codec/avcodec/chroma.c b/modules/codec/avcodec/chroma.c +index cb9634d..da20bcb 100644 +--- a/modules/codec/avcodec/chroma.c ++++ b/modules/codec/avcodec/chroma.c +@@ -180,7 +180,7 @@ static const struct + {VLC_CODEC_GBR_PLANAR_16B, AV_PIX_FMT_GBRP16BE, 0, 0, 0 }, + + /* XYZ */ +-#if LIBAVUTIL_VERSION_CHECK(52, 10, 0, 25, 100) ++#if LIBAV_UTIL_VERSION_CHECK(52, 10, 0, 25, 100) + {VLC_CODEC_XYZ12, AV_PIX_FMT_XYZ12, 0xfff0, 0xfff0, 0xfff0}, + #endif + { 0, 0, 0, 0, 0 } +diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c +index ae746c9..c9a34d8 100644 +--- a/modules/codec/avcodec/encoder.c ++++ b/modules/codec/avcodec/encoder.c +@@ -47,7 +47,7 @@ + #include "avcodec.h" + #include "avcommon.h" + +-#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100)) ++#define API_CHANNEL_LAYOUT (LIBAV_UTIL_VERSION_CHECK( 52, 2, 6, 0, 100)) + + #if API_CHANNEL_LAYOUT + # include +diff --git a/modules/codec/avcodec/va.c b/modules/codec/avcodec/va.c +index 0feb03b..06de54d 100644 +--- a/modules/codec/avcodec/va.c ++++ b/modules/codec/avcodec/va.c +@@ -58,7 +58,7 @@ vlc_fourcc_t vlc_va_GetChroma(enum PixelFormat hwfmt, enum PixelFormat swfmt) + } + break; + +-#if LIBAVUTIL_VERSION_CHECK(54, 13, 1, 24, 100) ++#if LIBAV_UTIL_VERSION_CHECK(54, 13, 1, 24, 100) + case AV_PIX_FMT_D3D11VA_VLD: + switch (swfmt) + { +diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c +index 8c892dd..deefd30 100644 +--- a/modules/codec/avcodec/video.c ++++ b/modules/codec/avcodec/video.c +@@ -257,12 +257,12 @@ static int lavc_GetVideoFormat(decoder_t *dec, video_format_t *restrict fmt, + case AVCOL_TRC_BT2020_12: + fmt->transfer = TRANSFER_FUNC_BT2020; + break; +-#if LIBAVUTIL_VERSION_CHECK( 55, 14, 0, 31, 100) ++#if LIBAV_UTIL_VERSION_CHECK( 55, 14, 0, 31, 100) + case AVCOL_TRC_ARIB_STD_B67: + fmt->transfer = TRANSFER_FUNC_ARIB_B67; + break; + #endif +-#if LIBAVUTIL_VERSION_CHECK( 55, 17, 0, 37, 100) ++#if LIBAV_UTIL_VERSION_CHECK( 55, 17, 0, 37, 100) + case AVCOL_TRC_SMPTE2084: + fmt->transfer = TRANSFER_FUNC_SMPTE_ST2084; + break; +@@ -687,7 +687,7 @@ static int ffmpeg_OpenVa(decoder_t *p_dec, AVCodecContext *p_context, + static const enum PixelFormat hwfmts[] = + { + #ifdef _WIN32 +-#if LIBAVUTIL_VERSION_CHECK(54, 13, 1, 24, 100) ++#if LIBAV_UTIL_VERSION_CHECK(54, 13, 1, 24, 100) + AV_PIX_FMT_D3D11VA_VLD, + #endif + AV_PIX_FMT_DXVA2_VLD, diff --git a/patches/0083-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch b/patches/0083-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch new file mode 100644 index 00000000..5b0e9fac --- /dev/null +++ b/patches/0083-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch @@ -0,0 +1,101 @@ +From: Steve Lhomme +Date: Wed, 19 Jun 2024 13:56:31 +0200 +Subject: avcommon: use a specific macro to check the FFmpeg libavutil version + +This macro doesn't check for libav which is assumed to not have to relevant +code. This is the same macro name used in VLC 4.0. +--- + modules/codec/avcodec/avcommon_compat.h | 6 +++++- + modules/codec/avcodec/chroma.c | 8 ++++---- + modules/codec/avcodec/video.c | 7 ++++--- + 3 files changed, 13 insertions(+), 8 deletions(-) + +diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h +index bb2b9ae..5bade93 100644 +--- a/modules/codec/avcodec/avcommon_compat.h ++++ b/modules/codec/avcodec/avcommon_compat.h +@@ -86,7 +86,11 @@ + #ifdef HAVE_LIBAVUTIL_AVUTIL_H + # include + +-/* LIBAV_UTIL_VERSION_CHECK checks for the right version of libav and FFmpeg ++/* check the FFmpeg libavutil version */ ++#define LIBAVUTIL_VERSION_CHECK( a, d, e ) \ ++ (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) ++ ++/* LIBAV_UTIL_VERSION_CHECK checks for the right libavutil version of libav and FFmpeg + * a is the major version + * b and c the minor and micro versions of libav + * d and e the minor and micro versions of FFmpeg */ +diff --git a/modules/codec/avcodec/chroma.c b/modules/codec/avcodec/chroma.c +index da20bcb..156fb0b 100644 +--- a/modules/codec/avcodec/chroma.c ++++ b/modules/codec/avcodec/chroma.c +@@ -86,7 +86,7 @@ static const struct + {VLC_CODEC_I420_9B, AV_PIX_FMT_YUV420P9BE, 0, 0, 0 }, + {VLC_CODEC_I420_10L, AV_PIX_FMT_YUV420P10LE, 0, 0, 0 }, + {VLC_CODEC_I420_10B, AV_PIX_FMT_YUV420P10BE, 0, 0, 0 }, +-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 54, 17, 100 ) ) ++#if LIBAVUTIL_VERSION_CHECK( 54, 17, 100 ) + {VLC_CODEC_I420_12L, AV_PIX_FMT_YUV420P12LE, 0, 0, 0 }, + {VLC_CODEC_I420_12B, AV_PIX_FMT_YUV420P12BE, 0, 0, 0 }, + #endif +@@ -100,7 +100,7 @@ static const struct + {VLC_CODEC_I422_9B, AV_PIX_FMT_YUV422P9BE, 0, 0, 0 }, + {VLC_CODEC_I422_10L, AV_PIX_FMT_YUV422P10LE, 0, 0, 0 }, + {VLC_CODEC_I422_10B, AV_PIX_FMT_YUV422P10BE, 0, 0, 0 }, +-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 54, 17, 100 ) ) ++#if LIBAVUTIL_VERSION_CHECK( 54, 17, 100 ) + {VLC_CODEC_I422_12L, AV_PIX_FMT_YUV422P12LE, 0, 0, 0 }, + {VLC_CODEC_I422_12B, AV_PIX_FMT_YUV422P12BE, 0, 0, 0 }, + #endif +@@ -116,7 +116,7 @@ static const struct + {VLC_CODEC_I444_9B, AV_PIX_FMT_YUV444P9BE, 0, 0, 0 }, + {VLC_CODEC_I444_10L, AV_PIX_FMT_YUV444P10LE, 0, 0, 0 }, + {VLC_CODEC_I444_10B, AV_PIX_FMT_YUV444P10BE, 0, 0, 0 }, +-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 54, 17, 100 ) ) ++#if LIBAVUTIL_VERSION_CHECK( 54, 17, 100 ) + {VLC_CODEC_I444_12L, AV_PIX_FMT_YUV444P12LE, 0, 0, 0 }, + {VLC_CODEC_I444_12B, AV_PIX_FMT_YUV444P12BE, 0, 0, 0 }, + #endif +@@ -145,7 +145,7 @@ static const struct + VLC_RGB( VLC_CODEC_RGB32, AV_PIX_FMT_0BGR32, AV_PIX_FMT_0RGB32, 0x000000ff, 0x0000ff00, 0x00ff0000 ) + #endif + +-#if (LIBAVUTIL_VERSION_MICRO == 0 || LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 55, 0, 100 ) ) ++#if (LIBAVUTIL_VERSION_MICRO == 0 || LIBAVUTIL_VERSION_CHECK( 55, 0, 100 ) ) + #ifdef WORDS_BIGENDIAN + {VLC_CODEC_RGBA64, AV_PIX_FMT_RGBA64BE, 0, 0, 0 }, + #else /* !WORDS_BIGENDIAN */ +diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c +index deefd30..d3284da 100644 +--- a/modules/codec/avcodec/video.c ++++ b/modules/codec/avcodec/video.c +@@ -39,7 +39,8 @@ + #include + #include + #include +-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 55, 16, 101 ) ) ++#include "avcommon_compat.h" ++#if LIBAVUTIL_VERSION_CHECK( 55, 16, 101 ) + #include + #endif + +@@ -995,7 +996,7 @@ static int DecodeSidedata( decoder_t *p_dec, const AVFrame *frame, picture_t *p_ + decoder_sys_t *p_sys = p_dec->p_sys; + bool format_changed = false; + +-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 55, 16, 101 ) ) ++#if LIBAVUTIL_VERSION_CHECK( 55, 16, 101 ) + #define FROM_AVRAT(default_factor, avrat) \ + (uint64_t)(default_factor) * (avrat).num / (avrat).den + const AVFrameSideData *metadata = +@@ -1050,7 +1051,7 @@ static int DecodeSidedata( decoder_t *p_dec, const AVFrame *frame, picture_t *p_ + #undef FROM_AVRAT + } + #endif +-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 55, 60, 100 ) ) ++#if LIBAVUTIL_VERSION_CHECK( 55, 60, 100 ) + const AVFrameSideData *metadata_lt = + av_frame_get_side_data( frame, + AV_FRAME_DATA_CONTENT_LIGHT_LEVEL ); diff --git a/patches/0084-avcommon-rename-LIBAVFORMAT_VERSION_CHECK-to-LIBAV_F.patch b/patches/0084-avcommon-rename-LIBAVFORMAT_VERSION_CHECK-to-LIBAV_F.patch new file mode 100644 index 00000000..63a6d284 --- /dev/null +++ b/patches/0084-avcommon-rename-LIBAVFORMAT_VERSION_CHECK-to-LIBAV_F.patch @@ -0,0 +1,75 @@ +From: Steve Lhomme +Date: Thu, 7 Nov 2024 07:22:26 +0100 +Subject: avcommon: rename LIBAVFORMAT_VERSION_CHECK to + LIBAV_FORMAT_VERSION_CHECK + +The LIBAVFORMAT_VERSION_CHECK form will be for checks also done in 4.0. + +No functional changes. +--- + modules/codec/avcodec/avcommon_compat.h | 2 +- + modules/demux/avformat/mux.c | 10 +++++----- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h +index 5bade93..d0096bc 100644 +--- a/modules/codec/avcodec/avcommon_compat.h ++++ b/modules/codec/avcodec/avcommon_compat.h +@@ -126,7 +126,7 @@ + #ifdef HAVE_LIBAVFORMAT_AVFORMAT_H + # include + +-#define LIBAVFORMAT_VERSION_CHECK( a, b, c, d, e ) \ ++#define LIBAV_FORMAT_VERSION_CHECK( a, b, c, d, e ) \ + ( (LIBAVFORMAT_VERSION_MICRO < 100 && LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \ + (LIBAVFORMAT_VERSION_MICRO >= 100 && LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) ) + +diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c +index 033a87b..182e945 100644 +--- a/modules/demux/avformat/mux.c ++++ b/modules/demux/avformat/mux.c +@@ -61,7 +61,7 @@ struct sout_mux_sys_t + bool b_write_header; + bool b_write_keyframe; + bool b_error; +-#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) ++#if LIBAV_FORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) + bool b_header_done; + #endif + }; +@@ -80,7 +80,7 @@ static int IOWrite( void *opaque, uint8_t *buf, int buf_size ); + static int IOWrite( void *opaque, const uint8_t *buf, int buf_size ); + #endif + static int64_t IOSeek( void *opaque, int64_t offset, int whence ); +-#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) ++#if LIBAV_FORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) + # if FF_API_AVIO_WRITE_NONCONST + static int IOWriteTyped(void *opaque, uint8_t *buf, int buf_size, + enum AVIODataMarkerType type, int64_t time); +@@ -168,7 +168,7 @@ int avformat_OpenMux( vlc_object_t *p_this ) + p_sys->b_write_header = true; + p_sys->b_write_keyframe = false; + p_sys->b_error = false; +-#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) ++#if LIBAV_FORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) + p_sys->io->write_data_type = IOWriteTyped; + p_sys->b_header_done = false; + #endif +@@ -419,7 +419,7 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input ) + return VLC_SUCCESS; + } + +-#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) ++#if LIBAV_FORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) + # if FF_API_AVIO_WRITE_NONCONST + int IOWriteTyped(void *opaque, uint8_t *buf, int buf_size, + enum AVIODataMarkerType type, int64_t time) +@@ -545,7 +545,7 @@ static int IOWrite( void *opaque, const uint8_t *buf, int buf_size ) + + if( p_sys->b_write_header ) + p_buf->i_flags |= BLOCK_FLAG_HEADER; +-#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) ++#if LIBAV_FORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 ) + if( !p_sys->b_header_done ) + p_buf->i_flags |= BLOCK_FLAG_HEADER; + #endif diff --git a/patches/0085-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch b/patches/0085-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch new file mode 100644 index 00000000..1d9e5409 --- /dev/null +++ b/patches/0085-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch @@ -0,0 +1,103 @@ +From: Steve Lhomme +Date: Wed, 19 Jun 2024 13:57:24 +0200 +Subject: avcommon: use a specific macro to check the FFmpeg libavformat + version + +This macro doesn't check for libav which is assumed to not have to relevant +code. This is the same macro name used in VLC 4.0. +--- + modules/codec/avcodec/avcommon.h | 2 +- + modules/codec/avcodec/avcommon_compat.h | 8 ++++++++ + modules/demux/avformat/demux.c | 3 +-- + modules/demux/avformat/mux.c | 11 ++++------- + 4 files changed, 14 insertions(+), 10 deletions(-) + +diff --git a/modules/codec/avcodec/avcommon.h b/modules/codec/avcodec/avcommon.h +index ff5dba0..aa0c0b8 100644 +--- a/modules/codec/avcodec/avcommon.h ++++ b/modules/codec/avcodec/avcommon.h +@@ -106,7 +106,7 @@ static inline void vlc_init_avformat(vlc_object_t *obj) + + avformat_network_init(); + +-#if (LIBAVFORMAT_VERSION_MICRO < 100) || (LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(58, 9, 100)) ++#if (LIBAVFORMAT_VERSION_MICRO < 100) || !(LIBAVFORMAT_VERSION_CHECK(58, 9, 100)) + av_register_all(); + #endif + +diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h +index d0096bc..3feab3a 100644 +--- a/modules/codec/avcodec/avcommon_compat.h ++++ b/modules/codec/avcodec/avcommon_compat.h +@@ -126,6 +126,14 @@ + #ifdef HAVE_LIBAVFORMAT_AVFORMAT_H + # include + ++/* check the FFmpeg libavformat version */ ++#define LIBAVFORMAT_VERSION_CHECK( a, d, e ) \ ++ (LIBAVFORMAT_VERSION_MICRO >= 100 && LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) ++ ++/* LIBAV_FORMAT_VERSION_CHECK checks for the right libavformat version of libav and FFmpeg ++ * a is the major version ++ * b and c the minor and micro versions of libav ++ * d and e the minor and micro versions of FFmpeg */ + #define LIBAV_FORMAT_VERSION_CHECK( a, b, c, d, e ) \ + ( (LIBAVFORMAT_VERSION_MICRO < 100 && LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \ + (LIBAVFORMAT_VERSION_MICRO >= 100 && LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) ) +diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c +index 830dc01..39d2366 100644 +--- a/modules/demux/avformat/demux.c ++++ b/modules/demux/avformat/demux.c +@@ -52,8 +52,7 @@ + + # define HAVE_AVUTIL_CODEC_ATTACHMENT 1 + +-#if LIBAVFORMAT_VERSION_MICRO >= 100 && \ +- LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(59, 0, 100) ++#if LIBAVFORMAT_VERSION_CHECK(59, 0, 100) + # define AVF_MAYBE_CONST const + #else + # define AVF_MAYBE_CONST +diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c +index 182e945..664a646 100644 +--- a/modules/demux/avformat/mux.c ++++ b/modules/demux/avformat/mux.c +@@ -95,8 +95,7 @@ int IOWriteTyped(void *opaque, const uint8_t *buf, int buf_size, + *****************************************************************************/ + int avformat_OpenMux( vlc_object_t *p_this ) + { +-#if LIBAVFORMAT_VERSION_MICRO >= 100 && \ +- LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(59, 0, 100) ++#if LIBAVFORMAT_VERSION_CHECK(59, 0, 100) + const AVOutputFormat *file_oformat; + #else + AVOutputFormat *file_oformat; +@@ -104,8 +103,7 @@ int avformat_OpenMux( vlc_object_t *p_this ) + sout_mux_t *p_mux = (sout_mux_t*)p_this; + bool dummy = !strcmp( p_mux->p_access->psz_access, "dummy"); + +-#if ( (LIBAVFORMAT_VERSION_MICRO >= 100) \ +- && (LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(58, 7, 100)) ) ++#if LIBAVFORMAT_VERSION_MICRO >= 100 && !(LIBAVFORMAT_VERSION_CHECK(58, 7, 100)) + if( dummy && strlen(p_mux->p_access->psz_path) + >= sizeof (((AVFormatContext *)NULL)->filename) ) + return VLC_EGENERIC; +@@ -144,8 +142,7 @@ int avformat_OpenMux( vlc_object_t *p_this ) + p_sys->oc->oformat = file_oformat; + /* If we use dummy access, let avformat write output */ + if( dummy ) +-#if ( (LIBAVFORMAT_VERSION_MICRO >= 100) \ +- && (LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(58, 7, 100)) ) ++#if LIBAVFORMAT_VERSION_CHECK(58, 7, 100) + p_sys->oc->url = av_strdup(p_mux->p_access->psz_path); + #else + strcpy( p_sys->oc->filename, p_mux->p_access->psz_path ); +@@ -397,7 +394,7 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input ) + pkt->dts = p_data->i_dts * p_stream->time_base.den / + CLOCK_FREQ / p_stream->time_base.num; + +-#if LIBAVFORMAT_VERSION_MICRO >= 100 && LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(59, 2, 103) ++#if LIBAVFORMAT_VERSION_MICRO >= 100 && !(LIBAVFORMAT_VERSION_CHECK(59, 2, 103)) + /* this is another hack to prevent libavformat from triggering the "non monotone timestamps" check in avformat/utils.c */ + p_stream->cur_dts = ( p_data->i_dts * p_stream->time_base.den / + CLOCK_FREQ / p_stream->time_base.num ) - 1; diff --git a/patches/0086-avcommon-rename-LIBAVCODEC_VERSION_CHECK-to-LIBAV_CO.patch b/patches/0086-avcommon-rename-LIBAVCODEC_VERSION_CHECK-to-LIBAV_CO.patch new file mode 100644 index 00000000..8406e77a --- /dev/null +++ b/patches/0086-avcommon-rename-LIBAVCODEC_VERSION_CHECK-to-LIBAV_CO.patch @@ -0,0 +1,214 @@ +From: Steve Lhomme +Date: Thu, 7 Nov 2024 07:23:27 +0100 +Subject: avcommon: rename LIBAVCODEC_VERSION_CHECK to + LIBAV_CODEC_VERSION_CHECK + +The LIBAVCODEC_VERSION_CHECK form will be for checks also done in 4.0. + +No functional changes. +--- + modules/codec/avcodec/audio.c | 8 ++++---- + modules/codec/avcodec/avcommon_compat.h | 4 ++-- + modules/codec/avcodec/d3d11va.c | 4 ++-- + modules/codec/avcodec/encoder.c | 10 +++++----- + modules/codec/avcodec/fourcc.c | 14 +++++++------- + modules/codec/avcodec/video.c | 2 +- + 6 files changed, 21 insertions(+), 21 deletions(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index 44335ec..7a979e9 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -142,7 +142,7 @@ static int OpenAudioCodec( decoder_t *p_dec ) + } + + ctx->sample_rate = p_dec->fmt_in.audio.i_rate; +-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) + av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels ); + #else + ctx->channels = p_dec->fmt_in.audio.i_channels; +@@ -402,7 +402,7 @@ static int DecodeBlock( decoder_t *p_dec, block_t **pp_block ) + ret = avcodec_receive_frame( ctx, frame ); + if( ret == 0 ) + { +-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) + int channels = frame->ch_layout.nb_channels; + #else + int channels = ctx->channels; +@@ -592,7 +592,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate; + + /* */ +-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) + if( p_sys->i_previous_channels == p_sys->p_context->ch_layout.nb_channels && + p_sys->i_previous_layout == p_sys->p_context->ch_layout.u.mask ) + return; +@@ -617,7 +617,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + + int i_channels_src = 0, channel_count; + uint64_t channel_layout_mask; +-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) + channel_layout_mask = p_sys->p_context->ch_layout.u.mask; + channel_count = p_sys->p_context->ch_layout.nb_channels; + #elif API_CHANNEL_LAYOUT +diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h +index 3feab3a..b504fcd 100644 +--- a/modules/codec/avcodec/avcommon_compat.h ++++ b/modules/codec/avcodec/avcommon_compat.h +@@ -30,11 +30,11 @@ + #ifdef HAVE_LIBAVCODEC_AVCODEC_H + #include + +-/* LIBAVCODEC_VERSION_CHECK checks for the right version of libav and FFmpeg ++/* LIBAV_CODEC_VERSION_CHECK checks for the right version of libav and FFmpeg + * a is the major version + * b and c the minor and micro versions of libav + * d and e the minor and micro versions of FFmpeg */ +-#define LIBAVCODEC_VERSION_CHECK( a, b, c, d, e ) \ ++#define LIBAV_CODEC_VERSION_CHECK( a, b, c, d, e ) \ + ( (LIBAVCODEC_VERSION_MICRO < 100 && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \ + (LIBAVCODEC_VERSION_MICRO >= 100 && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) ) + +diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c +index 5260628..e1c10d3 100644 +--- a/modules/codec/avcodec/d3d11va.c ++++ b/modules/codec/avcodec/d3d11va.c +@@ -76,7 +76,7 @@ vlc_module_end() + * So we get the surfaces from the decoder pool when needed. We don't need to + * extract the decoded surface into the decoder picture anymore. + */ +-#define D3D11_DIRECT_DECODE LIBAVCODEC_VERSION_CHECK( 57, 30, 3, 72, 101 ) ++#define D3D11_DIRECT_DECODE LIBAV_CODEC_VERSION_CHECK( 57, 30, 3, 72, 101 ) + + #include /* must be last included to not redefine existing GUIDs */ + +@@ -764,7 +764,7 @@ static int DxCreateDecoderSurfaces(vlc_va_t *va, int codec_id, + assert(texDesc.Format == sys->render); + assert(texDesc.BindFlags & D3D11_BIND_DECODER); + +-#if !LIBAVCODEC_VERSION_CHECK( 57, 27, 2, 61, 102 ) ++#if !LIBAV_CODEC_VERSION_CHECK( 57, 27, 2, 61, 102 ) + if (pic->p_sys->slice_index != surface_idx) + { + msg_Warn(va, "d3d11va requires decoding slices to be the first in the texture (%d/%d)", +diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c +index c9a34d8..9cf9a7d 100644 +--- a/modules/codec/avcodec/encoder.c ++++ b/modules/codec/avcodec/encoder.c +@@ -183,7 +183,7 @@ static const uint64_t pi_channels_map[][2] = + { AV_CH_STEREO_RIGHT, 0 }, + }; + +-# if !LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++# if !LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) + static const uint32_t channel_mask[][2] = { + {0,0}, + {AOUT_CHAN_CENTER, AV_CH_LAYOUT_MONO}, +@@ -765,7 +765,7 @@ int InitVideoEnc( vlc_object_t *p_this ) + uint32_t order_mask = 0; + int i_channels_src = 0; + msg_Dbg( p_enc, "Creating channel order for reordering"); +-# if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++# if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) + av_channel_layout_default( &p_context->ch_layout, p_enc->fmt_out.audio.i_channels ); + uint64_t channel_mask = p_context->ch_layout.u.mask; + # else +@@ -918,7 +918,7 @@ errmsg: + + if( p_enc->fmt_out.audio.i_channels > 2 ) + { +-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) + av_channel_layout_default( &p_context->ch_layout, 2 ); + #else + p_context->channels = 2; +@@ -1282,7 +1282,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns + av_frame_unref( p_sys->frame ); + p_sys->frame->format = p_sys->p_context->sample_fmt; + p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay; +-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) + av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout); + #else + p_sys->frame->channel_layout = p_sys->p_context->channel_layout; +@@ -1417,7 +1417,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) + p_sys->frame->pts = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den / + CLOCK_FREQ / p_sys->p_context->time_base.num; + +-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) + av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout); + #else + p_sys->frame->channel_layout = p_sys->p_context->channel_layout; +diff --git a/modules/codec/avcodec/fourcc.c b/modules/codec/avcodec/fourcc.c +index 97f3188..3aea6b5 100644 +--- a/modules/codec/avcodec/fourcc.c ++++ b/modules/codec/avcodec/fourcc.c +@@ -230,7 +230,7 @@ static const struct vlc_avcodec_fourcc video_codecs[] = + { VLC_CODEC_CLLC, AV_CODEC_ID_CLLC }, + { VLC_CODEC_MSS2, AV_CODEC_ID_MSS2 }, + { VLC_CODEC_VP9, AV_CODEC_ID_VP9 }, +-#if LIBAVCODEC_VERSION_CHECK( 57, 26, 0, 83, 101 ) ++#if LIBAV_CODEC_VERSION_CHECK( 57, 26, 0, 83, 101 ) + { VLC_CODEC_AV1, AV_CODEC_ID_AV1 }, + #endif + { VLC_CODEC_ICOD, AV_CODEC_ID_AIC }, +@@ -285,19 +285,19 @@ static const struct vlc_avcodec_fourcc video_codecs[] = + /* ffmpeg only: AV_CODEC_ID_SNOW */ + /* ffmpeg only: AV_CODEC_ID_SMVJPEG */ + +-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 24, 102 ) ++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 24, 102 ) + { VLC_CODEC_CINEFORM, AV_CODEC_ID_CFHD }, + #endif + +-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 70, 100 ) ++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 70, 100 ) + { VLC_CODEC_PIXLET, AV_CODEC_ID_PIXLET }, + #endif + +-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 71, 101 ) ++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 101 ) + { VLC_CODEC_SPEEDHQ, AV_CODEC_ID_SPEEDHQ }, + #endif + +-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 79, 100 ) ++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 79, 100 ) + { VLC_CODEC_FMVC, AV_CODEC_ID_FMVC }, + #endif + }; +@@ -414,7 +414,7 @@ static const struct vlc_avcodec_fourcc audio_codecs[] = + /* AV_CODEC_ID_WESTWOOD_SND1 */ + { VLC_CODEC_GSM, AV_CODEC_ID_GSM }, + { VLC_CODEC_QDM2, AV_CODEC_ID_QDM2 }, +-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 71, 100 ) ++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 100 ) + { VLC_CODEC_QDMC, AV_CODEC_ID_QDMC }, + #endif + { VLC_CODEC_COOK, AV_CODEC_ID_COOK }, +@@ -482,7 +482,7 @@ static const struct vlc_avcodec_fourcc spu_codecs[] = + { VLC_CODEC_SSA, AV_CODEC_ID_SSA }, + /* AV_CODEC_ID_MOV_TEXT */ + { VLC_CODEC_BD_PG, AV_CODEC_ID_HDMV_PGS_SUBTITLE }, +-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 71, 100 ) ++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 100 ) + { VLC_CODEC_BD_TEXT, AV_CODEC_ID_HDMV_TEXT_SUBTITLE }, + #endif + { VLC_CODEC_TELETEXT, AV_CODEC_ID_DVB_TELETEXT }, +diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c +index d3284da..552c602 100644 +--- a/modules/codec/avcodec/video.c ++++ b/modules/codec/avcodec/video.c +@@ -1307,7 +1307,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block, bool *error + } + + /* Compute the PTS */ +-#if LIBAVCODEC_VERSION_CHECK(57, 24, 0, 61, 100) ++#if LIBAV_CODEC_VERSION_CHECK(57, 24, 0, 61, 100) + # if LIBAVCODEC_VERSION_MICRO >= 100 + vlc_tick_t i_pts = frame->best_effort_timestamp; + # else diff --git a/patches/0087-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch b/patches/0087-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch new file mode 100644 index 00000000..9163f72f --- /dev/null +++ b/patches/0087-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch @@ -0,0 +1,269 @@ +From: Steve Lhomme +Date: Wed, 19 Jun 2024 13:59:15 +0200 +Subject: avcommon: use a specific macro to check the FFmpeg libavcodec + version + +This macro doesn't check for libav which is assumed to not have to relevant +code. This is the same macro name used in VLC 4.0. +--- + modules/codec/avcodec/audio.c | 8 ++++---- + modules/codec/avcodec/avcommon.h | 2 +- + modules/codec/avcodec/avcommon_compat.h | 4 ++++ + modules/codec/avcodec/directx_va.c | 4 ++-- + modules/codec/avcodec/encoder.c | 13 ++++++------- + modules/codec/avcodec/fourcc.c | 18 ++++++++---------- + modules/codec/avcodec/video.c | 3 +-- + modules/demux/avformat/demux.c | 2 +- + modules/demux/avformat/mux.c | 2 +- + 9 files changed, 28 insertions(+), 28 deletions(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index 7a979e9..a3f67f7 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -142,7 +142,7 @@ static int OpenAudioCodec( decoder_t *p_dec ) + } + + ctx->sample_rate = p_dec->fmt_in.audio.i_rate; +-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) + av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels ); + #else + ctx->channels = p_dec->fmt_in.audio.i_channels; +@@ -402,7 +402,7 @@ static int DecodeBlock( decoder_t *p_dec, block_t **pp_block ) + ret = avcodec_receive_frame( ctx, frame ); + if( ret == 0 ) + { +-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) + int channels = frame->ch_layout.nb_channels; + #else + int channels = ctx->channels; +@@ -592,7 +592,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate; + + /* */ +-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) + if( p_sys->i_previous_channels == p_sys->p_context->ch_layout.nb_channels && + p_sys->i_previous_layout == p_sys->p_context->ch_layout.u.mask ) + return; +@@ -617,7 +617,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + + int i_channels_src = 0, channel_count; + uint64_t channel_layout_mask; +-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) + channel_layout_mask = p_sys->p_context->ch_layout.u.mask; + channel_count = p_sys->p_context->ch_layout.nb_channels; + #elif API_CHANNEL_LAYOUT +diff --git a/modules/codec/avcodec/avcommon.h b/modules/codec/avcodec/avcommon.h +index aa0c0b8..10ad13d 100644 +--- a/modules/codec/avcodec/avcommon.h ++++ b/modules/codec/avcodec/avcommon.h +@@ -123,7 +123,7 @@ static inline void vlc_init_avcodec(vlc_object_t *obj) + + vlc_init_avutil(obj); + +-#if (LIBAVFORMAT_VERSION_MICRO < 100) || (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 10, 100)) ++#if (LIBAVFORMAT_VERSION_MICRO < 100) || !(LIBAVCODEC_VERSION_CHECK(58, 10, 100)) + avcodec_register_all(); + #endif + +diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h +index b504fcd..ac02c06 100644 +--- a/modules/codec/avcodec/avcommon_compat.h ++++ b/modules/codec/avcodec/avcommon_compat.h +@@ -30,6 +30,10 @@ + #ifdef HAVE_LIBAVCODEC_AVCODEC_H + #include + ++/* check the FFmpeg libavutil version */ ++#define LIBAVCODEC_VERSION_CHECK( a, d, e ) \ ++ (LIBAVCODEC_VERSION_MICRO >= 100 && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) ++ + /* LIBAV_CODEC_VERSION_CHECK checks for the right version of libav and FFmpeg + * a is the major version + * b and c the minor and micro versions of libav +diff --git a/modules/codec/avcodec/directx_va.c b/modules/codec/avcodec/directx_va.c +index 607a1bc..890473e 100644 +--- a/modules/codec/avcodec/directx_va.c ++++ b/modules/codec/avcodec/directx_va.c +@@ -274,7 +274,7 @@ static const directx_va_mode_t DXVA_MODES[] = { + + /* VPx */ + { "VP8", &DXVA_ModeVP8_VLD, 8, 0, NULL }, +-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 57, 17, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100 ++#if LIBAVCODEC_VERSION_CHECK( 57, 17, 100 ) + { "VP9 profile 0", &DXVA_ModeVP9_VLD_Profile0, 8, AV_CODEC_ID_VP9, PROF_VP9_MAIN }, + { "VP9 profile 2", &DXVA_ModeVP9_VLD_10bit_Profile2, 10, AV_CODEC_ID_VP9, PROF_VP9_10 }, + #else +@@ -284,7 +284,7 @@ static const directx_va_mode_t DXVA_MODES[] = { + { "VP9 profile Intel", &DXVA_ModeVP9_VLD_Intel, 8, 0, NULL }, + + /* AV1 */ +-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 58, 112, 103 ) && LIBAVCODEC_VERSION_MICRO >= 100 ++#if LIBAVCODEC_VERSION_CHECK( 58, 112, 103 ) + { "AV1 Main profile 8", &DXVA_ModeAV1_VLD_Profile0, 8, AV_CODEC_ID_AV1, PROF_AV1_MAIN }, + { "AV1 Main profile 10", &DXVA_ModeAV1_VLD_Profile0, 10, AV_CODEC_ID_AV1, PROF_AV1_MAIN }, + { "AV1 High profile 8", &DXVA_ModeAV1_VLD_Profile1, 8, AV_CODEC_ID_AV1, PROF_AV1_HIGH }, +diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c +index 9cf9a7d..2014b8a 100644 +--- a/modules/codec/avcodec/encoder.c ++++ b/modules/codec/avcodec/encoder.c +@@ -61,8 +61,7 @@ + + #define RAW_AUDIO_FRAME_SIZE (2048) + +-#if LIBAVCODEC_VERSION_MICRO >= 100 && \ +- LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59, 0, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 0, 100) + # define AVC_MAYBE_CONST const + #else + # define AVC_MAYBE_CONST +@@ -183,7 +182,7 @@ static const uint64_t pi_channels_map[][2] = + { AV_CH_STEREO_RIGHT, 0 }, + }; + +-# if !LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++# if !LIBAVCODEC_VERSION_CHECK(59, 24, 100) + static const uint32_t channel_mask[][2] = { + {0,0}, + {AOUT_CHAN_CENTER, AV_CH_LAYOUT_MONO}, +@@ -765,7 +764,7 @@ int InitVideoEnc( vlc_object_t *p_this ) + uint32_t order_mask = 0; + int i_channels_src = 0; + msg_Dbg( p_enc, "Creating channel order for reordering"); +-# if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++# if LIBAVCODEC_VERSION_CHECK(59, 24, 100) + av_channel_layout_default( &p_context->ch_layout, p_enc->fmt_out.audio.i_channels ); + uint64_t channel_mask = p_context->ch_layout.u.mask; + # else +@@ -918,7 +917,7 @@ errmsg: + + if( p_enc->fmt_out.audio.i_channels > 2 ) + { +-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) + av_channel_layout_default( &p_context->ch_layout, 2 ); + #else + p_context->channels = 2; +@@ -1282,7 +1281,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns + av_frame_unref( p_sys->frame ); + p_sys->frame->format = p_sys->p_context->sample_fmt; + p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay; +-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) + av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout); + #else + p_sys->frame->channel_layout = p_sys->p_context->channel_layout; +@@ -1417,7 +1416,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) + p_sys->frame->pts = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den / + CLOCK_FREQ / p_sys->p_context->time_base.num; + +-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) + av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout); + #else + p_sys->frame->channel_layout = p_sys->p_context->channel_layout; +diff --git a/modules/codec/avcodec/fourcc.c b/modules/codec/avcodec/fourcc.c +index 3aea6b5..d75c21f 100644 +--- a/modules/codec/avcodec/fourcc.c ++++ b/modules/codec/avcodec/fourcc.c +@@ -182,12 +182,10 @@ static const struct vlc_avcodec_fourcc video_codecs[] = + /* AV_CODEC_ID_V210X */ + { VLC_CODEC_TMV, AV_CODEC_ID_TMV }, + { VLC_CODEC_V210, AV_CODEC_ID_V210 }, +-#if LIBAVCODEC_VERSION_MICRO >= 100 +-# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 42, 102 ) ++#if LIBAVCODEC_VERSION_CHECK( 59, 42, 102 ) + { VLC_CODEC_VUYA, AV_CODEC_ID_RAWVIDEO }, +-# elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 50, 100 ) ++#elif LIBAVCODEC_VERSION_CHECK( 54, 50, 100 ) + { VLC_CODEC_VUYA, AV_CODEC_ID_AYUV }, +-# endif + #endif + /* AV_CODEC_ID_DPX */ + { VLC_CODEC_MAD, AV_CODEC_ID_MAD }, +@@ -285,19 +283,19 @@ static const struct vlc_avcodec_fourcc video_codecs[] = + /* ffmpeg only: AV_CODEC_ID_SNOW */ + /* ffmpeg only: AV_CODEC_ID_SMVJPEG */ + +-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 24, 102 ) ++#if LIBAVCODEC_VERSION_CHECK( 57, 24, 102 ) + { VLC_CODEC_CINEFORM, AV_CODEC_ID_CFHD }, + #endif + +-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 70, 100 ) ++#if LIBAVCODEC_VERSION_CHECK( 57, 70, 100 ) + { VLC_CODEC_PIXLET, AV_CODEC_ID_PIXLET }, + #endif + +-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 101 ) ++#if LIBAVCODEC_VERSION_CHECK( 57, 71, 101 ) + { VLC_CODEC_SPEEDHQ, AV_CODEC_ID_SPEEDHQ }, + #endif + +-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 79, 100 ) ++#if LIBAVCODEC_VERSION_CHECK( 57, 79, 100 ) + { VLC_CODEC_FMVC, AV_CODEC_ID_FMVC }, + #endif + }; +@@ -414,7 +412,7 @@ static const struct vlc_avcodec_fourcc audio_codecs[] = + /* AV_CODEC_ID_WESTWOOD_SND1 */ + { VLC_CODEC_GSM, AV_CODEC_ID_GSM }, + { VLC_CODEC_QDM2, AV_CODEC_ID_QDM2 }, +-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 100 ) ++#if LIBAVCODEC_VERSION_CHECK( 57, 71, 100 ) + { VLC_CODEC_QDMC, AV_CODEC_ID_QDMC }, + #endif + { VLC_CODEC_COOK, AV_CODEC_ID_COOK }, +@@ -482,7 +480,7 @@ static const struct vlc_avcodec_fourcc spu_codecs[] = + { VLC_CODEC_SSA, AV_CODEC_ID_SSA }, + /* AV_CODEC_ID_MOV_TEXT */ + { VLC_CODEC_BD_PG, AV_CODEC_ID_HDMV_PGS_SUBTITLE }, +-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 100 ) ++#if LIBAVCODEC_VERSION_CHECK( 57, 71, 100 ) + { VLC_CODEC_BD_TEXT, AV_CODEC_ID_HDMV_TEXT_SUBTITLE }, + #endif + { VLC_CODEC_TELETEXT, AV_CODEC_ID_DVB_TELETEXT }, +diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c +index 552c602..c306e91 100644 +--- a/modules/codec/avcodec/video.c ++++ b/modules/codec/avcodec/video.c +@@ -1824,8 +1824,7 @@ no_reuse: + if (!can_hwaccel) + return swfmt; + +-#if (LIBAVCODEC_VERSION_MICRO >= 100) \ +- && (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57, 83, 101)) ++#if (LIBAVCODEC_VERSION_MICRO >= 100) && !(LIBAVCODEC_VERSION_CHECK(57, 83, 101)) + if (p_context->active_thread_type) + { + msg_Warn(p_dec, "thread type %d: disabling hardware acceleration", +diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c +index 39d2366..9975b0f 100644 +--- a/modules/demux/avformat/demux.c ++++ b/modules/demux/avformat/demux.c +@@ -400,7 +400,7 @@ int avformat_OpenDemux( vlc_object_t *p_this ) + es_format_Init( &es_fmt, AUDIO_ES, fcc ); + es_fmt.i_original_fourcc = CodecTagToFourcc( cp->codec_tag ); + es_fmt.i_bitrate = cp->bit_rate; +-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 24, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100 ++#if LIBAVCODEC_VERSION_CHECK( 59, 24, 100 ) + es_fmt.audio.i_channels = cp->ch_layout.nb_channels; + #else + es_fmt.audio.i_channels = cp->channels; +diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c +index 664a646..a48190c 100644 +--- a/modules/demux/avformat/mux.c ++++ b/modules/demux/avformat/mux.c +@@ -273,7 +273,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) + { + case AUDIO_ES: + codecpar->codec_type = AVMEDIA_TYPE_AUDIO; +-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 24, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100 ++#if LIBAVCODEC_VERSION_CHECK( 59, 24, 100 ) + av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels ); + #else + codecpar->channels = fmt->audio.i_channels; diff --git a/patches/0088-codec-avcodec-check-open-codec-return-value.patch b/patches/0088-codec-avcodec-check-open-codec-return-value.patch new file mode 100644 index 00000000..efc50653 --- /dev/null +++ b/patches/0088-codec-avcodec-check-open-codec-return-value.patch @@ -0,0 +1,59 @@ +From: Zhao Zhili +Date: Fri, 11 Jun 2021 18:02:34 +0800 +Subject: codec: avcodec: check open codec return value + +(cherry picked from commit 21ab6be22e7c1831cebf023fd53bd7ffbfad22f6) (edited) +edited: +- on 3.0 DecodeBlock returns a picture_t, not an error code +--- + modules/codec/avcodec/audio.c | 7 ++++++- + modules/codec/avcodec/video.c | 11 +++++++---- + 2 files changed, 13 insertions(+), 5 deletions(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index a3f67f7..e843675 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -309,7 +309,12 @@ static int DecodeBlock( decoder_t *p_dec, block_t **pp_block ) + && !avcodec_is_open( ctx ) ) + { + InitDecoderConfig( p_dec, ctx ); +- OpenAudioCodec( p_dec ); ++ if( OpenAudioCodec( p_dec ) < 0 ) ++ { ++ if( pp_block != NULL && *pp_block != NULL ) ++ block_Release( *pp_block ); ++ return VLCDEC_ECRITICAL; ++ } + } + + if( !avcodec_is_open( ctx ) ) +diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c +index c306e91..096a0b7 100644 +--- a/modules/codec/avcodec/video.c ++++ b/modules/codec/avcodec/video.c +@@ -1114,17 +1114,20 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block, bool *error + bool eos_spotted = false; + + +- block_t *p_block; ++ block_t *p_block = pp_block ? *pp_block : NULL; + vlc_tick_t current_time; + + if( !p_context->extradata_size && p_dec->fmt_in.i_extra ) + { + ffmpeg_InitCodec( p_dec ); +- if( !avcodec_is_open( p_context ) ) +- OpenVideoCodec( p_dec ); ++ if( !avcodec_is_open( p_context ) && OpenVideoCodec(p_dec) < 0 ) ++ { ++ if( p_block != NULL ) ++ block_Release( p_block ); ++ return NULL; ++ } + } + +- p_block = pp_block ? *pp_block : NULL; + if(!p_block && !(p_sys->p_codec->capabilities & AV_CODEC_CAP_DELAY) ) + return NULL; + diff --git a/patches/0089-avcodec-use-ARRAY_SIZE-instead-of-custom-code.patch b/patches/0089-avcodec-use-ARRAY_SIZE-instead-of-custom-code.patch new file mode 100644 index 00000000..eac46af6 --- /dev/null +++ b/patches/0089-avcodec-use-ARRAY_SIZE-instead-of-custom-code.patch @@ -0,0 +1,22 @@ +From: Steve Lhomme +Date: Fri, 6 Jan 2023 10:16:09 +0100 +Subject: avcodec: use ARRAY_SIZE instead of custom code + +(cherry picked from commit 28c80ee47e6cdf961f501eed9d4837956b38afd1) +--- + modules/codec/avcodec/audio.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index e843675..2074401 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -558,7 +558,7 @@ vlc_fourcc_t GetVlcAudioFormat( int fmt ) + [AV_SAMPLE_FMT_FLTP] = VLC_CODEC_FL32, + [AV_SAMPLE_FMT_DBLP] = VLC_CODEC_FL64, + }; +- if( (sizeof(fcc) / sizeof(fcc[0])) > (unsigned)fmt ) ++ if( ARRAY_SIZE(fcc) > (unsigned)fmt ) + return fcc[fmt]; + return VLC_CODEC_S16N; + } diff --git a/patches/0090-avcodec-audio-make-channel-mapping-array-0-terminate.patch b/patches/0090-avcodec-audio-make-channel-mapping-array-0-terminate.patch new file mode 100644 index 00000000..24dee8ce --- /dev/null +++ b/patches/0090-avcodec-audio-make-channel-mapping-array-0-terminate.patch @@ -0,0 +1,45 @@ +From: Ilkka Ollakka +Date: Wed, 5 Jul 2023 15:09:57 +0300 +Subject: avcodec/audio: make channel mapping array 0 terminated + +Also change pi_channels_src to be only AOUT_CHAN_MAX instead of same +size as mapping array. + +(cherry picked from commit 0ff86bf8a28a080340f600cb8561815fc43e3b4a) (rebased) +rebased: +- the code around is slightly different +--- + modules/codec/avcodec/audio.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index 2074401..04c5401 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -585,6 +585,7 @@ static const uint64_t pi_channels_map[][2] = + { AV_CH_TOP_BACK_RIGHT, 0 }, + { AV_CH_STEREO_LEFT, 0 }, + { AV_CH_STEREO_RIGHT, 0 }, ++ { 0, 0 }, + }; + + static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) +@@ -617,8 +618,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + } + #endif + +- const unsigned i_order_max = sizeof(pi_channels_map)/sizeof(*pi_channels_map); +- uint32_t pi_order_src[i_order_max]; ++ uint32_t pi_order_src[AOUT_CHAN_MAX] = { 0 }; + + int i_channels_src = 0, channel_count; + uint64_t channel_layout_mask; +@@ -637,7 +637,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + + if( channel_layout_mask ) + { +- for( unsigned i = 0; i < i_order_max ++ for( unsigned i = 0; pi_channels_map[i][0] + && i_channels_src < channel_count; i++ ) + { + if( channel_layout_mask & pi_channels_map[i][0] ) diff --git a/patches/0091-codec-avcodec-fix-ch_layout-requirement.patch b/patches/0091-codec-avcodec-fix-ch_layout-requirement.patch new file mode 100644 index 00000000..68873a49 --- /dev/null +++ b/patches/0091-codec-avcodec-fix-ch_layout-requirement.patch @@ -0,0 +1,55 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Mon, 10 Jun 2024 11:10:37 +0700 +Subject: codec: avcodec: fix ch_layout requirement + +refs #28667 + +(cherry picked from commit 41778535dcae8b145ebfaa0392de281e470a91bf) (edited) +edited: +- on 3.0 the audio check was still using a LIBAVCODEC_VERSION_CHECK check +- the mux/demux checks were already there with different spaces +--- + modules/codec/avcodec/audio.c | 2 +- + modules/demux/avformat/demux.c | 2 +- + modules/demux/avformat/mux.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index 04c5401..979256c 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -142,7 +142,7 @@ static int OpenAudioCodec( decoder_t *p_dec ) + } + + ctx->sample_rate = p_dec->fmt_in.audio.i_rate; +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) ++#if LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels ); + #else + ctx->channels = p_dec->fmt_in.audio.i_channels; +diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c +index 9975b0f..c49f7eb 100644 +--- a/modules/demux/avformat/demux.c ++++ b/modules/demux/avformat/demux.c +@@ -400,7 +400,7 @@ int avformat_OpenDemux( vlc_object_t *p_this ) + es_format_Init( &es_fmt, AUDIO_ES, fcc ); + es_fmt.i_original_fourcc = CodecTagToFourcc( cp->codec_tag ); + es_fmt.i_bitrate = cp->bit_rate; +-#if LIBAVCODEC_VERSION_CHECK( 59, 24, 100 ) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) + es_fmt.audio.i_channels = cp->ch_layout.nb_channels; + #else + es_fmt.audio.i_channels = cp->channels; +diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c +index a48190c..090ed9f 100644 +--- a/modules/demux/avformat/mux.c ++++ b/modules/demux/avformat/mux.c +@@ -273,7 +273,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) + { + case AUDIO_ES: + codecpar->codec_type = AVMEDIA_TYPE_AUDIO; +-#if LIBAVCODEC_VERSION_CHECK( 59, 24, 100 ) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) + av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels ); + #else + codecpar->channels = fmt->audio.i_channels; diff --git a/patches/0092-ffmpeg-fix-libavutil-version-check-for-av_channel_la.patch b/patches/0092-ffmpeg-fix-libavutil-version-check-for-av_channel_la.patch new file mode 100644 index 00000000..a9d22631 --- /dev/null +++ b/patches/0092-ffmpeg-fix-libavutil-version-check-for-av_channel_la.patch @@ -0,0 +1,74 @@ +From: Steve Lhomme +Date: Tue, 18 Jun 2024 15:34:10 +0200 +Subject: ffmpeg: fix libavutil version check for av_channel_layout_default() + +It was added in c41899a3770cb4510e15b223fa34d129305b1589 which +was libavutil 57.23.100 at the time but the minor version was not updated in +that commit so we check 57.24.100. + +The same check applies for av_channel_layout_copy() added in the same commit. + +This is part of FFmpeg 5.1. + +https://github.com/FFmpeg/FFmpeg/commit/086a8048061bf9fb4c63943f6962db48175f655c +(cherry picked from commit 195f0c98599b55950c49a62f98d9d3495be310df) (rebased) +rebased: +- the code around is slightly different +--- + modules/codec/avcodec/encoder.c | 8 ++++---- + modules/demux/avformat/mux.c | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c +index 2014b8a..ec63c9c 100644 +--- a/modules/codec/avcodec/encoder.c ++++ b/modules/codec/avcodec/encoder.c +@@ -764,7 +764,7 @@ int InitVideoEnc( vlc_object_t *p_this ) + uint32_t order_mask = 0; + int i_channels_src = 0; + msg_Dbg( p_enc, "Creating channel order for reordering"); +-# if LIBAVCODEC_VERSION_CHECK(59, 24, 100) ++# if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_default( &p_context->ch_layout, p_enc->fmt_out.audio.i_channels ); + uint64_t channel_mask = p_context->ch_layout.u.mask; + # else +@@ -917,7 +917,7 @@ errmsg: + + if( p_enc->fmt_out.audio.i_channels > 2 ) + { +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_default( &p_context->ch_layout, 2 ); + #else + p_context->channels = 2; +@@ -1281,7 +1281,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns + av_frame_unref( p_sys->frame ); + p_sys->frame->format = p_sys->p_context->sample_fmt; + p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay; +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout); + #else + p_sys->frame->channel_layout = p_sys->p_context->channel_layout; +@@ -1416,7 +1416,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) + p_sys->frame->pts = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den / + CLOCK_FREQ / p_sys->p_context->time_base.num; + +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout); + #else + p_sys->frame->channel_layout = p_sys->p_context->channel_layout; +diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c +index 090ed9f..bf65ca3 100644 +--- a/modules/demux/avformat/mux.c ++++ b/modules/demux/avformat/mux.c +@@ -273,7 +273,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) + { + case AUDIO_ES: + codecpar->codec_type = AVMEDIA_TYPE_AUDIO; +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) ++#if LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels ); + #else + codecpar->channels = fmt->audio.i_channels; diff --git a/patches/0093-ffmpeg-fix-libavcodec-version-check-for-AVCodecParam.patch b/patches/0093-ffmpeg-fix-libavcodec-version-check-for-AVCodecParam.patch new file mode 100644 index 00000000..2fce3961 --- /dev/null +++ b/patches/0093-ffmpeg-fix-libavcodec-version-check-for-AVCodecParam.patch @@ -0,0 +1,36 @@ +From: Steve Lhomme +Date: Tue, 18 Jun 2024 16:04:41 +0200 +Subject: ffmpeg: fix libavcodec version check for AVCodecParameters.ch_layout +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +It was added in 276c06726fbd2f784d51189870bd834e9284812f which +was libavcodec 59.23.100 at the time but the minor version was not updated in +that commit so we check 59.24.100. + +This is part of FFmpeg 5.1. + +It was erroneously removed in a55ec32ab3760d9edb6f05481cd3a981aa42878d. + +https://github.com/FFmpeg/FFmpeg/commit/276c06726fbd2f784d51189870bd834e9284812f + +Co-authored-by: François Cartegnie +(cherry picked from commit 597bdb8e0784101b5f412feba3309558ad5b8862) +--- + modules/demux/avformat/mux.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c +index bf65ca3..d8be5d1 100644 +--- a/modules/demux/avformat/mux.c ++++ b/modules/demux/avformat/mux.c +@@ -273,7 +273,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) + { + case AUDIO_ES: + codecpar->codec_type = AVMEDIA_TYPE_AUDIO; +-#if LIBAVUTIL_VERSION_CHECK(57, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels ); + #else + codecpar->channels = fmt->audio.i_channels; diff --git a/patches/0094-avcodec-fix-libavcodec-version-check-for-AVCodecCont.patch b/patches/0094-avcodec-fix-libavcodec-version-check-for-AVCodecCont.patch new file mode 100644 index 00000000..955b3e0e --- /dev/null +++ b/patches/0094-avcodec-fix-libavcodec-version-check-for-AVCodecCont.patch @@ -0,0 +1,36 @@ +From: Steve Lhomme +Date: Wed, 19 Jun 2024 13:41:04 +0200 +Subject: avcodec: fix libavcodec version check for AVCodecContext.ch_layout +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +It was added in 548aeb93834b8425c86d1ce60fddc1d41805724d which +was libavcodec 59.23.100 at the time but the minor version was not updated in +that commit so we check 59.24.100. + +This is part of FFmpeg 5.1. + +https://github.com/FFmpeg/FFmpeg/commit/548aeb93834b8425c86d1ce60fddc1d41805724d + +Co-authored-by: François Cartegnie +(cherry picked from commit 8fd918b8787b8d077decf1a2b955ab0c7b964bf3) (rebased) +rebased: +- on 3.0 fmt_in is not a pointer +--- + modules/codec/avcodec/audio.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index 979256c..fb22f03 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -142,7 +142,7 @@ static int OpenAudioCodec( decoder_t *p_dec ) + } + + ctx->sample_rate = p_dec->fmt_in.audio.i_rate; +-#if LIBAVUTIL_VERSION_CHECK(57, 24, 100) ++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels ); + #else + ctx->channels = p_dec->fmt_in.audio.i_channels; diff --git a/patches/0095-ffmpeg-fix-libavutil-version-check-for-AVFrame.ch_la.patch b/patches/0095-ffmpeg-fix-libavutil-version-check-for-AVFrame.ch_la.patch new file mode 100644 index 00000000..ea19dcab --- /dev/null +++ b/patches/0095-ffmpeg-fix-libavutil-version-check-for-AVFrame.ch_la.patch @@ -0,0 +1,29 @@ +From: Steve Lhomme +Date: Wed, 19 Jun 2024 08:36:40 +0200 +Subject: ffmpeg: fix libavutil version check for AVFrame.ch_layout + +It was added in db6efa1815e217ed76f39aee8b15ee5c64698537 which +was libavutil 57.23.100 at the time but the minor version was not updated in +that commit so we check 57.24.100. + +This is part of FFmpeg 5.1. + +https://github.com/FFmpeg/FFmpeg/commit/db6efa1815e217ed76f39aee8b15ee5c64698537 +(cherry picked from commit f237155887f049f8befef2fdfadae7b60f697b0d) +--- + modules/codec/avcodec/audio.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index fb22f03..c27771a 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -407,7 +407,7 @@ static int DecodeBlock( decoder_t *p_dec, block_t **pp_block ) + ret = avcodec_receive_frame( ctx, frame ); + if( ret == 0 ) + { +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) ++#if LIBAVUTIL_VERSION_CHECK(57, 24, 100) + int channels = frame->ch_layout.nb_channels; + #else + int channels = ctx->channels; diff --git a/patches/0096-avcodec-add-a-define-to-test-for-AVCodecContext.ch_l.patch b/patches/0096-avcodec-add-a-define-to-test-for-AVCodecContext.ch_l.patch new file mode 100644 index 00000000..18499374 --- /dev/null +++ b/patches/0096-avcodec-add-a-define-to-test-for-AVCodecContext.ch_l.patch @@ -0,0 +1,113 @@ +From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= +Date: Thu, 20 Jun 2024 13:12:37 +0200 +Subject: avcodec: add a define to test for AVCodecContext.ch_layout + availability + +Co-authored-by: Steve Lhomme +(cherry picked from commit 3abf93735df97cc2c96e11028b76067547c27eb7) (rebased) +rebased: +- on 3.0 the fmt_in is not a pointer +- the code around is slightly different due to the use of API_CHANNEL_LAYOUT +--- + modules/codec/avcodec/audio.c | 8 +++++--- + modules/codec/avcodec/encoder.c | 12 +++++++----- + 2 files changed, 12 insertions(+), 8 deletions(-) + +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index c27771a..b6186d6 100644 +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -41,6 +41,8 @@ + #include + #include + ++#define API_CHANNEL_LAYOUT_STRUCT (LIBAVCODEC_VERSION_CHECK(59, 24, 100)) // AVCodecContext.ch_layout ++ + #define API_CHANNEL_LAYOUT (LIBAV_UTIL_VERSION_CHECK( 52, 2, 6, 0, 100)) + + #if API_CHANNEL_LAYOUT +@@ -142,7 +144,7 @@ static int OpenAudioCodec( decoder_t *p_dec ) + } + + ctx->sample_rate = p_dec->fmt_in.audio.i_rate; +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100) ++#if API_CHANNEL_LAYOUT_STRUCT && LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels ); + #else + ctx->channels = p_dec->fmt_in.audio.i_channels; +@@ -598,7 +600,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate; + + /* */ +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) ++#if API_CHANNEL_LAYOUT_STRUCT + if( p_sys->i_previous_channels == p_sys->p_context->ch_layout.nb_channels && + p_sys->i_previous_layout == p_sys->p_context->ch_layout.u.mask ) + return; +@@ -622,7 +624,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) + + int i_channels_src = 0, channel_count; + uint64_t channel_layout_mask; +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) ++#if API_CHANNEL_LAYOUT_STRUCT + channel_layout_mask = p_sys->p_context->ch_layout.u.mask; + channel_count = p_sys->p_context->ch_layout.nb_channels; + #elif API_CHANNEL_LAYOUT +diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c +index ec63c9c..b0d3126 100644 +--- a/modules/codec/avcodec/encoder.c ++++ b/modules/codec/avcodec/encoder.c +@@ -47,6 +47,8 @@ + #include "avcodec.h" + #include "avcommon.h" + ++#define API_CHANNEL_LAYOUT_STRUCT (LIBAVCODEC_VERSION_CHECK(59, 24, 100)) // AVCodecContext.ch_layout ++ + #define API_CHANNEL_LAYOUT (LIBAV_UTIL_VERSION_CHECK( 52, 2, 6, 0, 100)) + + #if API_CHANNEL_LAYOUT +@@ -182,7 +184,7 @@ static const uint64_t pi_channels_map[][2] = + { AV_CH_STEREO_RIGHT, 0 }, + }; + +-# if !LIBAVCODEC_VERSION_CHECK(59, 24, 100) ++# if !API_CHANNEL_LAYOUT_STRUCT + static const uint32_t channel_mask[][2] = { + {0,0}, + {AOUT_CHAN_CENTER, AV_CH_LAYOUT_MONO}, +@@ -764,7 +766,7 @@ int InitVideoEnc( vlc_object_t *p_this ) + uint32_t order_mask = 0; + int i_channels_src = 0; + msg_Dbg( p_enc, "Creating channel order for reordering"); +-# if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100) ++# if API_CHANNEL_LAYOUT_STRUCT && LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_default( &p_context->ch_layout, p_enc->fmt_out.audio.i_channels ); + uint64_t channel_mask = p_context->ch_layout.u.mask; + # else +@@ -917,7 +919,7 @@ errmsg: + + if( p_enc->fmt_out.audio.i_channels > 2 ) + { +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100) ++#if API_CHANNEL_LAYOUT_STRUCT && LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_default( &p_context->ch_layout, 2 ); + #else + p_context->channels = 2; +@@ -1281,7 +1283,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns + av_frame_unref( p_sys->frame ); + p_sys->frame->format = p_sys->p_context->sample_fmt; + p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay; +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100) ++#if API_CHANNEL_LAYOUT_STRUCT && LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout); + #else + p_sys->frame->channel_layout = p_sys->p_context->channel_layout; +@@ -1416,7 +1418,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) + p_sys->frame->pts = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den / + CLOCK_FREQ / p_sys->p_context->time_base.num; + +-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100) ++#if API_CHANNEL_LAYOUT_STRUCT && LIBAVUTIL_VERSION_CHECK(57, 24, 100) + av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout); + #else + p_sys->frame->channel_layout = p_sys->p_context->channel_layout; diff --git a/patches/0097-configure-use-host_cpu-where-applicable.patch b/patches/0097-configure-use-host_cpu-where-applicable.patch new file mode 100644 index 00000000..4f806615 --- /dev/null +++ b/patches/0097-configure-use-host_cpu-where-applicable.patch @@ -0,0 +1,44 @@ +From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= +Date: Sat, 16 Jun 2018 21:34:58 +0300 +Subject: configure: use $host_cpu where applicable + +(cherry picked from commit a50366bc9702ad4ec0db1e5361bcea8378bf8132) +--- + configure.ac | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 079a00d..f328bc0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -145,8 +145,8 @@ case "${host_os}" in + + dnl Force gcc "-arch" flag + ARCH_flag="" +- case "${host}" in +- i?86*) ++ case "${host_cpu}" in ++ i?86) + ARCH_flag="-arch i386" + ;; + ppc64*) +@@ -155,7 +155,7 @@ case "${host_os}" in + ppc*) + ARCH_flag="-arch ppc" + ;; +- x86_64*) ++ x86_64) + ARCH_flag="-arch x86_64" + ;; + arm*) +@@ -286,8 +286,8 @@ case "${host_os}" in + dnl + dnl NSIS/MSI Installer prefix and WIN64 + dnl +- case "${host}" in +- amd64*|x86_64*) ++ case "${host_cpu}" in ++ amd64|x86_64) + HAVE_WIN64="1" + WINDOWS_ARCH="x64" + PROGRAMFILES="PROGRAMFILES64" diff --git a/patches/0098-demux-mkv-use-the-internal-USF-FourCC-value.patch b/patches/0098-demux-mkv-use-the-internal-USF-FourCC-value.patch new file mode 100644 index 00000000..93719ad8 --- /dev/null +++ b/patches/0098-demux-mkv-use-the-internal-USF-FourCC-value.patch @@ -0,0 +1,24 @@ +From: Steve Lhomme +Date: Sat, 9 Nov 2024 13:35:06 +0100 +Subject: demux: mkv: use the internal USF FourCC value + +Rather than a local FourCC. + +(cherry picked from commit 447116d324f8493120ce84544aed0cfc290aafb2) +--- + modules/demux/mkv/matroska_segment_parse.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp +index b9a2d27..7a5f5fb 100644 +--- a/modules/demux/mkv/matroska_segment_parse.cpp ++++ b/modules/demux/mkv/matroska_segment_parse.cpp +@@ -2066,7 +2066,7 @@ bool matroska_segment_c::TrackInit( mkv_track_t * p_tk ) + } + S_CASE("S_TEXT/USF") { + ONLY_FMT(SPU); +- vars.p_tk->fmt.i_codec = VLC_FOURCC( 'u', 's', 'f', ' ' ); ++ vars.p_tk->fmt.i_codec = VLC_CODEC_USF; + vars.p_tk->fmt.subs.psz_encoding = strdup( "UTF-8" ); + fill_extra_data( vars.p_tk, 0 ); + } diff --git a/patches/0099-demux-mkv-use-the-internal-QDMC-FourCC-value.patch b/patches/0099-demux-mkv-use-the-internal-QDMC-FourCC-value.patch new file mode 100644 index 00000000..e19c01dc --- /dev/null +++ b/patches/0099-demux-mkv-use-the-internal-QDMC-FourCC-value.patch @@ -0,0 +1,24 @@ +From: Steve Lhomme +Date: Sat, 9 Nov 2024 13:41:37 +0100 +Subject: demux: mkv: use the internal QDMC FourCC value + +Rather than a local FourCC. + +(cherry picked from commit 71c2622ab992a4bb4485e5e151f3019e60543d35) +--- + modules/demux/mkv/matroska_segment_parse.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp +index 7a5f5fb..1568031 100644 +--- a/modules/demux/mkv/matroska_segment_parse.cpp ++++ b/modules/demux/mkv/matroska_segment_parse.cpp +@@ -2034,7 +2034,7 @@ bool matroska_segment_c::TrackInit( mkv_track_t * p_tk ) + } + S_CASE("A_QUICKTIME/QDMC") { + vars.p_fmt->i_cat = AUDIO_ES; +- vars.p_fmt->i_codec = VLC_FOURCC('Q','D','M','C'); ++ vars.p_fmt->i_codec = VLC_CODEC_QDMC; + + fill_extra_data( vars.p_tk, 0 ); + } diff --git a/patches/0100-demux-mkv-add-missing-helpers-from-libebml-2.0.patch b/patches/0100-demux-mkv-add-missing-helpers-from-libebml-2.0.patch new file mode 100644 index 00000000..8e805ada --- /dev/null +++ b/patches/0100-demux-mkv-add-missing-helpers-from-libebml-2.0.patch @@ -0,0 +1,35 @@ +From: Steve Lhomme +Date: Thu, 11 Jul 2024 14:06:59 +0200 +Subject: demux: mkv: add missing helpers from libebml 2.0 + +The const versions are more versatile. + +(cherry picked from commit 42945dadb88c72bd6b34a3468f4ac125d81198f1) +--- + modules/demux/mkv/mkv.hpp | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/modules/demux/mkv/mkv.hpp b/modules/demux/mkv/mkv.hpp +index 27a1566..2ea8035 100644 +--- a/modules/demux/mkv/mkv.hpp ++++ b/modules/demux/mkv/mkv.hpp +@@ -117,6 +117,19 @@ enum + #define MKV_CHECKED_PTR_DECL( name, type, src ) type * name = MKV_IS_ID(src, type) ? static_cast(src) : NULL + #define MKV_CHECKED_PTR_DECL_CONST( name, type, src ) const type * name = MKV_IS_ID(src, type) ? static_cast(src) : NULL + ++#if LIBEBML_VERSION < 0x020000 ++template ++Type * FindChild(const EbmlMaster & Master) ++{ ++ return static_cast(Master.FindFirstElt(EBML_INFO(Type))); ++} ++ ++template ++Type * FindNextChild(const EbmlMaster & Master, const Type & PastElt) ++{ ++ return static_cast(Master.FindNextElt(PastElt)); ++} ++#endif + + using namespace LIBMATROSKA_NAMESPACE; + diff --git a/patches/0101-demux-mkv-read-data-from-KaxBlockAdditions-as-const.patch b/patches/0101-demux-mkv-read-data-from-KaxBlockAdditions-as-const.patch new file mode 100644 index 00000000..d96606eb --- /dev/null +++ b/patches/0101-demux-mkv-read-data-from-KaxBlockAdditions-as-const.patch @@ -0,0 +1,53 @@ +From: Steve Lhomme +Date: Sun, 10 Nov 2024 10:32:44 +0100 +Subject: demux: mkv: read data from KaxBlockAdditions as const + +We should not be able to modify what we read. + +(cherry picked from commit c03249a02c2d1aa529c7c9a6de7545305b567860) (edited) +edited: +- 3.0 doesn't support VPx alpha +--- + modules/demux/mkv/mkv.cpp | 6 +++--- + modules/demux/mkv/mkv.hpp | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp +index cce9e34..c55af78 100644 +--- a/modules/demux/mkv/mkv.cpp ++++ b/modules/demux/mkv/mkv.cpp +@@ -488,7 +488,7 @@ static int Seek( demux_t *p_demux, vlc_tick_t i_mk_date, double f_percent, virtu + + /* Needed by matroska_segment::Seek() and Seek */ + void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock, +- KaxBlockAdditions *additions, ++ const KaxBlockAdditions *additions, + vlc_tick_t i_pts, int64_t i_duration, bool b_key_picture, + bool b_discardable_picture ) + { +@@ -613,10 +613,10 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock + size_t i_addition = 0; + if(additions) + { +- KaxBlockMore *blockmore = FindChild(*additions); ++ auto blockmore = FindChild(*additions); + if(blockmore) + { +- KaxBlockAdditional *addition = FindChild(*blockmore); ++ auto addition = FindChild(*blockmore); + if(addition) + { + i_addition = static_cast(addition->GetSize()); +diff --git a/modules/demux/mkv/mkv.hpp b/modules/demux/mkv/mkv.hpp +index 2ea8035..2a8ad5e 100644 +--- a/modules/demux/mkv/mkv.hpp ++++ b/modules/demux/mkv/mkv.hpp +@@ -134,7 +134,7 @@ Type * FindNextChild(const EbmlMaster & Master, const Type & PastElt) + using namespace LIBMATROSKA_NAMESPACE; + + void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock, +- KaxBlockAdditions *additions, ++ const KaxBlockAdditions *additions, + vlc_tick_t i_pts, vlc_tick_t i_duration, bool b_key_picture, + bool b_discardable_picture ); + diff --git a/patches/0102-demux-mkv-don-t-expose-local-BlockDecode-function.patch b/patches/0102-demux-mkv-don-t-expose-local-BlockDecode-function.patch new file mode 100644 index 00000000..88fd5e0b --- /dev/null +++ b/patches/0102-demux-mkv-don-t-expose-local-BlockDecode-function.patch @@ -0,0 +1,41 @@ +From: Steve Lhomme +Date: Sun, 10 Nov 2024 10:41:00 +0100 +Subject: demux: mkv: don't expose local BlockDecode function + +(cherry picked from commit e3adf1736cf32bba3db208cc5d0d18b23a7c17a5) (rebased) +rebased: +- the code around is different +--- + modules/demux/mkv/mkv.cpp | 2 +- + modules/demux/mkv/mkv.hpp | 5 ----- + 2 files changed, 1 insertion(+), 6 deletions(-) + +diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp +index c55af78..2a252a1 100644 +--- a/modules/demux/mkv/mkv.cpp ++++ b/modules/demux/mkv/mkv.cpp +@@ -487,7 +487,7 @@ static int Seek( demux_t *p_demux, vlc_tick_t i_mk_date, double f_percent, virtu + } + + /* Needed by matroska_segment::Seek() and Seek */ +-void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock, ++static void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock, + const KaxBlockAdditions *additions, + vlc_tick_t i_pts, int64_t i_duration, bool b_key_picture, + bool b_discardable_picture ) +diff --git a/modules/demux/mkv/mkv.hpp b/modules/demux/mkv/mkv.hpp +index 2a8ad5e..8497d08 100644 +--- a/modules/demux/mkv/mkv.hpp ++++ b/modules/demux/mkv/mkv.hpp +@@ -133,11 +133,6 @@ Type * FindNextChild(const EbmlMaster & Master, const Type & PastElt) + + using namespace LIBMATROSKA_NAMESPACE; + +-void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock, +- const KaxBlockAdditions *additions, +- vlc_tick_t i_pts, vlc_tick_t i_duration, bool b_key_picture, +- bool b_discardable_picture ); +- + class attachment_c + { + public: diff --git a/patches/0103-demux-mkv-fix-potential-leak-of-KaxBlockAdditions-wh.patch b/patches/0103-demux-mkv-fix-potential-leak-of-KaxBlockAdditions-wh.patch new file mode 100644 index 00000000..82b2dbfe --- /dev/null +++ b/patches/0103-demux-mkv-fix-potential-leak-of-KaxBlockAdditions-wh.patch @@ -0,0 +1,25 @@ +From: Steve Lhomme +Date: Sun, 10 Nov 2024 10:48:38 +0100 +Subject: demux: mkv: fix potential leak of KaxBlockAdditions when seeking + +(cherry picked from commit f7c0d24733350e4c43a2dcb84e3106d9e2be9e7b) +--- + modules/demux/mkv/matroska_segment_seeker.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/modules/demux/mkv/matroska_segment_seeker.cpp b/modules/demux/mkv/matroska_segment_seeker.cpp +index c50a658..105f00e 100644 +--- a/modules/demux/mkv/matroska_segment_seeker.cpp ++++ b/modules/demux/mkv/matroska_segment_seeker.cpp +@@ -366,7 +366,11 @@ SegmentSeeker::index_unsearched_range( matroska_segment_c& ms, Range search_area + + if( ms.BlockGet( block, simpleblock, additions, + &b_key_picture, &b_discardable_picture, &i_block_duration ) ) ++ { ++ delete additions; + break; ++ } ++ delete additions; + + if( simpleblock ) { + block_pos = simpleblock->GetElementPosition(); diff --git a/patches/0104-qt-PodcastConfiguration-inherits-QDialog-not-QWidget.patch b/patches/0104-qt-PodcastConfiguration-inherits-QDialog-not-QWidget.patch new file mode 100644 index 00000000..af6b4b8c --- /dev/null +++ b/patches/0104-qt-PodcastConfiguration-inherits-QDialog-not-QWidget.patch @@ -0,0 +1,24 @@ +From: KO Myung-Hun +Date: Tue, 28 Feb 2023 23:47:47 +0900 +Subject: qt: PodcastConfiguration inherits QDialog not QWidget + +Especially, accept() and reject() slots are in QDialog. + +(cherry picked from commit 183acaecc1fafdfe57a3c4981702ec00561c31e0) +Signed-off-by: Steve Lhomme +--- + modules/gui/qt/ui/podcast_configuration.ui | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/gui/qt/ui/podcast_configuration.ui b/modules/gui/qt/ui/podcast_configuration.ui +index 046bef5..f213963 100644 +--- a/modules/gui/qt/ui/podcast_configuration.ui ++++ b/modules/gui/qt/ui/podcast_configuration.ui +@@ -1,6 +1,6 @@ + + PodcastConfiguration +- ++ + + + 0 diff --git a/patches/0105-musicbrainz-fix-leak.patch b/patches/0105-musicbrainz-fix-leak.patch new file mode 100644 index 00000000..39d0f9fd --- /dev/null +++ b/patches/0105-musicbrainz-fix-leak.patch @@ -0,0 +1,27 @@ +From: Johannes Kauffmann +Date: Tue, 19 Nov 2024 23:30:23 +0100 +Subject: musicbrainz: fix leak + +(cherry picked from commit 2edddb01da361d1040736d7fda637e118ea6aee1) (edited) +edited: +- the 3.0 uses the other json parser which outputs the result differently +--- + modules/misc/webservices/musicbrainz.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/modules/misc/webservices/musicbrainz.c b/modules/misc/webservices/musicbrainz.c +index 2393a73..2c35f75 100644 +--- a/modules/misc/webservices/musicbrainz.c ++++ b/modules/misc/webservices/musicbrainz.c +@@ -56,7 +56,11 @@ static musicbrainz_lookup_t * musicbrainz_lookup(vlc_object_t *p_obj, const char + { + p_lookup->root = json_parse_document(p_obj, p_buffer); + if (!p_lookup->root) ++ { + msg_Dbg(p_obj, "No results"); ++ musicbrainz_lookup_release(p_lookup); ++ p_lookup = NULL; ++ } + } + free(p_buffer); + return p_lookup; diff --git a/patches/0106-es_out_timeshift-explicitely-use-GetTempPathW.patch b/patches/0106-es_out_timeshift-explicitely-use-GetTempPathW.patch new file mode 100644 index 00000000..8d91a380 --- /dev/null +++ b/patches/0106-es_out_timeshift-explicitely-use-GetTempPathW.patch @@ -0,0 +1,37 @@ +From: Steve Lhomme +Date: Wed, 17 May 2023 10:20:16 +0200 +Subject: es_out_timeshift: explicitely use GetTempPathW + +The API is available in UWP builds. _wgetcwd() should work as well. + +(cherry picked from commit d00ede66bf27211ca4a75975026f7f0ab312cab7) (edited) +edited: +- 3.0 already disabled the code in UWP differently +--- + src/input/es_out_timeshift.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/input/es_out_timeshift.c b/src/input/es_out_timeshift.c +index 7174208..17c3e9f 100644 +--- a/src/input/es_out_timeshift.c ++++ b/src/input/es_out_timeshift.c +@@ -345,16 +345,16 @@ es_out_t *input_EsOutTimeshiftNew( input_thread_t *p_input, es_out_t *p_next_out + (int)p_sys->i_tmp_size_max/(1024*1024) ); + + p_sys->psz_tmp_path = var_InheritString( p_input, "input-timeshift-path" ); +-#if defined (_WIN32) && !VLC_WINSTORE_APP ++#if defined (_WIN32) + if( p_sys->psz_tmp_path == NULL ) + { +- const DWORD count = GetTempPath( 0, NULL ); ++ const DWORD count = GetTempPathW( 0, NULL ); + if( count > 0 ) + { + TCHAR *path = vlc_alloc( count + 1, sizeof(TCHAR) ); + if( path != NULL ) + { +- DWORD ret = GetTempPath( count + 1, path ); ++ DWORD ret = GetTempPathW( count + 1, path ); + if( ret != 0 && ret <= count ) + p_sys->psz_tmp_path = FromT( path ); + free( path ); diff --git a/patches/0107-demux-mkv-don-t-use-EbmlDummy-elements-coming-out-of.patch b/patches/0107-demux-mkv-don-t-use-EbmlDummy-elements-coming-out-of.patch new file mode 100644 index 00000000..38bedcac --- /dev/null +++ b/patches/0107-demux-mkv-don-t-use-EbmlDummy-elements-coming-out-of.patch @@ -0,0 +1,85 @@ +From: Steve Lhomme +Date: Tue, 26 Nov 2024 06:33:48 +0100 +Subject: demux: mkv: don't use EbmlDummy elements coming out of FindNextID() + +FindNextID() is supposed to return an element of the given type when it's found. But in some cases, +when the ID and sizes are plausible, an EbmlDummy is returned [1]. + +We should not use that element as if it was a legit element we're looking for. +This is especially crucial when we're opening a file to decide if it's an EBML file or not (EbmlHead). + +[1] https://github.com/Matroska-Org/libebml/blob/1c4e2f31b8df7f2c137d8943c73385759aae35b9/src/EbmlElement.cpp#L185 + +(cherry picked from commit 49d4586fe82aa105ebc1f519e8c8b7385f89c211) +--- + modules/demux/mkv/demux.cpp | 15 +++++++++++---- + modules/demux/mkv/matroska_segment.cpp | 3 ++- + 2 files changed, 13 insertions(+), 5 deletions(-) + +diff --git a/modules/demux/mkv/demux.cpp b/modules/demux/mkv/demux.cpp +index 154deb0..74b23d8 100644 +--- a/modules/demux/mkv/demux.cpp ++++ b/modules/demux/mkv/demux.cpp +@@ -458,9 +458,10 @@ bool demux_sys_t::AnalyseAllSegmentsFound( demux_t *p_demux, matroska_stream_c * + + /* verify the EBML Header... it shouldn't be bigger than 1kB */ + p_l0 = p_stream1->estream.FindNextID(EBML_INFO(EbmlHead), 1024); +- if (p_l0 == NULL) ++ if (p_l0 == nullptr || p_l0->IsDummy()) + { + msg_Err( p_demux, "No EBML header found" ); ++ delete p_l0; + return false; + } + +@@ -494,13 +495,14 @@ bool demux_sys_t::AnalyseAllSegmentsFound( demux_t *p_demux, matroska_stream_c * + + // find all segments in this file + p_l0 = p_stream1->estream.FindNextID(EBML_INFO(KaxSegment), UINT64_MAX); +- if (p_l0 == NULL) ++ if (p_l0 == nullptr || p_l0->IsDummy()) + { + msg_Err( p_demux, "No segment found" ); ++ delete p_l0; + return false; + } + +- while (p_l0 != 0) ++ while (p_l0 != nullptr) + { + bool b_l0_handled = false; + +@@ -535,10 +537,15 @@ bool demux_sys_t::AnalyseAllSegmentsFound( demux_t *p_demux, matroska_stream_c * + { + p_l0->SkipData(p_stream1->estream, KaxMatroska_Context); + p_l0 = p_stream1->estream.FindNextID(EBML_INFO(KaxSegment), UINT64_MAX); ++ if (p_l0 != nullptr && p_l0->IsDummy()) ++ { ++ delete p_l0; ++ p_l0 = nullptr; ++ } + } + else + { +- p_l0 = NULL; ++ p_l0 = nullptr; + } + + if( b_l0_handled == false ) +diff --git a/modules/demux/mkv/matroska_segment.cpp b/modules/demux/mkv/matroska_segment.cpp +index 4fb3045..82689f6 100644 +--- a/modules/demux/mkv/matroska_segment.cpp ++++ b/modules/demux/mkv/matroska_segment.cpp +@@ -713,10 +713,11 @@ bool matroska_segment_c::LoadSeekHeadItem( const EbmlCallbacks & ClassInfos, int + es.I_O().setFilePointer( i_element_position, seek_beginning ); + el = es.FindNextID( ClassInfos, 0xFFFFFFFFL); + +- if( el == NULL ) ++ if( el == nullptr || el->IsDummy() ) + { + msg_Err( &sys.demuxer, "cannot load some cues/chapters/tags etc. (broken seekhead or file)" ); + es.I_O().setFilePointer( i_sav_position, seek_beginning ); ++ delete el; + return false; + } + diff --git a/patches/0108-packetizer-av1-fill-the-full-extradata-if-it-doesn-t.patch b/patches/0108-packetizer-av1-fill-the-full-extradata-if-it-doesn-t.patch new file mode 100644 index 00000000..6a834f0a --- /dev/null +++ b/patches/0108-packetizer-av1-fill-the-full-extradata-if-it-doesn-t.patch @@ -0,0 +1,31 @@ +From: Steve Lhomme +Date: Fri, 29 Nov 2024 11:57:36 +0100 +Subject: packetizer/av1: fill the full extradata if it doesn't have the + optional OBU + +The optional part needed by the decoders. +This will restart the decoders if needed, but they should have received no frames yet +or the hardware decoder may be usable again or not (after a sequence header change). + +(cherry picked from commit a95213e20de69d584324f6d0c9f37c7a7cdfe3e3) (edited) +edited: +- fmt_in was not a pointer in 3.0 +--- + modules/packetizer/av1.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/modules/packetizer/av1.c b/modules/packetizer/av1.c +index dc970dc..964c0f7 100644 +--- a/modules/packetizer/av1.c ++++ b/modules/packetizer/av1.c +@@ -158,8 +158,9 @@ static void UpdateDecoderFormat(decoder_t *p_dec) + p_dec->fmt_out.i_extra = 0; + } + +- if(!p_dec->fmt_in.i_extra && !p_dec->fmt_out.i_extra) ++ if(p_dec->fmt_out.i_extra <= 4) + { ++ free(p_dec->fmt_out.p_extra); + p_dec->fmt_out.i_extra = + AV1_create_DecoderConfigurationRecord((uint8_t **)&p_dec->fmt_out.p_extra, + p_sys->p_sequence_header, diff --git a/patches/0109-demux-mkv-force-the-packetizer-to-fill-AV1-extradata.patch b/patches/0109-demux-mkv-force-the-packetizer-to-fill-AV1-extradata.patch new file mode 100644 index 00000000..03b430ad --- /dev/null +++ b/patches/0109-demux-mkv-force-the-packetizer-to-fill-AV1-extradata.patch @@ -0,0 +1,25 @@ +From: Steve Lhomme +Date: Fri, 29 Nov 2024 11:27:50 +0100 +Subject: demux/mkv: force the packetizer to fill AV1 extradata without + optional OBUs + +The hardware decoders need it and the packetizer can fill it for us. + +(cherry picked from commit f05f3388d32bfff5c20de710f79a87a914dcd166) +--- + modules/demux/mkv/matroska_segment_parse.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp +index 1568031..428e781 100644 +--- a/modules/demux/mkv/matroska_segment_parse.cpp ++++ b/modules/demux/mkv/matroska_segment_parse.cpp +@@ -1621,6 +1621,8 @@ bool matroska_segment_c::TrackInit( mkv_track_t * p_tk ) + vars.p_tk->b_pts_only = true; + + fill_extra_data( vars.p_tk, 0 ); ++ if (vars.p_fmt->i_extra <= 4) ++ vars.p_fmt->b_packetized = false; // force full extradata by the packetizer + } + S_CASE("V_MPEG4/MS/V3") { + vars.p_fmt->i_codec = VLC_CODEC_DIV3; diff --git a/patches/0110-demux-mp4-force-the-packetizer-to-fill-AV1-extradata.patch b/patches/0110-demux-mp4-force-the-packetizer-to-fill-AV1-extradata.patch new file mode 100644 index 00000000..bec5ea80 --- /dev/null +++ b/patches/0110-demux-mp4-force-the-packetizer-to-fill-AV1-extradata.patch @@ -0,0 +1,27 @@ +From: Steve Lhomme +Date: Fri, 29 Nov 2024 11:28:46 +0100 +Subject: demux/mp4: force the packetizer to fill AV1 extradata without + optional OBUs + +The hardware decoders need it and the packetizer can fill it for us. + +(cherry picked from commit fe8b4bf937ad08d17d69de07ae21e9f326e2bd96) (edited) +edited: +- the extradata handling is missing many backports, adapting the to 3.0 code +--- + modules/demux/mp4/essetup.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/modules/demux/mp4/essetup.c b/modules/demux/mp4/essetup.c +index 81d6550..5ac7af6 100644 +--- a/modules/demux/mp4/essetup.c ++++ b/modules/demux/mp4/essetup.c +@@ -545,6 +545,8 @@ int SetupVideoES( demux_t *p_demux, mp4_track_t *p_track, MP4_Box_t *p_sample ) + BOXDATA(p_av1C)->i_av1C ); + p_track->fmt.i_extra = BOXDATA(p_av1C)->i_av1C; + } ++ if (p_track->fmt.i_extra <= 4) ++ p_track->fmt.b_packetized = false; // force full extradata by the packetizer + } + } + break; diff --git a/patches/0111-mediacodec-set-color-keys-in-media-format-explicitly.patch b/patches/0111-mediacodec-set-color-keys-in-media-format-explicitly.patch new file mode 100644 index 00000000..ebf27e9f --- /dev/null +++ b/patches/0111-mediacodec-set-color-keys-in-media-format-explicitly.patch @@ -0,0 +1,149 @@ +From: Mangal Kushwah +Date: Thu, 12 Sep 2024 12:03:58 +0530 +Subject: mediacodec: set color keys in media format explicitly + +Fixes issues where by default mediacodec sets wrong keys for video. +See #26948 + +(cherry picked from commit 55e0779f98b71ab135a4c0c78c2cb91b16a72547) +--- + modules/codec/omxil/mediacodec.c | 44 ++++++++++++++++++++++++++++++++++++ + modules/codec/omxil/mediacodec.h | 30 ++++++++++++++++++++++++ + modules/codec/omxil/mediacodec_jni.c | 4 ++++ + modules/codec/omxil/mediacodec_ndk.c | 5 ++++ + 4 files changed, 83 insertions(+) + +diff --git a/modules/codec/omxil/mediacodec.c b/modules/codec/omxil/mediacodec.c +index 1a2c97a..46d9807 100644 +--- a/modules/codec/omxil/mediacodec.c ++++ b/modules/codec/omxil/mediacodec.c +@@ -497,6 +497,50 @@ static int StartMediaCodec(decoder_t *p_dec) + + args.video.p_surface = p_sys->video.p_surface; + args.video.p_jsurface = p_sys->video.p_jsurface; ++ ++ if (p_dec->fmt_out.video.b_color_range_full) ++ args.video.color_range = MC_COLOR_RANGE_FULL; ++ else ++ args.video.color_range = MC_COLOR_RANGE_LIMITED; ++ ++ switch (p_dec->fmt_out.video.primaries) ++ { ++ case COLOR_PRIMARIES_BT601_525: ++ args.video.color_standard = MC_COLOR_STANDARD_BT601_NTSC; ++ break; ++ case COLOR_PRIMARIES_BT601_625: ++ args.video.color_standard = MC_COLOR_STANDARD_BT601_PAL; ++ break; ++ case COLOR_PRIMARIES_BT709: ++ args.video.color_standard = MC_COLOR_STANDARD_BT709; ++ break; ++ case COLOR_PRIMARIES_BT2020: ++ args.video.color_standard = MC_COLOR_STANDARD_BT2020; ++ break; ++ default: ++ args.video.color_standard = MC_COLOR_STANDARD_UNSPECIFIED; ++ break; ++ } ++ ++ switch (p_dec->fmt_out.video.transfer) ++ { ++ case TRANSFER_FUNC_LINEAR: ++ args.video.color_transfer = MC_COLOR_TRANSFER_LINEAR; ++ break; ++ case TRANSFER_FUNC_SMPTE_ST2084: ++ args.video.color_transfer = MC_COLOR_TRANSFER_ST2084; ++ break; ++ case TRANSFER_FUNC_HLG: ++ args.video.color_transfer = MC_COLOR_TRANSFER_HLG; ++ break; ++ case TRANSFER_FUNC_BT709: ++ args.video.color_transfer = MC_COLOR_TRANSFER_SDR_VIDEO; ++ break; ++ default: ++ args.video.color_transfer = MC_COLOR_TRANSFER_UNSPECIFIED; ++ break; ++ } ++ + args.video.b_tunneled_playback = args.video.p_surface ? + var_InheritBool(p_dec, CFG_PREFIX "tunneled-playback") : false; + if (p_sys->b_adaptive) +diff --git a/modules/codec/omxil/mediacodec.h b/modules/codec/omxil/mediacodec.h +index 6a7fd96..8fc1fca 100644 +--- a/modules/codec/omxil/mediacodec.h ++++ b/modules/codec/omxil/mediacodec.h +@@ -49,6 +49,33 @@ int MediaCodecNdk_Init(mc_api*); + #define MC_API_VIDEO_QUIRKS_ADAPTIVE 0x1000 + #define MC_API_VIDEO_QUIRKS_IGNORE_SIZE 0x2000 + ++/* cf. https://github.com/FFmpeg/FFmpeg/blob/00f5a34c9a5f0adee28aca11971918d6aca48745/libavcodec/mediacodec_wrapper.h#L348 ++ * cf. https://developer.android.com/reference/android/media/MediaFormat#constants_1*/ ++enum mc_media_format_color_range_t ++{ ++ MC_COLOR_RANGE_UNSPECIFIED = 0x0, ++ MC_COLOR_RANGE_FULL = 0x1, ++ MC_COLOR_RANGE_LIMITED = 0x2, ++}; ++ ++enum mc_media_format_color_standard_t ++{ ++ MC_COLOR_STANDARD_UNSPECIFIED = 0x0, ++ MC_COLOR_STANDARD_BT709 = 0x1, ++ MC_COLOR_STANDARD_BT601_PAL = 0x2, ++ MC_COLOR_STANDARD_BT601_NTSC = 0x4, ++ MC_COLOR_STANDARD_BT2020 = 0x6, ++}; ++ ++enum mc_media_format_color_transfer_t ++{ ++ MC_COLOR_TRANSFER_UNSPECIFIED = 0x0, ++ MC_COLOR_TRANSFER_LINEAR = 0x1, ++ MC_COLOR_TRANSFER_SDR_VIDEO = 0x3, ++ MC_COLOR_TRANSFER_ST2084 = 0x6, ++ MC_COLOR_TRANSFER_HLG = 0x7, ++}; ++ + struct mc_api_out + { + enum { +@@ -99,6 +126,9 @@ union mc_api_args + int i_angle; + bool b_tunneled_playback; + bool b_adaptive_playback; ++ enum mc_media_format_color_transfer_t color_transfer; ++ enum mc_media_format_color_range_t color_range; ++ enum mc_media_format_color_standard_t color_standard; + } video; + struct + { +diff --git a/modules/codec/omxil/mediacodec_jni.c b/modules/codec/omxil/mediacodec_jni.c +index 8c9041e..a9721c1 100644 +--- a/modules/codec/omxil/mediacodec_jni.c ++++ b/modules/codec/omxil/mediacodec_jni.c +@@ -638,6 +638,10 @@ static int Start(mc_api *api, union mc_api_args *p_args) + if (p_args->video.i_angle != 0) + SET_INTEGER(jformat, "rotation-degrees", p_args->video.i_angle); + ++ SET_INTEGER(jformat, "color-range", p_args->video.color_range); ++ SET_INTEGER(jformat, "color-standard", p_args->video.color_standard); ++ SET_INTEGER(jformat, "color-transfer", p_args->video.color_transfer); ++ + if (b_direct_rendering) + { + /* feature-tunneled-playback available since API 21 */ +diff --git a/modules/codec/omxil/mediacodec_ndk.c b/modules/codec/omxil/mediacodec_ndk.c +index c84d81e..c861e81 100644 +--- a/modules/codec/omxil/mediacodec_ndk.c ++++ b/modules/codec/omxil/mediacodec_ndk.c +@@ -356,6 +356,11 @@ static int Start(mc_api *api, union mc_api_args *p_args) + syms.AMediaFormat.setInt32(p_sys->p_format, "width", p_args->video.i_width); + syms.AMediaFormat.setInt32(p_sys->p_format, "height", p_args->video.i_height); + syms.AMediaFormat.setInt32(p_sys->p_format, "rotation-degrees", p_args->video.i_angle); ++ ++ syms.AMediaFormat.setInt32(p_sys->p_format, "color-range", p_args->video.color_range); ++ syms.AMediaFormat.setInt32(p_sys->p_format, "color-standard", p_args->video.color_standard); ++ syms.AMediaFormat.setInt32(p_sys->p_format, "color-transfer", p_args->video.color_transfer); ++ + if (p_args->video.p_surface) + { + p_anw = p_args->video.p_surface; diff --git a/patches/0112-access-v4l2-add-support-for-V4L2_PIX_FMT_ABGR32-and-.patch b/patches/0112-access-v4l2-add-support-for-V4L2_PIX_FMT_ABGR32-and-.patch new file mode 100644 index 00000000..434b16b9 --- /dev/null +++ b/patches/0112-access-v4l2-add-support-for-V4L2_PIX_FMT_ABGR32-and-.patch @@ -0,0 +1,40 @@ +From: Martin Tuma +Date: Mon, 2 Dec 2024 12:36:22 +0100 +Subject: access/v4l2: add support for V4L2_PIX_FMT_ABGR32 and + V4L2_PIX_FMT_XBGR32 + +Fix broken v4l2 pixel format selection when the device supports/uses +the V4L2_PIX_FMT_ABGR32 or V4L2_PIX_FMT_XBGR32 pixel formats. + +See the v4l2 documentation for the pixel formats details: +https://docs.kernel.org/userspace-api/media/v4l/pixfmt-rgb.html +--- + modules/access/v4l2/demux.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/modules/access/v4l2/demux.c b/modules/access/v4l2/demux.c +index 81a479f..bed02b8 100644 +--- a/modules/access/v4l2/demux.c ++++ b/modules/access/v4l2/demux.c +@@ -155,10 +155,13 @@ static const vlc_v4l2_fmt_t v4l2_fmts[] = + // { V4L2_PIX_FMT_NV12MT, }, + // { V4L2_PIX_FMT_M420, }, + ++ { V4L2_PIX_FMT_ABGR32, VLC_CODEC_BGRA, 4, 0, 0, 0 }, ++ + /* Packed RGB */ + #ifdef WORDS_BIGENDIAN + { V4L2_PIX_FMT_RGB32, VLC_CODEC_RGB32, 4, 0xFF00, 0xFF0000, 0xFF000000 }, + { V4L2_PIX_FMT_BGR32, VLC_CODEC_RGB32, 4, 0xFF000000, 0xFF0000, 0xFF00 }, ++ { V4L2_PIX_FMT_XBGR32, VLC_CODEC_RGB32, 4, 0xFF000000, 0xFF0000, 0xFF00 }, + { V4L2_PIX_FMT_RGB24, VLC_CODEC_RGB24, 3, 0xFF0000, 0x00FF00, 0x0000FF }, + { V4L2_PIX_FMT_BGR24, VLC_CODEC_RGB24, 3, 0x0000FF, 0x00FF00, 0xFF0000 }, + // { V4L2_PIX_FMT_BGR666, }, +@@ -170,6 +173,7 @@ static const vlc_v4l2_fmt_t v4l2_fmts[] = + #else + { V4L2_PIX_FMT_RGB32, VLC_CODEC_RGB32, 4, 0x0000FF, 0x00FF00, 0xFF0000 }, + { V4L2_PIX_FMT_BGR32, VLC_CODEC_RGB32, 4, 0xFF0000, 0x00FF00, 0x0000FF }, ++ { V4L2_PIX_FMT_XBGR32, VLC_CODEC_RGB32, 4, 0xFF0000, 0x00FF00, 0x0000FF }, + { V4L2_PIX_FMT_RGB24, VLC_CODEC_RGB24, 3, 0x0000FF, 0x00FF00, 0xFF0000 }, + { V4L2_PIX_FMT_BGR24, VLC_CODEC_RGB24, 3, 0xFF0000, 0x00FF00, 0x0000FF }, + // { V4L2_PIX_FMT_BGR666, }, diff --git a/patches/0113-interop_vaapi-fix-mem-leak-while-pause.patch b/patches/0113-interop_vaapi-fix-mem-leak-while-pause.patch new file mode 100644 index 00000000..6f55e380 --- /dev/null +++ b/patches/0113-interop_vaapi-fix-mem-leak-while-pause.patch @@ -0,0 +1,110 @@ +From: fengchao wei <1358610673@qq.com> +Date: Sat, 14 Dec 2024 13:27:36 +0000 +Subject: interop_vaapi: fix mem leak while pause + +--- + modules/video_output/opengl/converter_vaapi.c | 72 +++++++++++++-------------- + 1 file changed, 36 insertions(+), 36 deletions(-) + +diff --git a/modules/video_output/opengl/converter_vaapi.c b/modules/video_output/opengl/converter_vaapi.c +index 845776c..5307320 100644 +--- a/modules/video_output/opengl/converter_vaapi.c ++++ b/modules/video_output/opengl/converter_vaapi.c +@@ -196,38 +196,40 @@ tc_vaegl_update(const opengl_tex_converter_t *tc, GLuint *textures, + if (pic == priv->last.pic) + { + #if VA_CHECK_VERSION(1, 1, 0) +- va_surface_descriptor = priv->last.va_surface_descriptor; ++ for (unsigned i = 0; i < priv->last.va_surface_descriptor.num_layers; ++i) + #else +- va_image = priv->last.va_image; ++ for (unsigned i = 0; i < priv->last.va_image.num_planes; ++i) + #endif +- for (unsigned i = 0; i < priv->last.num_planes; ++i) +- egl_images[i] = priv->last.egl_images[i]; ++ { ++ tc->vt->BindTexture(tc->tex_target, textures[i]); ++ priv->glEGLImageTargetTexture2DOES(tc->tex_target, egl_images[i]); ++ } ++ return VLC_SUCCESS; + } +- else +- { ++ ++ + #if VA_CHECK_VERSION(1, 1, 0) +- if (vlc_vaapi_ExportSurfaceHandle(o, priv->vadpy, vlc_vaapi_PicGetSurface(pic), +- VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2, 0, +- &va_surface_descriptor)) +- goto error; +- release_image = true; ++ if (vlc_vaapi_ExportSurfaceHandle(o, priv->vadpy, vlc_vaapi_PicGetSurface(pic), ++ VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2, 0, ++ &va_surface_descriptor)) ++ goto error; ++ release_image = true; + #else +- if (vlc_vaapi_DeriveImage(o, priv->vadpy, vlc_vaapi_PicGetSurface(pic), +- &va_image)) +- goto error; +- release_image = true; ++ if (vlc_vaapi_DeriveImage(o, priv->vadpy, vlc_vaapi_PicGetSurface(pic), ++ &va_image)) ++ goto error; ++ release_image = true; + +- assert(va_image.format.fourcc == priv->fourcc); ++ assert(va_image.format.fourcc == priv->fourcc); + +- va_buffer_info = (VABufferInfo) { +- .mem_type = VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME +- }; +- if (vlc_vaapi_AcquireBufferHandle(o, priv->vadpy, va_image.buf, +- &va_buffer_info)) +- goto error; ++ va_buffer_info = (VABufferInfo) { ++ .mem_type = VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME ++ }; ++ if (vlc_vaapi_AcquireBufferHandle(o, priv->vadpy, va_image.buf, ++ &va_buffer_info)) ++ goto error; + #endif +- release_buffer_info = true; +- } ++ release_buffer_info = true; + + #if VA_CHECK_VERSION(1, 1, 0) + num_planes = va_surface_descriptor.num_layers; +@@ -273,22 +275,20 @@ tc_vaegl_update(const opengl_tex_converter_t *tc, GLuint *textures, + } + #endif + +- if (pic != priv->last.pic) +- { +- if (priv->last.pic != NULL) +- vaegl_release_last_pic(tc, priv); +- priv->last.pic = picture_Hold(pic); ++ if (priv->last.pic != NULL) ++ vaegl_release_last_pic(tc, priv); ++ priv->last.pic = picture_Hold(pic); + #if VA_CHECK_VERSION(1, 1, 0) +- priv->last.va_surface_descriptor = va_surface_descriptor; ++ priv->last.va_surface_descriptor = va_surface_descriptor; + #else +- priv->last.va_image = va_image; +- priv->last.va_buffer_info = va_buffer_info; ++ priv->last.va_image = va_image; ++ priv->last.va_buffer_info = va_buffer_info; + #endif +- priv->last.num_planes = num_planes; ++ priv->last.num_planes = num_planes; ++ ++ for (unsigned i = 0; i < num_planes; ++i) ++ priv->last.egl_images[i] = egl_images[i]; + +- for (unsigned i = 0; i < num_planes; ++i) +- priv->last.egl_images[i] = egl_images[i]; +- } + + return VLC_SUCCESS; + diff --git a/patches/0114-qt-remove-unused-meta_to_mlmeta.patch b/patches/0114-qt-remove-unused-meta_to_mlmeta.patch new file mode 100644 index 00000000..1ad3b23e --- /dev/null +++ b/patches/0114-qt-remove-unused-meta_to_mlmeta.patch @@ -0,0 +1,39 @@ +From: Steve Lhomme +Date: Thu, 5 Dec 2024 10:50:50 +0100 +Subject: qt: remove unused meta_to_mlmeta() + +--- + modules/gui/qt/components/playlist/sorting.h | 22 ---------------------- + 1 file changed, 22 deletions(-) + +diff --git a/modules/gui/qt/components/playlist/sorting.h b/modules/gui/qt/components/playlist/sorting.h +index 6c1e935..64ce5e0 100644 +--- a/modules/gui/qt/components/playlist/sorting.h ++++ b/modules/gui/qt/components/playlist/sorting.h +@@ -136,26 +136,4 @@ static inline int i_column_sorting( uint32_t i_column ) + } + } + +-/* Return the media library query select type */ +-static inline ml_select_e meta_to_mlmeta( uint32_t i_column ) +-{ +- switch( i_column ) +- { +- case COLUMN_NUMBER: return ML_ID; +- case COLUMN_TITLE: return ML_TITLE; +- case COLUMN_DURATION: return ML_DURATION; +- case COLUMN_ARTIST: return ML_ARTIST; +- case COLUMN_GENRE: return ML_GENRE; +- case COLUMN_ALBUM: return ML_ALBUM; +- case COLUMN_TRACK_NUMBER: return ML_TRACK_NUMBER; +- case COLUMN_DESCRIPTION: return ML_EXTRA; +- case COLUMN_URI: return ML_URI; +- case COLUMN_RATING: return ML_VOTE; +- case COLUMN_COVER: return ML_COVER; +- case COLUMN_DISC_NUMBER: return ML_DISC_NUMBER; +- case COLUMN_DATE: return ML_YEAR; +- default: abort(); +- } +-} +- + #endif diff --git a/patches/0115-qt-fix-IN_ITEM_ROLE-documentation.patch b/patches/0115-qt-fix-IN_ITEM_ROLE-documentation.patch new file mode 100644 index 00000000..11d31efe --- /dev/null +++ b/patches/0115-qt-fix-IN_ITEM_ROLE-documentation.patch @@ -0,0 +1,21 @@ +From: Steve Lhomme +Date: Tue, 10 Dec 2024 14:51:58 +0100 +Subject: qt: fix IN_ITEM_ROLE documentation + +--- + modules/gui/qt/components/playlist/selector.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/gui/qt/components/playlist/selector.hpp b/modules/gui/qt/components/playlist/selector.hpp +index b7d629a..2e333a3 100644 +--- a/modules/gui/qt/components/playlist/selector.hpp ++++ b/modules/gui/qt/components/playlist/selector.hpp +@@ -58,7 +58,7 @@ enum { + LONGNAME_ROLE, //QString + PL_ITEM_ROLE, //playlist_item_t* + PL_ITEM_ID_ROLE, //playlist_item_t->i_id +- IN_ITEM_ROLE, //input_item_t->i_id ++ IN_ITEM_ROLE, //input_item_t* + SPECIAL_ROLE, //SpecialData + CAP_SEARCH_ROLE, + SD_CATEGORY_ROLE, diff --git a/patches/0116-qt-remove-deprecated-QPainter-HighQualityAntialiasin.patch b/patches/0116-qt-remove-deprecated-QPainter-HighQualityAntialiasin.patch new file mode 100644 index 00000000..06f30d40 --- /dev/null +++ b/patches/0116-qt-remove-deprecated-QPainter-HighQualityAntialiasin.patch @@ -0,0 +1,28 @@ +From: Steve Lhomme +Date: Tue, 10 Dec 2024 15:37:46 +0100 +Subject: qt: remove deprecated QPainter::HighQualityAntialiasing usage + +It's deprecated in Qt 5.15 [^1], since 5.14 [^2], and removed in Qt 6. + +The commit log of [^2] even mentions its deprecated for all Qt5 but was not +marked as such yet. + +[^1] https://doc.qt.io/qt-5/qpainter.html#RenderHint-enum +[^2] https://github.com/qt/qtbase/commit/1e4e006c3f6e8cbd0092fe882bc23a2280352a91 +--- + modules/gui/qt/util/timetooltip.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/gui/qt/util/timetooltip.cpp b/modules/gui/qt/util/timetooltip.cpp +index 8cfdab3..6de5cf1 100644 +--- a/modules/gui/qt/util/timetooltip.cpp ++++ b/modules/gui/qt/util/timetooltip.cpp +@@ -142,7 +142,7 @@ void TimeTooltip::show() + void TimeTooltip::paintEvent( QPaintEvent * ) + { + QPainter p( this ); +- p.setRenderHints( QPainter::HighQualityAntialiasing | QPainter::TextAntialiasing ); ++ p.setRenderHints( QPainter::TextAntialiasing ); + + p.setPen( Qt::black ); + p.setBrush( qApp->palette().base() ); diff --git a/patches/0117-qt-fix-bitfield-added-values-set-in-QVariant.patch b/patches/0117-qt-fix-bitfield-added-values-set-in-QVariant.patch new file mode 100644 index 00000000..8cbb47cd --- /dev/null +++ b/patches/0117-qt-fix-bitfield-added-values-set-in-QVariant.patch @@ -0,0 +1,40 @@ +From: Steve Lhomme +Date: Mon, 16 Dec 2024 15:48:41 +0100 +Subject: qt: fix bitfield added values set in QVariant + +It's checked with actions[i]->data().toInt() anyway. + +The code was removed in 4.0 with e1c82853965d44b4390af78d9184bd0b60ccc3fb +but was never fixed. +--- + modules/gui/qt/menus.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/modules/gui/qt/menus.cpp b/modules/gui/qt/menus.cpp +index 460653c..70a475f 100644 +--- a/modules/gui/qt/menus.cpp ++++ b/modules/gui/qt/menus.cpp +@@ -846,20 +846,20 @@ void VLCMenuBar::PopupMenuPlaylistEntries( QMenu *menu, + action = addMIMStaticEntry( p_intf, menu, qtr( "Pre&vious" ), + ":/toolbar/previous_b.svg", SLOT( prev() ), true ); + action->setEnabled( !bPlaylistEmpty ); +- action->setData( ACTION_NO_CLEANUP + ACTION_DELETE_ON_REBUILD ); ++ action->setData( static_cast(ACTION_NO_CLEANUP | ACTION_DELETE_ON_REBUILD) ); + CONNECT( THEMIM, playlistNotEmpty(bool), action, setEnabled(bool) ); + + action = addMIMStaticEntry( p_intf, menu, qtr( "Ne&xt" ), + ":/toolbar/next_b.svg", SLOT( next() ), true ); + action->setEnabled( !bPlaylistEmpty ); +- action->setData( ACTION_NO_CLEANUP + ACTION_DELETE_ON_REBUILD ); ++ action->setData( static_cast(ACTION_NO_CLEANUP | ACTION_DELETE_ON_REBUILD) ); + CONNECT( THEMIM, playlistNotEmpty(bool), action, setEnabled(bool) ); + + action = menu->addAction( qtr( "Record" ), THEAM, SLOT( record() ) ); + action->setIcon( QIcon( ":/toolbar/record.svg" ) ); + if( !p_input ) + action->setEnabled( false ); +- action->setData( ACTION_NO_CLEANUP + ACTION_DELETE_ON_REBUILD ); ++ action->setData( static_cast(ACTION_NO_CLEANUP | ACTION_DELETE_ON_REBUILD) ); + menu->addSeparator(); + } + diff --git a/patches/0118-qt-fix-UTF-8-string-usage.patch b/patches/0118-qt-fix-UTF-8-string-usage.patch new file mode 100644 index 00000000..d88bc0d8 --- /dev/null +++ b/patches/0118-qt-fix-UTF-8-string-usage.patch @@ -0,0 +1,22 @@ +From: Steve Lhomme +Date: Tue, 17 Dec 2024 09:09:39 +0100 +Subject: qt: fix UTF-8 string usage + +Similar to bbb9f6a07adfd20c544d29198ea2fec601bf3e62. +--- + modules/gui/qt/components/preferences_widgets.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/gui/qt/components/preferences_widgets.cpp b/modules/gui/qt/components/preferences_widgets.cpp +index b634d53..4239fd2 100644 +--- a/modules/gui/qt/components/preferences_widgets.cpp ++++ b/modules/gui/qt/components/preferences_widgets.cpp +@@ -1230,7 +1230,7 @@ void KeySelectorControl::finish() + treeItem->setText( HOTKEY_COL, keys ); + treeItem->setToolTip( HOTKEY_COL, qtr("Double click to change.\nDelete key to remove.") ); + treeItem->setToolTip( GLOBAL_HOTKEY_COL, qtr("Double click to change.\nDelete key to remove.") ); +- treeItem->setData( HOTKEY_COL, Qt::UserRole, QVariant( p_config_item->value.psz ) ); ++ treeItem->setData( HOTKEY_COL, Qt::UserRole, QVariant( qfu( p_config_item->value.psz ) ) ); + table->addTopLevelItem( treeItem ); + continue; + } diff --git a/patches/0119-qt-add-missing-QActionGroup-include.patch b/patches/0119-qt-add-missing-QActionGroup-include.patch new file mode 100644 index 00000000..b8d83e18 --- /dev/null +++ b/patches/0119-qt-add-missing-QActionGroup-include.patch @@ -0,0 +1,22 @@ +From: Steve Lhomme +Date: Tue, 17 Dec 2024 09:17:00 +0100 +Subject: qt: add missing QActionGroup include + +To be able to use rendererGroup. +--- + modules/gui/qt/actions_manager.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/modules/gui/qt/actions_manager.cpp b/modules/gui/qt/actions_manager.cpp +index efa3044..f1ada88 100644 +--- a/modules/gui/qt/actions_manager.cpp ++++ b/modules/gui/qt/actions_manager.cpp +@@ -38,6 +38,8 @@ + #include "components/extended_panels.hpp" + #include "menus.hpp" + ++#include ++ + ActionsManager::ActionsManager( intf_thread_t * _p_i ) + : p_intf( _p_i ) + , m_scanning( false ) diff --git a/patches/0120-qt-use-QLayout-setContentsMargins-instead-of-QLayout.patch b/patches/0120-qt-use-QLayout-setContentsMargins-instead-of-QLayout.patch new file mode 100644 index 00000000..ff107ffe --- /dev/null +++ b/patches/0120-qt-use-QLayout-setContentsMargins-instead-of-QLayout.patch @@ -0,0 +1,226 @@ +From: Steve Lhomme +Date: Tue, 17 Dec 2024 08:41:58 +0100 +Subject: qt: use QLayout::setContentsMargins() instead of + QLayout::setMargin() + +Similar to ed986711c159499b873157d4e5d4a53026d94719. + +It's deprecated in Qt 5.15 [^1], since 5.13 [^2], and removed in Qt 6. + +[^1] https://doc.qt.io/qt-5/qlayout-obsolete.html#setMargin +[^2] https://github.com/qt/qtbase/commit/d6d33f0b80dd85043c71f71a3ed5485d6014e6c4 +--- + modules/gui/qt/components/controller.cpp | 16 ++++++++-------- + modules/gui/qt/components/controller_widget.cpp | 2 +- + modules/gui/qt/components/playlist/playlist.cpp | 2 +- + modules/gui/qt/components/playlist/standardpanel.cpp | 2 +- + modules/gui/qt/components/playlist/views.cpp | 2 +- + modules/gui/qt/dialogs/external.cpp | 2 +- + modules/gui/qt/dialogs/preferences.cpp | 2 +- + modules/gui/qt/dialogs/toolbar.cpp | 6 +++--- + modules/gui/qt/main_interface.cpp | 4 ++-- + 9 files changed, 19 insertions(+), 19 deletions(-) + +diff --git a/modules/gui/qt/components/controller.cpp b/modules/gui/qt/components/controller.cpp +index 3adfe67..0006a74 100644 +--- a/modules/gui/qt/components/controller.cpp ++++ b/modules/gui/qt/components/controller.cpp +@@ -536,12 +536,12 @@ QFrame *AbstractController::discFrame() + QFrame *discFrame = new QFrame( this ); + + QHBoxLayout *discLayout = new QHBoxLayout( discFrame ); +- discLayout->setSpacing( 0 ); discLayout->setMargin( 0 ); ++ discLayout->setSpacing( 0 ); discLayout->setContentsMargins( 0, 0, 0, 0 ); + + + QFrame *chapFrame = new QFrame( discFrame ); + QHBoxLayout *chapLayout = new QHBoxLayout( chapFrame ); +- chapLayout->setSpacing( 0 ); chapLayout->setMargin( 0 ); ++ chapLayout->setSpacing( 0 ); chapLayout->setContentsMargins( 0, 0, 0, 0 ); + + QToolButton *prevSectionButton = new QToolButton( chapFrame ); + setupButton( prevSectionButton ); +@@ -560,7 +560,7 @@ QFrame *AbstractController::discFrame() + + QFrame *menuFrame = new QFrame( discFrame ); + QHBoxLayout *menuLayout = new QHBoxLayout( menuFrame ); +- menuLayout->setSpacing( 0 ); menuLayout->setMargin( 0 ); ++ menuLayout->setSpacing( 0 ); menuLayout->setContentsMargins( 0, 0, 0, 0 ); + + QToolButton *menuButton = new QToolButton( menuFrame ); + setupButton( menuButton ); +@@ -594,7 +594,7 @@ QFrame *AbstractController::telexFrame() + **/ + QFrame *telexFrame = new QFrame( this ); + QHBoxLayout *telexLayout = new QHBoxLayout( telexFrame ); +- telexLayout->setSpacing( 0 ); telexLayout->setMargin( 0 ); ++ telexLayout->setSpacing( 0 ); telexLayout->setContentsMargins( 0, 0, 0, 0 ); + CONNECT( THEMIM->getIM(), teletextPossible( bool ), + telexFrame, setVisible( bool ) ); + +@@ -720,14 +720,14 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i, + controlLayout->setContentsMargins( 3, 1, 0, 1 ); + controlLayout->setSpacing( 0 ); + QHBoxLayout *controlLayout1 = new QHBoxLayout; +- controlLayout1->setSpacing( 0 ); controlLayout1->setMargin( 0 ); ++ controlLayout1->setSpacing( 0 ); controlLayout1->setContentsMargins( 0, 0, 0, 0 ); + + QString line1 = getSettings()->value( "MainWindow/MainToolbar1", MAIN_TB1_DEFAULT ) + .toString(); + parseAndCreate( line1, controlLayout1 ); + + QHBoxLayout *controlLayout2 = new QHBoxLayout; +- controlLayout2->setSpacing( 0 ); controlLayout2->setMargin( 0 ); ++ controlLayout2->setSpacing( 0 ); controlLayout2->setContentsMargins( 0, 0, 0, 0 ); + QString line2 = getSettings()->value( "MainWindow/MainToolbar2", MAIN_TB2_DEFAULT ) + .toString(); + parseAndCreate( line2, controlLayout2 ); +@@ -760,7 +760,7 @@ AdvControlsWidget::AdvControlsWidget( intf_thread_t *_p_i, QWidget *_parent ) : + { + RTL_UNAFFECTED_WIDGET + controlLayout = new QHBoxLayout( this ); +- controlLayout->setMargin( 0 ); ++ controlLayout->setContentsMargins( 0, 0, 0, 0 ); + controlLayout->setSpacing( 0 ); + #ifdef DEBUG_LAYOUT + setStyleSheet( "background: orange "); +@@ -777,7 +777,7 @@ InputControlsWidget::InputControlsWidget( intf_thread_t *_p_i, QWidget *_parent + { + RTL_UNAFFECTED_WIDGET + controlLayout = new QHBoxLayout( this ); +- controlLayout->setMargin( 0 ); ++ controlLayout->setContentsMargins( 0, 0, 0, 0 ); + controlLayout->setSpacing( 0 ); + #ifdef DEBUG_LAYOUT + setStyleSheet( "background: green "); +diff --git a/modules/gui/qt/components/controller_widget.cpp b/modules/gui/qt/components/controller_widget.cpp +index 45ce421..2cbbbc8 100644 +--- a/modules/gui/qt/components/controller_widget.cpp ++++ b/modules/gui/qt/components/controller_widget.cpp +@@ -49,7 +49,7 @@ SoundWidget::SoundWidget( QWidget *_parent, intf_thread_t * _p_intf, + { + /* We need a layout for this widget */ + QHBoxLayout *layout = new QHBoxLayout( this ); +- layout->setSpacing( 0 ); layout->setMargin( 0 ); ++ layout->setSpacing( 0 ); layout->setContentsMargins( 0, 0, 0, 0 ); + + /* We need a Label for the pix */ + volMuteLabel = new QLabel; +diff --git a/modules/gui/qt/components/playlist/playlist.cpp b/modules/gui/qt/components/playlist/playlist.cpp +index d2849a2..5f6a248 100644 +--- a/modules/gui/qt/components/playlist/playlist.cpp ++++ b/modules/gui/qt/components/playlist/playlist.cpp +@@ -53,7 +53,7 @@ PlaylistWidget::PlaylistWidget( intf_thread_t *_p_i, QWidget *_par ) + setContentsMargins( 0, 3, 0, 3 ); + + QGridLayout *layout = new QGridLayout( this ); +- layout->setMargin( 0 ); layout->setSpacing( 0 ); ++ layout->setContentsMargins( 0, 0, 0, 0 ); layout->setSpacing( 0 ); + + /******************* + * Left * +diff --git a/modules/gui/qt/components/playlist/standardpanel.cpp b/modules/gui/qt/components/playlist/standardpanel.cpp +index 226914f..326f4f0 100644 +--- a/modules/gui/qt/components/playlist/standardpanel.cpp ++++ b/modules/gui/qt/components/playlist/standardpanel.cpp +@@ -89,7 +89,7 @@ StandardPLPanel::StandardPLPanel( PlaylistWidget *_parent, + p_selector( _p_selector ) + { + viewStack = new QStackedLayout( this ); +- viewStack->setSpacing( 0 ); viewStack->setMargin( 0 ); ++ viewStack->setSpacing( 0 ); viewStack->setContentsMargins( 0, 0, 0, 0 ); + setMinimumWidth( 300 ); + + iconView = NULL; +diff --git a/modules/gui/qt/components/playlist/views.cpp b/modules/gui/qt/components/playlist/views.cpp +index 70dd29d..2e80e13 100644 +--- a/modules/gui/qt/components/playlist/views.cpp ++++ b/modules/gui/qt/components/playlist/views.cpp +@@ -477,7 +477,7 @@ void PlTreeView::keyPressEvent( QKeyEvent *event ) + PicFlowView::PicFlowView( QAbstractItemModel *p_model, QWidget *parent ) : QAbstractItemView( parent ) + { + QHBoxLayout *layout = new QHBoxLayout( this ); +- layout->setMargin( 0 ); ++ layout->setContentsMargins( 0, 0, 0, 0 ); + picFlow = new PictureFlow( this, p_model ); + picFlow->setContextMenuPolicy( Qt::CustomContextMenu ); + connect( picFlow, SIGNAL(customContextMenuRequested( const QPoint & )), +diff --git a/modules/gui/qt/dialogs/external.cpp b/modules/gui/qt/dialogs/external.cpp +index 4c78c61..69929f7 100644 +--- a/modules/gui/qt/dialogs/external.cpp ++++ b/modules/gui/qt/dialogs/external.cpp +@@ -190,7 +190,7 @@ void DialogHandler::displayLogin(vlc_dialog_id *p_id, const QString &title, + dialog->setWindowTitle (title); + dialog->setWindowRole ("vlc-login"); + dialog->setModal(true); +- layout->setMargin (2); ++ layout->setContentsMargins( 2, 2, 2, 2 ); + + /* Username and password fields */ + QWidget *panel = new QWidget (dialog); +diff --git a/modules/gui/qt/dialogs/preferences.cpp b/modules/gui/qt/dialogs/preferences.cpp +index 110c60d..e0b7692 100644 +--- a/modules/gui/qt/dialogs/preferences.cpp ++++ b/modules/gui/qt/dialogs/preferences.cpp +@@ -126,7 +126,7 @@ PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf ) + setLayout( main_layout ); + + /* Margins */ +- simple_tree_panel->layout()->setMargin( 1 ); ++ simple_tree_panel->layout()->setContentsMargins( 1, 1, 1, 1 ); + simple_panels_stack->layout()->setContentsMargins( 6, 0, 0, 3 ); + + for( int i = 0; i < SPrefsMax ; i++ ) simple_panels[i] = NULL; +diff --git a/modules/gui/qt/dialogs/toolbar.cpp b/modules/gui/qt/dialogs/toolbar.cpp +index 58a90f7..22e351c 100644 +--- a/modules/gui/qt/dialogs/toolbar.cpp ++++ b/modules/gui/qt/dialogs/toolbar.cpp +@@ -497,7 +497,7 @@ WidgetListing::WidgetListing( intf_thread_t *p_intf, QWidget *_parent ) + QWidget *discFrame = new QWidget( this ); + //discFrame->setLineWidth( 1 ); + QHBoxLayout *discLayout = new QHBoxLayout( discFrame ); +- discLayout->setSpacing( 0 ); discLayout->setMargin( 0 ); ++ discLayout->setSpacing( 0 ); discLayout->setContentsMargins( 0, 0, 0, 0 ); + + QToolButton *prevSectionButton = new QToolButton( discFrame ); + prevSectionButton->setIcon( QIcon( ":/toolbar/dvd_prev.svg" ) ); +@@ -522,7 +522,7 @@ WidgetListing::WidgetListing( intf_thread_t *p_intf, QWidget *_parent ) + { + QWidget *telexFrame = new QWidget( this ); + QHBoxLayout *telexLayout = new QHBoxLayout( telexFrame ); +- telexLayout->setSpacing( 0 ); telexLayout->setMargin( 0 ); ++ telexLayout->setSpacing( 0 ); telexLayout->setContentsMargins( 0, 0, 0, 0 ); + + QToolButton *telexOn = new QToolButton( telexFrame ); + telexOn->setIcon( QIcon( ":/toolbar/tv.svg" ) ); +@@ -638,7 +638,7 @@ DroppingController::DroppingController( intf_thread_t *_p_intf, + setAcceptDrops( true ); + controlLayout = new QHBoxLayout( this ); + controlLayout->setSpacing( 5 ); +- controlLayout->setMargin( 0 ); ++ controlLayout->setContentsMargins( 0, 0, 0, 0 ); + setFrameShape( QFrame::StyledPanel ); + setFrameShadow( QFrame::Raised ); + setMinimumHeight( 20 ); +diff --git a/modules/gui/qt/main_interface.cpp b/modules/gui/qt/main_interface.cpp +index 095c765..fc33ec5 100644 +--- a/modules/gui/qt/main_interface.cpp ++++ b/modules/gui/qt/main_interface.cpp +@@ -364,7 +364,7 @@ void MainInterface::createResumePanel( QWidget *w ) + resumePanel = new QWidget( w ); + resumePanel->hide(); + QHBoxLayout *resumePanelLayout = new QHBoxLayout( resumePanel ); +- resumePanelLayout->setSpacing( 0 ); resumePanelLayout->setMargin( 0 ); ++ resumePanelLayout->setSpacing( 0 ); resumePanelLayout->setContentsMargins( 0, 0, 0, 0 ); + + QLabel *continuePixmapLabel = new QLabel(); + continuePixmapLabel->setPixmap( ImageHelper::loadSvgToPixmap( ":/menu/help.svg" , fontMetrics().height(), fontMetrics().height()) ); +@@ -458,7 +458,7 @@ void MainInterface::createMainWidget( QSettings *creationSettings ) + setCentralWidget( main ); + mainLayout = new QVBoxLayout( main ); + main->setContentsMargins( 0, 0, 0, 0 ); +- mainLayout->setSpacing( 0 ); mainLayout->setMargin( 0 ); ++ mainLayout->setSpacing( 0 ); mainLayout->setContentsMargins( 0, 0, 0, 0 ); + + createResumePanel( main ); + /* */ diff --git a/patches/0121-qt-use-QString-setNum-rather-than-QString-sprintf.patch b/patches/0121-qt-use-QString-setNum-rather-than-QString-sprintf.patch new file mode 100644 index 00000000..e3861a23 --- /dev/null +++ b/patches/0121-qt-use-QString-setNum-rather-than-QString-sprintf.patch @@ -0,0 +1,26 @@ +From: Steve Lhomme +Date: Wed, 18 Dec 2024 11:57:05 +0100 +Subject: qt: use QString::setNum() rather than QString::sprintf() + +It's deprecated and one of the replacement suggested in the doc [^1]. +QString::asprint() might be the more logical choice, but it's also not recommended [^2]. + +[^1] https://doc.qt.io/qt-5/qstring-obsolete.html#sprintf +[^2] https://doc.qt.io/qt-5/qstring.html#asprintf +--- + modules/gui/qt/menus.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/gui/qt/menus.cpp b/modules/gui/qt/menus.cpp +index 70a475f..a689b4c 100644 +--- a/modules/gui/qt/menus.cpp ++++ b/modules/gui/qt/menus.cpp +@@ -1438,7 +1438,7 @@ int VLCMenuBar::CreateChoicesMenu( QMenu *submenu, const char *psz_var, + case VLC_VAR_FLOAT: + var_Get( p_object, psz_var, &val ); + if( CURTEXT ) menutext = qfue( CURTEXT ); +- else menutext.sprintf( "%.2f", CURVAL.f_float ); ++ else menutext.setNum(CURVAL.f_float, 'f', 2); + CreateAndConnect( submenu, psz_var, menutext, "", RADIO_OR_COMMAND, + p_object, CURVAL, i_type, + CURVAL.f_float == val.f_float ); diff --git a/patches/0122-qt-use-QString-arg-rather-than-QString-sprintf.patch b/patches/0122-qt-use-QString-arg-rather-than-QString-sprintf.patch new file mode 100644 index 00000000..49694d01 --- /dev/null +++ b/patches/0122-qt-use-QString-arg-rather-than-QString-sprintf.patch @@ -0,0 +1,26 @@ +From: Steve Lhomme +Date: Mon, 16 Dec 2024 16:01:44 +0100 +Subject: qt: use QString::arg() rather than QString::sprintf() + +It's deprecated and one of the replacement suggested in the doc [^1]. +QString::asprint() might be the more logical choice, but it's also not recommended [^2]. + +[^1] https://doc.qt.io/qt-5/qstring-obsolete.html#sprintf +[^2] https://doc.qt.io/qt-5/qstring.html#asprintf +--- + modules/gui/qt/dialogs/bookmarks.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/gui/qt/dialogs/bookmarks.cpp b/modules/gui/qt/dialogs/bookmarks.cpp +index 1fb05e3..186b4d5 100644 +--- a/modules/gui/qt/dialogs/bookmarks.cpp ++++ b/modules/gui/qt/dialogs/bookmarks.cpp +@@ -146,7 +146,7 @@ void BookmarksDialog::update() + QStringList row; + row << QString( qfu( pp_bookmarks[i]->psz_name ) ); + row << qfu("-"); +- row << QString().sprintf( "%02u:%02u:%06.3f", hours, minutes, seconds ); ++ row << QString( "%1:%2:%3" ).arg( hours, 2, 10, QChar('0')).arg( minutes, 2, 10, QChar('0')).arg(seconds, 10, 'f', 3, QChar('0')); + + QTreeWidgetItem *item = new QTreeWidgetItem( bookmarksList, row ); + item->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEditable | diff --git a/patches/0123-qt-use-std-sort-instead-of-deprecated-qSort.patch b/patches/0123-qt-use-std-sort-instead-of-deprecated-qSort.patch new file mode 100644 index 00000000..92e4217c --- /dev/null +++ b/patches/0123-qt-use-std-sort-instead-of-deprecated-qSort.patch @@ -0,0 +1,36 @@ +From: Steve Lhomme +Date: Tue, 17 Dec 2024 09:39:26 +0100 +Subject: qt: use std::sort instead of deprecated qSort() + +Similar to c49140dcff3a2ba2729cec8756c7f78b198d50c9. +--- + modules/gui/qt/components/playlist/playlist_model.cpp | 2 +- + modules/gui/qt/dialogs/bookmarks.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules/gui/qt/components/playlist/playlist_model.cpp b/modules/gui/qt/components/playlist/playlist_model.cpp +index a6bdd1f..5b24a0f 100644 +--- a/modules/gui/qt/components/playlist/playlist_model.cpp ++++ b/modules/gui/qt/components/playlist/playlist_model.cpp +@@ -126,7 +126,7 @@ QMimeData *PLModel::mimeData( const QModelIndexList &indexes ) const + list.append(index); + } + +- qSort(list.begin(), list.end(), modelIndexLessThen); ++ std::sort(list.begin(), list.end(), modelIndexLessThen); + + AbstractPLItem *item = NULL; + foreach( const QModelIndex &index, list ) { +diff --git a/modules/gui/qt/dialogs/bookmarks.cpp b/modules/gui/qt/dialogs/bookmarks.cpp +index 186b4d5..4282a3e 100644 +--- a/modules/gui/qt/dialogs/bookmarks.cpp ++++ b/modules/gui/qt/dialogs/bookmarks.cpp +@@ -186,7 +186,7 @@ void BookmarksDialog::del() + b_ignore_updates = true; + /* Sort needed to make sure that selected elements are deleted in descending + order, otherwise the indexes might change and wrong bookmarks are deleted. */ +- qSort( selected.begin(), selected.end() ); ++ std::sort( selected.begin(), selected.end() ); + QModelIndexList::Iterator it = selected.end(); + for( --it; it != selected.begin(); it-- ) + { diff --git a/patches/0124-avcodec-vaapi-Support-VAAPI-with-latest-FFmpeg.patch b/patches/0124-avcodec-vaapi-Support-VAAPI-with-latest-FFmpeg.patch new file mode 100644 index 00000000..8e7c99f6 --- /dev/null +++ b/patches/0124-avcodec-vaapi-Support-VAAPI-with-latest-FFmpeg.patch @@ -0,0 +1,145 @@ +From: David Rosca +Date: Fri, 20 Dec 2024 20:24:36 +0100 +Subject: avcodec: vaapi: Support VAAPI with latest FFmpeg + +--- + configure.ac | 20 +---------------- + modules/codec/Makefile.am | 2 +- + modules/codec/avcodec/avcommon_compat.h | 3 +++ + modules/codec/avcodec/vaapi.c | 38 +++++++++++++++++++++++++++++++-- + 4 files changed, 41 insertions(+), 22 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f328bc0..5b150c3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2469,25 +2469,7 @@ AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"]) + AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"]) + AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"]) + AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"]) +- +-have_avcodec_vaapi="no" +-AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [ +- VLC_SAVE_FLAGS +- CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}" +- CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}" +- AC_CHECK_HEADERS([libavcodec/vaapi.h], [ +- AC_MSG_NOTICE([VA API acceleration activated]) +- have_avcodec_vaapi="yes" +- ],[ +- AS_IF([test -n "${enable_libva}"], [ +- AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing]) +- ], [ +- AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ]) +- ]) +- ]) +- VLC_RESTORE_FLAGS +-]) +-AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"]) ++AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"]) + + dnl + dnl dxva2 needs avcodec +diff --git a/modules/codec/Makefile.am b/modules/codec/Makefile.am +index 6d9465f..dd04391 100644 +--- a/modules/codec/Makefile.am ++++ b/modules/codec/Makefile.am +@@ -416,7 +416,7 @@ libvaapi_plugin_la_SOURCES = \ + codec/avcodec/vaapi.c hw/vaapi/vlc_vaapi.c hw/vaapi/vlc_vaapi.h + libvaapi_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) + libvaapi_plugin_la_CFLAGS = $(AM_CFLAGS) $(AVCODEC_CFLAGS) +-libvaapi_plugin_la_LIBADD = $(LIBVA_LIBS) ++libvaapi_plugin_la_LIBADD = $(LIBVA_LIBS) $(AVCODEC_LIBS) + if HAVE_AVCODEC_VAAPI + if HAVE_VAAPI_DRM + codec_LTLIBRARIES += libvaapi_drm_plugin.la +diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h +index ac02c06..8ab6910 100644 +--- a/modules/codec/avcodec/avcommon_compat.h ++++ b/modules/codec/avcodec/avcommon_compat.h +@@ -84,6 +84,9 @@ + #ifndef FF_API_AVIO_WRITE_NONCONST // removed in ffmpeg 7 + # define FF_API_AVIO_WRITE_NONCONST (LIBAVFORMAT_VERSION_MAJOR < 61) + #endif ++#ifndef FF_API_STRUCT_VAAPI_CONTEXT ++# define FF_API_STRUCT_VAAPI_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59) ++#endif + + #endif /* HAVE_LIBAVCODEC_AVCODEC_H */ + +diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c +index c83269e..e203baa 100644 +--- a/modules/codec/avcodec/vaapi.c ++++ b/modules/codec/avcodec/vaapi.c +@@ -42,12 +42,25 @@ + # include + #endif + #include ++#if FF_API_STRUCT_VAAPI_CONTEXT + #include ++#else ++#include ++#endif + + #include "avcodec.h" + #include "va.h" + #include "../../hw/vaapi/vlc_vaapi.h" + ++#if !FF_API_STRUCT_VAAPI_CONTEXT ++struct vaapi_context ++{ ++ VADisplay display; ++ VAConfigID config_id; ++ VAContextID context_id; ++}; ++#endif ++ + struct vlc_va_sys_t + { + struct vlc_vaapi_instance *va_inst; +@@ -145,8 +158,10 @@ static void Delete(vlc_va_t *va, void **hwctx) + + (void) hwctx; + +- vlc_vaapi_DestroyContext(o, sys->hw_ctx.display, sys->hw_ctx.context_id); +- vlc_vaapi_DestroyConfig(o, sys->hw_ctx.display, sys->hw_ctx.config_id); ++ if (sys->hw_ctx.context_id != VA_INVALID_ID) ++ vlc_vaapi_DestroyContext(o, sys->hw_ctx.display, sys->hw_ctx.context_id); ++ if (sys->hw_ctx.config_id != VA_INVALID_ID) ++ vlc_vaapi_DestroyConfig(o, sys->hw_ctx.display, sys->hw_ctx.config_id); + vlc_vaapi_ReleaseInstance(sys->va_inst); + free(sys); + } +@@ -196,6 +211,7 @@ static int Create(vlc_va_t *va, AVCodecContext *ctx, const AVPixFmtDescriptor *d + sys->hw_ctx.config_id = VA_INVALID_ID; + sys->hw_ctx.context_id = VA_INVALID_ID; + ++#if FF_API_STRUCT_VAAPI_CONTEXT + sys->hw_ctx.config_id = + vlc_vaapi_CreateConfigChecked(o, sys->hw_ctx.display, i_profile, + VAEntrypointVLD, i_vlc_chroma); +@@ -211,6 +227,24 @@ static int Create(vlc_va_t *va, AVCodecContext *ctx, const AVPixFmtDescriptor *d + goto error; + + ctx->hwaccel_context = &sys->hw_ctx; ++#else ++ AVBufferRef *hwdev_ref = av_hwdevice_ctx_alloc(AV_HWDEVICE_TYPE_VAAPI); ++ if (hwdev_ref == NULL) ++ goto error; ++ ++ AVHWDeviceContext *hwdev_ctx = (void *) hwdev_ref->data; ++ AVVAAPIDeviceContext *vadev_ctx = hwdev_ctx->hwctx; ++ vadev_ctx->display = va_dpy; ++ ++ if (av_hwdevice_ctx_init(hwdev_ref) < 0) ++ { ++ av_buffer_unref(&hwdev_ref); ++ goto error; ++ } ++ ++ ctx->hw_device_ctx = hwdev_ref; ++#endif ++ + va->sys = sys; + va->description = vaQueryVendorString(sys->hw_ctx.display); + va->get = Get; diff --git a/patches/series b/patches/series new file mode 100644 index 00000000..e7d7d60a --- /dev/null +++ b/patches/series @@ -0,0 +1,124 @@ +0001-configure-fix-linking-on-RISC-V-ISA.patch +0002-Do-not-generate-cache-during-build.patch +0003-Bump-module-ABI-for-time_t-transition.patch +0004-demux-image-detect-ICC-profile-before-JFIF-data.patch +0005-demux-avi-do-not-set-up-invalid-bitsperpixel.patch +0006-opus_header-fix-channel-mapping-family-1-parsing.patch +0007-vlc_common-remove-warnings-on-VLC_OBJECT.patch +0008-transcode-fix-destructive-assignment-after-drain.patch +0009-transcode-fix-picture-fifo-leak.patch +0010-sftp-fix-seek-for-large-files-on-32-bit-OS.patch +0011-qt-hardcode-the-name-of-the-shortcut-for-the-AMD-VQ-.patch +0012-packetizer-h264-fix-reading-prediction-weight-tables.patch +0013-demux-adaptive-fix-start-with-indexes-only.patch +0014-UPnP-remove-SAT-IP-channel-list-fallback.patch +0015-spectrogram-fix-FFT-result-scaling-factor.patch +0016-spectrogram-convert-int16-to-unsigned-for-correct-ra.patch +0017-spectrogram-allows-better-visualization-of-low-frequ.patch +0018-magnify-check-the-image-conversion-worked.patch +0019-opencv-check-the-image-conversion-worked.patch +0020-packetizer-hxxx_common-rename-function-pointer.patch +0021-packetizer-hxxx-pass-opaque-to-callbacks-instead-of-.patch +0022-packetizer-hxxx-add-missing-drain-for-non-annexb-con.patch +0023-demux-asf-add-missing-subpayloads-drain-on-EOF.patch +0024-demux-AVI-insert-packetizer-for-XVID-MPEG-4-video.patch +0025-codec-videotoolbox-remove-sw-decoder-fallback-for-mp.patch +0026-Use-vlc_fourcc_GetCodec-to-map-XVID-to-MP4V.patch +0027-dav1d-treat-RGB-formats-separately.patch +0028-dav1d-add-dav1d-all-layers-flag.patch +0029-dts_header-initialize-SUBSTREAM_LBR-size-to-0.patch +0030-packetizer-dts-check-for-frame_size-for-the-first-sy.patch +0031-aom-make-BGR-matching-stricter.patch +0032-taglib-.m4v-are-already-registered-as-MP4-files.patch +0033-modules-taglib-simplify-reading-embedded-art.patch +0034-taglib-IOStream-Return-the-url-as-fileName.patch +0035-taglib-Always-use-IOStream-to-read-the-media.patch +0036-taglib-Enable-prefetch-cache-on-the-IOStream.patch +0037-taglib-fix-Wdeprecated-copy-warnings.patch +0038-meta_engine-taglib-increment-VlcIostream-readpos.patch +0039-meta_engine-taglib-reject-read-on-failed-seek.patch +0040-meta_engine-taglib-add-sequential-read-limit-on-VlcI.patch +0041-meta_engine-taglib-restrict-unlimited-reads-on-strea.patch +0042-meta-taglib-reject-non-expected-schemes.patch +0043-taglib-fix-variable-shadowing.patch +0044-taglib-Don-t-convert-base64-strings-to-UTF8.patch +0045-taglib-ByteVector-null-is-now-deprecated.patch +0046-taglib-Remove-usages-of-deprecated-itemListMap.patch +0047-taglib-Remove-use-of-deprecated-String-isNull.patch +0048-taglib-Remove-explicit-invocation-of-default-constru.patch +0049-taglib-Implement-new-StreamTypeResolver-interface-wh.patch +0050-taglib-Use-nullptr-instead-of-0-for-pointers.patch +0051-taglib-Fix-invalid-version-check.patch +0052-meta-taglib-use-std-min.patch +0053-taglib-don-t-cast-the-file-st_size-to-a-possibly-sma.patch +0054-taglib-remove-VLC-path-define-check.patch +0055-Taglib-Use-ID3v2Tag-instead-of-tag-for-RIFF-WAV-File.patch +0056-lua-don-t-use-operator-on-VLC-errors.patch +0057-demux-mkv-fix-link-to-ALAC-documentation.patch +0058-demux-mkv-write-the-actual-extra-data-size-in-the-AL.patch +0059-demux-mkv-handle-mkv-use-chapter-codec-option.patch +0060-hw-amf-keep-the-AMF-version-in-the-context.patch +0061-archive-Add-support-for-RAR-5.0-format.patch +0062-archive-fix-the-type-used-for-libarchive_skip_cb.patch +0063-stream_extractor-set-correct-offset-on-read-failure.patch +0064-hw-amf-let-the-AMF-system-know-what-version-was-used.patch +0065-avcodec-avoid-signedness-mismatch-warning.patch +0066-avcodec-use-p_dec-fmt_out-instead-of-context-channel.patch +0067-avcodec-audio-decoder-to-use-ch_layout.patch +0068-avcodec-use-p_enc-audio-channels-instead-of-context-.patch +0069-codec-avcodec-map-AYUV-as-RAWVIDEO-with-ffmpeg-6.0.patch +0070-avcodec-encoder-fix-channel_layout-conditionals.patch +0071-codec-avcodec-fix-audio-channel_layout-conditionals.patch +0072-demux-mux-avformat-use-ch_layout-from-ffmpeg-5.1.patch +0073-avcodec-add-handling-of-new-ch_layout-in-audio-encod.patch +0074-avcodec-use-ch_layout-for-channel-layout-in-audio-en.patch +0075-codec-avcodec-bypass-removed-define-for-Intel-workar.patch +0076-codec-x265-handle-X265_MAX_FRAME_THREADS-on-newer-CP.patch +0077-codec-x265-handle-4.0-encoding-API-change.patch +0078-mux-avformat-fix-avio-callbacks-signature-with-ffmpe.patch +0079-fetcher-don-t-download-network-metadata-if-the-user-.patch +0080-hds-fix-crash-if-bootstrap-data-or-URL-are-missing.patch +0081-qt-add-option-to-use-dark-palette.patch +0082-avcommon-rename-LIBAVUTIL_VERSION_CHECK-to-LIBAV_UTI.patch +0083-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch +0084-avcommon-rename-LIBAVFORMAT_VERSION_CHECK-to-LIBAV_F.patch +0085-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch +0086-avcommon-rename-LIBAVCODEC_VERSION_CHECK-to-LIBAV_CO.patch +0087-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch +0088-codec-avcodec-check-open-codec-return-value.patch +0089-avcodec-use-ARRAY_SIZE-instead-of-custom-code.patch +0090-avcodec-audio-make-channel-mapping-array-0-terminate.patch +0091-codec-avcodec-fix-ch_layout-requirement.patch +0092-ffmpeg-fix-libavutil-version-check-for-av_channel_la.patch +0093-ffmpeg-fix-libavcodec-version-check-for-AVCodecParam.patch +0094-avcodec-fix-libavcodec-version-check-for-AVCodecCont.patch +0095-ffmpeg-fix-libavutil-version-check-for-AVFrame.ch_la.patch +0096-avcodec-add-a-define-to-test-for-AVCodecContext.ch_l.patch +0097-configure-use-host_cpu-where-applicable.patch +0098-demux-mkv-use-the-internal-USF-FourCC-value.patch +0099-demux-mkv-use-the-internal-QDMC-FourCC-value.patch +0100-demux-mkv-add-missing-helpers-from-libebml-2.0.patch +0101-demux-mkv-read-data-from-KaxBlockAdditions-as-const.patch +0102-demux-mkv-don-t-expose-local-BlockDecode-function.patch +0103-demux-mkv-fix-potential-leak-of-KaxBlockAdditions-wh.patch +0104-qt-PodcastConfiguration-inherits-QDialog-not-QWidget.patch +0105-musicbrainz-fix-leak.patch +0106-es_out_timeshift-explicitely-use-GetTempPathW.patch +0107-demux-mkv-don-t-use-EbmlDummy-elements-coming-out-of.patch +0108-packetizer-av1-fill-the-full-extradata-if-it-doesn-t.patch +0109-demux-mkv-force-the-packetizer-to-fill-AV1-extradata.patch +0110-demux-mp4-force-the-packetizer-to-fill-AV1-extradata.patch +0111-mediacodec-set-color-keys-in-media-format-explicitly.patch +0112-access-v4l2-add-support-for-V4L2_PIX_FMT_ABGR32-and-.patch +0113-interop_vaapi-fix-mem-leak-while-pause.patch +0114-qt-remove-unused-meta_to_mlmeta.patch +0115-qt-fix-IN_ITEM_ROLE-documentation.patch +0116-qt-remove-deprecated-QPainter-HighQualityAntialiasin.patch +0117-qt-fix-bitfield-added-values-set-in-QVariant.patch +0118-qt-fix-UTF-8-string-usage.patch +0119-qt-add-missing-QActionGroup-include.patch +0120-qt-use-QLayout-setContentsMargins-instead-of-QLayout.patch +0121-qt-use-QString-setNum-rather-than-QString-sprintf.patch +0122-qt-use-QString-arg-rather-than-QString-sprintf.patch +0123-qt-use-std-sort-instead-of-deprecated-qSort.patch +0124-avcodec-vaapi-Support-VAAPI-with-latest-FFmpeg.patch diff --git a/rules b/rules new file mode 100755 index 00000000..defa4dbb --- /dev/null +++ b/rules @@ -0,0 +1,337 @@ +#!/usr/bin/make -f + +DEB_BUILD_MAINT_OPTIONS=hardening=+all + +include /usr/share/dpkg/architecture.mk +include /usr/share/dpkg/pkg-info.mk +include /usr/share/dpkg/vendor.mk + +export VLC_COMPILE_BY=$(DEB_VENDOR) buildd for $(DEB_DISTRIBUTION) +export VLC_COMPILE_HOST=$(DEB_VENDOR) $(DEB_HOST_ARCH) buildd + +# custom build option: debug +# VLC enables assertions if --enable-debug is passed to the configure script. To debug issues, it +# might be useful to have them enabled. In that case, rebuilding the package with +# DEB_BUILD_OPTIONS=debug produces a build with the assertions enabled. +ifneq (,$(filter debug,$(DEB_BUILD_OPTIONS))) +confflags += --enable-debug +else +confflags += --disable-debug +endif + +# configure flags +confflags += \ + --config-cache \ + --disable-update-check \ + --enable-fast-install \ + --docdir=/usr/share/doc/vlc \ + --with-binary-version=$(DEB_VERSION) \ + $(NULL) +# configure features +confflags += \ + --enable-a52 \ + --enable-aa \ + --enable-aribsub \ + --enable-avahi \ + --enable-bluray \ + --enable-caca \ + --enable-chromaprint \ + --enable-chromecast \ + --enable-dav1d \ + --enable-dbus \ + --enable-dca \ + --enable-dvbpsi \ + --enable-dvdnav \ + --enable-faad \ + --enable-flac \ + --enable-fluidsynth \ + --enable-freetype \ + --enable-fribidi \ + --enable-gles2 \ + --enable-gnutls \ + --enable-harfbuzz \ + --enable-jack \ + --enable-kate \ + --enable-libass \ + --enable-libmpeg2 \ + --enable-libxml2 \ + --enable-lirc \ + --enable-mad \ + --enable-matroska \ + --enable-mod \ + --enable-mpc \ + --enable-mpg123 \ + --enable-mtp \ + --enable-ncurses \ + --enable-notify \ + --enable-ogg \ + --enable-opus \ + --enable-pulse \ + --enable-qt \ + --enable-realrtsp \ + --enable-samplerate \ + --enable-sftp \ + --enable-shine \ + --enable-shout \ + --enable-skins2 \ + --enable-soxr \ + --enable-spatialaudio \ + --enable-speex \ + --enable-srt \ + --enable-svg \ + --enable-svgdec \ + --enable-taglib \ + --enable-theora \ + --enable-twolame \ + --enable-upnp \ + --enable-vdpau \ + --enable-vnc \ + --enable-vorbis \ + --enable-x264 \ + --enable-x265 \ + --enable-zvbi \ + --with-kde-solid=/usr/share/solid/actions/ \ + $(NULL) +# Reasons for disabling features: +# aom: dav1d support enabled +# crystalhd: unusble without firmware (#934242) +# d3d11va: Windows only +# decklink: not in Debian +# directx: Windows only +# dsm: not in Debian +# dxva2: Windows only +# fdkaac: in Debian contrib +# fluidlite: fluidsynth is enabled +# freerdp: removed from Debian (#888323) +# goom: not in Debian +# gst-decode: not needed when having libavcodec +# libplacebo: is too new +# libtar: security issue (#737534) +# live555: non-free code from RFC 3550 (#981439) +# macosx*: MacOX only +# mfx: currently not supported on Linux +# microdns: functionality already provided by avahi +# omxil: removed from Debian (#1065623) +# opencv: developer plugin not required by end users +# oss: use PulseAudio instead of oss +# projectm: broken +# schroedinger: removed from Debian (#845037) +# sdl-image: SDL 1.2 is deprecated (#1038590) +# sndio: NMU maintained key package +# sparkle: MacOS X only +# telx: incompatible with zvbi +# vpx: not needed when having libavcodec +# vsxu: not in Debian +# wasapi: Windows only +confflags += \ + --disable-aom \ + --disable-crystalhd \ + --disable-d3d11va \ + --disable-decklink \ + --disable-directx \ + --disable-dsm \ + --disable-dxva2 \ + --disable-fdkaac \ + --disable-fluidlite \ + --disable-freerdp \ + --disable-goom \ + --disable-gst-decode \ + --disable-libplacebo \ + --disable-libtar \ + --disable-live555 \ + --disable-macosx \ + --disable-macosx-avfoundation \ + --disable-macosx-qtkit \ + --disable-mfx \ + --disable-microdns \ + --disable-omxil \ + --disable-opencv \ + --disable-oss \ + --disable-projectm \ + --disable-schroedinger \ + --disable-sdl-image \ + --disable-sndio \ + --disable-sparkle \ + --disable-telx \ + --disable-vpx \ + --disable-vsxu \ + --disable-wasapi \ + $(NULL) + +# Linux specific flags +ifeq ($(DEB_HOST_ARCH_OS),linux) +confflags += \ + --enable-alsa \ + --enable-dc1394 \ + --enable-dv1394 \ + --enable-linsys \ + --enable-nfs \ + --enable-udev \ + --enable-v4l2 \ + --enable-wayland \ + $(NULL) +else +# V4L2 is disabled on Hurd due to a build failure. +confflags += \ + --disable-alsa \ + --disable-dc1394 \ + --disable-dv1394 \ + --disable-linsys \ + --disable-nfs \ + --disable-udev \ + --disable-v4l2 \ + --disable-wayland \ + $(NULL) +removeplugins += \ + alsa \ + dc1394 \ + dtv \ + dv1394 \ + dvb \ + fb \ + linsys \ + nfs \ + systemd \ + udev \ + v4l2 \ + wayland \ + $(NULL) +endif + +# Linux specific flags (disabled on Hurd) +ifeq (,$(filter-out linux,$(DEB_HOST_ARCH_OS))) +confflags += \ + --enable-libva \ + --enable-vcd \ + --enable-smbclient \ + $(NULL) +else +confflags += \ + --disable-libva \ + --disable-vcd \ + --disable-smbclient \ + $(NULL) +removeplugins += \ + cdda \ + libva \ + smbclient \ + vcd \ + $(NULL) +endif + +ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) +confflags += \ + --disable-optimizations \ + --disable-mmx \ + --disable-sse \ + --disable-altivec \ + --disable-neon \ + $(NULL) +removeplugins += mmx sse2 altivec neon +else +# amd64 and i386 specific optimizations +ifeq (,$(filter-out amd64 i386,$(DEB_HOST_ARCH_CPU))) +confflags += --enable-mmx --enable-sse +else +confflags += --disable-mmx --disable-sse +removeplugins += mmx sse2 +endif + +# ARM specific optimizations +ifeq (,$(filter-out armhf,$(DEB_HOST_ARCH_CPU))) +confflags += --enable-neon +else +confflags += --disable-neon +removeplugins += neon +endif + +# PowerPC specific optimizations (excluding powerpcspe) +ifeq (,$(filter-out powerpc,$(DEB_HOST_ARCH_CPU))$(filter powerpcspe,$(DEB_HOST_ARCH))) +confflags += --enable-altivec +else +confflags += --disable-altivec +removeplugins += altivec +endif + +# PowerPCSPE specific optimizations +ifeq (,$(filter-out powerpcspe,$(DEB_HOST_ARCH))) +DEB_CFLAGS_MAINT_APPEND += -mtune=8548 +DEB_CXXFLAGS_MAINT_APPEND += -mtune=8548 +endif +endif + +export DEB_BUILD_MAINT_OPTIONS +export DEB_CFLAGS_MAINT_APPEND +export DEB_CXXFLAGS_MAINT_APPEND +export removeplugins + +%: + dh $@ + +override_dh_auto_configure: + dh_auto_configure -- $(confflags) + +execute_after_dh_auto_build: +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + # Build zsh completion + BUILDDIR=$(CURDIR) \ + cd extras/analyser && ./zsh_completion.sh +endif + +override_dh_auto_test: +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + ./vlc -vvv --ignore-config --no-plugins-cache --list --no-color +endif +endif + +override_dh_install: + # Remove plugin cache + find debian/tmp/usr/lib -name plugins.dat -delete + # Clean up libtool la files + find debian/tmp -name '*.la' -delete + # Remove useless stuff + ln -sf /usr/share/fonts/truetype/freefont/FreeSans.ttf debian/tmp/usr/share/vlc/skins2/fonts/FreeSans.ttf + ln -sf /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf debian/tmp/usr/share/vlc/skins2/fonts/FreeSansBold.ttf + rm -f debian/tmp/usr/share/man/man1/vlc-config.1 + # Remove additional license files + find debian/tmp -name LICENSE -delete + # Remove examples installed in -dev packages + rm -rf debian/tmp/usr/share/doc/vlc/libvlc + # Install + dh_install +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + # Install zsh completion + dh_install -pvlc-bin extras/analyser/_vlc usr/share/zsh/vendor-completions +endif +ifeq (Ubuntu,$(DEB_VENDOR)) + dh_install -pvlc-bin debian/source_vlc.py usr/share/apport/package-hooks/ +endif + # Create empty directory for plugins.dat + mkdir -p debian/libvlc-bin/usr/lib/${DEB_HOST_MULTIARCH}/vlc/plugins + +override_dh_installchangelogs: + dh_installchangelogs NEWS + +override_dh_makeshlibs: + dh_makeshlibs -Xlibvlc_vdpau -Xlibvlc_pulse -Xlibvlc_xcb_events + +debian/shlibs.local: + echo "libvlc 5 libvlc5 (>= $(DEB_VERSION_UPSTREAM))" > debian/shlibs.local + echo "libvlccore 9 libvlccore9 (>= $(DEB_VERSION_UPSTREAM))" >> debian/shlibs.local + +execute_before_dh_shlibdeps: debian/shlibs.local + +override_dh_bugfiles: + dh_bugfiles -A + +execute_before_dh_installdeb-arch: + sed 's/#DEB_HOST_MULTIARCH#/${DEB_HOST_MULTIARCH}/g' \ + debian/libvlc-bin.postinst.in > debian/libvlc-bin.postinst + sed 's/#DEB_HOST_MULTIARCH#/${DEB_HOST_MULTIARCH}/g' \ + debian/libvlc-bin.prerm.in > debian/libvlc-bin.prerm + echo 'interest-noawait /usr/lib/${DEB_HOST_MULTIARCH}/vlc/plugins' > debian/libvlc-bin.triggers + +override_dh_gencontrol-arch: + sed -n 's/^# define MODULE_SYMBOL \([0-9][_0-9a-z]*\)/-Vvlc:PluginABI=vlc-plugin-abi-\1/p' \ + include/vlc_plugin.h | tr _ - | xargs dh_gencontrol -a -- diff --git a/source/format b/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/lintian-overrides b/source/lintian-overrides new file mode 100644 index 00000000..d90ff6a2 --- /dev/null +++ b/source/lintian-overrides @@ -0,0 +1,7 @@ +# unreliable tags, see lintian bug #802028 +vlc source: source-contains-prebuilt-javascript-object share/lua/http/js/common.js +vlc source: source-is-missing share/lua/http/js/common.js +vlc source: source-contains-prebuilt-javascript-object share/lua/http/js/controllers.js +vlc source: source-is-missing share/lua/http/js/controllers.js +vlc source: source-contains-prebuilt-javascript-object share/lua/http/js/jquery.jstree.js +vlc source: source-is-missing share/lua/http/js/jquery.jstree.js diff --git a/source_vlc.py b/source_vlc.py new file mode 100644 index 00000000..fd039a6c --- /dev/null +++ b/source_vlc.py @@ -0,0 +1,26 @@ +'''apport package hook for vlc + +(c) 2010 Canonical Ltd. +Author: Brian Murray +''' + +from apport.hookutils import attach_related_packages + +def add_info(report): + attach_related_packages(report, [ + "libgl1-mesa-glx", + "libgl1", + "libglib2.0-0", + "libgtk2.0-0", + "libnotify1", + "libnotify1-gtk2.10", + "libqt5core5a", + "libqt5gui5", + "libx11-6", + "libxcb-keysyms1", + "libxcb1", + "libxext6", + "libxinerama1", + "libxv1", + "libxxf86vm1", + ]) diff --git a/tests/control b/tests/control new file mode 100644 index 00000000..38de2606 --- /dev/null +++ b/tests/control @@ -0,0 +1,22 @@ +Tests: vlc-bin +Depends: vlc-bin +Restrictions: allow-stderr + +Tests: vlc +Depends: vlc +Restrictions: allow-stderr + +Tests: vlc-all +Depends: + vlc, + vlc-plugin-access-extra, + vlc-plugin-fluidsynth, + vlc-plugin-jack, + vlc-plugin-notify, + vlc-plugin-svg, + vlc-plugin-samba, + vlc-plugin-skins2, + vlc-plugin-video-splitter, + vlc-plugin-visualization, + gdb +Restrictions: allow-stderr diff --git a/tests/vlc b/tests/vlc new file mode 100755 index 00000000..76596436 --- /dev/null +++ b/tests/vlc @@ -0,0 +1,13 @@ +#!/bin/sh +set -e + +DEB_HOST_MULTIARCH=$(dpkg-architecture -q DEB_HOST_MULTIARCH) + +if ! test -f /usr/lib/$DEB_HOST_MULTIARCH/vlc/plugins/plugins.dat +then + cp -R --preserve /usr/lib/$DEB_HOST_MULTIARCH/vlc/plugins $AUTOPKGTEST_TMP + gdb -batch -ex run -ex "bt full" -ex quit --args \ + /usr/lib/$DEB_HOST_MULTIARCH/vlc/vlc-cache-gen $AUTOPKGTEST_TMP/plugins +fi + +vlc -vvv --ignore-config --list --no-color diff --git a/tests/vlc-all b/tests/vlc-all new file mode 100755 index 00000000..d37c4ee2 --- /dev/null +++ b/tests/vlc-all @@ -0,0 +1,4 @@ +#!/bin/sh +set -e + +vlc -vvv --ignore-config --list --no-color diff --git a/tests/vlc-bin b/tests/vlc-bin new file mode 100755 index 00000000..d37c4ee2 --- /dev/null +++ b/tests/vlc-bin @@ -0,0 +1,4 @@ +#!/bin/sh +set -e + +vlc -vvv --ignore-config --list --no-color diff --git a/upstream/metadata b/upstream/metadata new file mode 100644 index 00000000..f561a049 --- /dev/null +++ b/upstream/metadata @@ -0,0 +1,6 @@ +Bug-Database: https://code.videolan.org/videolan/vlc/-/issues +Contact: https://forum.videolan.org/ +FAQ: https://wiki.videolan.org/Frequently_Asked_Questions/ +Repository: https://code.videolan.org/videolan/vlc.git +Repository-Browse: https://code.videolan.org/videolan/vlc/-/tree/3.0.x +Donation: https://www.videolan.org/contribute.html#money diff --git a/upstream/signing-key.asc b/upstream/signing-key.asc new file mode 100644 index 00000000..1091ddf2 --- /dev/null +++ b/upstream/signing-key.asc @@ -0,0 +1,25 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQGiBFD9w2QRBACoEzH9KKirWE4wgiuPPynNnxks+p+t5i1z3CG+1XhagmTHoOf3 +v8i19kKHV6WnVMn2CKJFgwTTLYXOJTrBM/4ABVtu11cHeeueeo+pCSkdoLzYJ5QF +HbByB6j33QUbwKF0frEs+ge4LxzvYyCDAmNAW560QtOAR9Lk1Fo5B1GXzwCg1kDk +RkSe7EOZNm1U2rYAQ2VPrfsEAIHr4ooOyUByPR7XpoDOKoaXEG0hjpgh46lbgse+ +dQx8YrxS9vXQLwYokfWLrs55avx9Ys0iVv2TMv7X4Tn5sTVaK5K+NbKhxhLORxGI +sgKqRn7W5SG5xoO0w/dmQj756ppjITGbxjFuhYE0X5S6NeMhUuFci7sJ42R7F1Ko +6sYuA/wOMUxCk4XOXeQF16ApyyenjE/UWbBNEhBmjEsZkYAFNc89pAEnEFSnIxK8 +fcuCQioM6ojjaW+aEs/q3/klI0nat9LMLhNSCebjriMHwJDU70NeCn4nPWsfItT1 +eKvbHNcX+3bq3D/i2Wa3PZ5YFFF01C61dHmVC9YGh4sAOXO09LQjVmlkZW9MQU4g +UmVsZWFzZSBTaWduaW5nIEtleSAoMjAxMymIaAQTEQIAKAIbAwYLCQgHAwIGFQgC +CQoLBBYCAwECHgECF4AFAlcfgjEFCQgC8jUACgkQcYBxO+WNGtws1wCfdckVSmW/ +7G+0CNufK+4ZKSXW9BoAoLaxPIFa2qpZdmDr5eci5gdXJI1mtCNWaWRlb0xBTiBS +ZWxlYXNlIFNpZ25pbmcgS2V5ICgyMDE0KYhpBBMRAgApAhsDBwsJCAcDAgEGFQgC +CQoLBBYCAwECHgECF4AFAlcfgjEFCQgC8jUACgkQcYBxO+WNGtwkYACgmifLHzLQ +rbevTlGVWnAfn8AyW8MAn1AIh61iO83YycA1fYoP1sOPBCK/tCNWaWRlb0xBTiBS +ZWxlYXNlIFNpZ25pbmcgS2V5ICgyMDE1KYhqBBMRAgAqAhsDBQsJCAcCBhUICQoL +AgQWAgMBAh4BAheAAhkBBQJXH4IjBQkIAvI1AAoJEHGAcTvljRrcSjsAoL/BM6qq +KwWv2DwdqLd+XRpYlrpyAJ0c43AR1uE2UoMhkUu3vsX75fqELbQjVmlkZW9MQU4g +UmVsZWFzZSBTaWduaW5nIEtleSAoMjAxNimIaAQTEQIAKAIbAwYLCQgHAwIGFQgC +CQoLBBYCAwECHgECF4AFAlbGNhQFCQeppiwACgkQcYBxO+WNGtwQ3wCfb8IB8Mdt +ahoyr5OjvOQL6IQFuUcAoMCyREB9Yn5oLU+6OSnarOAHwzvq +=QHfT +-----END PGP PUBLIC KEY BLOCK----- diff --git a/vlc-bin.install b/vlc-bin.install new file mode 100644 index 00000000..10900dac --- /dev/null +++ b/vlc-bin.install @@ -0,0 +1,6 @@ +usr/bin/cvlc +usr/bin/nvlc +usr/bin/rvlc +usr/bin/vlc +usr/bin/vlc-wrapper +usr/share/man diff --git a/vlc-bin.links b/vlc-bin.links new file mode 100644 index 00000000..55edb905 --- /dev/null +++ b/vlc-bin.links @@ -0,0 +1,3 @@ +/usr/share/man/man1/vlc.1.gz /usr/share/man/man1/cvlc.1.gz +/usr/share/man/man1/vlc.1.gz /usr/share/man/man1/nvlc.1.gz +/usr/share/man/man1/vlc.1.gz /usr/share/man/man1/rvlc.1.gz diff --git a/vlc-data.install b/vlc-data.install new file mode 100644 index 00000000..7fb0c491 --- /dev/null +++ b/vlc-data.install @@ -0,0 +1,6 @@ +usr/share/doc/vlc/fortunes.* +usr/share/doc/vlc/lua +usr/share/icons +usr/share/vlc/lua +usr/share/vlc/utils +usr/share/vlc/vlc.ico diff --git a/vlc-l10n.install b/vlc-l10n.install new file mode 100644 index 00000000..36354806 --- /dev/null +++ b/vlc-l10n.install @@ -0,0 +1 @@ +usr/share/locale diff --git a/vlc-plugin-access-extra.install b/vlc-plugin-access-extra.install new file mode 100644 index 00000000..a12655e2 --- /dev/null +++ b/vlc-plugin-access-extra.install @@ -0,0 +1,4 @@ +usr/lib/*/vlc/plugins/access/libvnc_plugin.so +usr/lib/*/vlc/plugins/access/libxcb_screen_plugin.so +usr/lib/*/vlc/plugins/access/libaccess_srt_plugin.so +usr/lib/*/vlc/plugins/access_output/libaccess_output_srt_plugin.so diff --git a/vlc-plugin-base.install b/vlc-plugin-base.install new file mode 100755 index 00000000..1c047df7 --- /dev/null +++ b/vlc-plugin-base.install @@ -0,0 +1,235 @@ +#!/bin/bash +exec python3 $(dirname $0)/filter-plugin.py <