Compare commits

...

7 Commits
rawhide ... f36

Author SHA1 Message Date
Neal Gompa 877408547b Actually enable librist support 2023-02-15 23:30:00 -05:00
Neal Gompa 882dab2b6a Enable support for the RIST protocol through librist 2023-02-15 23:28:35 -05:00
Yaakov Selkowitz 90bff85ed7 Drop unused opencv BuildRequires
opencv has deliberately broken their C API as of 3.4 and completely
removed it in 4.0, meaning there is no way to enable OpenCV in ffmpeg
without completely rewriting the filter in C++.

https://github.com/opencv/opencv/wiki/ChangeLog#version400
https://ffmpeg.org/pipermail/ffmpeg-devel/2018-March/226872.html
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=915544
2023-02-15 23:25:05 -05:00
Neal Gompa 354b83ba8a Update to 5.0.2 2022-11-22 08:56:37 -05:00
Neal Gompa af350001d8 Refresh dlopen headers and patch for OpenH264 2.3.1
Backport patches to fix building with newer SDL2 versions
2022-10-12 11:17:43 -04:00
Leigh Scott 6c78504a94 Remove internal headers, they shouldn't be used outside of ffmpeg compile
Readd description
2022-10-12 10:46:33 -04:00
Neal Gompa e48877b7d0 Disable bootstrap and rework chromaprint dependency 2022-10-12 10:46:11 -04:00
5 changed files with 88 additions and 51 deletions

View File

@ -0,0 +1,33 @@
From fc7fb12f22180d03428310da7eca55403a123322 Mon Sep 17 00:00:00 2001
From: dvhh <dvhh-at-yahoo.com@ffmpeg.org>
Date: Sat, 18 Jun 2022 01:46:12 +0900
Subject: [PATCH 2/2] configure: fix SDL2 version check for pkg_config fallback
pkg_config fallback for SDL2 use 2.1.0 as max (excluded) version
where the pkg_config specify 3.0.0
Correcting fallback version to be in line with the pkg_config version
Signed-off-by: dvhh <dvhh@yahoo.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
(cherry picked from commit c6fdbe26ef30fff817581e5ed6e078d96111248a)
---
configure | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure b/configure
index e731a9d3ff..596be632c4 100755
--- a/configure
+++ b/configure
@@ -6747,7 +6747,7 @@ if enabled sdl2; then
sdl2_cflags=$("${SDL2_CONFIG}" --cflags)
sdl2_extralibs=$("${SDL2_CONFIG}" --libs)
test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
- test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
+ test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x030000" $sdl2_cflags &&
check_func_headers SDL_events.h SDL_PollEvent $sdl2_extralibs $sdl2_cflags &&
enable sdl2
fi
--
2.36.1

View File

