Compare commits

..

No commits in common. "rawhide" and "f38" have entirely different histories.

12 changed files with 126 additions and 997 deletions

3
.gitignore vendored
View file

@ -1,2 +1 @@
/vlc-*.tar.bz2
/vlc-*.tar.xz
/vlc-3.0.20.tar.xz

View file

@ -1,125 +0,0 @@
From 62b5f87ed9af884298fe6e637d5fa55d0fe246a5 Mon Sep 17 00:00:00 2001
From: Marvin Scholz <epirat07@gmail.com>
Date: Thu, 5 Feb 2026 16:33:37 +0100
Subject: [PATCH 1/2] buildsystem: detect new libspatialaudio
We can use the presence of the version header to detect libspatialaudio
0.4.0 or higher. (For more granular checks in the future, the defines
from the version header can be checked)
(cherry picked from commit 93c2e6ec320016a3b3a3764db44fc7434d37d031) (edited)
edited:
- VLC 3 doesn't have meson
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
---
configure.ac | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/configure.ac b/configure.ac
index e3d5fc62790..ed8274f7c61 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2895,6 +2895,15 @@ dnl Ambisonic channel mixer and binauralizer plugin
dnl
PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
+AS_IF([test -n ${SPATIALAUDIO_CFLAGS+set}], [
+ VLC_SAVE_FLAGS
+ AX_APPEND_FLAG([$SPATIALAUDIO_CFLAGS], [CFLAGS])
+ AC_CHECK_HEADER([spatialaudio/SpatialaudioVersion.h], [
+ AX_APPEND_FLAG([-DHAVE_SPATIALAUDIOVERSION_H=1], [SPATIALAUDIO_CFLAGS])
+ ])
+ VLC_RESTORE_FLAGS
+])
+
dnl
dnl theora decoder plugin
dnl
--
GitLab
From ea82edcc10c2daad60fa4be8013eac25b7ed8f0f Mon Sep 17 00:00:00 2001
From: Marvin Scholz <epirat07@gmail.com>
Date: Thu, 5 Feb 2026 16:34:35 +0100
Subject: [PATCH 2/2] modules: spatialaudio: compat with new API
This merely makes it build with the new API and doesn't yet migrate
to newer APIs.
(cherry picked from commit a41efcaf1d0b799f0d85d2ca0c59a9c677153cc4) (rebased)
rebased:
- VLC 3 still has the spatialaudio-headphones option
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
---
.../channel_mixer/spatialaudio.cpp | 39 +++++++++++++++++--
1 file changed, 35 insertions(+), 4 deletions(-)
diff --git a/modules/audio_filter/channel_mixer/spatialaudio.cpp b/modules/audio_filter/channel_mixer/spatialaudio.cpp
index ec3b0e7489c..311ab0c462e 100644
--- a/modules/audio_filter/channel_mixer/spatialaudio.cpp
+++ b/modules/audio_filter/channel_mixer/spatialaudio.cpp
@@ -43,6 +43,23 @@
#include <spatialaudio/Ambisonics.h>
#include <spatialaudio/SpeakersBinauralizer.h>
+#ifdef HAVE_SPATIALAUDIOVERSION_H
+# include <spatialaudio/SpatialaudioVersion.h>
+#else
+# define SPATIALAUDIO_API_VERSION_MAJOR 0
+#endif
+
+#if SPATIALAUDIO_API_VERSION_MAJOR >= 2
+ using namespace spaudio;
+ using CAmbisonicBinauralizer = spaudio::AmbisonicBinauralizer;
+ using CAmbisonicDecoder = spaudio::AmbisonicDecoder;
+ using CAmbisonicProcessor = spaudio::AmbisonicProcessor;
+ using CAmbisonicZoomer = spaudio::AmbisonicZoomer;
+ using CAmbisonicSpeaker = spaudio::AmbisonicSpeaker;
+ using CBFormat = spaudio::BFormat;
+ #define kAmblib_CustomSpeakerSetUp Amblib_SpeakerSetUps::kAmblib_CustomSpeakerSetUp
+#endif
+
#define CFG_PREFIX "spatialaudio-"
#define DEFAULT_HRTF_PATH "hrtfs" DIR_SEP "dodeca_and_7channel_3DSL_HRTF.sofa"
@@ -460,10 +477,18 @@ static int Open(vlc_object_t *p_this)
p_sys->mode = filter_spatialaudio::AMBISONICS_DECODER;
unsigned i_nbChannels = aout_FormatNbChannels(&p_filter->fmt_out.audio);
- if (i_nbChannels == 1
- || !p_sys->speakerDecoder.Configure(p_sys->i_order, true,
- kAmblib_CustomSpeakerSetUp,
- i_nbChannels))
+ bool ok = false;
+ if (i_nbChannels > 1) {
+#if SPATIALAUDIO_API_VERSION_MAJOR >= 2
+ ok = p_sys->speakerDecoder.Configure(p_sys->i_order, true,
+ AMB_BLOCK_TIME_LEN, p_filter->fmt_in.audio.i_rate,
+ kAmblib_CustomSpeakerSetUp, i_nbChannels);
+#else
+ ok = p_sys->speakerDecoder.Configure(p_sys->i_order, true,
+ kAmblib_CustomSpeakerSetUp, i_nbChannels);
+#endif
+ }
+ if (!ok)
{
msg_Err(p_filter, "Error creating the Ambisonics decoder.");
delete p_sys;
@@ -509,7 +534,13 @@ static int Open(vlc_object_t *p_this)
return VLC_EGENERIC;
}
+#if SPATIALAUDIO_API_VERSION_MAJOR >= 2
+ if (!p_sys->zoomer.Configure(p_sys->i_order, true,
+ AMB_BLOCK_TIME_LEN,
+ p_filter->fmt_in.audio.i_rate))
+#else
if (!p_sys->zoomer.Configure(p_sys->i_order, true, 0))
+#endif
{
msg_Err(p_filter, "Error creating the ambisonic zoomer.");
delete p_sys;
--
GitLab

View file

@ -1,15 +0,0 @@
diff --git a/share/org.videolan.vlc.appdata.xml.in.in b/share/org.videolan.vlc.appdata.xml.in.in
index cc9c39a..3c55620 100644
--- a/share/org.videolan.vlc.appdata.xml.in.in
+++ b/share/org.videolan.vlc.appdata.xml.in.in
@@ -18,8 +18,9 @@
<url type="bugtracker">https://trac.videolan.org/vlc/</url>
<url type="donation">https://www.videolan.org/contribute.html</url>
<releases>
- <release version="@VERSION@" />
+ <release version="@VERSION@" date="@DATE@" />
</releases>
+ <replaces><id>org.videolan.VLC</id></replaces>
<provides>
<library>libvlc.so.5</library>
</provides>

View file

@ -1,23 +0,0 @@
Based on the Flathub patch but only skip the mtime test when in an ostree
(different versions have used 0 or 1 as the mtime for all files).
https://github.com/flathub/org.videolan.VLC/blob/master/vlc-ignore-time-for-cache.patch
diff --git a/src/modules/bank.c b/src/modules/bank.c
index 2e67a0d07e..ab2915fbb7 100644
--- a/src/modules/bank.c
+++ b/src/modules/bank.c
@@ -275,7 +275,8 @@ static int AllocatePluginFile (module_bank_t *bank, const char *abspath,
plugin = vlc_cache_lookup(&bank->cache, relpath);
if (plugin != NULL
- && (plugin->mtime != (int64_t)st->st_mtime
+ && (((int64_t)st->st_mtime > (int64_t)1
+ && plugin->mtime != (int64_t)st->st_mtime)
|| plugin->size != (uint64_t)st->st_size))
{
msg_Err(bank->obj, "stale plugins cache: modified %s",
plugin->abspath);
--
2.21.0

View file

@ -1,239 +0,0 @@
From 1c27f57498b7e0f52acc7b4520c4172a2462632d Mon Sep 17 00:00:00 2001
From: Juliane de Sartiges <jill@videolabs.io>
Date: Wed, 27 Jul 2022 09:32:25 +0200
Subject: [PATCH] freerdp: update to freerdp2 api
---
configure.ac | 2 +-
modules/access/rdp.c | 85 ++++++++++++++++++++------------------------
2 files changed, 40 insertions(+), 47 deletions(-)
diff --git a/configure.ac b/configure.ac
index b454198157..cb23a9b2ab 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2094,7 +2094,7 @@ PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client su
dnl RDP/Remote Desktop access module
dnl
-PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
+PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp2 >= 2.0.0], (RDP/Remote Desktop client support) )
dnl
dnl Real RTSP plugin
diff --git a/modules/access/rdp.c b/modules/access/rdp.c
index 0c39663c64..04ae005938 100644
--- a/modules/access/rdp.c
+++ b/modules/access/rdp.c
@@ -45,18 +45,6 @@
# include <freerdp/version.h>
#endif
-#if !defined(FREERDP_VERSION_MAJOR) || \
- (defined(FREERDP_VERSION_MAJOR) && !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 1)))
-# define SoftwareGdi sw_gdi
-# define Fullscreen fullscreen
-# define ServerHostname hostname
-# define Username username
-# define Password password
-# define ServerPort port
-# define EncryptionMethods encryption
-# define ContextSize context_size
-#endif
-
#include <errno.h>
#ifdef HAVE_POLL
# include <poll.h>
@@ -75,6 +63,8 @@
#define CFG_PREFIX "rdp-"
+#define FREERDP_PIXEL_BPP(_format) (_format >> 24)
+
/*****************************************************************************
* Module descriptor
*****************************************************************************/
@@ -139,11 +129,12 @@ typedef struct vlcrdp_context_t vlcrdp_context_t;
/* updates handlers */
-static void desktopResizeHandler( rdpContext *p_context )
+static BOOL desktopResizeHandler( rdpContext *p_context )
{
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_context;
demux_sys_t *p_sys = p_vlccontext->p_demux->p_sys;
rdpGdi *p_gdi = p_context->gdi;
+ int i_colordepth = FREERDP_PIXEL_BPP( p_gdi->dstFormat );
if ( p_sys->es )
{
@@ -151,11 +142,13 @@ static void desktopResizeHandler( rdpContext *p_context )
p_sys->es = NULL;
}
- /* Now init and fill es format */
vlc_fourcc_t i_chroma;
- switch( p_gdi->bytesPerPixel )
+ /* Now init and fill es format */
+ switch ( i_colordepth )
{
default:
+ msg_Dbg( p_vlccontext->p_demux, "invalid color depth %d", i_colordepth);
+ /* fallthrough */
case 16:
i_chroma = VLC_CODEC_RGB16;
break;
@@ -163,7 +156,7 @@ static void desktopResizeHandler( rdpContext *p_context )
i_chroma = VLC_CODEC_RGB24;
break;
case 32:
- i_chroma = VLC_CODEC_RGB32;
+ i_chroma = VLC_CODEC_ARGB;
break;
}
es_format_t fmt;
@@ -176,7 +169,7 @@ static void desktopResizeHandler( rdpContext *p_context )
fmt.video.i_height = p_gdi->height;
fmt.video.i_frame_rate_base = 1000;
fmt.video.i_frame_rate = 1000 * p_sys->f_fps;
- p_sys->i_framebuffersize = p_gdi->width * p_gdi->height * p_gdi->bytesPerPixel;
+ p_sys->i_framebuffersize = p_gdi->width * p_gdi->height * (i_colordepth >> 3);
if ( p_sys->p_block )
p_sys->p_block = block_Realloc( p_sys->p_block, 0, p_sys->i_framebuffersize );
@@ -184,20 +177,21 @@ static void desktopResizeHandler( rdpContext *p_context )
p_sys->p_block = block_Alloc( p_sys->i_framebuffersize );
p_sys->es = es_out_Add( p_vlccontext->p_demux->out, &fmt );
+ return TRUE;
}
-static void beginPaintHandler( rdpContext *p_context )
+static BOOL beginPaintHandler( rdpContext *p_context )
{
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_context;
demux_sys_t *p_sys = p_vlccontext->p_demux->p_sys;
rdpGdi *p_gdi = p_context->gdi;
- p_gdi->primary->hdc->hwnd->invalid->null = 1;
- p_gdi->primary->hdc->hwnd->ninvalid = 0;
+ p_gdi->primary->hdc->hwnd->invalid->null = TRUE;
if ( ! p_sys->p_block && p_sys->i_framebuffersize )
p_sys->p_block = block_Alloc( p_sys->i_framebuffersize );
+ return TRUE;
}
-static void endPaintHandler( rdpContext *p_context )
+static BOOL endPaintHandler( rdpContext *p_context )
{
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_context;
demux_sys_t *p_sys = p_vlccontext->p_demux->p_sys;
@@ -208,11 +202,12 @@ static void endPaintHandler( rdpContext *p_context )
p_sys->p_block->i_buffer = p_sys->i_framebuffersize;
memcpy( p_sys->p_block->p_buffer, p_gdi->primary_buffer, p_sys->p_block->i_buffer );
}
+ return TRUE;
}
/* instance handlers */
-static bool preConnectHandler( freerdp *p_instance )
+static BOOL preConnectHandler( freerdp *p_instance )
{
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_instance->context;
demux_sys_t *p_sys = p_vlccontext->p_demux->p_sys;
@@ -229,49 +224,54 @@ static bool preConnectHandler( freerdp *p_instance )
p_instance->settings->EncryptionMethods =
var_InheritBool( p_vlccontext->p_demux, CFG_PREFIX "encrypt" );
- return true;
+ return TRUE;
}
-static bool postConnectHandler( freerdp *p_instance )
+static BOOL postConnectHandler( freerdp *p_instance )
{
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_instance->context;
msg_Dbg( p_vlccontext->p_demux, "connected to desktop %dx%d (%d bpp)",
-#if defined(FREERDP_VERSION_MAJOR) && (FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 1))
p_instance->settings->DesktopWidth,
p_instance->settings->DesktopHeight,
p_instance->settings->ColorDepth
-#else
- p_instance->settings->width,
- p_instance->settings->height,
- p_instance->settings->color_depth
-#endif
);
p_instance->update->DesktopResize = desktopResizeHandler;
p_instance->update->BeginPaint = beginPaintHandler;
p_instance->update->EndPaint = endPaintHandler;
+ UINT32 format;
+ switch ( p_instance->settings->ColorDepth )
+ {
+ default:
+ msg_Dbg( p_vlccontext->p_demux, "no valid pixel format found for color depth %d bpp", p_instance->settings->ColorDepth);
+ /* fallthrough */
+ case 16:
+ format = PIXEL_FORMAT_RGB16;
+ break;
+ case 24:
+ format = PIXEL_FORMAT_RGB24;
+ break;
+ case 32:
+ format = PIXEL_FORMAT_ARGB32;
+ break;
+ }
gdi_init( p_instance,
- CLRBUF_16BPP |
-#if defined(FREERDP_VERSION_MAJOR) && defined(FREERDP_VERSION_MINOR) && \
- !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 2))
- CLRBUF_24BPP |
-#endif
- CLRBUF_32BPP, NULL );
+ format );
desktopResizeHandler( p_instance->context );
- return true;
+ return TRUE;
}
-static bool authenticateHandler( freerdp *p_instance, char** ppsz_username,
+static BOOL authenticateHandler( freerdp *p_instance, char** ppsz_username,
char** ppsz_password, char** ppsz_domain )
{
VLC_UNUSED(ppsz_domain);
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_instance->context;
*ppsz_username = var_InheritString( p_vlccontext->p_demux, CFG_PREFIX "user" );
*ppsz_password = var_InheritString( p_vlccontext->p_demux, CFG_PREFIX "password" );
- return true;
+ return TRUE;
}
/*****************************************************************************
@@ -432,10 +432,6 @@ static int Open( vlc_object_t *p_this )
if ( p_sys->f_fps <= 0 ) p_sys->f_fps = 1.0;
p_sys->i_frame_interval = 1000000 / p_sys->f_fps;
-#if FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR < 2
- freerdp_channels_global_init();
-#endif
-
p_sys->p_instance = freerdp_new();
if ( !p_sys->p_instance )
{
@@ -512,9 +508,6 @@ static void Close( vlc_object_t *p_this )
freerdp_disconnect( p_sys->p_instance );
freerdp_free( p_sys->p_instance );
-#if FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR < 2
- freerdp_channels_global_uninit();
-#endif
if ( p_sys->p_block )
block_Release( p_sys->p_block );
--
2.45.2

View file

@ -1,17 +0,0 @@
The addition of gstvideodmabufpool.h, which depends on gstvideopool.h,
causes this include to pull things in the wrong order.
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10411
diff -up ./modules/codec/gstreamer/gstvlcvideopool.h.orig ./modules/codec/gstreamer/gstvlcvideopool.h
--- ./modules/codec/gstreamer/gstvlcvideopool.h.orig 2025-12-23 05:49:20.000000000 -0500
+++ ./modules/codec/gstreamer/gstvlcvideopool.h 2026-02-10 01:45:40.557003527 -0500
@@ -28,7 +28,7 @@
#define VLC_GST_VIDEO_POOL_H
#include <gst/gstbufferpool.h>
-#include <gst/video/gstvideopool.h>
+#include <gst/video/video.h>
#include "gstvlcpictureplaneallocator.h"

View file

@ -1,49 +0,0 @@
diff --git a/configure.ac b/configure.ac
index 78b9ce2..b9c1563 100644
--- a/configure.ac
+++ b/configure.ac
@@ -910,9 +910,9 @@ AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
dnl
-dnl Domain name i18n support via GNU libidn
+dnl Domain name i18n support via GNU libidn2
dnl
-PKG_CHECK_MODULES([IDN], [libidn], [
+PKG_CHECK_MODULES([IDN], [libidn2], [
have_libidn="yes"
AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
], [
diff --git a/src/text/url.c b/src/text/url.c
index 2eb4b8d..467b7f3 100644
--- a/src/text/url.c
+++ b/src/text/url.c
@@ -873,7 +873,7 @@ char *vlc_uri_fixup(const char *str)
}
#if defined (HAVE_IDN)
-# include <idna.h>
+# include <idn2.h>
#elif defined (_WIN32)
# include <windows.h>
# include <vlc_charset.h>
@@ -914,16 +914,13 @@ static char *vlc_idna_to_ascii (const char *idn)
#if defined (HAVE_IDN)
char *adn;
- switch (idna_to_ascii_8z(idn, &adn, IDNA_ALLOW_UNASSIGNED))
+ switch (idn2_to_ascii_8z(idn, &adn, IDN2_ALLOW_UNASSIGNED|IDN2_NFC_INPUT|IDN2_NONTRANSITIONAL))
{
- case IDNA_SUCCESS:
+ case IDN2_OK:
return adn;
- case IDNA_MALLOC_ERROR:
+ case IDN2_MALLOC:
errno = ENOMEM;
return NULL;
- case IDNA_DLOPEN_ERROR:
- errno = ENOSYS;
- return NULL;
default:
errno = EINVAL;
return NULL;

View file

@ -1,13 +0,0 @@
diff --git a/modules/services_discovery/upnp.hpp b/modules/services_discovery/upnp.hpp
index b90e3cf..bc17189 100644
--- a/modules/services_discovery/upnp.hpp
+++ b/modules/services_discovery/upnp.hpp
@@ -37,7 +37,7 @@
#include <vlc_common.h>
#include <vlc_url.h>
-#if UPNP_VERSION < 10800
+#if (UPNP_VERSION < 10800) || (UPNP_VERSION >= 11800)
typedef void* UpnpEventPtr;
#else
typedef const void* UpnpEventPtr;

View file

@ -1,11 +0,0 @@
--- ./share/lua/intf/modules/httprequests.lua.Orig 2023-08-05 06:03:51.000000000 -0400
+++ ./share/lua/intf/modules/httprequests.lua 2024-05-28 14:02:41.569002601 -0400
@@ -34,7 +34,7 @@
what = common.us_tonumber(what)
end
if type(what) == "number" then
- return math.floor(what*math.pow(10,precision)+0.5) / math.pow(10,precision)
+ return math.floor(what*(10^precision)+0.5) / (10^precision)
end
return nil
end

View file

@ -1 +1 @@
SHA512 (vlc-3.0.23.tar.xz) = 557e4ac76a17158877a4a86f27c9a5bc189b7ac559687552117dc8b44961d1172cf93bf8e1eb70fecb05999bdfc3f69ab79b55126c71486fe3a8cdfbf92e6df6
SHA512 (vlc-3.0.20.tar.xz) = 02e58fb52dd75bf483ac4b298aecf86463b13d4782173d164adba6e4552d9262ff5e2ee1cbe1bce2c8a809801b79f328c6a8c475d34ae62aefaea02ae5ade406

View file

@ -0,0 +1,18 @@
avcodec_vaapi requires ffmpeg-4, but other vaapi modules can be built
diff --git a/configure.ac b/configure.ac
index 69beb77..c7f7142 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2454,9 +2454,9 @@ AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
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])
], [
- AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
+ AC_MSG_NOTICE([libva is present but libavcodec/vaapi.h is missing ])
])
])
VLC_RESTORE_FLAGS

608
vlc.spec
View file

@ -1,5 +1,6 @@
# codecs which cannot be shipped in Fedora proper
%bcond freeworld 0
%bcond faad2 %{with freeworld}
%bcond x264 %{with freeworld}
%bcond x265 %{with freeworld}
@ -11,19 +12,11 @@
# not compatible with libplacebo-6
# https://code.videolan.org/videolan/vlc/-/merge_requests/3950
%bcond placebo %[!(0%{?fedora} >= 39 || 0%{?rhel} >= 10)]
# libpostproc was removed in FFmpeg 8 (F44+)
%bcond postproc %[!(0%{?fedora} >= 44 || 0%{?rhel} >= 11)]
# disabled due to various issues
%bcond projectm 0
# some dependencies are not yet in EPEL 10
%bcond daala 1
%bcond lirc 1
%bcond sdl %[!(0%{?rhel} >= 10)]
%ifnarch s390x
# retired from F43, was never in EPEL 9+
%bcond crystalhd 0
%bcond crystalhd %[0%{?fedora} || 0%{?rhel} < 9]
%bcond ieee1394 1
%endif
@ -31,54 +24,23 @@
%bcond vpl 1
%endif
#global commit f9020c4df073c861a28f0cda5c6c5dccb58a49ef
#global gitdate 20251124
%global app_id org.videolan.vlc
Name: vlc
Epoch: 1
Version: 3.0.23
Release: %autorelease
Version: 3.0.20
Release: %autorelease -b 3
Summary: The cross-platform open-source multimedia framework, player and server
License: GPL-2.0-or-later AND LGPL-2.1-or-later AND BSD-2-Clause AND BSD-3-Clause
URL: https://www.videolan.org
%if 0%{?commit:1}
Source: https://code.videolan.org/videolan/vlc/-/archive/%{commit}/vlc-%{commit}.tar.bz2
%else
Source: https://get.videolan.org/vlc/%{version}/vlc-%{version}.tar.xz
%endif
Source: macros.vlc
## upstream patches
# spatialaudio: fix compilation with libspatialaudio 4.0
Patch: 8921.patch
## backported patches from master
# freerdp: update to freerdp 2.0 api (#2278)
Patch: freerdp2.patch
## upstreamable patches
## downstream patches
Source: macros.vlc
# https://fedoraproject.org/wiki/Changes/CryptoPolicy
Patch: 0001-Use-SYSTEM-wide-ciphers-for-gnutls.patch
# Fix building with fdk-aac-2.0; backport for 3.0 from flathub
Patch: fdk-aac2.patch
# separate avcodec-vaapi conditional from other vaapi modules
Patch: vaapi-without-ffmepg4.patch
# port from intel-mediasdk to oneVPL
Patch: oneVPL.patch
# fix appstreamcli validate to show in Software (rhbz#2258611)
Patch: appdata.patch
# port from libidn to libidn2
Patch: libidn2.patch
# fix deprecated lua math functions (rhbz#2280091)
Patch: lua-math.patch
# avoid "stale plugin cache" warnings in flatpaks
Patch: flatpak-cache.patch
# fix build with gstreamer-1.28
Patch: gstreamer128.patch
# fix build with libupnp-1.18
Patch: libupnp118.patch
Patch: oneVPL.patch
%{load:%{S:1}}
%global __provides_exclude_from ^%{vlc_plugindir}/.*$
@ -91,9 +53,11 @@ BuildRequires: gcc-c++
BuildRequires: desktop-file-utils
BuildRequires: libappstream-glib
#BuildRequires: a52dec-devel
BuildRequires: a52dec-devel
BuildRequires: aalib-devel
%if %{with faad2}
BuildRequires: faad2-devel
%endif
BuildRequires: hostname
BuildRequires: kernel-headers
%if %{with crystalhd}
@ -104,25 +68,21 @@ BuildRequires: libjpeg-devel
BuildRequires: libmad-devel
BuildRequires: libmpcdec-devel
BuildRequires: libpng-devel
%if %{with lirc}
BuildRequires: lirc-devel
%endif
BuildRequires: live555-devel
BuildRequires: lua-devel
BuildRequires: pkgconfig(alsa) >= 1.0.24
BuildRequires: pkgconfig(aom)
BuildRequires: pkgconfig(aribb24)
BuildRequires: pkgconfig(aribb25)
#BuildRequires: pkgconfig(aribb24)
#BuildRequires: pkgconfig(aribb25)
%if %{with asdcp}
BuildRequires: pkgconfig(asdcplib)
%endif
BuildRequires: pkgconfig(avahi-client) >= 0.6
#BuildRequires: pkgconfig(breakpad-client)
BuildRequires: pkgconfig(caca) >= 0.99.beta14
%if %{with daala}
BuildRequires: pkgconfig(daaladec)
BuildRequires: pkgconfig(daalaenc)
%endif
BuildRequires: pkgconfig(dav1d)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(dvdnav) > 4.9.0
@ -134,7 +94,7 @@ BuildRequires: pkgconfig(flac)
#BuildRequires: pkgconfig(fluidlite)
BuildRequires: pkgconfig(fluidsynth) >= 1.1.2
BuildRequires: pkgconfig(fontconfig) >= 2.11
BuildRequires: pkgconfig(freerdp2)
#BuildRequires: pkgconfig(freerdp)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(fribidi)
BuildRequires: pkgconfig(gl)
@ -156,26 +116,24 @@ BuildRequires: pkgconfig(libchromaprint)
%if %{with ieee1394}
BuildRequires: pkgconfig(libdc1394-2) >= 2.1.0
%endif
#BuildRequires: pkgconfig(libdca) >= 0.0.5
BuildRequires: pkgconfig(libdca) >= 0.0.5
#BuildRequires: pkgconfig(libdsm) >= 0.2.0
BuildRequires: pkgconfig(libdvbpsi)
BuildRequires: pkgconfig(libebml) >= 1.3.6
BuildRequires: pkgconfig(libgme)
#BuildRequires: pkgconfig(libgoom2)
BuildRequires: pkgconfig(libidn2)
BuildRequires: pkgconfig(libidn)
BuildRequires: pkgconfig(libmatroska)
BuildRequires: pkgconfig(libmodplug) >= 0.8.9.0
#BuildRequires: pkgconfig(libmpeg2) >= 0.3.2
BuildRequires: pkgconfig(libmpeg2) >= 0.3.2
BuildRequires: pkgconfig(libmpg123)
BuildRequires: pkgconfig(libmtp) >= 1.0.0
BuildRequires: pkgconfig(libnfs) >= 1.10.0
BuildRequires: pkgconfig(libnotify) pkgconfig(gtk+-3.0)
%if %{with placebo}
BuildRequires: pkgconfig(libplacebo) < 6
BuildRequires: pkgconfig(libplacebo) >= 0.2.1
%endif
%if %{with postproc}
BuildRequires: pkgconfig(libpostproc)
%endif
%if %{with projectm}
BuildRequires: pkgconfig(libprojectM)
%endif
@ -214,9 +172,8 @@ BuildRequires: pkgconfig(Qt5Svg) >= 5.5
BuildRequires: pkgconfig(Qt5Widgets) >= 5.5
BuildRequires: pkgconfig(Qt5X11Extras) >= 5.5
BuildRequires: pkgconfig(samplerate)
%if %{with sdl}
BuildRequires: pkgconfig(schroedinger-1.0) >= 1.0.10
BuildRequires: pkgconfig(SDL_image) >= 1.2.10
%endif
#BuildRequires: pkgconfig(shine) >= 3.0.0
BuildRequires: pkgconfig(shout) >= 2.1
BuildRequires: pkgconfig(smbclient)
@ -267,14 +224,12 @@ Requires: %{name}-gui-qt%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: %{name}-gui-skins2%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: %{name}-plugin-ffmpeg%{?_isa} = %{epoch}:%{version}-%{release}
Requires: hicolor-icon-theme
%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10
Requires: kde-filesystem
%else
Requires: kf5-filesystem
Requires: hicolor-icon-theme
%if %{undefined flatpak}
Requires: kf5-filesystem
%endif
# For xdg-screensaver (libxdg_screensaver_plugin)
Recommends: xdg-utils xset
Recommends: xdg-utils
%description
@ -317,15 +272,13 @@ Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-video-out%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugin-lua%{?_isa} = %{epoch}:%{version}-%{release}
Requires: (%{name}-plugin-pipewire%{?_isa} if pipewire)
Requires: (%{name}-plugin-pulseaudio%{?_isa} = %{epoch}:%{version}-%{release} if (pipewire-pulseaudio or pulseaudio))
Requires: (qt5-qtwayland%{?_isa} if libwayland-client%{?_isa})
Recommends: %{name}-plugins-extra%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: %{name}-plugin-ffmpeg%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: %{name}-plugin-visualization%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: (%{name}-plugin-gnome%{?_isa} = %{epoch}:%{version}-%{release} if gnome-keyring)
Recommends: (%{name}-plugin-kde%{?_isa} = %{epoch}:%{version}-%{release} if (kf6-kwallet or kf5-wallet))
Recommends: (%{name}-plugin-kde%{?_isa} = %{epoch}:%{version}-%{release} if kf5-kwallet)
Recommends: (%{name}-plugin-notify%{?_isa} = %{epoch}:%{version}-%{release} if gtk3)
Recommends: (%{name}-plugin-pulseaudio%{?_isa} = %{epoch}:%{version}-%{release} or vlc-plugin-pipewire%{?_isa})
%description gui-qt
VLC media player Qt graphical interface
@ -334,45 +287,10 @@ Summary: VLC media player Skins2 GUI
Requires: %{name}-cli%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-gui-qt%{?_isa} = %{epoch}:%{version}-%{release}
Requires: gnu-free-sans-fonts
Requires: gnu-free-sans-fonts
%description gui-skins2
VLC media player skinnable graphical interface
%package plugins-all
Summary: VLC media player - all plugins
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-extra%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-video-out%{?_isa} = %{epoch}:%{version}-%{release}
%if %{with crystalhd}
Requires: %{name}-plugin-crystalhd%{?_isa} = %{epoch}:%{version}-%{release}
%endif
Requires: %{name}-plugin-ffmpeg%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugin-fluidsynth%{?_isa} = %{epoch}:%{version}-%{release}
Requires: (%{name}-plugin-gnome%{?_isa} = %{epoch}:%{version}-%{release} if gnome-keyring)
Requires: %{name}-plugin-gstreamer%{?_isa} = %{epoch}:%{version}-%{release}
%if %{with ieee1394}
Requires: %{name}-plugin-ieee1394%{?_isa} = %{epoch}:%{version}-%{release}
%endif
Requires: (%{name}-plugin-jack%{?_isa} = %{epoch}:%{version}-%{release} if (jack-audio-connection-kit or pipewire-jack-audio-connection-kit))
Requires: (%{name}-plugin-kde%{?_isa} = %{epoch}:%{version}-%{release} if (kf6-kwallet or kf5-wallet))
Requires: %{name}-plugin-lua%{?_isa} = %{epoch}:%{version}-%{release}
Requires: (%{name}-plugin-notify%{?_isa} = %{epoch}:%{version}-%{release} if gtk3)
%if %{with opencv}
Requires: %{name}-plugin-opencv%{?_isa} = %{epoch}:%{version}-%{release}
%endif
Requires: (%{name}-plugin-pulseaudio%{?_isa} = %{epoch}:%{version}-%{release} if (pipewire-pulseaudio or pulseaudio))
Requires: %{name}-plugin-rdp%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugin-samba%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugin-svg%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugin-visualization%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugin-vnc%{?_isa} = %{epoch}:%{version}-%{release}
# separate plugins
Requires: %{name}-plugin-bittorrent%{?_isa}
Requires: %{name}-plugin-pause-click%{?_isa}
Requires: (%{name}-plugin-pipewire%{?_isa} if pipewire)
%description plugins-all
Installs all available plugins for VLC media player
%package plugins-base
Summary: VLC media player core
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
@ -385,26 +303,9 @@ Requires: google-noto-serif-vf-fonts
%endif
Recommends: libv4l%{?_isa}
Conflicts: %{name}-core < %{epoch}:%{version}-%{release}
%if %{without crystalhd}
Obsoletes: %{name}-plugin-crystalhd < %{epoch}:%{version}-%{release}
%endif
%if %{without ieee1394}
Obsoletes: %{name}-plugin-ieee1394 < %{epoch}:%{version}-%{release}
%endif
%if %{without opencv}
Obsoletes: %{name}-plugin-opencv < %{epoch}:%{version}-%{release}
%endif
%description plugins-base
VLC media player core components
%package plugins-extra
Summary: VLC media player extra plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Conflicts: %{name}-plugins-base < %{epoch}:%{version}-%{release}
%description plugins-extra
VLC media player additional components
# libcrystalhd requires crystalhd-firmware, is for specific hardware
%if %{with crystalhd}
%package plugin-crystalhd
@ -422,7 +323,6 @@ Crystal HD plugin for VLC media player
Summary: VLC media player FFmpeg plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-video-out%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-ffmpeg
FFmpeg support plugins for VLC media player
@ -431,7 +331,7 @@ FFmpeg support plugins for VLC media player
Summary: VLC media player MIDI playback plugin
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: fluid-soundfont-gm
Recommends: fluid-soundfont-gm
%description plugin-fluidsynth
MIDI playback support plugin for VLC media player
@ -470,7 +370,7 @@ IEEE 1394 (FireWire) plugins for VLC media player
Summary: VLC media player JACK plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
Suggests: pipewire-jack-audio-connection-kit
Suggests: pipewire-jack-audio-connection-kit
%description plugin-jack
PulseAudio plugins for VLC media player
@ -518,14 +418,6 @@ Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-pulseaudio
PulseAudio plugins for VLC media player
# requires freerdp2, for RDP remote desktop support
%package plugin-rdp
Summary: VLC media player RDP plugin
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-rdp
RDP access plugin for VLC media player
# requires libsmbclient, for SMB protocol support
%package plugin-samba
Summary: VLC media player SMB plugin
@ -573,7 +465,7 @@ developing applications and plugins that use %{name}.
%prep
%autosetup -p1 %{?commit:-n %{name}-%{commit}}
%autosetup -p1
rm -f aclocal.m4 m4/lib*.m4 m4/lt*.m4
./bootstrap
@ -581,16 +473,13 @@ rm -f aclocal.m4 m4/lib*.m4 m4/lt*.m4
# switch "Allow automatic icon change" to opt-in
sed -i -e 's|\("qt-icon-change",\) true|\1 false|' modules/gui/qt/qt.cpp
# fill in release date from appstream.patch
# https: https://code.videolan.org/videolan/vlc/-/merge_requests/1555 (4.0)
sed -e 's|@DATE@|%(date +%F -r %{S:0})|' \
-e 's|http:|https:|g' \
-i share/%{app_id}.appdata.xml.in.in
# sync appstream app-id with Flathub
sed -i -e 's|org\.videolan\.vlc|org.videolan.VLC|' share/vlc.appdata.xml.in.in
%if 0%{?flatpak}
# icons are renamed in order to be exported
sed -i -e '/icon_theme_load/s|"vlc"|"%{app_id}"|' modules/notify/notify.c
sed -i -e '/fromTheme/s|"vlc"|"%{app_id}"|' \
sed -i -e '/icon_theme_load/s|"vlc"|"org.videolan.VLC"|' modules/notify/notify.c
sed -i -e '/fromTheme/s|"vlc"|"org.videolan.VLC"|' \
modules/gui/qt/main_interface.cpp modules/gui/qt/qt.cpp
%endif
@ -630,7 +519,7 @@ export LIVE555_PREFIX=%{_prefix}
--enable-libcddb \
--enable-screen \
--enable-vnc \
--enable-freerdp \
--disable-freerdp \
--enable-realrtsp \
--enable-asdcp%{!?with_asdcp:=no} \
\
@ -653,17 +542,17 @@ export LIVE555_PREFIX=%{_prefix}
--enable-libva \
--enable-avformat \
--enable-swscale \
--enable-postproc%{!?with_postproc:=no} \
--enable-faad \
--enable-postproc \
--enable-faad%{!?with_faad2:=no} \
--enable-aom \
--enable-dav1d \
--enable-vpx \
--enable-twolame \
--enable-fdkaac \
--disable-a52 \
--disable-dca \
--enable-a52 \
--enable-dca \
--enable-flac \
--disable-libmpeg2 \
--enable-libmpeg2 \
--enable-vorbis \
--enable-tremor \
--enable-speex \
@ -671,7 +560,8 @@ export LIVE555_PREFIX=%{_prefix}
--enable-spatialaudio \
--enable-theora \
--enable-oggspots \
--enable-daala%{!?with_daala:=no} \
--enable-daala \
--enable-schroedinger \
--enable-png \
--enable-jpeg \
--disable-bpg \
@ -685,8 +575,8 @@ export LIVE555_PREFIX=%{_prefix}
--enable-zvbi \
--disable-telx \
--enable-libass \
--enable-aribsub \
--enable-aribb25 \
--disable-aribsub \
--disable-aribb25 \
--enable-kate \
--enable-tiger \
--enable-css \
@ -696,7 +586,7 @@ export LIVE555_PREFIX=%{_prefix}
--enable-xvideo \
--enable-vdpau \
--enable-wayland \
--enable-sdl-image%{!?with_sdl:=no} \
--enable-sdl-image \
--enable-freetype \
--enable-fribidi \
--enable-harfbuzz \
@ -721,7 +611,7 @@ export LIVE555_PREFIX=%{_prefix}
--enable-qt \
--enable-skins2 \
--disable-libtar \
--enable-lirc%{!?with_lirc:=no} \
--enable-lirc \
--enable-srt \
\
--disable-goom \
@ -748,8 +638,6 @@ export LIVE555_PREFIX=%{_prefix}
# clean unused-direct-shlib-dependencies
sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool
# avoid redefinition warnings
sed -i -e '/^#define _FORTIFY_SOURCE/d' config.h
%make_build
@ -789,7 +677,7 @@ rm -rf %{buildroot}%{_docdir}/vlc
%check
desktop-file-validate %{buildroot}%{_datadir}/applications/vlc.desktop
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/%{app_id}.appdata.xml
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/vlc.appdata.xml
# chroma_copy_test fails on s390x (big endian?)
%ifnarch s390x
@ -811,7 +699,7 @@ make check
%{_datadir}/icons/hicolor/*/apps/%{name}.png
%{_datadir}/solid/actions/%{name}-*.desktop
%{_datadir}/vlc/utils/
%{_metainfodir}/%{app_id}.appdata.xml
%{_metainfodir}/%{name}.appdata.xml
%files libs -f %{name}.lang
%license COPYING.LIB
@ -844,340 +732,74 @@ make check
%{vlc_plugindir}/gui/libskins2_plugin.so
%{_datadir}/vlc/skins2/
%files plugins-all
%files plugins-base
%license COPYING COPYING.LIB
%dir %{vlc_plugindir}/access/
%dir %{vlc_plugindir}/access_output/
%dir %{vlc_plugindir}/audio_filter/
%dir %{vlc_plugindir}/audio_mixer/
%dir %{vlc_plugindir}/audio_output/
%dir %{vlc_plugindir}/codec/
%dir %{vlc_plugindir}/control/
%dir %{vlc_plugindir}/demux/
%exclude %{vlc_plugindir}/access/libaccess_jack_plugin.so
%exclude %{vlc_plugindir}/access/libavio_plugin.so
%if %{with ieee1394}
%exclude %{vlc_plugindir}/access/libdc1394_plugin.so
%exclude %{vlc_plugindir}/access/libdv1394_plugin.so
%endif
%exclude %{vlc_plugindir}/access/libpulsesrc_plugin.so
%exclude %{vlc_plugindir}/access/libsmb_plugin.so
%exclude %{vlc_plugindir}/access/libvnc_plugin.so
%{vlc_plugindir}/access/
%{vlc_plugindir}/access_output/
%{vlc_plugindir}/audio_filter/
%{vlc_plugindir}/audio_mixer/
%exclude %{vlc_plugindir}/audio_output/libjack_plugin.so
%exclude %{vlc_plugindir}/audio_output/libpulse_plugin.so
%{vlc_plugindir}/audio_output/
%exclude %{vlc_plugindir}/codec/libavcodec_plugin.so
%if %{with crystalhd}
%exclude %{vlc_plugindir}/codec/libcrystalhd_plugin.so
%endif
%exclude %{vlc_plugindir}/codec/libfluidsynth_plugin.so
%exclude %{vlc_plugindir}/codec/libgstdecode_plugin.so
%exclude %{vlc_plugindir}/codec/libsvgdec_plugin.so
%{vlc_plugindir}/codec/
%exclude %{vlc_plugindir}/control/libxcb_hotkeys_plugin.so
%{vlc_plugindir}/control/
%exclude %{vlc_plugindir}/demux/libavformat_plugin.so
%{vlc_plugindir}/demux/
%dir %{vlc_plugindir}/gui/
%dir %{vlc_plugindir}/keystore/
%dir %{vlc_plugindir}/logger/
%dir %{vlc_plugindir}/meta_engine/
%dir %{vlc_plugindir}/misc/
%dir %{vlc_plugindir}/mux/
%exclude %{vlc_plugindir}/keystore/libkwallet_plugin.so
%exclude %{vlc_plugindir}/keystore/libsecret_plugin.so
%{vlc_plugindir}/keystore/
%{vlc_plugindir}/logger/
%{vlc_plugindir}/meta_engine/
%{vlc_plugindir}/misc/
%{vlc_plugindir}/mux/
%dir %{vlc_plugindir}/notify/
%dir %{vlc_plugindir}/packetizer/
%dir %{vlc_plugindir}/services_discovery/
%dir %{vlc_plugindir}/spu/
%dir %{vlc_plugindir}/stream_extractor/
%dir %{vlc_plugindir}/stream_filter/
%dir %{vlc_plugindir}/stream_out/
%dir %{vlc_plugindir}/text_renderer/
%exclude %{vlc_plugindir}/packetizer/libpacketizer_avparser_plugin.so
%{vlc_plugindir}/packetizer/
%exclude %{vlc_plugindir}/services_discovery/libpulselist_plugin.so
%exclude %{vlc_plugindir}/services_discovery/libxcb_apps_plugin.so
%{vlc_plugindir}/services_discovery/
%{vlc_plugindir}/spu/
%{vlc_plugindir}/stream_extractor/
%{vlc_plugindir}/stream_filter/
%exclude %{vlc_plugindir}/stream_out/libstream_out_chromaprint_plugin.so
%{vlc_plugindir}/stream_out/
%exclude %{vlc_plugindir}/text_renderer/libsvg_plugin.so
%{vlc_plugindir}/text_renderer/
%dir %{vlc_plugindir}/vaapi/
%dir %{vlc_plugindir}/vdpau/
%dir %{vlc_plugindir}/video_chroma/
%dir %{vlc_plugindir}/video_filter/
%dir %{vlc_plugindir}/video_output/
%dir %{vlc_plugindir}/video_splitter/
%dir %{vlc_plugindir}/visualization/
%dir %{_datadir}/vlc/
%{vlc_plugindir}/access/libaccess_alsa_plugin.so
%{vlc_plugindir}/access/libaccess_concat_plugin.so
%{vlc_plugindir}/access/libaccess_imem_plugin.so
%{vlc_plugindir}/access/libaccess_mms_plugin.so
%{vlc_plugindir}/access/libaccess_realrtsp_plugin.so
%{vlc_plugindir}/access/libattachment_plugin.so
%{vlc_plugindir}/access/libdtv_plugin.so
%{vlc_plugindir}/access/libfilesystem_plugin.so
%{vlc_plugindir}/access/libftp_plugin.so
%{vlc_plugindir}/access/libhttp_plugin.so
%{vlc_plugindir}/access/libhttps_plugin.so
%{vlc_plugindir}/access/libidummy_plugin.so
%{vlc_plugindir}/access/libimem_plugin.so
%{vlc_plugindir}/access/librist_plugin.so
%{vlc_plugindir}/access/librtp_plugin.so
%{vlc_plugindir}/access/libsatip_plugin.so
%{vlc_plugindir}/access/libsdp_plugin.so
%{vlc_plugindir}/access/libshm_plugin.so
%{vlc_plugindir}/access/libtcp_plugin.so
%{vlc_plugindir}/access/libtimecode_plugin.so
%{vlc_plugindir}/access/libudp_plugin.so
%{vlc_plugindir}/access/libvcd_plugin.so
%{vlc_plugindir}/access/libvdr_plugin.so
%{vlc_plugindir}/access_output/libaccess_output_dummy_plugin.so
%{vlc_plugindir}/access_output/libaccess_output_file_plugin.so
%{vlc_plugindir}/access_output/libaccess_output_http_plugin.so
%{vlc_plugindir}/access_output/libaccess_output_livehttp_plugin.so
%{vlc_plugindir}/access_output/libaccess_output_rist_plugin.so
%{vlc_plugindir}/access_output/libaccess_output_shout_plugin.so
%{vlc_plugindir}/access_output/libaccess_output_udp_plugin.so
%{vlc_plugindir}/audio_filter/libaudio_format_plugin.so
%{vlc_plugindir}/audio_filter/libaudiobargraph_a_plugin.so
%{vlc_plugindir}/audio_filter/libchorus_flanger_plugin.so
%{vlc_plugindir}/audio_filter/libcompressor_plugin.so
%{vlc_plugindir}/audio_filter/libdolby_surround_decoder_plugin.so
%{vlc_plugindir}/audio_filter/libequalizer_plugin.so
%{vlc_plugindir}/audio_filter/libgain_plugin.so
%{vlc_plugindir}/audio_filter/libheadphone_channel_mixer_plugin.so
%{vlc_plugindir}/audio_filter/libkaraoke_plugin.so
%{vlc_plugindir}/audio_filter/libmono_plugin.so
%{vlc_plugindir}/audio_filter/libnormvol_plugin.so
%{vlc_plugindir}/audio_filter/libparam_eq_plugin.so
%{vlc_plugindir}/audio_filter/libremap_plugin.so
%{vlc_plugindir}/audio_filter/libscaletempo_pitch_plugin.so
%{vlc_plugindir}/audio_filter/libscaletempo_plugin.so
%{vlc_plugindir}/audio_filter/libsimple_channel_mixer_plugin.so
%{vlc_plugindir}/audio_filter/libspatializer_plugin.so
%{vlc_plugindir}/audio_filter/libstereo_widen_plugin.so
%{vlc_plugindir}/audio_filter/libtospdif_plugin.so
%{vlc_plugindir}/audio_filter/libtrivial_channel_mixer_plugin.so
%{vlc_plugindir}/audio_filter/libugly_resampler_plugin.so
%{vlc_plugindir}/audio_mixer/libfloat_mixer_plugin.so
%{vlc_plugindir}/audio_mixer/libinteger_mixer_plugin.so
%{vlc_plugindir}/audio_output/libadummy_plugin.so
%{vlc_plugindir}/audio_output/libafile_plugin.so
%{vlc_plugindir}/audio_output/libalsa_plugin.so
%{vlc_plugindir}/audio_output/libamem_plugin.so
%{vlc_plugindir}/codec/libadpcm_plugin.so
%{vlc_plugindir}/codec/libaes3_plugin.so
%{vlc_plugindir}/codec/libaraw_plugin.so
%{vlc_plugindir}/codec/libcc_plugin.so
%{vlc_plugindir}/codec/libcdg_plugin.so
%{vlc_plugindir}/codec/libcvdsub_plugin.so
%{vlc_plugindir}/codec/libdav1d_plugin.so
%{vlc_plugindir}/codec/libddummy_plugin.so
%{vlc_plugindir}/codec/libdvbsub_plugin.so
%{vlc_plugindir}/codec/libedummy_plugin.so
%{vlc_plugindir}/codec/libfaad_plugin.so
%{vlc_plugindir}/codec/libfdkaac_plugin.so
%{vlc_plugindir}/codec/libflac_plugin.so
%{vlc_plugindir}/codec/libg711_plugin.so
%{vlc_plugindir}/codec/libjpeg_plugin.so
%{vlc_plugindir}/codec/liblpcm_plugin.so
%{vlc_plugindir}/codec/libmpg123_plugin.so
%{vlc_plugindir}/codec/liboggspots_plugin.so
%{vlc_plugindir}/codec/libopus_plugin.so
%{vlc_plugindir}/codec/libpng_plugin.so
%{vlc_plugindir}/codec/librawvideo_plugin.so
%{vlc_plugindir}/codec/librtpvideo_plugin.so
%{vlc_plugindir}/codec/libscte18_plugin.so
%{vlc_plugindir}/codec/libscte27_plugin.so
%{vlc_plugindir}/codec/libspdif_plugin.so
%{vlc_plugindir}/codec/libspeex_plugin.so
%{vlc_plugindir}/codec/libspudec_plugin.so
%{vlc_plugindir}/codec/libstl_plugin.so
%{vlc_plugindir}/codec/libsubsdec_plugin.so
%{vlc_plugindir}/codec/libsubstx3g_plugin.so
%{vlc_plugindir}/codec/libsubsusf_plugin.so
%{vlc_plugindir}/codec/libsvcdsub_plugin.so
%{vlc_plugindir}/codec/libt140_plugin.so
%{vlc_plugindir}/codec/libtextst_plugin.so
%{vlc_plugindir}/codec/libtheora_plugin.so
%{vlc_plugindir}/codec/libttml_plugin.so
%{vlc_plugindir}/codec/libtwolame_plugin.so
%{vlc_plugindir}/codec/libuleaddvaudio_plugin.so
%{vlc_plugindir}/codec/libvorbis_plugin.so
%{vlc_plugindir}/codec/libvpx_plugin.so
%{vlc_plugindir}/codec/libwebvtt_plugin.so
%{vlc_plugindir}/codec/libxwd_plugin.so
%{vlc_plugindir}/control/libdbus_plugin.so
%{vlc_plugindir}/control/libdummy_plugin.so
%{vlc_plugindir}/control/libgestures_plugin.so
%{vlc_plugindir}/control/libhotkeys_plugin.so
%{vlc_plugindir}/control/libmotion_plugin.so
%{vlc_plugindir}/control/libnetsync_plugin.so
%{vlc_plugindir}/control/liboldrc_plugin.so
%{vlc_plugindir}/demux/libadaptive_plugin.so
%{vlc_plugindir}/demux/libaiff_plugin.so
%{vlc_plugindir}/demux/libasf_plugin.so
%{vlc_plugindir}/demux/libau_plugin.so
%{vlc_plugindir}/demux/libavi_plugin.so
%{vlc_plugindir}/demux/libcaf_plugin.so
%{vlc_plugindir}/demux/libdemux_cdg_plugin.so
%{vlc_plugindir}/demux/libdemux_chromecast_plugin.so
%{vlc_plugindir}/demux/libdemux_stl_plugin.so
%{vlc_plugindir}/demux/libdemuxdump_plugin.so
%{vlc_plugindir}/demux/libdiracsys_plugin.so
%{vlc_plugindir}/demux/libdirectory_demux_plugin.so
%{vlc_plugindir}/demux/libdmxmus_plugin.so
%{vlc_plugindir}/demux/libes_plugin.so
%{vlc_plugindir}/demux/libflacsys_plugin.so
%{vlc_plugindir}/demux/libh26x_plugin.so
%{vlc_plugindir}/demux/libimage_plugin.so
%{vlc_plugindir}/demux/libmjpeg_plugin.so
%{vlc_plugindir}/demux/libmp4_plugin.so
%{vlc_plugindir}/demux/libmpgv_plugin.so
%{vlc_plugindir}/demux/libnoseek_plugin.so
%{vlc_plugindir}/demux/libnsc_plugin.so
%{vlc_plugindir}/demux/libnsv_plugin.so
%{vlc_plugindir}/demux/libnuv_plugin.so
%{vlc_plugindir}/demux/libogg_plugin.so
%{vlc_plugindir}/demux/libplaylist_plugin.so
%{vlc_plugindir}/demux/libps_plugin.so
%{vlc_plugindir}/demux/libpva_plugin.so
%{vlc_plugindir}/demux/librawaud_plugin.so
%{vlc_plugindir}/demux/librawdv_plugin.so
%{vlc_plugindir}/demux/librawvid_plugin.so
%{vlc_plugindir}/demux/libreal_plugin.so
%{vlc_plugindir}/demux/libsmf_plugin.so
%{vlc_plugindir}/demux/libsubtitle_plugin.so
%{vlc_plugindir}/demux/libtta_plugin.so
%{vlc_plugindir}/demux/libty_plugin.so
%{vlc_plugindir}/demux/libvc1_plugin.so
%{vlc_plugindir}/demux/libvobsub_plugin.so
%{vlc_plugindir}/demux/libvoc_plugin.so
%{vlc_plugindir}/demux/libwav_plugin.so
%{vlc_plugindir}/demux/libxa_plugin.so
%{vlc_plugindir}/keystore/libfile_keystore_plugin.so
%{vlc_plugindir}/keystore/libmemory_keystore_plugin.so
%{vlc_plugindir}/logger/libconsole_logger_plugin.so
%{vlc_plugindir}/logger/libfile_logger_plugin.so
%{vlc_plugindir}/logger/libsd_journal_plugin.so
%{vlc_plugindir}/logger/libsyslog_plugin.so
%{vlc_plugindir}/meta_engine/libfolder_plugin.so
%{vlc_plugindir}/meta_engine/libtaglib_plugin.so
%{vlc_plugindir}/misc/libaddonsfsstorage_plugin.so
%{vlc_plugindir}/misc/libaddonsvorepository_plugin.so
%{vlc_plugindir}/misc/libaudioscrobbler_plugin.so
%{vlc_plugindir}/misc/libdbus_screensaver_plugin.so
%{vlc_plugindir}/misc/libexport_plugin.so
%{vlc_plugindir}/misc/libfingerprinter_plugin.so
%{vlc_plugindir}/misc/libgnutls_plugin.so
%{vlc_plugindir}/misc/liblogger_plugin.so
%{vlc_plugindir}/misc/libstats_plugin.so
%{vlc_plugindir}/misc/libvod_rtsp_plugin.so
%{vlc_plugindir}/misc/libxdg_screensaver_plugin.so
%{vlc_plugindir}/misc/libxml_plugin.so
%{vlc_plugindir}/mux/libmux_asf_plugin.so
%{vlc_plugindir}/mux/libmux_avi_plugin.so
%{vlc_plugindir}/mux/libmux_dummy_plugin.so
%{vlc_plugindir}/mux/libmux_mp4_plugin.so
%{vlc_plugindir}/mux/libmux_mpjpeg_plugin.so
%{vlc_plugindir}/mux/libmux_ogg_plugin.so
%{vlc_plugindir}/mux/libmux_ps_plugin.so
%{vlc_plugindir}/mux/libmux_wav_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_a52_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_av1_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_copy_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_dirac_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_dts_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_flac_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_h264_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_hevc_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_mlp_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_mpeg4audio_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_mpeg4video_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_mpegaudio_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_mpegvideo_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_vc1_plugin.so
%{vlc_plugindir}/services_discovery/libmediadirs_plugin.so
%{vlc_plugindir}/services_discovery/libpodcast_plugin.so
%{vlc_plugindir}/services_discovery/libsap_plugin.so
%{vlc_plugindir}/spu/libaudiobargraph_v_plugin.so
%{vlc_plugindir}/spu/libdynamicoverlay_plugin.so
%{vlc_plugindir}/spu/liblogo_plugin.so
%{vlc_plugindir}/spu/libmarq_plugin.so
%{vlc_plugindir}/spu/libmosaic_plugin.so
%{vlc_plugindir}/spu/libremoteosd_plugin.so
%{vlc_plugindir}/spu/librss_plugin.so
%{vlc_plugindir}/spu/libsubsdelay_plugin.so
%{vlc_plugindir}/stream_filter/libadf_plugin.so
%{vlc_plugindir}/stream_filter/libcache_block_plugin.so
%{vlc_plugindir}/stream_filter/libcache_read_plugin.so
%{vlc_plugindir}/stream_filter/libdecomp_plugin.so
%{vlc_plugindir}/stream_filter/libhds_plugin.so
%{vlc_plugindir}/stream_filter/libinflate_plugin.so
%{vlc_plugindir}/stream_filter/libprefetch_plugin.so
%{vlc_plugindir}/stream_filter/librecord_plugin.so
%{vlc_plugindir}/stream_filter/libskiptags_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_autodel_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_bridge_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_cycle_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_delay_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_description_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_display_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_dummy_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_duplicate_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_es_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_gather_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_mosaic_bridge_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_record_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_rtp_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_setid_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_smem_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_standard_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_stats_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_transcode_plugin.so
%{vlc_plugindir}/text_renderer/libtdummy_plugin.so
%exclude %{vlc_plugindir}/video_chroma/libswscale_plugin.so
%{vlc_plugindir}/video_chroma/*.so
%if %{with postproc}
%exclude %{vlc_plugindir}/video_filter/libpostproc_plugin.so
%endif
%{vlc_plugindir}/video_chroma/
%if %{with opencv}
%exclude %{vlc_plugindir}/video_filter/libopencv_*.so
%endif
%{vlc_plugindir}/video_filter/*.so
%exclude %{vlc_plugindir}/video_filter/libpostproc_plugin.so
%{vlc_plugindir}/video_filter/
%dir %{vlc_plugindir}/video_output/
%{vlc_plugindir}/video_output/libfb_plugin.so
%{vlc_plugindir}/video_output/libvdummy_plugin.so
%{vlc_plugindir}/video_output/libvmem_plugin.so
%{vlc_plugindir}/video_output/libyuv_plugin.so
%files plugins-extra
%{vlc_plugindir}/access/libaccess_mtp_plugin.so
%{vlc_plugindir}/access/libaccess_srt_plugin.so
%{vlc_plugindir}/access/libcdda_plugin.so
%if %{with asdcp}
%{vlc_plugindir}/access/libdcp_plugin.so
%endif
%{vlc_plugindir}/access/libdvb_plugin.so
%{vlc_plugindir}/access/libdvdnav_plugin.so
%{vlc_plugindir}/access/libdvdread_plugin.so
%{vlc_plugindir}/access/liblibbluray_plugin.so
%{vlc_plugindir}/access/liblive555_plugin.so
%{vlc_plugindir}/access/libnfs_plugin.so
%{vlc_plugindir}/access/libsftp_plugin.so
%{vlc_plugindir}/access/liblinsys_hdsdi_plugin.so
%{vlc_plugindir}/access/liblinsys_sdi_plugin.so
%{vlc_plugindir}/access/libv4l2_plugin.so
%{vlc_plugindir}/access/libxcb_screen_plugin.so
%{vlc_plugindir}/access_output/libaccess_output_srt_plugin.so
%{vlc_plugindir}/audio_filter/libmad_plugin.so
%{vlc_plugindir}/audio_filter/libsamplerate_plugin.so
%{vlc_plugindir}/audio_filter/libsoxr_plugin.so
%{vlc_plugindir}/audio_filter/libspatialaudio_plugin.so
%{vlc_plugindir}/audio_filter/libspeex_resampler_plugin.so
%{vlc_plugindir}/codec/libaom_plugin.so
%{vlc_plugindir}/codec/libaribsub_plugin.so
%if %{with daala}
%{vlc_plugindir}/codec/libdaala_plugin.so
%endif
%{vlc_plugindir}/codec/libkate_plugin.so
%{vlc_plugindir}/codec/liblibass_plugin.so
%if %{with vpl}
%{vlc_plugindir}/codec/libqsv_plugin.so
%endif
%if %{with sdl}
%{vlc_plugindir}/codec/libsdl_image_plugin.so
%endif
%{vlc_plugindir}/codec/libzvbi_plugin.so
%if %{with lirc}
%{vlc_plugindir}/control/liblirc_plugin.so
%endif
%{vlc_plugindir}/demux/libgme_plugin.so
%{vlc_plugindir}/demux/libmpc_plugin.so
%{vlc_plugindir}/demux/libmkv_plugin.so
%{vlc_plugindir}/demux/libmod_plugin.so
%{vlc_plugindir}/demux/libts_plugin.so
%{vlc_plugindir}/mux/libmux_ts_plugin.so
%{vlc_plugindir}/services_discovery/libavahi_plugin.so
%{vlc_plugindir}/services_discovery/libmicrodns_plugin.so
%{vlc_plugindir}/services_discovery/libmtp_plugin.so
%{vlc_plugindir}/services_discovery/libupnp_plugin.so
%{vlc_plugindir}/services_discovery/libudev_plugin.so
%{vlc_plugindir}/stream_extractor/libarchive_plugin.so
%{vlc_plugindir}/stream_filter/libaribcam_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_chromecast_plugin.so
%{vlc_plugindir}/text_renderer/libfreetype_plugin.so
%{vlc_plugindir}/video_output/libaa_plugin.so
%{vlc_plugindir}/video_output/libcaca_plugin.so
%dir %{vlc_plugindir}/video_splitter/
%dir %{vlc_plugindir}/visualization/
%dir %{_datadir}/vlc/
%if %{with crystalhd}
%files plugin-crystalhd
@ -1187,16 +809,12 @@ make check
%files plugin-ffmpeg
%{vlc_plugindir}/access/libavio_plugin.so
%{vlc_plugindir}/codec/libavcodec_plugin.so
%{vlc_plugindir}/codec/libvaapi_drm_plugin.so
%{vlc_plugindir}/codec/libvaapi_plugin.so
%{vlc_plugindir}/demux/libavformat_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_avparser_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_chromaprint_plugin.so
%{vlc_plugindir}/vdpau/libvdpau_avcodec_plugin.so
%{vlc_plugindir}/video_chroma/libswscale_plugin.so
%if %{with postproc}
%{vlc_plugindir}/video_filter/libpostproc_plugin.so
%endif
%files plugin-fluidsynth
%{vlc_plugindir}/codec/libfluidsynth_plugin.so
@ -1240,9 +858,6 @@ make check
%{vlc_plugindir}/audio_output/libpulse_plugin.so
%{vlc_plugindir}/services_discovery/libpulselist_plugin.so
%files plugin-rdp
%{vlc_plugindir}/access/librdp_plugin.so
%files plugin-samba
%{vlc_plugindir}/access/libsmb_plugin.so
@ -1258,22 +873,11 @@ make check
%{vlc_plugindir}/vaapi/*.so
%exclude %{vlc_plugindir}/vdpau/libvdpau_avcodec_plugin.so
%{vlc_plugindir}/vdpau/*.so
%{vlc_plugindir}/video_output/libegl_wl_plugin.so
%{vlc_plugindir}/video_output/libegl_x11_plugin.so
%{vlc_plugindir}/video_output/libflaschen_plugin.so
%{vlc_plugindir}/video_output/libgl_plugin.so
%{vlc_plugindir}/video_output/libglconv_vaapi_drm_plugin.so
%{vlc_plugindir}/video_output/libglconv_vaapi_wl_plugin.so
%{vlc_plugindir}/video_output/libglconv_vaapi_x11_plugin.so
%{vlc_plugindir}/video_output/libglconv_vdpau_plugin.so
%{vlc_plugindir}/video_output/libgles2_plugin.so
%{vlc_plugindir}/video_output/libglx_plugin.so
%{vlc_plugindir}/video_output/libwl_shell_plugin.so
%{vlc_plugindir}/video_output/libwl_shm_plugin.so
%{vlc_plugindir}/video_output/libxcb_window_plugin.so
%{vlc_plugindir}/video_output/libxcb_x11_plugin.so
%{vlc_plugindir}/video_output/libxcb_xv_plugin.so
%{vlc_plugindir}/video_output/libxdg_shell_plugin.so
%exclude %{vlc_plugindir}/video_output/libfb_plugin.so
%exclude %{vlc_plugindir}/video_output/libvdummy_plugin.so
%exclude %{vlc_plugindir}/video_output/libvmem_plugin.so
%exclude %{vlc_plugindir}/video_output/libyuv_plugin.so
%{vlc_plugindir}/video_output/*.so
%{vlc_plugindir}/video_splitter/*.so
%files plugin-visualization