Import vlc_3.0.21-6.debian.tar.xz
authorSebastian Ramacher <sramacher@debian.org>
Tue, 14 Jan 2025 22:09:47 +0000 (23:09 +0100)
committerSebastian Ramacher <sramacher@debian.org>
Tue, 14 Jan 2025 22:09:47 +0000 (23:09 +0100)
[dgit import tarball vlc 3.0.21-6 vlc_3.0.21-6.debian.tar.xz]

178 files changed:
bug-control [new file with mode: 0644]
bug-presubj [new file with mode: 0644]
changelog [new file with mode: 0644]
clean [new file with mode: 0644]
control [new file with mode: 0644]
copyright [new file with mode: 0644]
filter-plugin.py [new file with mode: 0644]
gbp.conf [new file with mode: 0644]
libvlc-bin.install [new file with mode: 0644]
libvlc-bin.lintian-overrides [new file with mode: 0644]
libvlc-bin.postinst.in [new file with mode: 0644]
libvlc-bin.prerm.in [new file with mode: 0644]
libvlc-dev.examples [new file with mode: 0644]
libvlc-dev.install [new file with mode: 0644]
libvlc5.install [new file with mode: 0644]
libvlc5.symbols [new file with mode: 0644]
libvlccore-dev.install [new file with mode: 0644]
libvlccore9.install [new file with mode: 0644]
libvlccore9.symbols [new file with mode: 0644]
patches/0001-configure-fix-linking-on-RISC-V-ISA.patch [new file with mode: 0644]
patches/0002-Do-not-generate-cache-during-build.patch [new file with mode: 0644]
patches/0003-Bump-module-ABI-for-time_t-transition.patch [new file with mode: 0644]
patches/0004-demux-image-detect-ICC-profile-before-JFIF-data.patch [new file with mode: 0644]
patches/0005-demux-avi-do-not-set-up-invalid-bitsperpixel.patch [new file with mode: 0644]
patches/0006-opus_header-fix-channel-mapping-family-1-parsing.patch [new file with mode: 0644]
patches/0007-vlc_common-remove-warnings-on-VLC_OBJECT.patch [new file with mode: 0644]
patches/0008-transcode-fix-destructive-assignment-after-drain.patch [new file with mode: 0644]
patches/0009-transcode-fix-picture-fifo-leak.patch [new file with mode: 0644]
patches/0010-sftp-fix-seek-for-large-files-on-32-bit-OS.patch [new file with mode: 0644]
patches/0011-qt-hardcode-the-name-of-the-shortcut-for-the-AMD-VQ-.patch [new file with mode: 0644]
patches/0012-packetizer-h264-fix-reading-prediction-weight-tables.patch [new file with mode: 0644]
patches/0013-demux-adaptive-fix-start-with-indexes-only.patch [new file with mode: 0644]
patches/0014-UPnP-remove-SAT-IP-channel-list-fallback.patch [new file with mode: 0644]
patches/0015-spectrogram-fix-FFT-result-scaling-factor.patch [new file with mode: 0644]
patches/0016-spectrogram-convert-int16-to-unsigned-for-correct-ra.patch [new file with mode: 0644]
patches/0017-spectrogram-allows-better-visualization-of-low-frequ.patch [new file with mode: 0644]
patches/0018-magnify-check-the-image-conversion-worked.patch [new file with mode: 0644]
patches/0019-opencv-check-the-image-conversion-worked.patch [new file with mode: 0644]
patches/0020-packetizer-hxxx_common-rename-function-pointer.patch [new file with mode: 0644]
patches/0021-packetizer-hxxx-pass-opaque-to-callbacks-instead-of-.patch [new file with mode: 0644]
patches/0022-packetizer-hxxx-add-missing-drain-for-non-annexb-con.patch [new file with mode: 0644]
patches/0023-demux-asf-add-missing-subpayloads-drain-on-EOF.patch [new file with mode: 0644]
patches/0024-demux-AVI-insert-packetizer-for-XVID-MPEG-4-video.patch [new file with mode: 0644]
patches/0025-codec-videotoolbox-remove-sw-decoder-fallback-for-mp.patch [new file with mode: 0644]
patches/0026-Use-vlc_fourcc_GetCodec-to-map-XVID-to-MP4V.patch [new file with mode: 0644]
patches/0027-dav1d-treat-RGB-formats-separately.patch [new file with mode: 0644]
patches/0028-dav1d-add-dav1d-all-layers-flag.patch [new file with mode: 0644]
patches/0029-dts_header-initialize-SUBSTREAM_LBR-size-to-0.patch [new file with mode: 0644]
patches/0030-packetizer-dts-check-for-frame_size-for-the-first-sy.patch [new file with mode: 0644]
patches/0031-aom-make-BGR-matching-stricter.patch [new file with mode: 0644]
patches/0032-taglib-.m4v-are-already-registered-as-MP4-files.patch [new file with mode: 0644]
patches/0033-modules-taglib-simplify-reading-embedded-art.patch [new file with mode: 0644]
patches/0034-taglib-IOStream-Return-the-url-as-fileName.patch [new file with mode: 0644]
patches/0035-taglib-Always-use-IOStream-to-read-the-media.patch [new file with mode: 0644]
patches/0036-taglib-Enable-prefetch-cache-on-the-IOStream.patch [new file with mode: 0644]
patches/0037-taglib-fix-Wdeprecated-copy-warnings.patch [new file with mode: 0644]
patches/0038-meta_engine-taglib-increment-VlcIostream-readpos.patch [new file with mode: 0644]
patches/0039-meta_engine-taglib-reject-read-on-failed-seek.patch [new file with mode: 0644]
patches/0040-meta_engine-taglib-add-sequential-read-limit-on-VlcI.patch [new file with mode: 0644]
patches/0041-meta_engine-taglib-restrict-unlimited-reads-on-strea.patch [new file with mode: 0644]
patches/0042-meta-taglib-reject-non-expected-schemes.patch [new file with mode: 0644]
patches/0043-taglib-fix-variable-shadowing.patch [new file with mode: 0644]
patches/0044-taglib-Don-t-convert-base64-strings-to-UTF8.patch [new file with mode: 0644]
patches/0045-taglib-ByteVector-null-is-now-deprecated.patch [new file with mode: 0644]
patches/0046-taglib-Remove-usages-of-deprecated-itemListMap.patch [new file with mode: 0644]
patches/0047-taglib-Remove-use-of-deprecated-String-isNull.patch [new file with mode: 0644]
patches/0048-taglib-Remove-explicit-invocation-of-default-constru.patch [new file with mode: 0644]
patches/0049-taglib-Implement-new-StreamTypeResolver-interface-wh.patch [new file with mode: 0644]
patches/0050-taglib-Use-nullptr-instead-of-0-for-pointers.patch [new file with mode: 0644]
patches/0051-taglib-Fix-invalid-version-check.patch [new file with mode: 0644]
patches/0052-meta-taglib-use-std-min.patch [new file with mode: 0644]
patches/0053-taglib-don-t-cast-the-file-st_size-to-a-possibly-sma.patch [new file with mode: 0644]
patches/0054-taglib-remove-VLC-path-define-check.patch [new file with mode: 0644]
patches/0055-Taglib-Use-ID3v2Tag-instead-of-tag-for-RIFF-WAV-File.patch [new file with mode: 0644]
patches/0056-lua-don-t-use-operator-on-VLC-errors.patch [new file with mode: 0644]
patches/0057-demux-mkv-fix-link-to-ALAC-documentation.patch [new file with mode: 0644]
patches/0058-demux-mkv-write-the-actual-extra-data-size-in-the-AL.patch [new file with mode: 0644]
patches/0059-demux-mkv-handle-mkv-use-chapter-codec-option.patch [new file with mode: 0644]
patches/0060-hw-amf-keep-the-AMF-version-in-the-context.patch [new file with mode: 0644]
patches/0061-archive-Add-support-for-RAR-5.0-format.patch [new file with mode: 0644]
patches/0062-archive-fix-the-type-used-for-libarchive_skip_cb.patch [new file with mode: 0644]
patches/0063-stream_extractor-set-correct-offset-on-read-failure.patch [new file with mode: 0644]
patches/0064-hw-amf-let-the-AMF-system-know-what-version-was-used.patch [new file with mode: 0644]
patches/0065-avcodec-avoid-signedness-mismatch-warning.patch [new file with mode: 0644]
patches/0066-avcodec-use-p_dec-fmt_out-instead-of-context-channel.patch [new file with mode: 0644]
patches/0067-avcodec-audio-decoder-to-use-ch_layout.patch [new file with mode: 0644]
patches/0068-avcodec-use-p_enc-audio-channels-instead-of-context-.patch [new file with mode: 0644]
patches/0069-codec-avcodec-map-AYUV-as-RAWVIDEO-with-ffmpeg-6.0.patch [new file with mode: 0644]
patches/0070-avcodec-encoder-fix-channel_layout-conditionals.patch [new file with mode: 0644]
patches/0071-codec-avcodec-fix-audio-channel_layout-conditionals.patch [new file with mode: 0644]
patches/0072-demux-mux-avformat-use-ch_layout-from-ffmpeg-5.1.patch [new file with mode: 0644]
patches/0073-avcodec-add-handling-of-new-ch_layout-in-audio-encod.patch [new file with mode: 0644]
patches/0074-avcodec-use-ch_layout-for-channel-layout-in-audio-en.patch [new file with mode: 0644]
patches/0075-codec-avcodec-bypass-removed-define-for-Intel-workar.patch [new file with mode: 0644]
patches/0076-codec-x265-handle-X265_MAX_FRAME_THREADS-on-newer-CP.patch [new file with mode: 0644]
patches/0077-codec-x265-handle-4.0-encoding-API-change.patch [new file with mode: 0644]
patches/0078-mux-avformat-fix-avio-callbacks-signature-with-ffmpe.patch [new file with mode: 0644]
patches/0079-fetcher-don-t-download-network-metadata-if-the-user-.patch [new file with mode: 0644]
patches/0080-hds-fix-crash-if-bootstrap-data-or-URL-are-missing.patch [new file with mode: 0644]
patches/0081-qt-add-option-to-use-dark-palette.patch [new file with mode: 0644]
patches/0082-avcommon-rename-LIBAVUTIL_VERSION_CHECK-to-LIBAV_UTI.patch [new file with mode: 0644]
patches/0083-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch [new file with mode: 0644]
patches/0084-avcommon-rename-LIBAVFORMAT_VERSION_CHECK-to-LIBAV_F.patch [new file with mode: 0644]
patches/0085-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch [new file with mode: 0644]
patches/0086-avcommon-rename-LIBAVCODEC_VERSION_CHECK-to-LIBAV_CO.patch [new file with mode: 0644]
patches/0087-avcommon-use-a-specific-macro-to-check-the-FFmpeg-li.patch [new file with mode: 0644]
patches/0088-codec-avcodec-check-open-codec-return-value.patch [new file with mode: 0644]
patches/0089-avcodec-use-ARRAY_SIZE-instead-of-custom-code.patch [new file with mode: 0644]
patches/0090-avcodec-audio-make-channel-mapping-array-0-terminate.patch [new file with mode: 0644]
patches/0091-codec-avcodec-fix-ch_layout-requirement.patch [new file with mode: 0644]
patches/0092-ffmpeg-fix-libavutil-version-check-for-av_channel_la.patch [new file with mode: 0644]
patches/0093-ffmpeg-fix-libavcodec-version-check-for-AVCodecParam.patch [new file with mode: 0644]
patches/0094-avcodec-fix-libavcodec-version-check-for-AVCodecCont.patch [new file with mode: 0644]
patches/0095-ffmpeg-fix-libavutil-version-check-for-AVFrame.ch_la.patch [new file with mode: 0644]
patches/0096-avcodec-add-a-define-to-test-for-AVCodecContext.ch_l.patch [new file with mode: 0644]
patches/0097-configure-use-host_cpu-where-applicable.patch [new file with mode: 0644]
patches/0098-demux-mkv-use-the-internal-USF-FourCC-value.patch [new file with mode: 0644]
patches/0099-demux-mkv-use-the-internal-QDMC-FourCC-value.patch [new file with mode: 0644]
patches/0100-demux-mkv-add-missing-helpers-from-libebml-2.0.patch [new file with mode: 0644]
patches/0101-demux-mkv-read-data-from-KaxBlockAdditions-as-const.patch [new file with mode: 0644]
patches/0102-demux-mkv-don-t-expose-local-BlockDecode-function.patch [new file with mode: 0644]
patches/0103-demux-mkv-fix-potential-leak-of-KaxBlockAdditions-wh.patch [new file with mode: 0644]
patches/0104-qt-PodcastConfiguration-inherits-QDialog-not-QWidget.patch [new file with mode: 0644]
patches/0105-musicbrainz-fix-leak.patch [new file with mode: 0644]
patches/0106-es_out_timeshift-explicitely-use-GetTempPathW.patch [new file with mode: 0644]
patches/0107-demux-mkv-don-t-use-EbmlDummy-elements-coming-out-of.patch [new file with mode: 0644]
patches/0108-packetizer-av1-fill-the-full-extradata-if-it-doesn-t.patch [new file with mode: 0644]
patches/0109-demux-mkv-force-the-packetizer-to-fill-AV1-extradata.patch [new file with mode: 0644]
patches/0110-demux-mp4-force-the-packetizer-to-fill-AV1-extradata.patch [new file with mode: 0644]
patches/0111-mediacodec-set-color-keys-in-media-format-explicitly.patch [new file with mode: 0644]
patches/0112-access-v4l2-add-support-for-V4L2_PIX_FMT_ABGR32-and-.patch [new file with mode: 0644]
patches/0113-interop_vaapi-fix-mem-leak-while-pause.patch [new file with mode: 0644]
patches/0114-qt-remove-unused-meta_to_mlmeta.patch [new file with mode: 0644]
patches/0115-qt-fix-IN_ITEM_ROLE-documentation.patch [new file with mode: 0644]
patches/0116-qt-remove-deprecated-QPainter-HighQualityAntialiasin.patch [new file with mode: 0644]
patches/0117-qt-fix-bitfield-added-values-set-in-QVariant.patch [new file with mode: 0644]
patches/0118-qt-fix-UTF-8-string-usage.patch [new file with mode: 0644]
patches/0119-qt-add-missing-QActionGroup-include.patch [new file with mode: 0644]
patches/0120-qt-use-QLayout-setContentsMargins-instead-of-QLayout.patch [new file with mode: 0644]
patches/0121-qt-use-QString-setNum-rather-than-QString-sprintf.patch [new file with mode: 0644]
patches/0122-qt-use-QString-arg-rather-than-QString-sprintf.patch [new file with mode: 0644]
patches/0123-qt-use-std-sort-instead-of-deprecated-qSort.patch [new file with mode: 0644]
patches/0124-avcodec-vaapi-Support-VAAPI-with-latest-FFmpeg.patch [new file with mode: 0644]
patches/series [new file with mode: 0644]
rules [new file with mode: 0755]
source/format [new file with mode: 0644]
source/lintian-overrides [new file with mode: 0644]
source_vlc.py [new file with mode: 0644]
tests/control [new file with mode: 0644]
tests/vlc [new file with mode: 0755]
tests/vlc-all [new file with mode: 0755]
tests/vlc-bin [new file with mode: 0755]
upstream/metadata [new file with mode: 0644]
upstream/signing-key.asc [new file with mode: 0644]
vlc-bin.install [new file with mode: 0644]
vlc-bin.links [new file with mode: 0644]
vlc-data.install [new file with mode: 0644]
vlc-l10n.install [new file with mode: 0644]
vlc-plugin-access-extra.install [new file with mode: 0644]
vlc-plugin-base.install [new file with mode: 0755]
vlc-plugin-fluidsynth.install [new file with mode: 0644]
vlc-plugin-jack.install [new file with mode: 0644]
vlc-plugin-notify.install [new file with mode: 0644]
vlc-plugin-qt.install [new file with mode: 0644]
vlc-plugin-qt.links [new file with mode: 0644]
vlc-plugin-qt.lintian-overrides [new file with mode: 0644]
vlc-plugin-samba.install [new file with mode: 0644]
vlc-plugin-skins2.install [new file with mode: 0644]
vlc-plugin-skins2.links [new file with mode: 0644]
vlc-plugin-svg.install [new file with mode: 0644]
vlc-plugin-video-output.install [new file with mode: 0755]
vlc-plugin-video-splitter.install [new file with mode: 0644]
vlc-plugin-visualization.install [new file with mode: 0644]
vlc.docs [new file with mode: 0644]
vlc.install [new file with mode: 0644]
vlc.lintian-overrides [new file with mode: 0644]
vlc.mime [new file with mode: 0644]
watch [new file with mode: 0644]