@ -1,6 +1,6 @@
From 081b35c5b598fef0a2e47753752f7607ff90a2d3 Mon Sep 17 00:00:00 2001 From b8886826f44b4562aa2fbae3715ca6aa9e1b15e1 Mon Sep 17 00:00:00 2001
From: Neal Gompa <ngompa@fedoraproject.org> From: Neal Gompa <ngompa@fedoraproject.org>
Date: Fri, 18 Feb 2022 08:12:54 -0500 Date: Wed, 12 Oct 2022 10:26:35 -0400
Subject: [PATCH] avcodec/openh264: Add the ability to dlopen() OpenH264 Subject: [PATCH] avcodec/openh264: Add the ability to dlopen() OpenH264
We can't directly depend on OpenH264, but we can weakly link to it We can't directly depend on OpenH264, but we can weakly link to it
@ -14,17 +14,17 @@ Signed-off-by: Neal Gompa <ngompa@fedoraproject.org>
--- ---
configure | 3 + configure | 3 +
libavcodec/Makefile | 1 + libavcodec/Makefile | 1 +
libavcodec/libopenh264.c | 15 +++- libavcodec/libopenh264.c | 18 +++-
libavcodec/libopenh264_dlopen.c | 147 ++++++++++++++++++++++++++++++++ libavcodec/libopenh264_dlopen.c | 147 ++++++++++++++++++++++++++++++++
libavcodec/libopenh264_dlopen.h | 58 +++++++++++++ libavcodec/libopenh264_dlopen.h | 58 +++++++++++++
libavcodec/libopenh264dec.c | 10 +++ libavcodec/libopenh264dec.c | 10 +++
libavcodec/libopenh264enc.c | 10 +++ libavcodec/libopenh264enc.c | 10 +++
7 files changed, 243 insertions(+), 1 deletion(-) 7 files changed, 245 insertions(+), 2 deletions(-)
create mode 100644 libavcodec/libopenh264_dlopen.c create mode 100644 libavcodec/libopenh264_dlopen.c
create mode 100644 libavcodec/libopenh264_dlopen.h create mode 100644 libavcodec/libopenh264_dlopen.h
diff --git a/configure b/configure diff --git a/configure b/configure
index 6b5ef6332e..f08e566e98 100755 index 7a62f0c248..2369ea0240 100755
--- a/configure --- a/configure
+++ b/configure +++ b/configure
@@ -250,6 +250,7 @@ External library support: @@ -250,6 +250,7 @@ External library support:
@ -43,7 +43,7 @@ index 6b5ef6332e..f08e566e98 100755
libopenjpeg libopenjpeg
libopenmpt libopenmpt
libopenvino libopenvino
@@ -6575,6 +6577,7 @@ enabled libopencv && { check_headers opencv2/core/core_c.h && @@ -6582,6 +6584,7 @@ enabled libopencv && { check_headers opencv2/core/core_c.h &&
require libopencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } || require libopencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
require_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; } require_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; }
enabled libopenh264 && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion enabled libopenh264 && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion
@ -64,7 +64,7 @@ index 3adf1536d8..9dc8389ce2 100644
OBJS-$(CONFIG_LIBOPENH264_ENCODER) += libopenh264enc.o libopenh264.o OBJS-$(CONFIG_LIBOPENH264_ENCODER) += libopenh264enc.o libopenh264.o
OBJS-$(CONFIG_LIBOPENJPEG_DECODER) += libopenjpegdec.o OBJS-$(CONFIG_LIBOPENJPEG_DECODER) += libopenjpegdec.o
diff --git a/libavcodec/libopenh264.c b/libavcodec/libopenh264.c diff --git a/libavcodec/libopenh264.c b/libavcodec/libopenh264.c
index 59c61a3a4c..9b7dfc59be 100644 index 59c61a3a4c..14d83e27df 100644
--- a/libavcodec/libopenh264.c --- a/libavcodec/libopenh264.c
+++ b/libavcodec/libopenh264.c +++ b/libavcodec/libopenh264.c
@@ -20,8 +20,13 @@ @@ -20,8 +20,13 @@
@ -81,11 +81,14 @@ index 59c61a3a4c..9b7dfc59be 100644
#include "libavutil/log.h" #include "libavutil/log.h"
@@ -52,7 +57,15 @@ int ff_libopenh264_check_version(void *logctx) @@ -51,8 +56,17 @@ int ff_libopenh264_check_version(void *logctx)
// Mingw GCC < 4.7 on x86_32 uses an incorrect/buggy ABI for the WelsGetCodecVersion
// function (for functions returning larger structs), thus skip the check in those // function (for functions returning larger structs), thus skip the check in those
// configurations. // configurations.
#if !defined(_WIN32) || !defined(__GNUC__) || !ARCH_X86_32 || AV_GCC_VERSION_AT_LEAST(4, 7) -#if !defined(_WIN32) || !defined(__GNUC__) || !ARCH_X86_32 || AV_GCC_VERSION_AT_LEAST(4, 7)
- OpenH264Version libver = WelsGetCodecVersion(); - OpenH264Version libver = WelsGetCodecVersion();
+ // Also, for dlopened OpenH264, we should not do the version check. It's too punitive.
+#if !defined(_WIN32) || !defined(__GNUC__) || !ARCH_X86_32 || AV_GCC_VERSION_AT_LEAST(4, 7) || !defined(CONFIG_LIBOPENH264_DLOPEN)
+ OpenH264Version libver; + OpenH264Version libver;
+ +
+#ifdef CONFIG_LIBOPENH264_DLOPEN +#ifdef CONFIG_LIBOPENH264_DLOPEN
@ -100,7 +103,7 @@ index 59c61a3a4c..9b7dfc59be 100644
return AVERROR(EINVAL); return AVERROR(EINVAL);
diff --git a/libavcodec/libopenh264_dlopen.c b/libavcodec/libopenh264_dlopen.c diff --git a/libavcodec/libopenh264_dlopen.c b/libavcodec/libopenh264_dlopen.c
new file mode 100644 new file mode 100644
index 0000000000..b350679f18 index 0000000000..49ea8ff44f
--- /dev/null --- /dev/null
+++ b/libavcodec/libopenh264_dlopen.c +++ b/libavcodec/libopenh264_dlopen.c
@@ -0,0 +1,147 @@ @@ -0,0 +1,147 @@
@ -225,7 +228,7 @@ index 0000000000..b350679f18
+ return 0; + return 0;
+ } + }
+ +
+#define OPENH264_LIB "libopenh264.so.6" +#define OPENH264_LIB "libopenh264.so.7"
+ libopenh264 = dlopen(OPENH264_LIB, RTLD_LAZY); + libopenh264 = dlopen(OPENH264_LIB, RTLD_LAZY);
+ err = dlerror(); + err = dlerror();
+ if (err != NULL) { + if (err != NULL) {
@ -376,5 +379,5 @@ index 2001dc22b4..c8b1348df2 100644
return AVERROR_ENCODER_NOT_FOUND; return AVERROR_ENCODER_NOT_FOUND;
-- --
2.34.1 2.36.1

View File

@ -2,9 +2,7 @@
%bcond_with upstream_tarball %bcond_with upstream_tarball
%bcond_with all_codecs %bcond_with all_codecs
# Break dependency cycles, e.g.: # Break dependency cycles by disabling certain optional dependencies.
# ffmpeg (libavcodec-free) → chromaprint → ffmpeg
# by disabling certain optional dependencies.
%bcond_with bootstrap %bcond_with bootstrap
# If you want to do a build with the upstream source tarball, then set the # If you want to do a build with the upstream source tarball, then set the
@ -41,6 +39,19 @@
%bcond_without dc1394 %bcond_without dc1394
%endif %endif
# Break chromaprint dependency cycle:
# ffmpeg (libavcodec-free) → chromaprint → ffmpeg
%if %{with bootstrap}
%bcond_with chromaprint
%else
%bcond_without chromaprint
%endif
%if 0%{?rhel}
# Disable dependencies not offered in RHEL
%bcond_with chromaprint
%endif
%if %{with all_codecs} %if %{with all_codecs}
%bcond_without rtmp %bcond_without rtmp
%bcond_without x264 %bcond_without x264
@ -60,6 +71,7 @@
%if "%{__isa_bits}" == "64" %if "%{__isa_bits}" == "64"
%global lib64_suffix ()(64bit) %global lib64_suffix ()(64bit)
%endif %endif
%global openh264_soversion 7
%global av_codec_soversion 59 %global av_codec_soversion 59
%global av_device_soversion 59 %global av_device_soversion 59
@ -73,8 +85,8 @@
Name: ffmpeg Name: ffmpeg
%global pkg_name %{name}%{?pkg_suffix} %global pkg_name %{name}%{?pkg_suffix}
Version: 5.0.1 Version: 5.0.2
Release: 11%{?dist} Release: 2%{?dist}
Summary: A complete solution to record, convert and stream audio and video Summary: A complete solution to record, convert and stream audio and video
License: GPLv3+ License: GPLv3+
URL: https://ffmpeg.org/ URL: https://ffmpeg.org/
@ -108,6 +120,8 @@ Patch5: ffmpeg-allow-fdk-aac-free.patch
Patch6: ffmpeg-fix-gnutls-priority.patch Patch6: ffmpeg-fix-gnutls-priority.patch
# http://ffmpeg.org/pipermail/ffmpeg-devel/2022-February/293194.html # http://ffmpeg.org/pipermail/ffmpeg-devel/2022-February/293194.html
Patch7: ffmpeg-openh264-averr-on-bad-version.patch Patch7: ffmpeg-openh264-averr-on-bad-version.patch
# Backport fixes to recognize sdl2 with new versioning scheme
Patch9: 0002-configure-fix-SDL2-version-check-for-pkg_config-fall.patch
# Set up dlopen for openh264 # Set up dlopen for openh264
Patch1001: ffmpeg-dlopen-openh264.patch Patch1001: ffmpeg-dlopen-openh264.patch
@ -159,7 +173,7 @@ BuildRequires: pkgconfig(libbluray)
BuildRequires: pkgconfig(libbs2b) BuildRequires: pkgconfig(libbs2b)
BuildRequires: pkgconfig(libcdio) BuildRequires: pkgconfig(libcdio)
BuildRequires: pkgconfig(libcdio_paranoia) BuildRequires: pkgconfig(libcdio_paranoia)
%if %{without bootstrap} %if %{with chromaprint}
BuildRequires: pkgconfig(libchromaprint) BuildRequires: pkgconfig(libchromaprint)
%endif %endif
BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libdrm)
@ -168,6 +182,7 @@ BuildRequires: pkgconfig(libomxil-bellagio)
BuildRequires: pkgconfig(libopenjp2) BuildRequires: pkgconfig(libopenjp2)
BuildRequires: pkgconfig(libopenmpt) BuildRequires: pkgconfig(libopenmpt)
BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(librist)
BuildRequires: pkgconfig(librsvg-2.0) BuildRequires: pkgconfig(librsvg-2.0)
BuildRequires: pkgconfig(libssh) BuildRequires: pkgconfig(libssh)
BuildRequires: pkgconfig(libv4l2) BuildRequires: pkgconfig(libv4l2)
@ -182,7 +197,6 @@ BuildRequires: pkgconfig(netcdf)
BuildRequires: pkgconfig(ogg) BuildRequires: pkgconfig(ogg)
BuildRequires: pkgconfig(openal) BuildRequires: pkgconfig(openal)
BuildRequires: pkgconfig(OpenCL) BuildRequires: pkgconfig(OpenCL)
BuildRequires: pkgconfig(opencv4)
BuildRequires: pkgconfig(opus) BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(rav1e) BuildRequires: pkgconfig(rav1e)
BuildRequires: pkgconfig(rubberband) BuildRequires: pkgconfig(rubberband)
@ -305,11 +319,6 @@ machines have created. It supports the most obscure ancient formats up to the
cutting edge. No matter if they were designed by some standards committee, the cutting edge. No matter if they were designed by some standards committee, the
community or a corporation. community or a corporation.
This package contains also private headers for libavformat, libavcodec and
libavutil which are needed by libav-tools to build. No other package apart
from libav should depend on these private headers which are expected to
break compatibility without any notice.
%package -n libavcodec%{?pkg_suffix} %package -n libavcodec%{?pkg_suffix}
Summary: FFmpeg codec library Summary: FFmpeg codec library
Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release}
@ -317,7 +326,7 @@ Requires: libswresample%{?pkg_suffix}%{_isa} = %{version}-%{release}
# We dlopen() openh264, so weak-depend on it... # We dlopen() openh264, so weak-depend on it...
## Note, we can do this because openh264 is provided in a default-enabled ## Note, we can do this because openh264 is provided in a default-enabled
## third party repository provided by Cisco. ## third party repository provided by Cisco.
Recommends: libopenh264.so.6%{?lib64_suffix} Recommends: libopenh264.so.%{openh264_soversion}%{?lib64_suffix}
%description -n libavcodec%{?pkg_suffix} %description -n libavcodec%{?pkg_suffix}
The libavcodec library provides a generic encoding/decoding framework The libavcodec library provides a generic encoding/decoding framework
@ -561,10 +570,10 @@ cp -a doc/examples/{*.c,Makefile,README} _doc/examples/
--disable-openssl \ --disable-openssl \
--enable-bzlib \ --enable-bzlib \
--enable-frei0r \ --enable-frei0r \
%if %{with bootstrap} %if %{with chromaprint}
--disable-chromaprint \
%else
--enable-chromaprint \ --enable-chromaprint \
%else
--disable-chromaprint \
%endif %endif
--enable-gcrypt \ --enable-gcrypt \
--enable-gnutls \ --enable-gnutls \
@ -601,6 +610,7 @@ cp -a doc/examples/{*.c,Makefile,README} _doc/examples/
--enable-libopus \ --enable-libopus \
--enable-libpulse \ --enable-libpulse \
--enable-librav1e \ --enable-librav1e \
--enable-librist \
--enable-librsvg \ --enable-librsvg \
--enable-librubberband \ --enable-librubberband \
--enable-libsnappy \ --enable-libsnappy \
@ -724,25 +734,6 @@ done
%install %install
%make_install V=1 %make_install V=1
# Install private headers required by libav-tools
for f in libavformat/options_table.h \
libavformat/os_support.h \
libavformat/internal.h \
libavcodec/options_table.h \
libavutil/libm.h \
libavutil/internal.h \
libavutil/colorspace.h \
libavutil/timer.h \
libavutil/x86/emms.h \
libavutil/aarch64/timer.h \
libavutil/arm/timer.h \
libavutil/bfin/timer.h \
libavutil/ppc/timer.h \
libavutil/x86/timer.h; do
install -m 0755 -d "%{buildroot}%{_includedir}/ffmpeg/private/$(dirname "${f}")"
cp -a ${f} "%{buildroot}%{_includedir}/ffmpeg/private/${f}"
done
# We will package is as %%doc in the devel package # We will package is as %%doc in the devel package
rm -rf %{buildroot}%{_datadir}/%{name}/examples rm -rf %{buildroot}%{_datadir}/%{name}/examples
@ -768,7 +759,6 @@ rm -rf %{buildroot}%{_datadir}/%{name}/examples
%files -n %{pkg_name}-devel %files -n %{pkg_name}-devel
%doc MAINTAINERS doc/APIchanges doc/*.txt %doc MAINTAINERS doc/APIchanges doc/*.txt
%doc _doc/examples %doc _doc/examples
%{_includedir}/%{name}/private
%files -n libavcodec%{?pkg_suffix} %files -n libavcodec%{?pkg_suffix}
%license COPYING.GPLv2 LICENSE.md %license COPYING.GPLv2 LICENSE.md
@ -850,6 +840,16 @@ rm -rf %{buildroot}%{_datadir}/%{name}/examples
%{_mandir}/man3/libswscale.3* %{_mandir}/man3/libswscale.3*
%changelog %changelog
* Thu Feb 16 2023 Neal Gompa <ngompa@fedoraproject.org> - 5.0.2-2
- Enable support for the RIST protocol through librist
* Tue Nov 22 2022 Neal Gompa <ngompa@fedoraproject.org> - 5.0.2-1
- Update to 5.0.2
* Wed Oct 12 2022 Neal Gompa <ngompa@fedoraproject.org> - 5.0.1-12
- Refresh dlopen headers and patch for OpenH264 2.3.1
- Backport patches to fix building with newer SDL2 versions
* Thu Jun 09 2022 Neal Gompa <ngompa@fedoraproject.org> - 5.0.1-11 * Thu Jun 09 2022 Neal Gompa <ngompa@fedoraproject.org> - 5.0.1-11
- Ensure libavdevice-devel is pulled in with devel metapackage - Ensure libavdevice-devel is pulled in with devel metapackage

View File

@ -2237,6 +2237,7 @@ libavformat/latmenc.c
libavformat/libavformat.v libavformat/libavformat.v
libavformat/libmodplug.c libavformat/libmodplug.c
libavformat/libopenmpt.c libavformat/libopenmpt.c
libavformat/librist.c
libavformat/libsmbclient.c libavformat/libsmbclient.c
libavformat/libsrt.c libavformat/libsrt.c
libavformat/libssh.c libavformat/libssh.c

View File

@ -1,4 +1,4 @@
SHA512 (ffmpeg-free-5.0.1.tar.xz) = 313277c2fb62829606c3434f03392351b7964734bef188f7838f754a383d8ad8b890ddd615aa7360ba2a72755fa54a6b967ff2f5a30da7a5490d31b562028e19 SHA512 (ffmpeg-free-5.0.2.tar.xz) = fd207aaf450799d334b1b8fa293f257dc5286ebc10e822bd6559b66bdf197167182227b359bb18bcfb7a52b915bb8c4e67c341dcdfe43b9960503bade64e7bc6
SHA512 (ffmpeg-5.0.1.tar.xz.asc) = 9c4bd404196c3a3808bae92873aefc77f8c26a9419cc6130a3f2359a75c8e83189d206e9aee8ff85c5a7fe4a98da24e11cf607ec351386c18979ec2d5ad3b3ad SHA512 (ffmpeg-5.0.2.tar.xz.asc) = 2cbe55fc15ff20a90b7b3beba22364e013338db53f68b9f228f3c773d955ed149221730ac403dc781c74bbb8c5909573bfd27377b96654496428f709fa79225c
SHA512 (ffmpeg-dlopen-headers.tar.xz) = b6f62a96e5b199bb52bf7c9c934c5d194a1486f350513dda68c47439d2653605400228a98e289d3bce8b8c0c2a5d95fde2813e238d2bd17d049887df4a7c947a SHA512 (ffmpeg-dlopen-headers.tar.xz) = 97e6986fc2bb9dfa4516135a76b04d27ceb52ff96f0af21a6169919aeefefb4d2e2e24a771959689cdbec385f5d71614ba661223c67c0e94089a6dd823a30099
SHA512 (ffmpeg.keyring) = 9b36506835db36f776b7ddb53ad6fa9e915e6ca2f9c7cfebe8eb45513e1036a985283590a840ca313a111bf35dc3731f68885aaafb1fb7011ec433cc119e5165 SHA512 (ffmpeg.keyring) = 9b36506835db36f776b7ddb53ad6fa9e915e6ca2f9c7cfebe8eb45513e1036a985283590a840ca313a111bf35dc3731f68885aaafb1fb7011ec433cc119e5165