Compare commits

..

135 commits

Author SHA1 Message Date
Marcin Juszkiewicz
62079f0ff3 disable dc1394 and ffnvcodec on risc-v 2025-12-04 18:15:51 +01:00
Neal Gompa
081db52026 Split configure step to conf stage 2025-11-21 06:07:44 -05:00
Dominik 'Rathann' Mierzejewski
2cb206c8d5 Update to 8.0.1 (resolves rhbz#2416044) 2025-11-21 10:12:19 +01:00
Neal Gompa
2364ea43f4 Disable lc3 only on RHEL 10 2025-11-14 08:12:10 -05:00
Dominik 'Rathann' Mierzejewski
333dc69736 unbootstrap, rebuild with new chromaprint 2025-11-04 14:13:58 +01:00
Dominik 'Rathann' Mierzejewski
28d758506e bootstrap for chromaprint 2025-11-04 13:51:09 +01:00
Neal Gompa
85d2ac244e Rebase to version 8.0 2025-11-02 12:45:07 -05:00
Dominik 'Rathann' Mierzejewski
2db297209f fix bootstrap conditional for chromaprint
Reference: https://rpm-software-management.github.io/rpm/manual/conditionalbuilds.html#check-whether-an-option-is-enabled-or-disabled
2025-11-02 17:42:44 +01:00
Dominik 'Rathann' Mierzejewski
7a2902320d Re-enable OpenAL support which was disabled by accident
Resolves rhbz#2404091 .

Fixes: 5917b714a1
2025-11-02 17:42:19 +01:00
Simone Caronni
74bed5df5b Merge #44 Exclude lc3 on RHEL 2025-10-16 11:18:49 +00:00
Simone Caronni
98124ea009 Exclude lc3 on RHEL 2025-10-16 12:39:16 +02:00
Robert-André Mauchin
ee4847dda6 Rebuild for svt-av1 3.1.2 2025-10-02 20:17:02 +02:00
Robert-André Mauchin
85181b0920 Rebuild for svt-av1 3.1.2 2025-10-02 20:12:40 +02:00
Simone Caronni
5917b714a1 Update to 7.1.2, adjust options 2025-09-24 18:42:49 +02:00
Neal Gompa
0ba015fad8 Disable all subpackages except libavcodec-freeworld with the freeworld bcond 2025-08-26 14:28:33 -04:00
Neal Gompa
7396d13cc7 Enable support for MPEG-5/EVC 2025-08-25 09:32:19 -04:00
Neal Gompa
0b12983802 Reorganize spec to group subpackage definitions together
- Add freeworld conditional for third-party builds
- Drop unneeded scriptlets
2025-08-20 20:40:56 -04:00
Neal Gompa
fab40474b5 Fix bcond comments 2025-08-01 14:05:58 -04:00
Neal Gompa
3c0fb7f11f Always verify sources 2025-08-01 14:02:36 -04:00
Nicolas Chauvet
9e25239d79 Rebuilt for libplacebo 2025-07-29 12:36:02 +02:00
Fedora Release Engineering
60df3956c6 Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-23 20:29:42 +00:00
Neal Gompa
b7a44a0015 Enable aic decoder 2025-06-13 05:09:46 -04:00
Neal Gompa
0d0e82fef2 Switch to regular upstream sources for package build
- Enable more codecs
2025-06-13 04:59:00 -04:00
Songsong Zhang
d3e50323a8 Add missing source files for riscv64 2025-03-22 18:40:46 -04:00
Fabio Valentini
3dcc47c45b
Rebuild for noopenh264 2.6.0 2025-03-13 18:46:52 +01:00
Dominik Mierzejewski
4d830a4af8 Backport fix for CVE-2025-22921 2025-03-07 23:15:43 +01:00
Dominik Mierzejewski
7110fb70e3 Update to 7.1.1 (resolves rhbz#2349351)
- Enable LC3 codec via liblc3
2025-03-07 01:55:42 +01:00
Yaakov Selkowitz
d2ef10fe0c Rebase to 7.1 (rhbz#2273572) 2025-02-07 13:50:29 -05:00
Robert-André Mauchin
f7cd6c7740 Rebuilt for aom 3.11.0 2025-02-05 21:34:01 +01:00
Sérgio M. Basto
54e4bc559d Rebuild for jpegxl (libjxl) 0.11.1 2025-02-02 19:11:03 +00:00
Simone Caronni
e02f9b32c2 Rebuild for updated VapourSynth 2025-01-29 10:58:36 +01:00
Fedora Release Engineering
132d2896b6 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-16 18:12:53 +00:00
Michel Lind
21b854f6b9
Rebuilt for rubberband 4
Signed-off-by: Michel Lind <salimma@fedoraproject.org>
2025-01-09 12:27:07 -06:00
Sandro Mani
14a94115d0 Rebuild (tesseract) 2024-11-12 09:17:29 +01:00
Troy Dawson
cd3c894a26 Alphabetize conditionals
Signed-off-by: Troy Dawson <tdawson@redhat.com>
2024-10-29 14:52:16 -07:00
Troy Dawson
c17bd62a32 flite will not be in any epel
Signed-off-by: Troy Dawson <tdawson@redhat.com>
2024-10-21 13:43:45 -07:00
Troy Dawson
4084c1116b netcdf is no longer used by ffmpeg
Signed-off-by: Troy Dawson <tdawson@redhat.com>
2024-10-21 13:42:00 -07:00
Yaakov Selkowitz
aa1f2113d7 Properly enable aribb24/libaribcaption
Disable VANC dependency as it depends on decklink
2024-10-07 12:41:00 -04:00
Nicolas Chauvet
b209e71d90 Disable external schroedinger
ffmpeg wrapper code was removed in 3.4, use the internal implemenation
nowadays
2024-10-07 11:25:03 +02:00
Neal Gompa
8da9f7adde Enable Kernel Labs VANC processing and ARIB text/caption decoding 2024-10-07 04:32:18 -04:00
Yaakov Selkowitz
24d8902d75 Properly enable noopenh264
Like many options, libopenh264 is disabled if not specified.
2024-10-07 02:01:56 -04:00
Neal Gompa
d4e890a117 Restore bootstrap bcond 2024-10-02 06:12:29 -04:00
Neal Gompa
a38892833e Fix chromaprint bcond 2024-10-02 04:56:28 -04:00
Michel Lind
7dc95097f1 Bump release
Signed-off-by: Michel Lind <salimma@fedoraproject.org>
2024-09-25 16:32:18 -05:00
Michel Lind
4fbec760e3 Disable omxil completely, it's now retired
Rebuild for tesseract-5.4.1-3 (soversion change from 5.4.1 to just 5.4)

Signed-off-by: Michel Lind <salimma@fedoraproject.org>
2024-09-25 16:08:32 -05:00
Neal Gompa
9a1dccdbf1 Rebuild for newer ffnvcodec 2024-09-20 13:36:10 -04:00
Neal Gompa
0c021328ba Rebase to 7.0.2 (rhbz#2273572)
- Drop OpenH264 dlopen headers as we use noopenh264 now
- Use modern bconds

Co-authored-by: Robert-André Mauchin <eclipseo@fedoraproject.org>
2024-09-07 11:45:32 +02:00
Fabio Valentini
2612e2ec91
Update to 6.1.2 2024-08-24 11:54:40 +02:00
Neal Gompa
69d06fe675 Backport fixes for Mesa 24.0.6+ / 21.1.4+ changes for VA-API 2024-07-20 00:04:00 -04:00
Fedora Release Engineering
805473621e Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-17 23:04:56 +00:00
Nicolas Chauvet
51db0dbaf0 Rebuilt for libplacebo/vmaf 2024-07-16 19:59:00 +02:00
Dominik 'Rathann' Mierzejewski
0179ea0006 Backport fix for CVE-2023-49528 2024-06-19 19:27:20 +02:00
Sandro Mani
fe4d7dd258 Rebuild for tesseract-5.4.1 2024-06-13 22:38:43 +02:00
Robert-André Mauchin
55ef1c245c Rebuild for svt-av1 2.1.0 2024-05-29 18:38:55 +02:00
Robert-André Mauchin
175f57600b Rebuild for svt-av1 2.1.0 2024-05-29 18:34:36 +02:00
Simone Caronni
16078d1d91 Rebuild for updated VapourSynth 2024-05-22 09:20:16 +02:00
Dominik Mierzejewski
16bba3567b Backport a fix to build with Vulkan headers >= 1.3.280.0 2024-04-27 23:06:08 +02:00
Kalev Lember
db2acb3681 Stop using bundled openh264 headers in F40+ and build against noopenh264
Now that we have noopenh264 stub package in Fedora, we can stop using
bundled openh264 headers and build against the system package instead.
2024-04-23 16:52:11 +02:00
Sérgio M. Basto
324d6a3037 Rebuild for jpegxl (libjxl) 0.10.2 2024-03-13 02:14:55 +00:00
Dominik 'Rathann' Mierzejewski
a4fcaad3a2 Enable drawtext filter (requires libharfbuzz) 2024-03-12 23:35:22 +01:00
Sérgio M. Basto
46131eefb0 Rebuild for jpegxl (libjxl) 0.9.2 with soname bump 2024-02-14 02:40:14 +00:00
Pete Walter
45f69ccd8a Rebuild for libvpx 1.14.x 2024-02-07 22:50:24 +00:00
Sandro Mani
774d42a007 Fix build with gcc14 (-Wint-conversion, -Wincompatible-pointer-types) 2024-01-31 15:30:24 +00:00
Dominik 'Rathann' Mierzejewski
67cc0fa210 Revert "Backport patch to fix -Wint-conversion for gcc-14"
This reverts commit b58631f030.

This change is not a complete fix. A complete fix is provided in
https://src.fedoraproject.org/rpms/ffmpeg/pull-request/23 . This
revert is necessary for the PR to be mergeable again.
2024-01-31 16:28:56 +01:00
Nicolas Chauvet
b58631f030 Backport patch to fix -Wint-conversion for gcc-14
https://trac.ffmpeg.org/ticket/10833
2024-01-31 14:36:55 +01:00
Sandro Mani
1a68b30970 Rebuild (tesseract) 2024-01-28 11:32:35 +01:00
Fedora Release Engineering
5b76b46070 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-24 11:31:07 +00:00
Fedora Release Engineering
2fe1d67c6d Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-19 19:15:07 +00:00
Neal Gompa
bea10e455b Add missing files for some of the libraries to fix riscv64 builds 2024-01-15 10:55:52 -05:00
Fabio Valentini
e4f0babc79
Rebuild for dav1d 1.3.0 2024-01-12 18:18:42 +01:00
Florian Weimer
b05e4ff557 Backport upstream patch to fix C compatibility issues
Related to:

  <https://fedoraproject.org/wiki/Changes/PortingToModernC>
  <https://fedoraproject.org/wiki/Toolchain/PortingToModernC>
2024-01-05 15:48:35 +01:00
Neal Gompa
f3982b50da Update to 6.1.1 2024-01-04 11:04:37 -05:00
Neal Gompa
37bbe8c93a Rebase to 6.1 2024-01-04 10:48:18 -05:00
Neal Gompa
e691a74e2b Delete inaccurate changelog entry
We haven't done this yet...
2023-12-08 13:06:07 -05:00
Kalev Lember
9f0ba814c4 Backport upstream patch to drop openh264 runtime version checks
... in order to make it possible for us to update openh264 without
having to recompile ffmpeg against the new version every time. As
openh264 is distributed by Cisco and ffmpeg is in Fedora, it's difficult
to coordinate lock step updates. Drop the version check to make this
easier.

https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=10211

This also rebases downstream ffmpeg-dlopen-openh264.patch on top of
the new patch.
2023-12-08 16:48:07 +01:00
Kalev Lember
cc897ea5ca Prefer openh264 over noopenh264
Add "Suggests: openh264" so that dnf picks openh264 over noopenh264 that
both provide the same library.
2023-12-08 16:48:07 +01:00
Neal Gompa
b3cfba90d4 Update to 6.0.1
- Add ffmpeg chromium support patch (#2240127)
- Use git to apply patches
2023-11-11 09:10:58 -05:00
Neal Gompa
d30a3b67b3 Add patches to support enhanced RTMP and AV1 encoding through VA-API
- Force AAC decoding through fdk-aac-free
2023-11-10 07:13:31 -05:00
Dominik Mierzejewski
853aa9d7cf Backport upstream patch to fix segfault when passing non-existent filter
option (rfbz#6773)
2023-10-09 10:09:54 +02:00
Sandro Mani
8be4d0455d Rebuild (tesseract) 2023-10-07 23:53:30 +02:00
Neal Gompa
0bad397a42 Fix ffmpeg-allow-fdk-aac-free.patch to apply with git-am 2023-09-30 08:09:48 -04:00
Nicolas Chauvet
60f694e267 Rebuilt 2023-09-29 15:18:11 +02:00
Dominik 'Rathann' Mierzejewski
9bc65b1ebf Backport upstream patch to fix assembly with binutils 2.41. 2023-08-25 15:08:21 +02:00
Richard Shaw
717e5ed377 Rebuild for codec2. 2023-08-05 15:51:42 -05:00
Dominik Mierzejewski
a8da7eeb17 Rebuild for libplacebo 2023-07-28 10:49:56 +02:00
Fedora Release Engineering
d0a510651e Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-19 19:38:25 +00:00
Sandro Mani
897126763d Rebuild (tesseract) 2023-07-14 12:45:53 +02:00
Sérgio M. Basto
c5e3c6b45d Mass rebuild for jpegxl-0.8.1 2023-06-18 19:21:45 +01:00
Dominik Mierzejewski
92fb6f4896 Rebuild for libdc1394 2023-06-12 08:45:18 +02:00
Adam Williamson
5d50a92a6f Rebuild for tesseract again after ngompa's change 2023-04-06 08:45:36 -07:00
Neal Gompa
7204b79850 Drop tests for stripped codecs 2023-04-03 08:17:17 -04:00
Neal Gompa
a0b0941d9b Include RISC-V support sources in the tarball 2023-04-03 08:11:00 -04:00
Sandro Mani
7a3b9cb05b Rebuild (tesseract) 2023-04-03 13:22:06 +02:00
Nicolas Chauvet
fb3e130083 typo 2023-03-22 10:03:47 +01:00
Nicolas Chauvet
1bf8efa434 Update changelog 2023-03-22 10:00:01 +01:00
Nicolas Chauvet
b5a29aa6c4 Apply patches for libplacebo 2023-03-22 09:59:39 +01:00
Neal Gompa
4d26310d1d Add missing source files for the build 2023-03-12 09:56:00 -04:00
Neal Gompa
b78409f0ff Switch Bootstrap mode off 2023-03-12 03:06:20 -04:00
Neal Gompa
1ab39370ca ffmpeg-new-coder-errors.patch: Revert message adjustment 2023-03-12 03:06:14 -04:00
Neal Gompa
30f7e744e6 Remove leftover SVT-AV1 conditional 2023-03-12 03:06:04 -04:00
Neal Gompa
c8373e6bd5 Rebase to version 6.0 2023-03-12 00:44:10 -05:00
Neal Gompa
03288939b1 Merge branch 'rawhide' into f38 2023-02-15 23:15:57 -05:00
Yaakov Selkowitz
d7bb75a2c6 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:15:09 -05:00
Neal Gompa
be0b562a32 Enable support for the RIST protocol through librist 2023-02-15 23:12:32 -05:00
Tom Callaway
d1fae7471b bootstrap off 2023-02-15 20:52:54 -05:00
Tom Callaway
9c2f813c87 rebuild for libvpx (bootstrap) 2023-02-15 20:10:59 -05:00
Tom Callaway
04c040828d bootstrap off 2023-02-15 18:40:28 -05:00
Tom Callaway
a8c440ac75 bootstrap needed 2023-02-15 17:38:17 -05:00
Tom Callaway
cb6d660a34 rebuild for libvpx 2023-02-15 17:25:15 -05:00
Yaakov Selkowitz
4c7c44eb6a 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 16:02:24 -05:00
Yaakov Selkowitz
ec5387b4b2 Disable features for which RHEL 9 deps are too old 2023-02-13 17:17:10 -05:00
Yaakov Selkowitz
71fac2e7b2 Enable lcms2, lv2, placebo, rabbitmq, xv 2023-02-13 16:49:14 -05:00
Neal Gompa
aea1720295 Disable flite for RHEL 9 as flite is too old 2023-02-13 16:33:10 -05:00
Yaakov Selkowitz
03bf8f1491 Upstream fix for vulkan-headers 1.3.236.0 2023-02-03 16:06:49 -05:00
Yaakov Selkowitz
5ca5b0d944 Properly enable caca, flite, gme, iec61883 2023-02-03 12:29:57 -05:00
Neal Gompa
45f894ec0e Enable more approved codecs
Additionally, add a script used for making the source file list
easier to populate as new codecs are added.
2023-01-30 19:03:51 -05:00
Fedora Release Engineering
dab172bcf5 Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-19 03:23:31 +00:00
Yaakov Selkowitz
ebc2dc9a50 Properly enable libzvbi_teletext decoder
The --enable-libzvbi flag has no effect if libzvbi_teletext decoder
is missing from enable_decoders.
2023-01-15 19:01:31 -05:00
Sandro Mani
4c74eebb95 Rebuild (tesseract) 2022-12-23 21:59:18 +01:00
Neal Gompa
21b47e575a Bump minimum version for svt-av1 BR 2022-11-19 20:20:35 -05:00
Neal Gompa
510b513281 Add minimum version for libjxl to BR 2022-11-16 07:19:11 -05:00
Neal Gompa
bcf9b4a180 Unconditionally enable Vulkan 2022-11-09 08:24:45 -05:00
Neal Gompa
8b3cc25f1d Update to version 5.1.2
Refresh dlopen headers and patch for OpenH264 2.3.1
2022-10-12 10:22:29 -04:00
Leigh Scott
14bc6a0684 Remove internal headers, they shouldn't be used outside of ffmpeg compile
Readd description
2022-09-07 11:40:38 +01:00
Neal Gompa
75b99d6f3c Update to version 5.1.1
- Refresh dlopen headers for OpenH264 2.3.0
- Disable omxil and crystalhd for RHEL
2022-09-04 09:52:01 -04:00
Neal Gompa
42000ced65 Disable bootstrap and rework chromaprint dependency 2022-08-29 19:59:29 -04:00
Neal Gompa
0e5c137345 Add missing source files to fix aarch64 build 2022-08-24 08:48:30 -04:00
Neal Gompa
5b6ea413e4 Add missing source files to fix i686 build 2022-08-24 08:04:13 -04:00
Neal Gompa
d4753c2533 Rebase to version 5.1 2022-08-24 07:05:00 -04:00
Fedora Release Engineering
19be51f626 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-21 03:07:37 +00:00
Richard Shaw
cc14e220c8 Rebuild for codec2 1.0.4. 2022-07-09 08:12:51 -05:00
Sandro Mani
cabb4a0cb4 Rebuild (tesseract) 2022-07-08 10:49:18 +02:00
Robert-André Mauchin
6cb5931b59 Bootstrap ffmpeg (break libchromaprint cyclic dependency) 2022-06-22 21:50:05 +02:00
Robert-André Mauchin
41e1909325 Rebuild for new aom, dav1d, rav1e and svt-av1 2022-06-22 21:31:09 +02:00
Mamoru TASAKA
e2ff46df52 Rebuild for new srt 2022-06-17 15:28:54 +09:00
22 changed files with 1415 additions and 4322 deletions

2
.gitignore vendored
View file

@ -2,3 +2,5 @@ ffmpeg-*.asc
ffmpeg-*.rpm
ffmpeg-*.tar.xz
/ffmpeg.keyring
/results_*
/*.rpm

View file

@ -1,33 +0,0 @@
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

@ -5,24 +5,3 @@ demux, stream, filter and play pretty much anything that humans and 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
community or a corporation.
## Creating the 'free' tarball
1. Update the `Version` in the spec file.
2. Set the `Release` to 0 in the spec file.
3. Set `pkg_suffix` to `%nil`
4. Do a full build locally: `fedpkg mockbuild --with full_build`
5. Run `./ffmpeg_update_free_sources.sh results_ffmpeg/5.0/0.fc35/build.log`
This will update the `ffmpeg_free_sources` file list.
Note that header files will need to be manually added
to the `ffmpeg_free_sources` file list.
6. Run `./ffmpeg_gen_free_tarball.sh` to create the tarball.
7. Set `pkg_suffix` to `-free` again
8. Set the `Release` to 1 in the spec file.
9. Do a scratch build.
OR
1. Edit `ffmpeg_free_sources` and add missing files
2. Run `./ffmpeg_gen_free_tarball.sh` to create the tarball.
3. Do a scratch build.

View file

@ -1,73 +1,320 @@
## module name # reason for enablement in ffmpeg (usually there is another package that already got legal review)
aac
aasc
libfdk_aac # fdk-aac-free
ac3
acelp_kelvin
adpcm_4xm
adpcm_adx
adpcm_afc
adpcm_agm
adpcm_aica
adpcm_argo
adpcm_ct
adpcm_dtk
adpcm_ea
adpcm_ea_maxis_xa
adpcm_ea_r1
adpcm_ea_r2
adpcm_ea_r3
adpcm_ea_xas
adpcm_g722
adpcm_g726
adpcm_g726le
adpcm_ima_acorn
adpcm_ima_alp
adpcm_ima_amv
adpcm_ima_apc
adpcm_ima_apm
adpcm_ima_cunning
adpcm_ima_dat4
adpcm_ima_dk3
adpcm_ima_dk4
adpcm_ima_ea_eacs
adpcm_ima_ea_sead
adpcm_ima_iss
adpcm_ima_moflex
adpcm_ima_mtf
adpcm_ima_oki
adpcm_ima_qt
adpcm_ima_qt_at
adpcm_ima_rad
adpcm_ima_smjpeg
adpcm_ima_ssi
adpcm_ima_wav
adpcm_ima_ws
adpcm_ms
adpcm_mtaf
adpcm_psx
adpcm_sbpro_2
adpcm_sbpro_3
adpcm_sbpro_4
adpcm_swf
adpcm_thp
adpcm_thp_le
adpcm_vima
adpcm_xa
adpcm_xmd
adpcm_yamaha
adpcm_zork
aic
alac
alias_pix
amrnb
amrwb
amv
anm
ansi # trivial
anull
apac
ape
apng # animated png
apv
arbc
argo
ass # trivial
asv1
asv2
atrac1
atrac3
atrac3al
atrac3p
atrac3pal
aura
aura2
av1 # libaom
av1_qsv # libaom
ayuv # trivial
bethsoftvid # trivial
bfi # trivial
bink
binkaudio_dct
binkaudio_rdft
bintext
bitpacked # trivial
bmp # trivial
bmv_audio
bmv_video
bonk
brender_pix
c93
cbd2_dpcm
ccaption
cdgraphics
cdtoons
cdxl
cinepak
clearvideo
cljr
cook
cpia
cscd
cyuv
dca
dds
derf_dpcm
dfa
dfpwm
dirac # dirac
dnxhd
dnxhr
dolby_e
dpx
dsd_lsbf
dsd_msbf
dsicinaudio
dsicinvideo
dss_sp
dvaudio
dvbsub
dvdsub
dvvideo
dxa
dxtory
eacmv
eamad
eatgq
eatgv
eatqi
eightbps
eightsvx_exp
eightsvx_fib
escape124
escape130
evrc
exr # openEXR
ffv1 # ffmpeg
ffvhuff # ffmpeg
ffwavesynth # pseudo
fits
flac # libFLAC
flashsv
flashsv2
flic
flv
fmvc
fourxm
ftr # fdk-aac
g723_1
g729
gdv
gem
gif # libpng
gremlin_dpcm
gsm # libgsm
gsm_ms
gsm_ms_at
h261
h263
h263_v4l2m2m # hardware
h263i
h263p
hap
hca
hcom
hdr
hnm4_video
hq_hqa
hqx
huffyuv # trivial+zlib
hymt # huffyuv-mt
iac
idcin
idf
iff_ilbm
ilbc # ilbc
imc
indeo2
indeo3
indeo4
indeo5
interplay_acm
interplay_dpcm
interplay_video
ipu
jacosub
jpeg2000 # openjpeg2
jpegls
jv
kgv1
kmvc
lagarith
libaribb24 # aribb24
libaribcaption # libaribcaption
libaom # libaom
libaom_av1 # libaom
libcodec2 # codec2
libdav1d # av1
libgsm # libgsm
libgsm_ms # libgsm
libilbc # ilbc
libopenh264 # openh264_dlopen
libjxl # libjxl
liblc3 # liblc3
libopencore_amrnb # opencore-amr
libopencore_amrwb # opencore-amr
libopenh264 # openh264
libopenjpeg # openjpeg
libopus # opus
librsvg # librsvg
libschroedinger # schroedinger
libspeex # speex
libvorbis # libvorbis
libvpx_vp8 # libvpx
libvpx_vp9 # libvpx
libxevd
libzvbi_teletext # zvbi
loco
lscr
m101
mace3
mace6
mdec
media100
metasound
microdvd
mimic
misc4
mjpeg # mjpegtools
mjpeg_qsv # mjpegtools
mjpegb
mlp
mmvideo
motionpixels
mp1 # twolame/lame
mp1float # twolame/lame
mp2 # twolame
mp2float # twolame
mp3 # lame
mp3adu
mp3adufloat
mp3float # lame
mpeg1video
mp3on4
mp3on4float
mpc7
mpc8
mpeg1_v4l2m2m
mpeg2video
mpeg1video
mpeg2_qsv
mpeg2_v4l2m2m
mpeg2video
mpeg4
mpeg4_v4l2m2m # hardware
mpegvideo
mpl2
msa1
mscc
msmpeg4v1
msmpeg4v2
msmpeg4v3
msnsiren
msp2
msrle
mss1
mss2
msvideo1
mszh
mts2
mv30
mvc1
mvc2
mvdv
mvha
mwsc
mxpeg
nellymoser
nuv
on2avc
opus # libopus
paf_audio
paf_video
pam # trivial
pbm # trivial
pcm_alaw # trivial
pcm_bluray
pcm_dvd
pcm_f16le # trivial
pcm_f24le # trivial
pcm_f32be # trivial
pcm_f32le # trivial
pcm_f64be # trivial
pcm_f64le # trivial
pcm_lxf # trivial
pcm_mulaw # trivial
pcm_s16be # trivial
pcm_s16be_planar # trivial
pcm_s16le # trivial
pcm_s16le_planar # trivial
pcm_s24be # trivial
pcm_s24daud # trivial
pcm_s24le # trivial
pcm_s24le_planar # trivial
pcm_s32be # trivial
pcm_s32le # trivial
pcm_s32le_planar # trivial
pcm_s64be # trivial
pcm_s64le # trivial
pcm_s8 # trivial
pcm_s8_planar # trivial
pcm_sga # trivial
pcm_u16be # trivial
pcm_u16le # trivial
pcm_u24be # trivial
@ -75,44 +322,160 @@ pcm_u24le # trivial
pcm_u32be # trivial
pcm_u32le # trivial
pcm_u8 # trivial
pcm_vidc # trivial
pcx
pfm # trivial
pgm # trivial
pgmyuv # trivial
pgssub # mkvtoolnix
pgx
phm # trivial
photocd
pictor
pjs
png # libpng
ppm # trivial
prores
prores_raw
prosumer
psd
ptx
qcelp
qdm2
qdmc
qdraw
qoa
qoi
qpeg
qtrle
r10k
r210
ra_144
ra_288
rasc
rawvideo # trivial
realtext
rka
rl2
roq
roq_dpcm
rpza
rscc
rv10
rv20
s302m
sami
sanm
sbc
screenpresso
sdx2_dpcm
sgi # trivial
sgirle # trivial
shorten
simbiosis_imx
sipr
siren
smackaud
smacker
smc
smvjpeg
snow
sol_dpcm
sonic
sp5x
speedhq
speex
srgc
srt # trivial
ssa # trivial
stl
subrip
subviewer
subviewer1
sunrast # trivial
svq1
svq3
tak
targa # trivial
targa_y216
tdsc
text # trivial
theora # libtheora
thp
tiertexseqvideo
tiff # libtiff
tmv
truehd
truemotion1
truemotion2
truemotion2rt
truespeech
tscc
tscc2
tta
twinvq
txd
ulti
utvideo
v210 # trivial
v210x # trivial
v308 # trivial
v408 # trivial
v410 # trivial
vb
vble
vcr1
vmdaudio
vmdvideo
vmnc
vnull
vorbis # libvorbis
vp3 # libav
vp4 # libav
vp5 # libav
vp6 # libav
vp6a # libav
vp6f # libav
vp7 # libav
vp8 # libvpx
vp8_qsv # libvpx
vp8_v4l2m2m # libvpx
vp9 # libvpx
vp9_qsv # libvpx
vp9_v4l2m2m # libvpx
vplayer
vqa
vqc
wady_dpcm
wavarc
wavpack
wbmp
wcmv
webp # libwebp
webvtt # trivial
wmav1
wmav2
wmavoice
wmv1
wmv2
wnv1
wrapped_avframe # passthrough
ws_snd1
xan_dpcm
xan_wc3
xan_wc4
xbin
xbm # trivial
xface
xl
xpm
xsub
xwd # xwd
y41p # trivial
ylc
yop
yuv4 # trivial
zero12v
zerocodec
zlib # zlib
zmbv # dosbox

View file

@ -1,20 +1,68 @@
## module name # reason for enablement in ffmpeg (usually there is another package that already got legal review)
a64multi
a64multi5
aac
libfdk_aac # fdk-aac-free
ac3
adpcm_adx
adpcm_argo
adpcm_g722
adpcm_g726
adpcm_g726le
adpcm_ima_alp
adpcm_ima_amv
adpcm_ima_apm
adpcm_ima_qt
adpcm_ima_ssi
adpcm_ima_wav
adpcm_ima_ws
adpcm_ms
adpcm_swf
adpcm_yamaha
alac
alias_pix
amv
anull
apng # libpng
ass # trivial
ayuv # trival
asv1
asv2
av1_amf
av1_nvenc
av1_qsv
av1_vaapi
bitpacked # trivial
bmp # trivial
cinepak
cljr
dca
dfpwm
dnxhd
dnxhr
dpx
dvbsub
dvdsub
dvvideo
exr
ffv1
ffvhuff # trivial+zlib
flac # libFLAC
flashsv
flashsv2
flv
g723_1
gif # libpng
h261
h263
h263_v4l2m2m # hardware
h263p
h264_amf # hardware
h264_nvenc # hardware
h264_qsv # hardware
h264_v4l2m2m # hardware
h264_vaapi # hardware
hap
hdr
hevc_amf # hardware
hevc_nvenc # hardware
hevc_qsv # hardware
@ -22,38 +70,51 @@ hevc_v4l2m2m # hardware
hevc_vaapi # hardware
huffyuv # trivial+zlib
ilbc # ilbc
jpegls
jpeg2000
libaom # libaom
jpegls
libaom
libaom_av1 # libaom
libcodec2 # codec2
libgsm # libgsm
libgsm_ms # libgsm
libilbc # ilbc
libjxl # libjxl
liblc3 # liblc3
libmp3lame # lame
libopenh264 # openh264_dlopen
liboapv
libopencore_amrnb
libopenh264 # openh264
libopenjpeg # openjpeg
libopus # opus
librav1e # rav1e
libschroedinger # schroedinger
libspeex # speex
libsvtav1
libtheora # libtheora
libtwolame # twolame
libvo_amrwbenc
libvorbis # libvorbis
libvpx_vp8 # libvpx
libvpx_vp9 # libvpx
libwebp # libwebp
libwebp_anim # libwebp
libxeve
libxvid # xvidcore
mjpeg # mjpegtools
mjpeg_qsv # mjpegtools
mjpeg_vaapi # mjpegtools
mlp
mp2 # twolame
mp2fixed # twolame
mpeg1video
mpeg2video
mpeg2_qsv
mpeg2_vaapi
mpeg2video
mpeg4
mpeg4_v4l2m2m # hardware
msmpeg4v2
msmpeg4v3
msvideo1
nellymoser
opus # opus
pam
pbm # trivial
@ -85,32 +146,70 @@ pcm_u8 # trivial
pcx
pgm # trivial
pgmyuv # trivial
phm # trivial
png # libpng
ppm # trivial
prores
prores_aw
prores_ks
qoi
qtrle
r10k # trivial
r210 # trivial
ra_144
rawvideo # trivial
roq
roq_dpcm
rpza
rv10
rv20
s302m
sbc
sgi # trivial
smc
snow
sonic
sonic_ls
speedhq
srt # trivial
ssa # trivial
subrip # trivial
sunrast # trivial
svq1
targa # trivial
text # trivial
tiff # libtiff
truehd
tta
ttml
utvideo
v210 # trivial
v308 # trivial
v408 # trivial
v410 # trivial
vc1_qsv # hardware
vc1_v4l2m2m # hardware
vc2 # dirac
vnull
vorbis # libvorbis
vp8_qsv # libvpx
vp8_v4l2m2m # libvpx
vp8_vaapi # libvpx
vp9_qsv # libvpx
vp9_vaapi # libvpx
wavpack
wbmp
webvtt # trivial
wmav1
wmav2
wmv1
wmv2
wrapped_avframe # passthrough
xbm # (X11)
xface
xsub
xwd # xwd
y41p # trivial
yuv4 # trivial
zlib # zlib
zmbv # dosbox

View file

@ -1,24 +1,27 @@
From: Andreas Schneider <asn@cryptomilk.org>
fdk-aac-free-devel is GPL compatible
See https://bugzilla.redhat.com/show_bug.cgi?id=1501522#c112
Index: ffmpeg-5.0/configure
Index: ffmpeg-7.0/configure
===================================================================
--- ffmpeg-5.0.orig/configure 2022-02-09 20:07:49.490888877 +0100
+++ ffmpeg-5.0/configure 2022-02-09 20:08:30.102854308 +0100
@@ -1783,7 +1783,6 @@ EXTERNAL_LIBRARY_GPL_LIST="
--- ffmpeg-7.0.orig/configure 2022-02-09 20:07:49.490888877 +0100
+++ ffmpeg-7.0/configure 2022-02-09 20:08:30.102854308 +0100
@@ -1872,7 +1872,6 @@ EXTERNAL_LIBRARY_GPL_LIST="
EXTERNAL_LIBRARY_NONFREE_LIST="
decklink
- libfdk_aac
libtls
"
@@ -1822,6 +1821,7 @@ EXTERNAL_LIBRARY_LIST="
@@ -1912,6 +1911,7 @@ EXTERNAL_LIBRARY_LIST="
libcodec2
libdav1d
libdc1394
libdrm
+ libfdk_aac
libflite
libfontconfig
libfreetype

46
ffmpeg-chromium.patch Normal file
View file

@ -0,0 +1,46 @@
From d32aacab65a322b66d6a1b48f6cdb03e42bde0f9 Mon Sep 17 00:00:00 2001
From: Frank Liberato <liberato@chromium.org>
Date: Wed, 7 Jul 2021 19:01:22 -0700
Subject: [PATCH] Add av_stream_get_first_dts for Chromium
---
libavformat/avformat.h | 4 ++++
libavformat/utils.c | 7 +++++++
2 files changed, 11 insertions(+)
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 1916aa2dc5..e6682849fa 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1170,6 +1170,10 @@ typedef struct AVStreamGroup {
struct AVCodecParserContext *av_stream_get_parser(const AVStream *s);
+// Chromium: We use the internal field first_dts vvv
+int64_t av_stream_get_first_dts(const AVStream *st);
+// Chromium: We use the internal field first_dts ^^^
+
#define AV_PROGRAM_RUNNING 1
/**
diff --git a/libavformat/utils.c b/libavformat/utils.c
index cf4d68bff9..7d750abf88 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -56,6 +56,13 @@ int ff_unlock_avformat(void)
* various utility functions for use within FFmpeg
*/
+// Chromium: We use the internal field first_dts vvv
+int64_t av_stream_get_first_dts(const AVStream *st)
+{
+ return cffstream(st)->first_dts;
+}
+// Chromium: We use the internal field first_dts ^^^
+
/* an arbitrarily chosen "sane" max packet size -- 50M */
#define SANE_CHUNK_SIZE (50000000)
--
2.41.0

View file

@ -2,55 +2,57 @@ From: Jan Engelhardt <jengelh@inai.de>
Edit the default codec selection such that
ffmpeg -i youtube.blah.webm foobar.mkv
ffmpeg -i youtube.blah.webm foobar.mkv
without any further arguments can produce a result even on a
reduced codec selection list.
---
libavformat/matroskaenc.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
libavformat/matroskaenc.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
Index: ffmpeg-5.0/libavformat/matroskaenc.c
Index: ffmpeg-7.0/libavformat/matroskaenc.c
===================================================================
--- ffmpeg-5.0.orig/libavformat/matroskaenc.c 2022-01-14 19:45:40.000000000 +0100
+++ ffmpeg-5.0/libavformat/matroskaenc.c 2022-02-04 08:29:14.582130919 +0100
@@ -2887,16 +2887,24 @@ static int mkv_query_codec(enum AVCodecI
--- ffmpeg-7.0.orig/libavformat/matroskaenc.c
+++ ffmpeg-7.0/libavformat/matroskaenc.c
@@ -3540,16 +3540,25 @@ static int mkv_query_codec(enum AVCodecI
return 0;
}
+#define PREFAUDIO \
+ CONFIG_LIBOPUS_ENCODER ? AV_CODEC_ID_OPUS : \
+ CONFIG_AAC_ENCODER ? AV_CODEC_ID_AAC : \
+ CONFIG_VORBIS_ENCODER ? AV_CODEC_ID_VORBIS : \
+ AV_CODEC_ID_AC3
const AVOutputFormat ff_matroska_muxer = {
.name = "matroska",
.long_name = NULL_IF_CONFIG_SMALL("Matroska"),
.mime_type = "video/x-matroska",
.extensions = "mkv",
+
const FFOutputFormat ff_matroska_muxer = {
.p.name = "matroska",
.p.long_name = NULL_IF_CONFIG_SMALL("Matroska"),
.p.mime_type = "video/x-matroska",
.p.extensions = "mkv",
.priv_data_size = sizeof(MatroskaMuxContext),
- .audio_codec = CONFIG_LIBVORBIS_ENCODER ?
- .p.audio_codec = CONFIG_LIBVORBIS_ENCODER ?
- AV_CODEC_ID_VORBIS : AV_CODEC_ID_AC3,
- .video_codec = CONFIG_LIBX264_ENCODER ?
- .p.video_codec = CONFIG_LIBX264_ENCODER ?
- AV_CODEC_ID_H264 : AV_CODEC_ID_MPEG4,
+ .audio_codec = PREFAUDIO,
+ .video_codec =
+ CONFIG_LIBVPX_VP9_ENCODER ? AV_CODEC_ID_VP9 : \
+ CONFIG_LIBX264_ENCODER ? AV_CODEC_ID_H264 : \
+ CONFIG_LIBVPX_VP8_ENCODER ? AV_CODEC_ID_VP8 : \
+ CONFIG_MPEG4_ENCODER ? AV_CODEC_ID_MPEG4 : \
+ AV_CODEC_ID_THEORA,
+ .p.audio_codec = PREFAUDIO,
+ .p.video_codec =
+ CONFIG_LIBVPX_VP9_ENCODER ? AV_CODEC_ID_VP9 : \
+ CONFIG_LIBX264_ENCODER ? AV_CODEC_ID_H264 : \
+ CONFIG_LIBVPX_VP8_ENCODER ? AV_CODEC_ID_VP8 : \
+ CONFIG_MPEG4_ENCODER ? AV_CODEC_ID_MPEG4 : \
+ AV_CODEC_ID_THEORA,
.init = mkv_init,
.deinit = mkv_deinit,
.write_header = mkv_write_header,
@@ -2954,8 +2962,7 @@ const AVOutputFormat ff_matroska_audio_m
.mime_type = "audio/x-matroska",
.extensions = "mka",
@@ -3617,8 +3626,7 @@ const FFOutputFormat ff_matroska_audio_m
.p.mime_type = "audio/x-matroska",
.p.extensions = "mka",
.priv_data_size = sizeof(MatroskaMuxContext),
- .audio_codec = CONFIG_LIBVORBIS_ENCODER ?
- .p.audio_codec = CONFIG_LIBVORBIS_ENCODER ?
- AV_CODEC_ID_VORBIS : AV_CODEC_ID_AC3,
+ .audio_codec = PREFAUDIO,
.video_codec = AV_CODEC_ID_NONE,
+ .p.audio_codec = PREFAUDIO,
.p.video_codec = AV_CODEC_ID_NONE,
.init = mkv_init,
.deinit = mkv_deinit,

View file

@ -1,383 +0,0 @@
From b8886826f44b4562aa2fbae3715ca6aa9e1b15e1 Mon Sep 17 00:00:00 2001
From: Neal Gompa <ngompa@fedoraproject.org>
Date: Wed, 12 Oct 2022 10:26:35 -0400
Subject: [PATCH] avcodec/openh264: Add the ability to dlopen() OpenH264
We can't directly depend on OpenH264, but we can weakly link to it
and gracefully expose the capability.
Co-authored-by: Andreas Schneider <asn@cryptomilk.org>
Co-authored-by: Neal Gompa <ngompa@fedoraproject.org>
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Signed-off-by: Neal Gompa <ngompa@fedoraproject.org>
---
configure | 3 +
libavcodec/Makefile | 1 +
libavcodec/libopenh264.c | 18 +++-
libavcodec/libopenh264_dlopen.c | 147 ++++++++++++++++++++++++++++++++
libavcodec/libopenh264_dlopen.h | 58 +++++++++++++
libavcodec/libopenh264dec.c | 10 +++
libavcodec/libopenh264enc.c | 10 +++
7 files changed, 245 insertions(+), 2 deletions(-)
create mode 100644 libavcodec/libopenh264_dlopen.c
create mode 100644 libavcodec/libopenh264_dlopen.h
diff --git a/configure b/configure
index 7a62f0c248..2369ea0240 100755
--- a/configure
+++ b/configure
@@ -250,6 +250,7 @@ External library support:
--enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
--enable-libopencv enable video filtering via libopencv [no]
--enable-libopenh264 enable H.264 encoding via OpenH264 [no]
+ --enable-libopenh264-dlopen enable H.264 encoding via dlopen()'ed OpenH264 [no]
--enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
--enable-libopenmpt enable decoding tracked files via libopenmpt [no]
--enable-libopenvino enable OpenVINO as a DNN module backend
@@ -1839,6 +1840,7 @@ EXTERNAL_LIBRARY_LIST="
libmysofa
libopencv
libopenh264
+ libopenh264_dlopen
libopenjpeg
libopenmpt
libopenvino
@@ -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_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; }
enabled libopenh264 && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion
+enabled libopenh264_dlopen && enable libopenh264 && add_cppflags "-I$(dirname `readlink -f $0`)/ffdlopenhdrs/include -DCONFIG_LIBOPENH264_DLOPEN=1"
enabled libopenjpeg && { check_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version ||
{ require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } }
enabled libopenmpt && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++"
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 3adf1536d8..9dc8389ce2 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -1058,6 +1058,7 @@ OBJS-$(CONFIG_LIBMP3LAME_ENCODER) += libmp3lame.o
OBJS-$(CONFIG_LIBOPENCORE_AMRNB_DECODER) += libopencore-amr.o
OBJS-$(CONFIG_LIBOPENCORE_AMRNB_ENCODER) += libopencore-amr.o
OBJS-$(CONFIG_LIBOPENCORE_AMRWB_DECODER) += libopencore-amr.o
+OBJS-$(CONFIG_LIBOPENH264_DLOPEN) += libopenh264_dlopen.o
OBJS-$(CONFIG_LIBOPENH264_DECODER) += libopenh264dec.o libopenh264.o
OBJS-$(CONFIG_LIBOPENH264_ENCODER) += libopenh264enc.o libopenh264.o
OBJS-$(CONFIG_LIBOPENJPEG_DECODER) += libopenjpegdec.o
diff --git a/libavcodec/libopenh264.c b/libavcodec/libopenh264.c
index 59c61a3a4c..14d83e27df 100644
--- a/libavcodec/libopenh264.c
+++ b/libavcodec/libopenh264.c
@@ -20,8 +20,13 @@
*/
#include <string.h>
+
+#ifdef CONFIG_LIBOPENH264_DLOPEN
+#include "libopenh264_dlopen.h"
+#else
#include <wels/codec_api.h>
#include <wels/codec_ver.h>
+#endif
#include "libavutil/log.h"
@@ -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
// configurations.
-#if !defined(_WIN32) || !defined(__GNUC__) || !ARCH_X86_32 || AV_GCC_VERSION_AT_LEAST(4, 7)
- 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;
+
+#ifdef CONFIG_LIBOPENH264_DLOPEN
+ if (loadLibOpenH264(logctx)) {
+ return AVERROR_EXTERNAL;
+ }
+#endif
+
+ libver = WelsGetCodecVersion();
if (memcmp(&libver, &g_stCodecVersion, sizeof(libver))) {
av_log(logctx, AV_LOG_ERROR, "Incorrect library version loaded\n");
return AVERROR(EINVAL);
diff --git a/libavcodec/libopenh264_dlopen.c b/libavcodec/libopenh264_dlopen.c
new file mode 100644
index 0000000000..49ea8ff44f
--- /dev/null
+++ b/libavcodec/libopenh264_dlopen.c
@@ -0,0 +1,147 @@
+/*
+ * OpenH264 dlopen code
+ *
+ * Copyright (C) 2022 Andreas Schneider <asn@cryptomilk.org>
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <dlfcn.h>
+
+#include "libopenh264_dlopen.h"
+
+/*
+ * The symbol binding makes sure we do not run into strict aliasing issues which
+ * can lead into segfaults.
+ */
+typedef int (*__oh264_WelsCreateSVCEncoder)(ISVCEncoder **);
+typedef void (*__oh264_WelsDestroySVCEncoder)(ISVCEncoder *);
+typedef int (*__oh264_WelsGetDecoderCapability)(SDecoderCapability *);
+typedef long (*__oh264_WelsCreateDecoder)(ISVCDecoder **);
+typedef void (*__oh264_WelsDestroyDecoder)(ISVCDecoder *);
+typedef OpenH264Version (*__oh264_WelsGetCodecVersion)(void);
+typedef void (*__oh264_WelsGetCodecVersionEx)(OpenH264Version *);
+
+#define OH264_SYMBOL_ENTRY(i) \
+ union { \
+ __oh264_##i f; \
+ void *obj; \
+ } _oh264_##i
+
+struct oh264_symbols {
+ OH264_SYMBOL_ENTRY(WelsCreateSVCEncoder);
+ OH264_SYMBOL_ENTRY(WelsDestroySVCEncoder);
+ OH264_SYMBOL_ENTRY(WelsGetDecoderCapability);
+ OH264_SYMBOL_ENTRY(WelsCreateDecoder);
+ OH264_SYMBOL_ENTRY(WelsDestroyDecoder);
+ OH264_SYMBOL_ENTRY(WelsGetCodecVersion);
+ OH264_SYMBOL_ENTRY(WelsGetCodecVersionEx);
+};
+
+/* Symbols are bound by loadLibOpenH264() */
+static struct oh264_symbols openh264_symbols;
+
+int oh264_WelsCreateSVCEncoder(ISVCEncoder **ppEncoder) {
+ return openh264_symbols._oh264_WelsCreateSVCEncoder.f(ppEncoder);
+}
+
+void oh264_WelsDestroySVCEncoder(ISVCEncoder *pEncoder) {
+ return openh264_symbols._oh264_WelsDestroySVCEncoder.f(pEncoder);
+}
+
+int oh264_WelsGetDecoderCapability(SDecoderCapability *pDecCapability) {
+ return openh264_symbols._oh264_WelsGetDecoderCapability.f(pDecCapability);
+}
+
+long oh264_WelsCreateDecoder(ISVCDecoder **ppDecoder) {
+ return openh264_symbols._oh264_WelsCreateDecoder.f(ppDecoder);
+}
+
+void oh264_WelsDestroyDecoder(ISVCDecoder *pDecoder) {
+ return openh264_symbols._oh264_WelsDestroyDecoder.f(pDecoder);
+}
+
+OpenH264Version oh264_WelsGetCodecVersion(void) {
+ return openh264_symbols._oh264_WelsGetCodecVersion.f();
+}
+
+void oh264_WelsGetCodecVersionEx(OpenH264Version *pVersion) {
+ openh264_symbols._oh264_WelsGetCodecVersionEx.f(pVersion);
+}
+
+static void *_oh264_bind_symbol(AVCodecContext *avctx,
+ void *handle,
+ const char *sym_name) {
+ void *sym = NULL;
+
+ sym = dlsym(handle, sym_name);
+ if (sym == NULL) {
+ const char *err = dlerror();
+ av_log(avctx,
+ AV_LOG_WARNING,
+ "%s: Failed to bind %s\n",
+ err,
+ sym_name);
+ return NULL;
+ }
+
+ return sym;
+}
+
+#define oh264_bind_symbol(avctx, handle, sym_name) \
+ if (openh264_symbols._oh264_##sym_name.obj == NULL) { \
+ openh264_symbols._oh264_##sym_name.obj = _oh264_bind_symbol(avctx, handle, #sym_name); \
+ if (openh264_symbols._oh264_##sym_name.obj == NULL) { \
+ return 1; \
+ } \
+ }
+
+int loadLibOpenH264(AVCodecContext *avctx) {
+ static bool initialized = false;
+ void *libopenh264 = NULL;
+ const char *err = NULL;
+
+ if (initialized) {
+ return 0;
+ }
+
+#define OPENH264_LIB "libopenh264.so.7"
+ libopenh264 = dlopen(OPENH264_LIB, RTLD_LAZY);
+ err = dlerror();
+ if (err != NULL) {
+ av_log(avctx, AV_LOG_WARNING,
+ "%s: %s is missing, openh264 support will be disabled\n", err,
+ OPENH264_LIB);
+
+ if (libopenh264 != NULL) {
+ dlclose(libopenh264);
+ }
+ return 1;
+ }
+
+ oh264_bind_symbol(avctx, libopenh264, WelsCreateSVCEncoder);
+ oh264_bind_symbol(avctx, libopenh264, WelsDestroySVCEncoder);
+ oh264_bind_symbol(avctx, libopenh264, WelsGetDecoderCapability);
+ oh264_bind_symbol(avctx, libopenh264, WelsCreateDecoder);
+ oh264_bind_symbol(avctx, libopenh264, WelsDestroyDecoder);
+ oh264_bind_symbol(avctx, libopenh264, WelsGetCodecVersion);
+ oh264_bind_symbol(avctx, libopenh264, WelsGetCodecVersionEx);
+
+ initialized = true;
+
+ return 0;
+}
diff --git a/libavcodec/libopenh264_dlopen.h b/libavcodec/libopenh264_dlopen.h
new file mode 100644
index 0000000000..d7d8bb7cad
--- /dev/null
+++ b/libavcodec/libopenh264_dlopen.h
@@ -0,0 +1,58 @@
+/*
+ * OpenH264 dlopen code
+ *
+ * Copyright (C) 2022 Andreas Schneider <asn@cryptomilk.org>
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef HAVE_LIBOPENH264_DLOPEN_H
+#define HAVE_LIBOPENH264_DLOPEN_H
+
+#ifdef CONFIG_LIBOPENH264_DLOPEN
+
+#include <wels/codec_api.h>
+#include <wels/codec_ver.h>
+
+#include "avcodec.h"
+
+int oh264_WelsCreateSVCEncoder(ISVCEncoder **ppEncoder);
+#define WelsCreateSVCEncoder oh264_WelsCreateSVCEncoder
+
+void oh264_WelsDestroySVCEncoder(ISVCEncoder *pEncoder);
+#define WelsDestroySVCEncoder oh264_WelsDestroySVCEncoder
+
+int oh264_WelsGetDecoderCapability(SDecoderCapability *pDecCapability);
+#define WelsGetDecoderCapability oh264_WelsGetDecoderCapability
+
+long oh264_WelsCreateDecoder(ISVCDecoder **ppDecoder);
+#define WelsCreateDecoder oh264_WelsCreateDecoder
+
+void oh264_WelsDestroyDecoder(ISVCDecoder *pDecoder);
+#define WelsDestroyDecoder oh264_WelsDestroyDecoder
+
+OpenH264Version oh264_WelsGetCodecVersion(void);
+#define WelsGetCodecVersion oh264_WelsGetCodecVersion
+
+void oh264_WelsGetCodecVersionEx(OpenH264Version *pVersion);
+#define WelsGetCodecVersionEx oh264_WelsGetCodecVersionEx
+
+int loadLibOpenH264(AVCodecContext *avctx);
+
+#endif /* CONFIG_LIBOPENH264_DLOPEN */
+
+#endif /* HAVE_LIBOPENH264_DLOPEN_H */
diff --git a/libavcodec/libopenh264dec.c b/libavcodec/libopenh264dec.c
index 97d3630df6..feb0a0927e 100644
--- a/libavcodec/libopenh264dec.c
+++ b/libavcodec/libopenh264dec.c
@@ -19,8 +19,12 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#ifdef CONFIG_LIBOPENH264_DLOPEN
+#include "libopenh264_dlopen.h"
+#else
#include <wels/codec_api.h>
#include <wels/codec_ver.h>
+#endif
#include "libavutil/common.h"
#include "libavutil/fifo.h"
@@ -55,6 +59,12 @@ static av_cold int svc_decode_init(AVCodecContext *avctx)
int log_level;
WelsTraceCallback callback_function;
+#ifdef CONFIG_LIBOPENH264_DLOPEN
+ if (loadLibOpenH264(avctx)) {
+ return AVERROR_DECODER_NOT_FOUND;
+ }
+#endif
+
if ((err = ff_libopenh264_check_version(avctx)) < 0)
return AVERROR_DECODER_NOT_FOUND;
diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index 2001dc22b4..c8b1348df2 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -19,8 +19,12 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#ifdef CONFIG_LIBOPENH264_DLOPEN
+#include "libopenh264_dlopen.h"
+#else
#include <wels/codec_api.h>
#include <wels/codec_ver.h>
+#endif
#include "libavutil/attributes.h"
#include "libavutil/common.h"
@@ -136,6 +140,12 @@ static av_cold int svc_encode_init(AVCodecContext *avctx)
WelsTraceCallback callback_function;
AVCPBProperties *props;
+#ifdef CONFIG_LIBOPENH264_DLOPEN
+ if (loadLibOpenH264(avctx)) {
+ return AVERROR_ENCODER_NOT_FOUND;
+ }
+#endif
+
if ((err = ff_libopenh264_check_version(avctx)) < 0)
return AVERROR_ENCODER_NOT_FOUND;
--
2.36.1

View file

@ -1,95 +0,0 @@
From fe17c9fadf375d8beeb42b062390dfe18cb59e08 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn@cryptomilk.org>
Date: Fri, 11 Feb 2022 09:46:15 +0100
Subject: [PATCH 1/2] avcodec/exif: Include bytestream.h for GetByteContext
bytestream.h should be directly included for GetByteContext and not
rely on other headers to include it. It could be removed from there.
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
---
libavcodec/exif.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/libavcodec/exif.h b/libavcodec/exif.h
index 4db84a1c2f..310f6e8e64 100644
--- a/libavcodec/exif.h
+++ b/libavcodec/exif.h
@@ -30,6 +30,7 @@
#include <stdint.h>
#include "libavutil/dict.h"
+#include "bytestream.h"
#include "tiff.h"
#define EXIF_MAX_IFD_RECURSION 2
--
2.34.1
From 45a9f8044ef6dc425209141e3d9272008ce6bbff Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn@cryptomilk.org>
Date: Fri, 11 Feb 2022 09:49:25 +0100
Subject: [PATCH 2/2] avcodec/exif: Include tiff_common.h only where needed
The exif.h header doesn't use anything from tiff.h.
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
---
libavcodec/exif.c | 1 +
libavcodec/exif.h | 1 -
libavcodec/mjpegdec.c | 1 +
libavcodec/webp.c | 1 +
4 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/libavcodec/exif.c b/libavcodec/exif.c
index 0b656fd09b..9485b24b8e 100644
--- a/libavcodec/exif.c
+++ b/libavcodec/exif.c
@@ -26,6 +26,7 @@
*/
#include "exif.h"
+#include "tiff_common.h"
static const char *exif_get_tag_name(uint16_t id)
diff --git a/libavcodec/exif.h b/libavcodec/exif.h
index 310f6e8e64..ffacba7e66 100644
--- a/libavcodec/exif.h
+++ b/libavcodec/exif.h
@@ -31,7 +31,6 @@
#include <stdint.h>
#include "libavutil/dict.h"
#include "bytestream.h"
-#include "tiff.h"
#define EXIF_MAX_IFD_RECURSION 2
#define EXIF_TAG_NAME_LENGTH 32
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
index a735d2337d..267609d96a 100644
--- a/libavcodec/mjpegdec.c
+++ b/libavcodec/mjpegdec.c
@@ -50,6 +50,7 @@
#include "tiff.h"
#include "exif.h"
#include "bytestream.h"
+#include "tiff_common.h"
static int init_default_huffman_tables(MJpegDecodeContext *s)
diff --git a/libavcodec/webp.c b/libavcodec/webp.c
index 9e642e050a..148dc02170 100644
--- a/libavcodec/webp.c
+++ b/libavcodec/webp.c
@@ -48,6 +48,7 @@
#include "exif.h"
#include "get_bits.h"
#include "internal.h"
+#include "tiff_common.h"
#include "thread.h"
#include "vp8.h"
--
2.34.1

View file

@ -1,13 +0,0 @@
Index: ffmpeg-5.0/libavformat/tls_gnutls.c
===================================================================
--- ffmpeg-5.0.orig/libavformat/tls_gnutls.c 2022-01-14 19:45:40.000000000 +0100
+++ ffmpeg-5.0/libavformat/tls_gnutls.c 2022-02-10 23:06:52.364362893 +0100
@@ -192,7 +192,7 @@ static int tls_open(URLContext *h, const
gnutls_transport_set_pull_function(p->session, gnutls_url_pull);
gnutls_transport_set_push_function(p->session, gnutls_url_push);
gnutls_transport_set_ptr(p->session, p);
- gnutls_priority_set_direct(p->session, "NORMAL", NULL);
+ gnutls_set_default_priority(p->session);
do {
if (ff_check_interrupt(&h->interrupt_callback)) {
ret = AVERROR_EXIT;

View file

@ -1,60 +0,0 @@
From: Jan Engelhardt <jengelh@inai.de>
Date: 2016-04-10 23:23:53.138440254 +0200
Improve the error messages a bit to say what's really going on
(in light of a reduced build).
---
fftools/ffmpeg.c | 2 +-
fftools/ffmpeg_filter.c | 4 ++--
fftools/ffmpeg_opt.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
Index: ffmpeg-5.0/fftools/ffmpeg.c
===================================================================
--- ffmpeg-5.0.orig/fftools/ffmpeg.c 2022-01-14 19:45:39.000000000 +0100
+++ ffmpeg-5.0/fftools/ffmpeg.c 2022-02-04 08:16:14.606621540 +0100
@@ -2871,7 +2871,7 @@ static int init_input_stream(int ist_ind
if (ist->decoding_needed) {
const AVCodec *codec = ist->dec;
if (!codec) {
- snprintf(error, error_len, "Decoder (codec %s) not found for input stream #%d:%d",
+ snprintf(error, error_len, "This build of ffmpeg does not include a \"%s\" decoder needed for input stream #%d:%d.",
avcodec_get_name(ist->dec_ctx->codec_id), ist->file_index, ist->st->index);
return AVERROR(EINVAL);
}
Index: ffmpeg-5.0/fftools/ffmpeg_filter.c
===================================================================
--- ffmpeg-5.0.orig/fftools/ffmpeg_filter.c 2022-01-14 19:45:39.000000000 +0100
+++ ffmpeg-5.0/fftools/ffmpeg_filter.c 2022-02-04 08:16:14.607621538 +0100
@@ -925,7 +925,7 @@ static int configure_input_filter(Filter
{
if (!ifilter->ist->dec) {
av_log(NULL, AV_LOG_ERROR,
- "No decoder for stream #%d:%d, filtering impossible\n",
+ "This build of ffmpeg does not have a suitable decoder for stream #%d:%d enabled, filtering impossible\n",
ifilter->ist->file_index, ifilter->ist->st->index);
return AVERROR_DECODER_NOT_FOUND;
}
@@ -1094,7 +1094,7 @@ int configure_filtergraph(FilterGraph *f
if (!ost->enc) {
/* identical to the same check in ffmpeg.c, needed because
complex filter graphs are initialized earlier */
- av_log(NULL, AV_LOG_ERROR, "Encoder (codec %s) not found for output stream #%d:%d\n",
+ av_log(NULL, AV_LOG_ERROR, "This build of ffmpeg does not include a \"%s\" encoder needed for output stream #%d:%d.\n",
avcodec_get_name(ost->st->codecpar->codec_id), ost->file_index, ost->index);
ret = AVERROR(EINVAL);
goto fail;
Index: ffmpeg-5.0/fftools/ffmpeg_opt.c
===================================================================
--- ffmpeg-5.0.orig/fftools/ffmpeg_opt.c 2022-01-14 19:45:39.000000000 +0100
+++ ffmpeg-5.0/fftools/ffmpeg_opt.c 2022-02-04 08:16:14.607621538 +0100
@@ -1406,7 +1406,7 @@ static int choose_encoder(OptionsContext
if (!ost->enc) {
av_log(NULL, AV_LOG_FATAL, "Automatic encoder selection failed for "
"output stream #%d:%d. Default encoder for format %s (codec %s) is "
- "probably disabled. Please choose an encoder manually.\n",
+ "probably disabled or this build of ffmpeg does not include that codec. Please choose an encoder manually.\n",
ost->file_index, ost->index, s->oformat->name,
avcodec_get_name(ost->st->codecpar->codec_id));
return AVERROR_ENCODER_NOT_FOUND;

View file

@ -1,38 +0,0 @@
From b3b0ff6ef4b5bb3e2bf9649f1d7130f123f90099 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn@cryptomilk.org>
Date: Fri, 18 Feb 2022 13:42:17 +0100
Subject: [PATCH] avcodec/openh264: Return (DE|EN)CODER_NOT_FOUND if version
check fails
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
---
libavcodec/libopenh264dec.c | 2 +-
libavcodec/libopenh264enc.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavcodec/libopenh264dec.c b/libavcodec/libopenh264dec.c
index 7f5e85402a26..97d3630df6cf 100644
--- a/libavcodec/libopenh264dec.c
+++ b/libavcodec/libopenh264dec.c
@@ -56,7 +56,7 @@ static av_cold int svc_decode_init(AVCodecContext *avctx)
WelsTraceCallback callback_function;
if ((err = ff_libopenh264_check_version(avctx)) < 0)
- return err;
+ return AVERROR_DECODER_NOT_FOUND;
if (WelsCreateDecoder(&s->decoder)) {
av_log(avctx, AV_LOG_ERROR, "Unable to create decoder\n");
diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index de4b85c411e0..2001dc22b4c3 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -137,7 +137,7 @@ static av_cold int svc_encode_init(AVCodecContext *avctx)
AVCPBProperties *props;
if ((err = ff_libopenh264_check_version(avctx)) < 0)
- return err;
+ return AVERROR_ENCODER_NOT_FOUND;
if (WelsCreateSVCEncoder(&s->encoder)) {
av_log(avctx, AV_LOG_ERROR, "Unable to create encoder\n");

View file

@ -0,0 +1,73 @@
From 80bf83e3099652a3e7f8d1e8b6d902fea1ce4db9 Mon Sep 17 00:00:00 2001
From: James Almer <jamrial@gmail.com>
Date: Sun, 24 Aug 2025 15:57:16 -0300
Subject: [PATCH] configure: support linking to base profile libxev{d,e}
Addresses issue #20328.
Signed-off-by: James Almer <jamrial@gmail.com>
---
configure | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index aa41b2a7b3..5386ae8b9a 100755
--- a/configure
+++ b/configure
@@ -299,7 +299,9 @@ External library support:
--enable-libx264 enable H.264 encoding via x264 [no]
--enable-libx265 enable HEVC encoding via x265 [no]
--enable-libxeve enable EVC encoding via libxeve [no]
+ --enable-libxeveb enable EVC encoding via libxeve (Base profile) [no]
--enable-libxevd enable EVC decoding via libxevd [no]
+ --enable-libxevdb enable EVC decoding via libxevd (Base profile) [no]
--enable-libxavs enable AVS encoding via xavs [no]
--enable-libxavs2 enable AVS2 encoding via xavs2 [no]
--enable-libxcb enable X11 grabbing using XCB [autodetect]
@@ -1992,7 +1994,9 @@ EXTERNAL_LIBRARY_LIST="
libvvenc
libwebp
libxevd
+ libxevdb
libxeve
+ libxeveb
libxml2
libzimg
libzmq
@@ -3669,8 +3673,8 @@ libx265_encoder_deps="libx265"
libx265_encoder_select="atsc_a53 dovi_rpuenc"
libxavs_encoder_deps="libxavs"
libxavs2_encoder_deps="libxavs2"
-libxevd_decoder_deps="libxevd"
-libxeve_encoder_deps="libxeve"
+libxevd_decoder_deps_any="libxevd libxevdb"
+libxeve_encoder_deps_any="libxeve libxeveb"
libxvid_encoder_deps="libxvid"
libzvbi_teletext_decoder_deps="libzvbi"
vapoursynth_demuxer_deps="vapoursynth"
@@ -4615,6 +4619,12 @@ enabled_all gnutls mbedtls &&
enabled_all openssl mbedtls &&
die "OpenSSL and mbedTLS must not be enabled at the same time."
+enabled_all libxevd libxevdb &&
+ die "libxevd and libxevdb must not be enabled at the same time."
+
+enabled_all libxeve libxeveb &&
+ die "libxeve and libxevdb must not be enabled at the same time."
+
# Disable all the library-specific components if the library itself
# is disabled, see AVCODEC_LIST and following _LIST variables.
@@ -7204,7 +7214,9 @@ enabled libx265 && require_pkg_config libx265 x265 x265.h x265_api_get
enabled libxavs && require libxavs "stdint.h xavs.h" xavs_encoder_encode "-lxavs $pthreads_extralibs $libm_extralibs"
enabled libxavs2 && require_pkg_config libxavs2 "xavs2 >= 1.3.0" "stdint.h xavs2.h" xavs2_api_get
enabled libxevd && require_pkg_config libxevd "xevd >= 0.4.1" "xevd.h" xevd_decode
+enabled libxevdb && require_pkg_config libxevdb "xevdb >= 0.4.1" "xevd.h" xevd_decode
enabled libxeve && require_pkg_config libxeve "xeve >= 0.5.1" "xeve.h" xeve_encode
+enabled libxeveb && require_pkg_config libxeveb "xeveb >= 0.5.1" "xeve.h" xeve_encode
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
enabled libzimg && require_pkg_config libzimg "zimg >= 2.7.0" zimg.h zimg_get_api_version
enabled libzmq && require_pkg_config libzmq "libzmq >= 4.2.1" zmq.h zmq_ctx_new
--
2.49.1

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,72 @@
#!/bin/bash
# Script to identify trivial new headers for new sources added
# Requires: bash, coreutils, tar, xz
# Author: Neal Gompa <ngompa@fedoraproject.org>
#
# 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 3 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, see <http://www.gnu.org/licenses/>.
FFMPEG_VERSION=$1
FF_SRC_DIFF=$2
if [ -z $1 -o -z $2 ]; then
echo "No arguments provided, quitting!"
exit 1
fi
echo "Setting up..."
# Get local directory
LOCALDIR=$(realpath $(dirname $0))
# Create working area
TMPDIR=$(mktemp -d /tmp/ffsrchdrsXXXXXX)
mkdir -pv $TMPDIR
# Extract ffmpeg sources
if [ ! -f "ffmpeg-${FFMPEG_VERSION}.tar.xz" ]; then
echo "No ffmpeg tarball, exiting!"
exit 2
fi
if [ ! -f "$FF_SRC_DIFF" ]; then
echo "No ffmpeg sources diff, exiting!"
exit 2
fi
echo "Extracting upstream ffmpeg sources..."
tar -C ${TMPDIR} -xf ffmpeg-${FFMPEG_VERSION}.tar.xz
echo "Generating header list from diff..."
# Read in ffmpeg_free_sources diff
while IFS= read -r line
do
if [[ $line = \+* ]]; then
ffmpeg_src_file="${line:1}"
if [ -f "${TMPDIR}/ffmpeg-${FFMPEG_VERSION}/${ffmpeg_src_file}" ]; then
ffmpeg_hdr_file="${ffmpeg_src_file%.c}.h"
[ -f "${TMPDIR}/ffmpeg-${FFMPEG_VERSION}/${ffmpeg_hdr_file}" ] && echo "${ffmpeg_hdr_file}" >> ${LOCALDIR}/ffmpeg_free_sources
ffmpeg_hdr_file="${ffmpeg_src_file%.c}_cb.h"
[ -f "${TMPDIR}/ffmpeg-${FFMPEG_VERSION}/${ffmpeg_hdr_file}" ] && echo "${ffmpeg_hdr_file}" >> ${LOCALDIR}/ffmpeg_free_sources
ffmpeg_hdr_file="${ffmpeg_src_file%.c}data.h"
[ -f "${TMPDIR}/ffmpeg-${FFMPEG_VERSION}/${ffmpeg_hdr_file}" ] && echo "${ffmpeg_hdr_file}" >> ${LOCALDIR}/ffmpeg_free_sources
ffmpeg_hdr_file="${ffmpeg_src_file%.c}_data.h"
[ -f "${TMPDIR}/ffmpeg-${FFMPEG_VERSION}/${ffmpeg_hdr_file}" ] && echo "${ffmpeg_hdr_file}" >> ${LOCALDIR}/ffmpeg_free_sources
ffmpeg_hdr_file="${ffmpeg_src_file%.c}_tablegen.h"
[ -f "${TMPDIR}/ffmpeg-${FFMPEG_VERSION}/${ffmpeg_hdr_file}" ] && echo "${ffmpeg_hdr_file}" >> ${LOCALDIR}/ffmpeg_free_sources
fi
fi
done < <(cat $FF_SRC_DIFF)
# Clean up
echo "Clean up workspace..."
rm -rf ${TMPDIR}

File diff suppressed because it is too large Load diff

View file

@ -1,130 +0,0 @@
#!/bin/bash
#
# Copyright (c) 2022 Andreas Schneider <asn@cryptomilk.org>
#
# 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 3 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, see <http://www.gnu.org/licenses/>.
#
# shellcheck disable=2181
export LC_COLLATE="C.UTF-8"
FF_PKGNAME="ffmpeg"
FF_PKGNAME_SUFFIX="-free"
FF_VERSION="$(rpmspec -P ./*.spec | grep ^Version | sed -e 's/Version:[ ]*//g')"
FF_TARBALL_URL="https://ffmpeg.org/releases/${FF_PKGNAME}-${FF_VERSION}.tar.xz"
FF_TARBALL="$(basename "${FF_TARBALL_URL}")"
FF_GPG_ARMOR_FILE="${FF_TARBALL}.asc"
FF_PKG_DIR="$(pwd)"
FF_KEYRING="${FF_PKG_DIR}/ffmpeg.keyring"
FF_TMPDIR=$(mktemp --tmpdir -d ffmpeg-XXXXXXXX)
FF_PATH="${FF_TMPDIR}/${FF_PKGNAME}-${FF_VERSION}"
cleanup_tmpdir() {
# shellcheck disable=2164
popd 2>/dev/null
rm -rf "${FF_TMPDIR}"
}
trap cleanup_tmpdir SIGINT
cleanup_and_exit()
{
cleanup_tmpdir
if test "$1" = 0 -o -z "$1"; then
exit 0
else
# shellcheck disable=2086
exit ${1}
fi
}
if [[ ! -w "${FF_TARBALL}" ]]; then
echo ">>> Downloading tarball"
wget "${FF_TARBALL_URL}"
fi
if [[ ! -w "${FF_TARBALL}.asc" ]]; then
echo ">>> Downloading signature"
wget "${FF_TARBALL_URL}.asc"
fi
echo ">>> Verifying ${FF_TARBALL} GPG signature"
gpgv2 --quiet --keyring "${FF_KEYRING}" "${FF_GPG_ARMOR_FILE}" "${FF_TARBALL}"
if [ $? -ne 0 ]; then
echo "ERROR: GPG signature verification failed"
cleanup_and_exit 1
fi
echo
echo ">>> Unpacking ${FF_TARBALL}"
tar -xf "${FF_TARBALL}" -C "${FF_TMPDIR}"
if [ $? -ne 0 ]; then
echo "ERROR: Failed to unpack ${FF_TARBALL}"
cleanup_and_exit 1
fi
if [[ ! -r ffmpeg_free_sources ]]; then
echo "ERROR: ffmpeg_free_sources doesn't exist!"
cleanup_and_exit 1
fi
readarray -t keepfiles < ffmpeg_free_sources
pushd "${FF_PATH}" || cleanup_and_exit 1
echo
echo ">>> Cleaning up sources for new tarball ..."
# Get file list from ffmpeg
mapfile -d '' filelist < <(find ./ -type f -printf '%P\0')
# Sort arrays
readarray -t keepfiles_sorted < <(printf '%s\0' "${keepfiles[@]}" | sort -z | xargs -0n1)
readarray -t filelist_sorted < <(printf '%s\0' "${filelist[@]}" | sort -z | xargs -0n1)
# Compare arrays and remove files which are left over
comm -2 -3 -z <(printf '%s\0' "${filelist_sorted[@]}") <(printf '%s\0' "${keepfiles_sorted[@]}") | xargs -0 rm -f
readarray -t removed_files < <(comm -1 -3 -z <(printf '%s\0' "${filelist_sorted[@]}") <(printf '%s\0' "${keepfiles_sorted[@]}") | xargs -0n1)
if [[ "${#removed_files[@]}" -ge 1 ]]; then
if [[ "${#removed_files[@]}" -eq 1 ]] && [[ -z "${removed_files[0]}" ]]; then
echo "... done"
else
echo "File not in upstream tarball anymore (please cleanup 'ffmpeg_free_sources'):"
for f in "${removed_files[@]}"; do
if [[ -z "${f}" ]]; then
continue
fi
echo " * ${f}"
done
fi
fi
echo
popd || cleanup_and_exit 1 # /FF_PATH
pushd "${FF_TMPDIR}" || cleanup_and_exit 1
echo ">>> Create new tarball ${FF_PKGNAME}${FF_PKGNAME_SUFFIX}-${FF_VERSION}.tar.xz ..."
tar -cJf "${FF_PKG_DIR}/${FF_PKGNAME}${FF_PKGNAME_SUFFIX}-${FF_VERSION}.tar.xz" "${FF_PKGNAME}-${FF_VERSION}"
if [ $? -ne 0 ]; then
echo "ERROR: Creating tarball failed"
cleanup_and_exit 1
fi
popd || cleanup_and_exit 1 # /FF_TMPDIR
du -sh "${FF_PKGNAME}${FF_PKGNAME_SUFFIX}-${FF_VERSION}.tar.xz"
echo
cleanup_and_exit 0

View file

@ -1,7 +1,7 @@
#!/bin/bash
# Script to grab headers from existing packages to support dlopen() codec libraries
# Requires: bash, coreutils, curl, bsdtar, dnf, dnf-plugins-core, tar
# Requires: bash, coreutils, curl, bsdtar, dnf, dnf-plugins-core, tar, xz
# Author: Neal Gompa <ngompa@fedoraproject.org>
#
# This program is free software: you can redistribute it and/or modify

View file

@ -1,60 +0,0 @@
#!/bin/bash
#
# Copyright (c) 2022 Andreas Schneider <asn@cryptomilk.org>
#
# 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 3 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, see <http://www.gnu.org/licenses/>.
#
# shellcheck disable=2181
export LC_COLLATE="C.UTF-8"
cleanup_and_exit()
{
if test "$1" = 0 -o -z "$1"; then
exit 0
else
# shellcheck disable=2086
exit ${1}
fi
}
echo ">>> Collect information from ${1}"
build_log="$(readlink -f "${1}")"
if [[ -z "${build_log}" ]] || [[ ! -r "${build_log}" ]]; then
echo "Build log doesn't exist: %{build_log}"
cleanup_and_exit 1
fi
asm_files="$(grep "^gcc.*\.c$" "${build_log}" | awk 'NF>1{print $NF}' | sort)"
c_files="$(grep "^nasm.*\.asm$" "${build_log}" | awk 'NF>1{print $NF}' | sort)"
# shellcheck disable=2206
new_sources=(${asm_files}
${c_files})
# Sort arrays
readarray -t new_sources_sorted < <(printf '%s\0' "${new_sources[@]}" | sort -z | xargs -0n1)
# Create a backup for a diff
cp -a ffmpeg_free_sources ffmpeg_free_sources.orig
cp -a ffmpeg_free_sources ffmpeg_free_sources.new
printf "%s\n" "${new_sources_sorted[@]}" >> ffmpeg_free_sources.new
# Update ffmpeg_free_sources
echo ">>> Updating ffmpeg_free_sources"
sort < ffmpeg_free_sources.new | uniq | sed '/^$/d' > ffmpeg_free_sources
echo ">>> Differences in file list"
diff -u ffmpeg_free_sources.orig ffmpeg_free_sources
rm -f ffmpeg_free_sources.new
cleanup_and_exit 0

View file

@ -1,24 +0,0 @@
From d87f2ce576ddb0ce8f6ade22b3c66a8b63c90713 Mon Sep 17 00:00:00 2001
From: Leigh Scott <leigh123linux@gmail.com>
Date: Thu, 31 Dec 2020 13:08:06 +0000
Subject: [PATCH] fix vmaf model path
---
libavfilter/vf_libvmaf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavfilter/vf_libvmaf.c b/libavfilter/vf_libvmaf.c
index 4d49127efc..bd6f4519e8 100644
--- a/libavfilter/vf_libvmaf.c
+++ b/libavfilter/vf_libvmaf.c
@@ -72,7 +72,7 @@ typedef struct LIBVMAFContext {
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
static const AVOption libvmaf_options[] = {
- {"model_path", "Set the model to be used for computing vmaf.", OFFSET(model_path), AV_OPT_TYPE_STRING, {.str="/usr/local/share/model/vmaf_v0.6.1.pkl"}, 0, 1, FLAGS},
+ {"model_path", "Set the model to be used for computing vmaf.", OFFSET(model_path), AV_OPT_TYPE_STRING, {.str="/usr/share/model/vmaf_v0.6.1.json"}, 0, 1, FLAGS},
{"log_path", "Set the file path to be used to store logs.", OFFSET(log_path), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
{"log_fmt", "Set the format of the log (csv, json or xml).", OFFSET(log_fmt), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
{"enable_transform", "Enables transform for computing vmaf.", OFFSET(enable_transform), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
--
2.29.2

View file

@ -1,4 +1,3 @@
SHA512 (ffmpeg-free-5.0.3.tar.xz) = c62b6d7f0178a09c67fa88ac6f1f88f524d5e6c80b98f99f01a6b877ce99f7ef31f50ba847e4472196075885eb844ffde788c1eace1d044a9a171557dee4bb91
SHA512 (ffmpeg-5.0.3.tar.xz.asc) = 7b0e5e4949fbea820b2069dc7cf68318217ed7782026bf06ecf72764e82330af8aceda2975c077503ccdadfab342296ad9e32227cc55c566b9517be3565e7d92
SHA512 (ffmpeg-dlopen-headers.tar.xz) = 97e6986fc2bb9dfa4516135a76b04d27ceb52ff96f0af21a6169919aeefefb4d2e2e24a771959689cdbec385f5d71614ba661223c67c0e94089a6dd823a30099
SHA512 (ffmpeg-8.0.1.tar.xz) = 7af5cd1c7ba04f8d7ea1b54b64b9c235f2a606dc0c18d25cfdf20958bcad4851d3265b4894fc6ba5dd205c2309971c7e7fb890ee1d64e0a41a3faf159f77957f
SHA512 (ffmpeg-8.0.1.tar.xz.asc) = f56e9e89ecdf9f12e3dae90b52289e5d09bfbfc0f6e13aaf17da9330c138fdb62b132f856c2fd16f5d9f5d6bcf1725602c8781c3e5f07bda6ce1306c379792ab
SHA512 (ffmpeg.keyring) = 9b36506835db36f776b7ddb53ad6fa9e915e6ca2f9c7cfebe8eb45513e1036a985283590a840ca313a111bf35dc3731f68885aaafb1fb7011ec433cc119e5165