diff --git a/bug-control b/bug-control
new file mode 100644 (file)
index 0000000..e3a0409
--- /dev/null
@@ -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 (file)
index 0000000..c985627
--- /dev/null
@@ -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 <your usual options>") 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 (file)
index 0000000..8ddab57
--- /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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <byang@debian.org>  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 <byang@debian.org>  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 <byang@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Wed, 28 Feb 2024 23:55:54 +0100
+
+vlc (3.0.20-1) unstable; urgency=medium
+
+  * New upstream version 3.0.20.
+
+ -- Mateusz Łukasik <mati75@linuxmint.pl>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Sun, 04 Dec 2022 22:11:55 +0100
+
+vlc (3.0.18-1) unstable; urgency=medium
+
+  * New upstream version 3.0.18
+
+ -- Mateusz Łukasik <mati75@linuxmint.pl>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Sat, 12 Mar 2022 20:40:54 +0100
+
+vlc (3.0.16-1) unstable; urgency=medium
+
+  * Upload to unstable
+  * New upstream release
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Tue, 22 Sep 2020 23:11:26 +0200
+
+vlc (3.0.11.1-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  Mon, 20 Jul 2020 22:45:52 +0200
+
+vlc (3.0.11-3) unstable; urgency=medium
+
+  * debian/patches: Disable cache generation
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Thu, 11 Jun 2020 23:36:54 +0200
+
+vlc (3.0.10-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Mon, 15 Jul 2019 19:55:05 +0200
+
+vlc (3.0.7.1-1) unstable; urgency=medium
+
+  * New upstream release.
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  Fri, 07 Jun 2019 01:08:14 +0200
+
+vlc (3.0.6-1) unstable; urgency=medium
+
+  * New upstream release.
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Thu, 11 Oct 2018 18:53:22 +0200
+
+vlc (3.0.4-2) unstable; urgency=medium
+
+  * debian/: Build AOM plugin.
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Sat, 30 Jun 2018 10:01:23 +0200
+
+vlc (3.0.3-1) unstable; urgency=medium
+
+  * New upstream release.
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Fri, 09 Feb 2018 16:40:34 +0100
+
+vlc (3.0.0~rc8-1) unstable; urgency=medium
+
+  * New upstream release candidate.
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  Thu, 25 Jan 2018 00:15:17 +0100
+
+vlc (3.0.0~rc7-1) unstable; urgency=medium
+
+  * New upstream release candidate.
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Thu, 07 Dec 2017 00:23:24 +0100
+
+vlc (2.2.6-6) unstable; urgency=medium
+
+  * Update to ffmpeg 2.8.13.
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Wed, 11 Jan 2017 19:50:54 +0100
+
+vlc (2.2.4-12) unstable; urgency=medium
+
+  * Update to ffmpeg 2.8.10.
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  Fri, 23 Sep 2016 21:08:42 +0200
+
+vlc (2.2.4-5) unstable; urgency=medium
+
+  * Update ffmpeg to 2.8.8.
+
+ -- Sebastian Ramacher <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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/<pkg> 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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <bdrung@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <sramacher@debian.org>  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 <siretart@tauware.de>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <sramacher@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <edward.c.wang@compdigitec.com>  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 <bdrung@debian.org>  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 <sramacher@debian.org>  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 <bdrung@debian.org>  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 <siretart@tauware.de>  Wed, 19 Jun 2013 07:38:18 +0200
+
+vlc (2.0.7-1) unstable; urgency=low
+
+  * New upstream release.
+  * Update watch file.
+
+ -- Benjamin Drung <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <taffit@debian.org> (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 <bdrung@debian.org>  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 <ansgar@debian.org> (Closes: #683836)
+  * Add version to vlc-nox dependency of vlc-plugin-sdl (consistent with other
+    plug-ins).
+
+ -- Benjamin Drung <bdrung@debian.org>  Sat, 18 Aug 2012 17:45:01 +0200
+
+vlc (2.0.3-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Benjamin Drung <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <odyx@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <siretart@tauware.de>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@debian.org>  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 <bdrung@ubuntu.com>  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 <bdrung@ubuntu.com>  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 <bdrung@ubuntu.com>  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 <bdrung@ubuntu.com>  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 <bdrung@ubuntu.com>  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 <siretart@tauware.de>  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 <bdrung@ubuntu.com>  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 <xtophe@videolan.org>  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 <siretart@tauware.de>  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 <siretart@tauware.de>  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 <xtophe@videolan.org>  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 <benedekl@gmail.com> 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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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) <sam+deb@zoy.org>  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 <lool@dooz.org>  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 <xtophe@videolan.org>  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 <nion@debian.org>  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 <xtophe@videolan.org>  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 <lool@dooz.org>  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 <xtophe@videolan.org>  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 <xtophe@videolan.org>  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 <glandium@debian.org>  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 <nion@debian.org>  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 <xtophe@videolan.org>  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 <nion@debian.org>  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 <xtophe@videolan.org>  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 <lool@dooz.org>  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 <lool@dooz.org>  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 <nion@debian.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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 <aba@not.so.argh.org>  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 <aba@not.so.argh.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  Sun, 22 Jan 2006 12:08:42 +0100
+
+vlc (0.8.4.debian-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  Sat, 29 May 2004 00:06:48 -0300
+
+vlc (0.7.2-test2-1) unstable; urgency=low
+
+  * New upstream snapshot.
+
+ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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) <sam+deb@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  Thu,  4 Jul 2002 17:44:25 +0200
+
+vlc (0.4.1-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Samuel Hocevar <sam@zoy.org>  Mon,  3 Jun 2002 23:43:35 +0200
+
+vlc (0.4.0-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Samuel Hocevar <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  Wed, 19 Dec 2001 17:06:44 +0100
+
+vlc (0.2.91-2) unstable; urgency=low
+
+  * Added "Video" menu hints (Closes: #121036).
+
+ -- Samuel Hocevar <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  Tue,  7 Aug 2001 12:39:16 +0200
+
+vlc (0.2.81-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Samuel Hocevar <sam@zoy.org>  Sat, 28 Jul 2001 04:13:57 +0200
+
+vlc (0.2.80-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Samuel Hocevar <sam@zoy.org>  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 <sam@zoy.org>  Fri,  4 May 2001 07:13:04 +0200
+
+vlc (0.2.73-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Samuel Hocevar <sam@zoy.org>  Sat, 28 Apr 2001 07:02:35 +0200
+
+vlc (0.2.72-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Samuel Hocevar <sam@zoy.org>  Mon, 16 Apr 2001 14:33:53 +0200
+
+vlc (0.2.71-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Samuel Hocevar <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  Mon,  5 Mar 2001 12:50:28 +0100
+
+vlc (0.2.63-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Samuel Hocevar <sam@zoy.org>  Mon,  5 Mar 2001 00:41:16 +0100
+
+vlc (0.2.62-2) unstable; urgency=low
+
+  * Removed a few lintian warnings.
+
+ -- Samuel Hocevar <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  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 <sam@zoy.org>  Mon,  5 Feb 2001 20:49:15 +0100
+
+vlc (0.2.50-1) unstable; urgency=low
+
+  * Unstable release.
+
+ -- Samuel Hocevar <sam@zoy.org>  Wed, 31 Jan 2001 04:30:37 +0100
+
+vlc (0.1.99i) unstable; urgency=low
+
+  * Fixed the framerate display
+
+ -- Samuel Hocevar <sam@zoy.org>  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 <sam@via.ecp.fr>  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 <sam@via.ecp.fr>  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 <sam@via.ecp.fr>  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 <sam@via.ecp.fr>  Tue,  8 Aug 2000 11:24:01 +0200
+
+vlc (0.1.99e) unstable; urgency=low
+
+  * new bitstream syntax and slight performance increase
+
+ -- Samuel Hocevar <sam@via.ecp.fr>  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 <sam@via.ecp.fr>  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 <sam@via.ecp.fr>  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 <sam@via.ecp.fr>  Sat, 17 Jun 2000 03:46:16 +0200
+
+vlc (0.1.99a) unstable; urgency=low
+
+  * Fixed some compile flag errors
+
+ -- Samuel Hocevar <sam@via.ecp.fr>  Thu, 15 Jun 2000 20:48:54 +0200
+
+vlc (0.1.99-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Samuel Hocevar <sam@via.ecp.fr>  Mon, 13 Mar 2000 02:21:45 +0100
diff --git a/clean b/clean
new file mode 100644 (file)
index 0000000..3f6a7c6
--- /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 (file)
index 0000000..2f947d2
--- /dev/null
+++ b/control
@@ -0,0 +1,487 @@
+Source: vlc
+Section: video
+Priority: optional
+Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org>
+Uploaders:
+ Loic Minier <lool@dooz.org>,
+ Christophe Mutricy <xtophe@videolan.org>,
+ Mohammed Adnène Trojette <adn+deb@diwi.org>,
+ Reinhard Tartler <siretart@tauware.de>,
+ Benjamin Drung <bdrung@debian.org>,
+ Edward Wang <edward.c.wang@compdigitec.com>,
+ Mateusz Łukasik <mati75@linuxmint.pl>,
+ Sebastian Ramacher <sramacher@debian.org>
+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 (file)
index 0000000..ae9b161
--- /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 <ariya@kde.org>
+           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 <ap@nypop.com>
+           2004-2010, Apple Inc
+           2008, Eric Seidel <eric@webkit.org>
+           2012, Intel Corporation
+           2002-2003, Lars Knoll <knoll@kde.org>
+           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 <guidod@gmx.de>
+           2011, Maarten Bosmans <mkbosmans@gmail.com>
+License: GPL-3+ with AutoConf exception
+
+Files: m4/ax_require_defined.m4
+       m4/dolt.m4
+       m4/stdcxx_11.m4
+Copyright: 2014, Alexey Sokolov <sokolov@google.com>
+           2008, Benjamin Kosnik <bkoz@redhat.com>
+           2014-2015, Google Inc
+           2007-2010, Josh Triplett <josh@joshtriplett.org>
+           2014, Mike Frysinger <vapier@gentoo.org>
+           2013, Roy Stogner <roystgnr@ices.utexas.edu>
+           2015-2016, VLC authors and VideoLAN
+           2012, Zack Weinberg <zackw@panix.com>
+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 <Todd.Miller@courtesan.com>
+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 <http://www.gnu.org/licenses/>.
+ .
+ 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 <http://www.gnu.org/licenses/>.
+ .
+ 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 (file)
index 0000000..84a007c
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/python3
+
+# Inverse dh-exec-filter-profiles
+# Author: Sebastian Ramacher <sramacher@debian.org>
+
+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 (file)
index 0000000..73ff49d
--- /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 (file)
index 0000000..a296739
--- /dev/null
@@ -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 (file)
index 0000000..7d05e12
--- /dev/null
@@ -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 (file)
index 0000000..59da086
--- /dev/null
@@ -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 (file)
index 0000000..28ac6dc
--- /dev/null
@@ -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 (file)
index 0000000..9bdd87c
--- /dev/null
@@ -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 (file)
index 0000000..ffaa00c
--- /dev/null
@@ -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 (file)
index 0000000..2137b90
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/*/libvlc.so.*
diff --git a/libvlc5.symbols b/libvlc5.symbols
new file mode 100644 (file)
index 0000000..2a84ca6
--- /dev/null
@@ -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 (file)
index 0000000..b90fe24
--- /dev/null
@@ -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 (file)
index 0000000..8066c95
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/*/libvlccore.so.*
diff --git a/libvlccore9.symbols b/libvlccore9.symbols
new file mode 100644 (file)
index 0000000..48a118d
--- /dev/null
@@ -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 (file)
index 0000000..d48636c
--- /dev/null
@@ -0,0 +1,20 @@
+From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= <remi@remlab.net>
+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 (file)
index 0000000..3c32978
--- /dev/null
@@ -0,0 +1,72 @@
+From: Sebastian Ramacher <sramacher@debian.org>
+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 (file)
index 0000000..0a06d87
--- /dev/null
@@ -0,0 +1,23 @@
+From: Sebastian Ramacher <sramacher@debian.org>
+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 (file)
index 0000000..d9de9fb
--- /dev/null
@@ -0,0 +1,42 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 <robux4@ycbcr.xyz>
+---
+ 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 (file)
index 0000000..dfdf5d7
--- /dev/null
@@ -0,0 +1,25 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..c276c6c
--- /dev/null
@@ -0,0 +1,24 @@
+From: Tristan Matthews <tmatth@videolan.org>
+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 (file)
index 0000000..33ccb0c
--- /dev/null
@@ -0,0 +1,33 @@
+From: Alexandre Janniaux <ajanni@videolabs.io>
+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 (file)
index 0000000..3ad33c5
--- /dev/null
@@ -0,0 +1,42 @@
+From: Alaric Senat <alaric@videolabs.io>
+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 (file)
index 0000000..99d9c11
--- /dev/null
@@ -0,0 +1,42 @@
+From: Alaric Senat <alaric@videolabs.io>
+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 (file)
index 0000000..05bfa8b
--- /dev/null
@@ -0,0 +1,22 @@
+From: Aleksey Vasenev <margtu-fivt@ya.ru>
+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 (file)
index 0000000..aacb32a
--- /dev/null
@@ -0,0 +1,34 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..d078213
--- /dev/null
@@ -0,0 +1,52 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..f661cd4
--- /dev/null
@@ -0,0 +1,59 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..d78d3e0
--- /dev/null
@@ -0,0 +1,194 @@
+From: =?utf-8?q?Felix_Paul_K=C3=BChne?= <fkuehne@videolan.org>
+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 (file)
index 0000000..c75d759
--- /dev/null
@@ -0,0 +1,85 @@
+From: Maxime Even <maximeeven@proton.me>
+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 <bagheldisha708@gmail.com>
+
+(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 (file)
index 0000000..2e0b9db
--- /dev/null
@@ -0,0 +1,51 @@
+From: Maxime Even <maximeeven@proton.me>
+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 (file)
index 0000000..d5f0732
--- /dev/null
@@ -0,0 +1,67 @@
+From: Maxime Even <maximeeven@proton.me>
+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 (file)
index 0000000..0a53a82
--- /dev/null
@@ -0,0 +1,44 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 <robux4@ycbcr.xyz>
+---
+ 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 (file)
index 0000000..aaa563e
--- /dev/null
@@ -0,0 +1,38 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 <robux4@ycbcr.xyz>
+---
+ 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 (file)
index 0000000..20821b9
--- /dev/null
@@ -0,0 +1,39 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..b0c096d
--- /dev/null
@@ -0,0 +1,116 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..0f37185
--- /dev/null
@@ -0,0 +1,78 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..7138d49
--- /dev/null
@@ -0,0 +1,31 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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; i<MAX_ASF_TRACKS; i++ )
++                {
++                    asf_track_t *tk = p_sys->track[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 (file)
index 0000000..6e99e38
--- /dev/null
@@ -0,0 +1,26 @@
+From: Mangal Kushwah <mangalk2324@gmail.com>
+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 (file)
index 0000000..86c76f2
--- /dev/null
@@ -0,0 +1,29 @@
+From: Mangal Kushwah <mangalk2324@gmail.com>
+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 (file)
index 0000000..a543b7a
--- /dev/null
@@ -0,0 +1,21 @@
+From: Mangal Kushwah <mangalk2324@gmail.com>
+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 (file)
index 0000000..e52b83e
--- /dev/null
@@ -0,0 +1,95 @@
+From: Tristan Matthews <tmatth@videolan.org>
+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 (file)
index 0000000..93539e4
--- /dev/null
@@ -0,0 +1,45 @@
+From: Tristan Matthews <tmatth@videolan.org>
+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 (file)
index 0000000..8b87099
--- /dev/null
@@ -0,0 +1,26 @@
+From: Thomas Guillem <thomas@gllm.fr>
+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 <thomas@gllm.fr>
+---
+ 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 (file)
index 0000000..e00102b
--- /dev/null
@@ -0,0 +1,26 @@
+From: Thomas Guillem <thomas@gllm.fr>
+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 <thomas@gllm.fr>
+---
+ 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 (file)
index 0000000..3460afb
--- /dev/null
@@ -0,0 +1,78 @@
+From: Tristan Matthews <tmatth@videolan.org>
+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 (file)
index 0000000..0054f0d
--- /dev/null
@@ -0,0 +1,30 @@
+From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
+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<T>::createFile(FileName fileName, bool, AudioProper
+ #if TAGLIB_VERSION >= TAGLIB_VERSION_1_11
+ static VLCTagLib::ExtResolver<MPEG::File> aacresolver(".aac");
+ #endif
+-static VLCTagLib::ExtResolver<MP4::File> 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 (file)
index 0000000..67f6beb
--- /dev/null
@@ -0,0 +1,248 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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<const ID3v2::AttachedPictureFrame*>(*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<const ID3v2::AttachedPictureFrame*>(*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<ID3v2::AttachedPictureFrame*>(*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 (file)
index 0000000..5aa1730
--- /dev/null
@@ -0,0 +1,27 @@
+From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
+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 (file)
index 0000000..8b98183
--- /dev/null
@@ -0,0 +1,87 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..bcbc85c
--- /dev/null
@@ -0,0 +1,26 @@
+From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
+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 (file)
index 0000000..8d4a279
--- /dev/null
@@ -0,0 +1,125 @@
+From: Alexandre Janniaux <ajanni@videolabs.io>
+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 <jb@videolan.org>
+(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 (file)
index 0000000..28e2e17
--- /dev/null
@@ -0,0 +1,21 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..202e808
--- /dev/null
@@ -0,0 +1,72 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..59e155a
--- /dev/null
@@ -0,0 +1,78 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 <algorithm>
++#include <limits>
+ 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<long>::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 (file)
index 0000000..dac57ef
--- /dev/null
@@ -0,0 +1,34 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..b19796d
--- /dev/null
@@ -0,0 +1,54 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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<ARRAY_SIZE(compatibleschemes); i++ )
++        if( !strncasecmp( psz_uri, compatibleschemes[i], i_len ) )
++            return true;
++    return false;
++}
++
+ /**
+  * Get the tags from the file using TagLib
+  * @param p_this: the demux object
+@@ -928,6 +945,12 @@ static int ReadMeta( vlc_object_t* p_this)
+     if( unlikely(psz_uri == NULL) )
+         return VLC_ENOMEM;
++    if( !isSchemeCompatible( psz_uri ) )
++    {
++        free( psz_uri );
++        return VLC_EGENERIC;
++    }
++
+     if( !b_extensions_registered )
+     {
+ #if TAGLIB_VERSION >= 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 (file)
index 0000000..2224dc0
--- /dev/null
@@ -0,0 +1,35 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..6c7cc4f
--- /dev/null
@@ -0,0 +1,35 @@
+From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
+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 (file)
index 0000000..f364c02
--- /dev/null
@@ -0,0 +1,27 @@
+From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
+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 (file)
index 0000000..2e8ee3a
--- /dev/null
@@ -0,0 +1,48 @@
+From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
+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 (file)
index 0000000..16d3ef6
--- /dev/null
@@ -0,0 +1,24 @@
+From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
+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 (file)
index 0000000..8baf5de
--- /dev/null
@@ -0,0 +1,24 @@
+From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
+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 <class T>
+-VLCTagLib::ExtResolver<T>::ExtResolver(const std::string & ext) : FileTypeResolver()
++VLCTagLib::ExtResolver<T>::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 (file)
index 0000000..671656f
--- /dev/null
@@ -0,0 +1,69 @@
+From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
+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 <algorithm>
+ #include <limits>
++#if defined(VLC_PATCHED_TAGLIB_IOSTREAM_RESOLVERS) || \
++    TAGLIB_VERSION >= VERSION_INT(1, 12, 0)
++#define USE_IOSTREAM_RESOLVER 1
++#endif
++
+ namespace VLCTagLib
+ {
+     template <class T>
++#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<T>::createFile(FileName fileName, bool, AudioProper
+     return 0;
+ }
++#ifdef USE_IOSTREAM_RESOLVER
++template<class T>
++File* VLCTagLib::ExtResolver<T>::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<MPEG::File> 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 (file)
index 0000000..8724bfc
--- /dev/null
@@ -0,0 +1,22 @@
+From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
+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<T>::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 (file)
index 0000000..e0d2a44
--- /dev/null
@@ -0,0 +1,22 @@
+From: =?utf-8?q?Hugo_Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
+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 <limits>
+ #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 (file)
index 0000000..24ac8f6
--- /dev/null
@@ -0,0 +1,22 @@
+From: Marvin Scholz <epirat07@gmail.com>
+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<unsigned>( 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 (file)
index 0000000..9fa217a
--- /dev/null
@@ -0,0 +1,24 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..c3dfeb9
--- /dev/null
@@ -0,0 +1,25 @@
+From: Johannes Kauffmann <johanneskauffmann@hotmail.com>
+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 <algorithm>
+ #include <limits>
+-#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 (file)
index 0000000..2d0c11e
--- /dev/null
@@ -0,0 +1,136 @@
+From: Vikram Kangotra <vikramkangotra8055@gmail.com>
+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<T>::ExtResolver(const std::string & ext)
+ template <class T>
+ File *VLCTagLib::ExtResolver<T>::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<T>::createFile(FileName fileName, bool, AudioProper
+ template<class T>
+ File* VLCTagLib::ExtResolver<T>::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<RIFF::AIFF::File*>(f.file()) )
+             WriteMetaToId3v2( riff_aiff->tag(), p_item );
+         else if( RIFF::WAV::File* riff_wav = dynamic_cast<RIFF::WAV::File*>(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<TrueAudio::File*>(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 (file)
index 0000000..dee8a99
--- /dev/null
@@ -0,0 +1,39 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..55442f2
--- /dev/null
@@ -0,0 +1,33 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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<uint8_t*>( 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 (file)
index 0000000..d0888de
--- /dev/null
@@ -0,0 +1,26 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..0fe5590
--- /dev/null
@@ -0,0 +1,27 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..c816e50
--- /dev/null
@@ -0,0 +1,52 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..cac34f2
--- /dev/null
@@ -0,0 +1,29 @@
+From: Johan Gunnarsson <johan.gunnarsson@gmail.com>
+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 <jb@videolan.org>
+(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 (file)
index 0000000..ce4e101
--- /dev/null
@@ -0,0 +1,24 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..aba9c6b
--- /dev/null
@@ -0,0 +1,51 @@
+From: Francois Cartegnie <fcvlcdev@free.fr>
+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 (file)
index 0000000..d2c4e68
--- /dev/null
@@ -0,0 +1,25 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..9ed5133
--- /dev/null
@@ -0,0 +1,27 @@
+From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= <remi@remlab.net>
+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 (file)
index 0000000..63752c2
--- /dev/null
@@ -0,0 +1,61 @@
+From: Ilkka Ollakka <ileoo@videolan.org>
+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 (file)
index 0000000..cb2ebab
--- /dev/null
@@ -0,0 +1,109 @@
+From: Ilkka Ollakka <ileoo@videolan.org>
+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 (file)
index 0000000..5d17284
--- /dev/null
@@ -0,0 +1,121 @@
+From: Ilkka Ollakka <ileoo@videolan.org>
+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 (file)
index 0000000..c153686
--- /dev/null
@@ -0,0 +1,27 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..6092fed
--- /dev/null
@@ -0,0 +1,63 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 <vlc_cpu.h>
+ #include <libavcodec/avcodec.h>
+-#include <libavutil/channel_layout.h>
+ #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 <libavutil/channel_layout.h>
+ #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 (file)
index 0000000..add2732
--- /dev/null
@@ -0,0 +1,60 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 <libavcodec/avcodec.h>
+ #include <libavutil/mem.h>
+-#include <libavutil/channel_layout.h>
++#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
++#if API_CHANNEL_LAYOUT
++# include <libavutil/channel_layout.h>
++#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 (file)
index 0000000..c25a72f
--- /dev/null
@@ -0,0 +1,43 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..d11d4f5
--- /dev/null
@@ -0,0 +1,58 @@
+From: Ilkka Ollakka <ileoo@videolan.org>
+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 (file)
index 0000000..b55fd61
--- /dev/null
@@ -0,0 +1,110 @@
+From: Ilkka Ollakka <ileoo@videolan.org>
+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 (file)
index 0000000..424ce11
--- /dev/null
@@ -0,0 +1,40 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..4cbca90
--- /dev/null
@@ -0,0 +1,37 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 <x265.h>
++#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 (file)
index 0000000..80a503d
--- /dev/null
@@ -0,0 +1,41 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..e4be177
--- /dev/null
@@ -0,0 +1,78 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..ace955a
--- /dev/null
@@ -0,0 +1,29 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..5c38d54
--- /dev/null
@@ -0,0 +1,31 @@
+From: Tristan Matthews <tmatth@videolan.org>
+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 (file)
index 0000000..d974f4a
--- /dev/null
@@ -0,0 +1,395 @@
+From: Pratik Patel <pratikpatel8982@gmail.com>
+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 <QDialogButtonBox>
+ 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 <QWidget>
+-#include <QSettings>
++#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("<html><head/><body><p><span style=\" font-size:26pt; color:#353535;\"> " + qtr( "VLC media player" ) + " </span></p></body></html>");
++    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("<html><head/><body>" +
+-    qtr( "<p>VLC media player is a free and open source media player, encoder, and streamer made by the volunteers of the <a href=\"http://www.videolan.org/\"><span style=\" text-decoration: underline; color:#0057ae;\">VideoLAN</span></a> community.</p><p>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!</p><p><a href=\"http://www.videolan.org/contribute/\"><span style=\" text-decoration: underline; color:#0057ae;\">Help and join us!</span></a>" ) +
+-    "</p></body> </html>");
++    ui.version->setText(qfu( " " VERSION_MESSAGE ) );
++    ui.title->setText("<html><head/><body><p><span style=\" font-size:26pt;\"> " + qtr( "VLC media player" ) + " </span></p></body></html>");
++    QString translatedString = qtr( "<p>VLC media player is a free and open source media player, encoder, and streamer made by the volunteers of the <a href=\"http://www.videolan.org/\"><span style=\" text-decoration: underline; color:#0057ae;\">VideoLAN</span></a> community.</p><p>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!</p><p><a href=\"http://www.videolan.org/contribute/\"><span style=\" text-decoration: underline; color:#0057ae;\">Help and join us!</span></a>" );
++    if ( var_InheritBool( p_intf, "qt-dark-palette" ) )
++        translatedString.remove(QLatin1String("#0057ae"));
++    ui.MainBlabla->setText("<html><head/><body>" + translatedString + "</p></body> </html>");
+ #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( "<html><head/><body><p><span style=\" text-decoration: underline; color:#0057ae;\">"+qtr( "License" )+"</span></p></body></html>");
+-    ui.licenseButton->installEventFilter( this );
+-
+-    ui.authorsButton->setText( "<html><head/><body><p><span style=\" text-decoration: underline; color:#0057ae;\">"+qtr( "Authors" )+"</span></p></body></html>");
+-    ui.authorsButton->installEventFilter( this );
++    ui.licenseButton->setText(QString("<html><head/><body><p><span style=\" text-decoration: underline; color:%1;\">%2</span></p></body></html>")
++                           .arg(linkColor, qtr("License")));
++      ui.licenseButton->installEventFilter(this);
+-    ui.creditsButton->setText( "<html><head/><body><p><span style=\" text-decoration: underline; color:#0057ae;\">"+qtr( "Credits" )+"</span></p></body></html>");
+-    ui.creditsButton->installEventFilter( this );
++      ui.authorsButton->setText(QString("<html><head/><body><p><span style=\" text-decoration: underline; color:%1;\">%2</span></p></body></html>")
++                                                         .arg(linkColor, qtr("Authors")));
++      ui.authorsButton->installEventFilter(this);
++      ui.creditsButton->setText(QString("<html><head/><body><p><span style=\" text-decoration: underline; color:%1;\">%2</span></p></body></html>")
++                                                         .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 @@
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+-     <property name="styleSheet">
+-      <string notr="true">background-color: rgb(245, 245, 245);
+-color:rgb(0,0,0);</string>
+-     </property>
+      <layout class="QGridLayout" name="gridLayout">
+       <item row="2" column="2" rowspan="4">
+        <widget class="QStackedWidget" name="stackedWidget">
+@@ -288,9 +284,6 @@ margin-bottom: 6px;</string>
+        <height>60</height>
+       </size>
+      </property>
+-     <property name="styleSheet">
+-      <string notr="true">background-color: rgb(230, 230, 230);color:rgb(0,0,0);</string>
+-     </property>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="margin">
+        <number>0</number>
+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 @@
+              <item row="11" column="2" colspan="2">
+               <widget class="QComboBox" name="autoRaiseComboBox"/>
+              </item>
++             <item row="4" column="2">
++              <widget class="QCheckBox" name="qtdark">
++               <property name="text">
++                <string>Use a dark palette</string>
++               </property>
++              </widget>
++             </item>
+             </layout>
+            </widget>
+           </item>
+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 <QLibrary>
++    #include <QSysInfo>
++    #include <dwmapi.h>
++
++    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<DwmSetWindowAttributeFunc>(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 (file)
index 0000000..8f5ce5b
--- /dev/null
@@ -0,0 +1,119 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 <libavcodec/avcodec.h>
+ #include <libavutil/mem.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 <libavutil/channel_layout.h>
+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/avutil.h>
+-/* 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 <libavutil/channel_layout.h>
+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 (file)
index 0000000..5b0e9fa
--- /dev/null
@@ -0,0 +1,101 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 <libavutil/avutil.h>
+-/* 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 <libavcodec/avcodec.h>
+ #include <libavutil/mem.h>
+ #include <libavutil/pixdesc.h>
+-#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 <libavutil/mastering_display_metadata.h>
+ #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 (file)
index 0000000..63a6d28
--- /dev/null
@@ -0,0 +1,75 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 <libavformat/avformat.h>
+-#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 (file)
index 0000000..1d9e540
--- /dev/null
@@ -0,0 +1,103 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 <libavformat/avformat.h>
++/* 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 (file)
index 0000000..8406e77
--- /dev/null
@@ -0,0 +1,214 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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/avcodec.h>
+-/* 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 <initguid.h> /* 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 (file)
index 0000000..9163f72
--- /dev/null
@@ -0,0 +1,269 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 <libavcodec/avcodec.h>
++/* 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 (file)
index 0000000..efc5065
--- /dev/null
@@ -0,0 +1,59 @@
+From: Zhao Zhili <quinkblack@foxmail.com>
+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 (file)
index 0000000..eac46af
--- /dev/null
@@ -0,0 +1,22 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..24dee8c
--- /dev/null
@@ -0,0 +1,45 @@
+From: Ilkka Ollakka <ileoo@videolan.org>
+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 (file)
index 0000000..68873a4
--- /dev/null
@@ -0,0 +1,55 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 (file)
index 0000000..a9d2263
--- /dev/null
@@ -0,0 +1,74 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..2fce396
--- /dev/null
@@ -0,0 +1,36 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 <fcvlcdev@free.fr>
+(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 (file)
index 0000000..955b3e0
--- /dev/null
@@ -0,0 +1,36 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 <fcvlcdev@free.fr>
+(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 (file)
index 0000000..ea19dca
--- /dev/null
@@ -0,0 +1,29 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..1849937
--- /dev/null
@@ -0,0 +1,113 @@
+From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
+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 <robux4@ycbcr.xyz>
+(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 <libavcodec/avcodec.h>
+ #include <libavutil/mem.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
+@@ -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 (file)
index 0000000..4f80661
--- /dev/null
@@ -0,0 +1,44 @@
+From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= <remi@remlab.net>
+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 (file)
index 0000000..93719ad
--- /dev/null
@@ -0,0 +1,24 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..e19c01d
--- /dev/null
@@ -0,0 +1,24 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..8e805ad
--- /dev/null
@@ -0,0 +1,35 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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<type*>(src) : NULL
+ #define MKV_CHECKED_PTR_DECL_CONST( name, type, src ) const type * name = MKV_IS_ID(src, type) ? static_cast<const type*>(src) : NULL
++#if LIBEBML_VERSION < 0x020000
++template <typename Type>
++Type * FindChild(const EbmlMaster & Master)
++{
++  return static_cast<Type *>(Master.FindFirstElt(EBML_INFO(Type)));
++}
++
++template <typename Type>
++Type * FindNextChild(const EbmlMaster & Master, const Type & PastElt)
++{
++  return static_cast<Type *>(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 (file)
index 0000000..d96606e
--- /dev/null
@@ -0,0 +1,53 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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<KaxBlockMore>(*additions);
++                    auto blockmore = FindChild<const KaxBlockMore>(*additions);
+                     if(blockmore)
+                     {
+-                        KaxBlockAdditional *addition = FindChild<KaxBlockAdditional>(*blockmore);
++                        auto addition = FindChild<const KaxBlockAdditional>(*blockmore);
+                         if(addition)
+                         {
+                             i_addition = static_cast<std::string::size_type>(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 (file)
index 0000000..88fd5e0
--- /dev/null
@@ -0,0 +1,41 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..82b2dbf
--- /dev/null
@@ -0,0 +1,25 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..af6b4b8
--- /dev/null
@@ -0,0 +1,24 @@
+From: KO Myung-Hun <komh@chollian.net>
+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 <robux4@ycbcr.xyz>
+---
+ 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 @@
+ <ui version="4.0" >
+  <class>PodcastConfiguration</class>
+- <widget class="QWidget" name="PodcastConfiguration" >
++ <widget class="QDialog" name="PodcastConfiguration" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
diff --git a/patches/0105-musicbrainz-fix-leak.patch b/patches/0105-musicbrainz-fix-leak.patch
new file mode 100644 (file)
index 0000000..39d0f9f
--- /dev/null
@@ -0,0 +1,27 @@
+From: Johannes Kauffmann <johanneskauffmann@hotmail.com>
+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 (file)
index 0000000..8d91a38
--- /dev/null
@@ -0,0 +1,37 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..38bedca
--- /dev/null
@@ -0,0 +1,85 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..6a834f0
--- /dev/null
@@ -0,0 +1,31 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..03b430a
--- /dev/null
@@ -0,0 +1,25 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..bec5ea8
--- /dev/null
@@ -0,0 +1,27 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..ebf27e9
--- /dev/null
@@ -0,0 +1,149 @@
+From: Mangal Kushwah <mangalk2324@gmail.com>
+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 (file)
index 0000000..434b16b
--- /dev/null
@@ -0,0 +1,40 @@
+From: Martin Tuma <martin.tuma@digiteqautomotive.com>
+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 (file)
index 0000000..6f55e38
--- /dev/null
@@ -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 (file)
index 0000000..1ad3b23
--- /dev/null
@@ -0,0 +1,39 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..11d31ef
--- /dev/null
@@ -0,0 +1,21 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..06f30d4
--- /dev/null
@@ -0,0 +1,28 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..8cbb47c
--- /dev/null
@@ -0,0 +1,40 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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<int>(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<int>(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<int>(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 (file)
index 0000000..d88bc0d
--- /dev/null
@@ -0,0 +1,22 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..b8d83e1
--- /dev/null
@@ -0,0 +1,22 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 <QActionGroup>
++
+ 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 (file)
index 0000000..ff107ff
--- /dev/null
@@ -0,0 +1,226 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..e3861a2
--- /dev/null
@@ -0,0 +1,26 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..49694d0
--- /dev/null
@@ -0,0 +1,26 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..92e4217
--- /dev/null
@@ -0,0 +1,36 @@
+From: Steve Lhomme <robux4@ycbcr.xyz>
+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 (file)
index 0000000..8e7c99f
--- /dev/null
@@ -0,0 +1,145 @@
+From: David Rosca <nowrep@gmail.com>
+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 <va/va_drm.h>
+ #endif
+ #include <libavcodec/avcodec.h>
++#if FF_API_STRUCT_VAAPI_CONTEXT
+ #include <libavcodec/vaapi.h>
++#else
++#include <libavutil/hwcontext_vaapi.h>
++#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 (file)
index 0000000..e7d7d60
--- /dev/null
@@ -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 (executable)
index 0000000..defa4db
--- /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 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/source/lintian-overrides b/source/lintian-overrides
new file mode 100644 (file)
index 0000000..d90ff6a
--- /dev/null
@@ -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 (file)
index 0000000..fd039a6
--- /dev/null
@@ -0,0 +1,26 @@
+'''apport package hook for vlc
+
+(c) 2010 Canonical Ltd.
+Author: Brian Murray <brian@ubuntu.com>
+'''
+
+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 (file)
index 0000000..38de260
--- /dev/null
@@ -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 (executable)
index 0000000..7659643
--- /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 (executable)
index 0000000..d37c4ee
--- /dev/null
@@ -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 (executable)
index 0000000..d37c4ee
--- /dev/null
@@ -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 (file)
index 0000000..f561a04
--- /dev/null
@@ -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 (file)
index 0000000..1091ddf
--- /dev/null
@@ -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 (file)
index 0000000..10900da
--- /dev/null
@@ -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 (file)
index 0000000..55edb90
--- /dev/null
@@ -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 (file)
index 0000000..7fb0c49
--- /dev/null
@@ -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 (file)
index 0000000..3635480
--- /dev/null
@@ -0,0 +1 @@
+usr/share/locale
diff --git a/vlc-plugin-access-extra.install b/vlc-plugin-access-extra.install
new file mode 100644 (file)
index 0000000..a12655e
--- /dev/null
@@ -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 (executable)
index 0000000..1c047df
--- /dev/null
@@ -0,0 +1,235 @@
+#!/bin/bash
+exec python3 $(dirname $0)/filter-plugin.py <<EOF
+usr/lib/*/vlc/lua
+usr/lib/*/vlc/libvlc_pulse.so*
+usr/lib/*/vlc/plugins/access/libaccess_alsa_plugin.so [alsa]
+usr/lib/*/vlc/plugins/access/libaccess_concat_plugin.so
+usr/lib/*/vlc/plugins/access/libaccess_imem_plugin.so
+usr/lib/*/vlc/plugins/access/libaccess_mms_plugin.so
+usr/lib/*/vlc/plugins/access/libaccess_mtp_plugin.so
+usr/lib/*/vlc/plugins/access/libaccess_realrtsp_plugin.so
+usr/lib/*/vlc/plugins/access/libattachment_plugin.so
+usr/lib/*/vlc/plugins/access/libavio_plugin.so
+usr/lib/*/vlc/plugins/access/libcdda_plugin.so [cdda]
+usr/lib/*/vlc/plugins/access/libdc1394_plugin.so [dc1394]
+usr/lib/*/vlc/plugins/access/libdtv_plugin.so [dtv]
+usr/lib/*/vlc/plugins/access/libdv1394_plugin.so [dv1394]
+usr/lib/*/vlc/plugins/access/libdvb_plugin.so [dvb]
+usr/lib/*/vlc/plugins/access/libdvdnav_plugin.so
+usr/lib/*/vlc/plugins/access/libdvdread_plugin.so
+usr/lib/*/vlc/plugins/access/libfilesystem_plugin.so
+usr/lib/*/vlc/plugins/access/libftp_plugin.so
+usr/lib/*/vlc/plugins/access/libhttp_plugin.so
+usr/lib/*/vlc/plugins/access/libhttps_plugin.so
+usr/lib/*/vlc/plugins/access/libidummy_plugin.so
+usr/lib/*/vlc/plugins/access/libimem_plugin.so
+usr/lib/*/vlc/plugins/access/liblibbluray_plugin.so
+usr/lib/*/vlc/plugins/access/liblinsys_hdsdi_plugin.so [linsys]
+usr/lib/*/vlc/plugins/access/liblinsys_sdi_plugin.so [linsys]
+usr/lib/*/vlc/plugins/access/libnfs_plugin.so [nfs]
+usr/lib/*/vlc/plugins/access/libpulsesrc_plugin.so
+usr/lib/*/vlc/plugins/access/librist_plugin.so
+usr/lib/*/vlc/plugins/access/librtp_plugin.so
+usr/lib/*/vlc/plugins/access/libsatip_plugin.so
+usr/lib/*/vlc/plugins/access/libsdp_plugin.so
+usr/lib/*/vlc/plugins/access/libsftp_plugin.so
+usr/lib/*/vlc/plugins/access/libshm_plugin.so
+usr/lib/*/vlc/plugins/access/libtcp_plugin.so
+usr/lib/*/vlc/plugins/access/libtimecode_plugin.so
+usr/lib/*/vlc/plugins/access/libudp_plugin.so
+usr/lib/*/vlc/plugins/access/libv4l2_plugin.so [v4l2]
+usr/lib/*/vlc/plugins/access/libvcd_plugin.so [vcd]
+usr/lib/*/vlc/plugins/access/libvdr_plugin.so
+usr/lib/*/vlc/plugins/access_output/libaccess_output_dummy_plugin.so
+usr/lib/*/vlc/plugins/access_output/libaccess_output_file_plugin.so
+usr/lib/*/vlc/plugins/access_output/libaccess_output_http_plugin.so
+usr/lib/*/vlc/plugins/access_output/libaccess_output_livehttp_plugin.so
+usr/lib/*/vlc/plugins/access_output/libaccess_output_shout_plugin.so
+usr/lib/*/vlc/plugins/access_output/libaccess_output_udp_plugin.so
+usr/lib/*/vlc/plugins/access_output/libaccess_output_rist_plugin.so
+usr/lib/*/vlc/plugins/arm_neon [neon]
+usr/lib/*/vlc/plugins/audio_filter
+usr/lib/*/vlc/plugins/audio_mixer
+usr/lib/*/vlc/plugins/audio_output/libadummy_plugin.so
+usr/lib/*/vlc/plugins/audio_output/libafile_plugin.so
+usr/lib/*/vlc/plugins/audio_output/libalsa_plugin.so [alsa]
+usr/lib/*/vlc/plugins/audio_output/libamem_plugin.so
+usr/lib/*/vlc/plugins/audio_output/libpulse_plugin.so
+usr/lib/*/vlc/plugins/codec/liba52_plugin.so
+usr/lib/*/vlc/plugins/codec/libadpcm_plugin.so
+usr/lib/*/vlc/plugins/codec/libaes3_plugin.so
+usr/lib/*/vlc/plugins/codec/libaraw_plugin.so
+usr/lib/*/vlc/plugins/codec/libaribsub_plugin.so
+usr/lib/*/vlc/plugins/codec/libavcodec_plugin.so
+usr/lib/*/vlc/plugins/codec/libcc_plugin.so
+usr/lib/*/vlc/plugins/codec/libcdg_plugin.so
+usr/lib/*/vlc/plugins/codec/libcvdsub_plugin.so
+usr/lib/*/vlc/plugins/codec/libdav1d_plugin.so
+usr/lib/*/vlc/plugins/codec/libdca_plugin.so
+usr/lib/*/vlc/plugins/codec/libddummy_plugin.so
+usr/lib/*/vlc/plugins/codec/libdvbsub_plugin.so
+usr/lib/*/vlc/plugins/codec/libedummy_plugin.so
+usr/lib/*/vlc/plugins/codec/libfaad_plugin.so
+usr/lib/*/vlc/plugins/codec/libflac_plugin.so
+usr/lib/*/vlc/plugins/codec/libg711_plugin.so
+usr/lib/*/vlc/plugins/codec/libjpeg_plugin.so
+usr/lib/*/vlc/plugins/codec/libkate_plugin.so
+usr/lib/*/vlc/plugins/codec/liblibass_plugin.so
+usr/lib/*/vlc/plugins/codec/liblibmpeg2_plugin.so
+usr/lib/*/vlc/plugins/codec/liblpcm_plugin.so
+usr/lib/*/vlc/plugins/codec/libmpg123_plugin.so
+usr/lib/*/vlc/plugins/codec/liboggspots_plugin.so
+usr/lib/*/vlc/plugins/codec/libopus_plugin.so
+usr/lib/*/vlc/plugins/codec/libpng_plugin.so
+usr/lib/*/vlc/plugins/codec/librawvideo_plugin.so
+usr/lib/*/vlc/plugins/codec/librtpvideo_plugin.so
+usr/lib/*/vlc/plugins/codec/libscte18_plugin.so
+usr/lib/*/vlc/plugins/codec/libscte27_plugin.so
+usr/lib/*/vlc/plugins/codec/libshine_plugin.so
+usr/lib/*/vlc/plugins/codec/libspdif_plugin.so
+usr/lib/*/vlc/plugins/codec/libspeex_plugin.so
+usr/lib/*/vlc/plugins/codec/libspudec_plugin.so
+usr/lib/*/vlc/plugins/codec/libstl_plugin.so
+usr/lib/*/vlc/plugins/codec/libsubsdec_plugin.so
+usr/lib/*/vlc/plugins/codec/libsubstx3g_plugin.so
+usr/lib/*/vlc/plugins/codec/libsubsusf_plugin.so
+usr/lib/*/vlc/plugins/codec/libsvcdsub_plugin.so
+usr/lib/*/vlc/plugins/codec/libsvgdec_plugin.so
+usr/lib/*/vlc/plugins/codec/libt140_plugin.so
+usr/lib/*/vlc/plugins/codec/libtextst_plugin.so
+usr/lib/*/vlc/plugins/codec/libtheora_plugin.so
+usr/lib/*/vlc/plugins/codec/libttml_plugin.so
+usr/lib/*/vlc/plugins/codec/libtwolame_plugin.so
+usr/lib/*/vlc/plugins/codec/libuleaddvaudio_plugin.so
+usr/lib/*/vlc/plugins/codec/libvaapi_drm_plugin.so [libva]
+usr/lib/*/vlc/plugins/codec/libvaapi_plugin.so [libva]
+usr/lib/*/vlc/plugins/codec/libvorbis_plugin.so
+usr/lib/*/vlc/plugins/codec/libwebvtt_plugin.so
+usr/lib/*/vlc/plugins/codec/libx264_plugin.so
+usr/lib/*/vlc/plugins/codec/libx26410b_plugin.so
+usr/lib/*/vlc/plugins/codec/libx265_plugin.so
+usr/lib/*/vlc/plugins/codec/libxwd_plugin.so
+usr/lib/*/vlc/plugins/codec/libzvbi_plugin.so
+usr/lib/*/vlc/plugins/control/libdbus_plugin.so
+usr/lib/*/vlc/plugins/control/libdummy_plugin.so
+usr/lib/*/vlc/plugins/control/libgestures_plugin.so
+usr/lib/*/vlc/plugins/control/libhotkeys_plugin.so
+usr/lib/*/vlc/plugins/control/liblirc_plugin.so
+usr/lib/*/vlc/plugins/control/libmotion_plugin.so
+usr/lib/*/vlc/plugins/control/libnetsync_plugin.so
+usr/lib/*/vlc/plugins/control/liboldrc_plugin.so
+usr/lib/*/vlc/plugins/control/libxcb_hotkeys_plugin.so
+usr/lib/*/vlc/plugins/demux
+usr/lib/*/vlc/plugins/gui/libncurses_plugin.so
+usr/lib/*/vlc/plugins/keystore/libfile_keystore_plugin.so
+usr/lib/*/vlc/plugins/keystore/libkwallet_plugin.so
+usr/lib/*/vlc/plugins/keystore/libmemory_keystore_plugin.so
+usr/lib/*/vlc/plugins/keystore/libsecret_plugin.so
+usr/lib/*/vlc/plugins/logger/libconsole_logger_plugin.so
+usr/lib/*/vlc/plugins/logger/libfile_logger_plugin.so
+usr/lib/*/vlc/plugins/logger/libsd_journal_plugin.so [systemd]
+usr/lib/*/vlc/plugins/logger/libsyslog_plugin.so
+usr/lib/*/vlc/plugins/lua/liblua_plugin.so
+usr/lib/*/vlc/plugins/meta_engine
+usr/lib/*/vlc/plugins/misc/libaddonsfsstorage_plugin.so
+usr/lib/*/vlc/plugins/misc/libaddonsvorepository_plugin.so
+usr/lib/*/vlc/plugins/misc/libaudioscrobbler_plugin.so
+usr/lib/*/vlc/plugins/misc/libdbus_screensaver_plugin.so
+usr/lib/*/vlc/plugins/misc/libexport_plugin.so
+usr/lib/*/vlc/plugins/misc/libfingerprinter_plugin.so
+usr/lib/*/vlc/plugins/misc/libgnutls_plugin.so
+usr/lib/*/vlc/plugins/misc/liblogger_plugin.so
+usr/lib/*/vlc/plugins/misc/libstats_plugin.so
+usr/lib/*/vlc/plugins/misc/libvod_rtsp_plugin.so
+usr/lib/*/vlc/plugins/misc/libxdg_screensaver_plugin.so
+usr/lib/*/vlc/plugins/misc/libxml_plugin.so
+usr/lib/*/vlc/plugins/mux
+usr/lib/*/vlc/plugins/packetizer
+usr/lib/*/vlc/plugins/services_discovery/libavahi_plugin.so
+usr/lib/*/vlc/plugins/services_discovery/libmediadirs_plugin.so
+usr/lib/*/vlc/plugins/services_discovery/libmtp_plugin.so
+usr/lib/*/vlc/plugins/services_discovery/libpodcast_plugin.so
+usr/lib/*/vlc/plugins/services_discovery/libpulselist_plugin.so
+usr/lib/*/vlc/plugins/services_discovery/libsap_plugin.so
+usr/lib/*/vlc/plugins/services_discovery/libudev_plugin.so [udev]
+usr/lib/*/vlc/plugins/services_discovery/libupnp_plugin.so
+usr/lib/*/vlc/plugins/services_discovery/libxcb_apps_plugin.so
+usr/lib/*/vlc/plugins/spu/libaudiobargraph_v_plugin.so
+usr/lib/*/vlc/plugins/spu/libdynamicoverlay_plugin.so
+usr/lib/*/vlc/plugins/spu/liblogo_plugin.so
+usr/lib/*/vlc/plugins/spu/libmarq_plugin.so
+usr/lib/*/vlc/plugins/spu/libmosaic_plugin.so
+usr/lib/*/vlc/plugins/spu/libremoteosd_plugin.so
+usr/lib/*/vlc/plugins/spu/librss_plugin.so
+usr/lib/*/vlc/plugins/spu/libsubsdelay_plugin.so
+usr/lib/*/vlc/plugins/stream_extractor/libarchive_plugin.so
+usr/lib/*/vlc/plugins/stream_filter
+usr/lib/*/vlc/plugins/stream_out/libstream_out_autodel_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_bridge_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_chromaprint_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_chromecast_plugin.so [chromecast]
+usr/lib/*/vlc/plugins/stream_out/libstream_out_cycle_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_delay_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_description_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_display_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_dummy_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_duplicate_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_es_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_gather_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_mosaic_bridge_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_record_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_rtp_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_setid_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_smem_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_standard_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_stats_plugin.so
+usr/lib/*/vlc/plugins/stream_out/libstream_out_transcode_plugin.so
+usr/lib/*/vlc/plugins/text_renderer/libfreetype_plugin.so
+usr/lib/*/vlc/plugins/text_renderer/libtdummy_plugin.so
+usr/lib/*/vlc/plugins/video_chroma
+usr/lib/*/vlc/plugins/video_filter/libadjust_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libalphamask_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libanaglyph_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libantiflicker_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libball_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libblend_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libblendbench_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libbluescreen_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libcanvas_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libcolorthres_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libcroppadd_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libdeinterlace_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libedgedetection_plugin.so
+usr/lib/*/vlc/plugins/video_filter/liberase_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libextract_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libfps_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libfreeze_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libgaussianblur_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libgradfun_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libgradient_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libgrain_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libhqdn3d_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libinvert_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libmagnify_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libmirror_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libmotionblur_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libmotiondetect_plugin.so
+usr/lib/*/vlc/plugins/video_filter/liboldmovie_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libposterize_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libpostproc_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libpsychedelic_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libpuzzle_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libripple_plugin.so
+usr/lib/*/vlc/plugins/video_filter/librotate_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libscale_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libscene_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libsepia_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libsharpen_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libtransform_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libvhs_plugin.so
+usr/lib/*/vlc/plugins/video_filter/libwave_plugin.so
+usr/lib/*/vlc/plugins/video_output/libfb_plugin.so [fb]
+usr/lib/*/vlc/plugins/video_output/libvdummy_plugin.so
+usr/lib/*/vlc/plugins/video_output/libvmem_plugin.so
+usr/lib/*/vlc/plugins/video_output/libyuv_plugin.so
+EOF
diff --git a/vlc-plugin-fluidsynth.install b/vlc-plugin-fluidsynth.install
new file mode 100644 (file)
index 0000000..4e3e115
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/*/vlc/plugins/codec/libfluidsynth_plugin.so
diff --git a/vlc-plugin-jack.install b/vlc-plugin-jack.install
new file mode 100644 (file)
index 0000000..a9b5b21
--- /dev/null
@@ -0,0 +1,2 @@
+usr/lib/*/vlc/plugins/access/libaccess_jack_plugin.so
+usr/lib/*/vlc/plugins/audio_output/libjack_plugin.so
diff --git a/vlc-plugin-notify.install b/vlc-plugin-notify.install
new file mode 100644 (file)
index 0000000..d43dfbc
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/*/vlc/plugins/notify/libnotify_plugin.so
diff --git a/vlc-plugin-qt.install b/vlc-plugin-qt.install
new file mode 100644 (file)
index 0000000..57fd31f
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin/qvlc
+usr/lib/*/vlc/plugins/gui/libqt_plugin.so
diff --git a/vlc-plugin-qt.links b/vlc-plugin-qt.links
new file mode 100644 (file)
index 0000000..174eae1
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/vlc.1.gz /usr/share/man/man1/qvlc.1.gz
diff --git a/vlc-plugin-qt.lintian-overrides b/vlc-plugin-qt.lintian-overrides
new file mode 100644 (file)
index 0000000..958f8a4
--- /dev/null
@@ -0,0 +1,2 @@
+# Lintian fails to detect UTF-8 names (bug #588661)
+vlc-plugin-qt binary: spelling-error-in-binary usr/lib/*/vlc/plugins/gui/libqt_plugin.so ment meant
diff --git a/vlc-plugin-samba.install b/vlc-plugin-samba.install
new file mode 100644 (file)
index 0000000..4c46489
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/*/vlc/plugins/access/libsmb_plugin.so
diff --git a/vlc-plugin-skins2.install b/vlc-plugin-skins2.install
new file mode 100644 (file)
index 0000000..bf3c311
--- /dev/null
@@ -0,0 +1,3 @@
+usr/bin/svlc
+usr/lib/*/vlc/plugins/gui/libskins2_plugin.so
+usr/share/vlc/skins2
diff --git a/vlc-plugin-skins2.links b/vlc-plugin-skins2.links
new file mode 100644 (file)
index 0000000..5faf4ad
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/vlc.1.gz /usr/share/man/man1/svlc.1.gz
diff --git a/vlc-plugin-svg.install b/vlc-plugin-svg.install
new file mode 100644 (file)
index 0000000..49ba370
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/*/vlc/plugins/text_renderer/libsvg_plugin.so
diff --git a/vlc-plugin-video-output.install b/vlc-plugin-video-output.install
new file mode 100755 (executable)
index 0000000..4a9bf50
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/bash
+exec python3 $(dirname $0)/filter-plugin.py <<EOF
+usr/lib/*/vlc/libvlc_vdpau.so*
+usr/lib/*/vlc/libvlc_xcb_events.so*
+usr/lib/*/vlc/plugins/vaapi/libvaapi_filters_plugin.so [libva]
+usr/lib/*/vlc/plugins/vdpau
+usr/lib/*/vlc/plugins/video_output/libaa_plugin.so
+usr/lib/*/vlc/plugins/video_output/libcaca_plugin.so
+usr/lib/*/vlc/plugins/video_output/libegl_wl_plugin.so [wayland]
+usr/lib/*/vlc/plugins/video_output/libegl_x11_plugin.so
+usr/lib/*/vlc/plugins/video_output/libflaschen_plugin.so
+usr/lib/*/vlc/plugins/video_output/libgl_plugin.so
+usr/lib/*/vlc/plugins/video_output/libglconv_vaapi_drm_plugin.so [libva]
+usr/lib/*/vlc/plugins/video_output/libglconv_vaapi_wl_plugin.so [libva,wayland]
+usr/lib/*/vlc/plugins/video_output/libglconv_vaapi_x11_plugin.so [libva]
+usr/lib/*/vlc/plugins/video_output/libglconv_vdpau_plugin.so
+usr/lib/*/vlc/plugins/video_output/libgles2_plugin.so
+usr/lib/*/vlc/plugins/video_output/libglx_plugin.so
+usr/lib/*/vlc/plugins/video_output/libwl_shell_plugin.so [wayland]
+usr/lib/*/vlc/plugins/video_output/libwl_shm_plugin.so [wayland]
+usr/lib/*/vlc/plugins/video_output/libxcb_window_plugin.so
+usr/lib/*/vlc/plugins/video_output/libxcb_x11_plugin.so
+usr/lib/*/vlc/plugins/video_output/libxcb_xv_plugin.so
+usr/lib/*/vlc/plugins/video_output/libxdg_shell_plugin.so [wayland]
+EOF
diff --git a/vlc-plugin-video-splitter.install b/vlc-plugin-video-splitter.install
new file mode 100644 (file)
index 0000000..667e40b
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/*/vlc/plugins/video_splitter
diff --git a/vlc-plugin-visualization.install b/vlc-plugin-visualization.install
new file mode 100644 (file)
index 0000000..ca4fb06
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/*/vlc/plugins/visualization
diff --git a/vlc.docs b/vlc.docs
new file mode 100644 (file)
index 0000000..93625aa
--- /dev/null
+++ b/vlc.docs
@@ -0,0 +1,3 @@
+AUTHORS
+README
+THANKS
diff --git a/vlc.install b/vlc.install
new file mode 100644 (file)
index 0000000..3423c11
--- /dev/null
@@ -0,0 +1,3 @@
+usr/share/applications
+usr/share/metainfo
+usr/share/solid
diff --git a/vlc.lintian-overrides b/vlc.lintian-overrides
new file mode 100644 (file)
index 0000000..8c02be1
--- /dev/null
@@ -0,0 +1,2 @@
+# The vlc executable is in vlc-bin but the .desktop file is only relevant to vlc(-with-x)
+vlc binary: desktop-command-not-in-package usr/share/applications/vlc.desktop usr/bin/vlc
diff --git a/vlc.mime b/vlc.mime
new file mode 100644 (file)
index 0000000..4b00753
--- /dev/null
+++ b/vlc.mime
@@ -0,0 +1,44 @@
+video/mpeg; vlc %s; description="MPEG Video"; test=test -n "$DISPLAY"; priority=7
+video/mpeg; vlc -I rc -V caca %s; needsterminal; description="MPEG Video"; priority=4
+video/x-mpeg; vlc %s; description="MPEG Video"; test=test -n "$DISPLAY"; priority=7
+video/x-mpeg; vlc -I rc -V caca %s; needsterminal; description="MPEG Video"; priority=4
+video/mpeg-system; vlc %s; description="MPEG Video"; test=test -n "$DISPLAY"; priority=7
+video/mpeg-system; vlc -I rc -V caca %s; needsterminal; description="MPEG Video"; priority=4
+video/x-mpeg-system; vlc %s; description="MPEG Video"; test=test -n "$DISPLAY"; priority=7
+video/x-mpeg-system; vlc -I rc -V caca %s; needsterminal; description="MPEG Video"; priority=4
+
+audio/x-wav; vlc %s; description="WAV Audio"; nametemplate=%s.wav; test=test -n "$DISPLAY"; priority=7
+audio/x-wav; vlc -I rc -V caca %s; nametemplate=%s.wav; needsterminal; description="WAV Audio"; priority=4
+
+video/mpeg4; vlc %s; description="MPEG-4 Video"; test=test -n "$DISPLAY"; priority=7
+video/mpeg4; vlc -I rc -V caca %s; needsterminal; description="MPEG-4 Video"; priority=4
+audio/mpeg; vlc %s; description="MPEG Audio"; nametemplate=%s.mpg; test=test -n "$DISPLAY"; priority=7
+audio/mpeg; vlc -I rc -V caca %s; nametemplate=%s.mpg; needsterminal; description="MPEG Audio"; priority=4
+audio/mpegurl; vlc %s; description="MPEG Audio URL"; nametemplate=%s.m3u; test=test -n "$DISPLAY"; priority=7
+audio/mpegurl; vlc -I rc -V caca %s; nametemplate=%s.m3u; needsterminal; description="MPEG Audio URL"; priority=4
+audio/x-mp3; vlc %s; nametemplate=%s.mp3; description="MPEG Audio"; test=test -n "$DISPLAY"; priority=7
+audio/x-mp3; vlc -I rc -V caca %s; nametemplate=%s.mp3; needsterminal; description="MPEG Audio"; priority=4
+audio/mpeg4; vlc %s; description="MPEG-4 Audio"; test=test -n "$DISPLAY"; priority=7
+audio/mpeg4; vlc -I rc -V caca %s; needsterminal; description="MPEG-4 Audio"; priority=4
+application/mpeg4-iod; vlc %s; description="MPEG-4 Video"; test=test -n "$DISPLAY"; priority=7
+application/mpeg4-iod; vlc -I rc -V caca %s; needsterminal; description="MPEG-4 Video"; priority=4
+application/mpeg4-muxcodetable; vlc %s; description="MPEG-4 Video"; test=test -n "$DISPLAY"; priority=7
+application/mpeg4-muxcodetable; vlc -I rc -V caca %s; needsterminal; description="MPEG-4 Video"; priority=4
+
+video/x-msvideo; vlc %s; description="MS Video (AVI)"; test=test -n "$DISPLAY"; priority=4
+video/x-msvideo; vlc -I rc -V caca %s; needsterminal; description="MS Video (AVI)"; priority=3
+
+video/quicktime; vlc %s; description="Apple Quicktime Video"; test=test -n "$DISPLAY"; priority=4
+video/quicktime; vlc -I rc -V caca %s; needsterminal; description="Apple Quicktime Video"; priority=3
+
+application/ogg; vlc %s; nametemplate=%s.ogg; description="Ogg stream"; test=test -n "$DISPLAY"; priority=4
+application/ogg; vlc -I rc -V caca %s; nametemplate=%s.ogg; needsterminal; description="Ogg stream"; priority=3
+application/x-ogg; vlc %s; nametemplate=%s.ogg; description="Ogg stream"; test=test -n "$DISPLAY"; priority=4
+application/x-ogg; vlc -I rc -V caca %s; nametemplate=%s.ogg; needsterminal; description="Ogg stream"; priority=3
+video/ogg; vlc %s; description="Ogg Video"; test=test -n "$DISPLAY"; priority=4
+video/ogg; vlc -I rc -V caca %s; needsterminal; description="Ogg Video"; priority=3
+
+application/x-ms-asf-plugin; vlc %s; description="Windows Media Video"; test=test -n "$DISPLAY"; priority=4
+application/x-ms-asf-plugin; vlc -I rc -V caca %s; needsterminal; description="Windows Media Video"; priority=3
+application/x-mplayer2; vlc %s; description="Windows Media"; test=test -n "$DISPLAY"; priority=4
+application/x-mplayer2; vlc -I rc -V caca %s; needsterminal; description="Windows Media"; priority=3
diff --git a/watch b/watch
new file mode 100644 (file)
index 0000000..ed71a92
--- /dev/null
+++ b/watch
@@ -0,0 +1,3 @@
+version=4
+opts=pgpsigurlmangle=s/$/.asc/ \
+https://download.videolan.org/pub/videolan/vlc/([\d][\d\.]+[a-z]?)/vlc-([\d][\d\.]+[a-z]?)\.tar\.xz