diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f8ca151 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +ffmpeg-*.asc +ffmpeg-*.rpm +ffmpeg-*.tar.xz diff --git a/README.md b/README.md index 3588ab8..8c5a6f6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ -# ffmpeg +# FFMEPG -The ffmpeg package +FFmpeg is a multimedia framework, able to decode, encode, transcode, mux, +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 +2. Do a full build locally: `fedpkg mockbuild --with full_build` +3. Create the 'clean' tarball: `./ffmpeg_clean_sources.sh results_ffmpeg/5.0/0.fc35/build.log` +4. Set the `Release` to 1 diff --git a/enable_decoders b/enable_decoders new file mode 100644 index 0000000..1b47016 --- /dev/null +++ b/enable_decoders @@ -0,0 +1,110 @@ +## module name # reason for enablement in ffmpeg (usually there is another package that already got legal review) +libfdk_aac # fdk-aac-free +ac3 +ansi # trivial +apng # animated png +ass # trivial +ayuv # trivial +bmp # trivial +dirac # dirac +exr # openEXR +ffv1 # ffmpeg +ffvhuff # ffmpeg +ffwavesynth # pseudo +flac # libFLAC +gif # libpng +gsm # libgsm +h264_v4l2m2m # hardware +h264_qsv # hardware +huffyuv # trivial+zlib +ilbc # ilbc +jpeg2000 # openjpeg2 +libaom # libaom +libaom_av1 # libaom +libcelt # celt, opus +libcodec2 # codec2 +libdav1d # av1 +libgsm # libgsm +libopenjpeg # openjpeg +libopus # opus +libschroedinger # schroedinger +libspeex # speex +libvorbis # libvorbis +libvpx_vp8 # libvpx +libvpx_vp9 # libvpx +mjpeg # mjpegtools +mp1 # twolame/lame +mp1float # twolame/lame +mp2 # twolame +mp2float # twolame +mp3 # lame +mp3float # lame +mpeg1video +mpeg2video +opus # libopus +pam # trivial +pbm # trivial +pcm_alaw # trivial +pcm_bluray +pcm_dvd +pcm_f32be # trivial +pcm_f32le # trivial +pcm_f64be # trivial +pcm_f64le # trivial +pcm_mulaw # trivial +pcm_s16be # trivial +pcm_s16be_planar # trivial +pcm_s16le # trivial +pcm_s16le_planar # trivial +pcm_s24be # trivial +pcm_s24le # trivial +pcm_s24le_planar # trivial +pcm_s32be # trivial +pcm_s32le # trivial +pcm_s32le_planar # trivial +pcm_s8 # trivial +pcm_s8_planar # trivial +pcm_u16be # trivial +pcm_u16le # trivial +pcm_u24be # trivial +pcm_u24le # trivial +pcm_u32be # trivial +pcm_u32le # trivial +pcm_u8 # trivial +pcx +pgm # trivial +pgmyuv # trivial +pgssub # mkvtoolnix +pgx +png # libpng +ppm # trivial +rawvideo # trivial +sgi # trivial +srt # trivial +ssa # trivial +sunrast # trivial +targa # trivial +text # trivial +theora # libtheora +tiff # libtiff +v210 # trivial +v210x # trivial +v308 # trivial +v408 # trivial +v410 # trivial +vorbis # libvorbis +vp3 # libav +vp5 # libav +vp6 # libav +vp6a # libav +vp6f # libav +vp8 # libvpx +vp9 # libvpx +webp # libwebp +webvtt # trivial +wrapped_avframe # passthrough +xbm # trivial +xwd # xwd +y41p # trivial +yuv4 # trivial +zlib # zlib diff --git a/enable_encoders b/enable_encoders new file mode 100644 index 0000000..db4377d --- /dev/null +++ b/enable_encoders @@ -0,0 +1,95 @@ +## module name # reason for enablement in ffmpeg (usually there is another package that already got legal review) +libfdk_aac # fdk-aac-free +ac3 +apng # libpng +ass # trivial +ayuv # trival +bmp # trivial +ffv1 +ffvhuff # trivial+zlib +flac # libFLAC +gif # libpng +h264_qsv # hardware +h264_v4l2m2m # hardware +h264_vaapi # hardware +hevc_qsv # hardware +hevc_v4l2m2m # hardware +huffyuv # trivial+zlib +jpegls +jpeg2000 +libaom # libaom +libaom_av1 # libaom +libcodec2 # codec2 +libgsm # libgsm +libmp3lame # lame +libopenjpeg # openjpeg +libopus # opus +librav1e # rav1e +libschroedinger # schroedinger +libspeex # speex +libsvtav1 +libtheora # libtheora +libtwolame # twolame +libvorbis # libvorbis +libvpx_vp8 # libvpx +libvpx_vp9 # libvpx +libwebp # libwebp +libwebp_anim # libwebp +mjpeg # mjpegtools +mp2 # twolame +mp2fixed # twolame +mpeg1video +mpeg2video +opus # opus +pam +pbm # trivial +pcm_alaw # trivial +pcm_f32be # trivial +pcm_f32le # trivial +pcm_f64be # trivial +pcm_f64le # trivial +pcm_mulaw # trivial +pcm_s16be # trivial +pcm_s16be_planar # trivial +pcm_s16le # trivial +pcm_s16le_planar # trivial +pcm_s24be # trivial +pcm_s24le # trivial +pcm_s24le_planar # trivial +pcm_s32be # trivial +pcm_s32le # trivial +pcm_s32le_planar # trivial +pcm_s8 # trivial +pcm_s8_planar # trivial +pcm_u16be # trivial +pcm_u16le # trivial +pcm_u24be # trivial +pcm_u24le # trivial +pcm_u32be # trivial +pcm_u32le # trivial +pcm_u8 # trivial +pcx +pgm # trivial +pgmyuv # trivial +png # libpng +ppm # trivial +rawvideo # trivial +sgi # trivial +srt # trivial +ssa # trivial +sunrast # trivial +targa # trivial +text # trivial +tiff # libtiff +v210 # trivial +v308 # trivial +v408 # trivial +v410 # trivial +vorbis # libvorbis +webvtt # trivial +wrapped_avframe # passthrough +xbm # (X11) +xwd # xwd +y41p # trivial +yuv4 # trivial +zlib # zlib diff --git a/ffmpeg-allow-fdk-aac-free.patch b/ffmpeg-allow-fdk-aac-free.patch new file mode 100644 index 0000000..0cc91f1 --- /dev/null +++ b/ffmpeg-allow-fdk-aac-free.patch @@ -0,0 +1,24 @@ +fdk-aac-free-devel is GPL compatible + +See https://bugzilla.redhat.com/show_bug.cgi?id=1501522#c112 + +Index: ffmpeg-5.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=" + + EXTERNAL_LIBRARY_NONFREE_LIST=" + decklink +- libfdk_aac + libtls + " + +@@ -1822,6 +1821,7 @@ EXTERNAL_LIBRARY_LIST=" + libdav1d + libdc1394 + libdrm ++ libfdk_aac + libflite + libfontconfig + libfreetype diff --git a/ffmpeg-codec-choice.patch b/ffmpeg-codec-choice.patch new file mode 100644 index 0000000..3c2bf10 --- /dev/null +++ b/ffmpeg-codec-choice.patch @@ -0,0 +1,56 @@ +From: Jan Engelhardt + +Edit the default codec selection such that + + 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(-) + +Index: ffmpeg-5.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 + 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", + .priv_data_size = sizeof(MatroskaMuxContext), +- .audio_codec = CONFIG_LIBVORBIS_ENCODER ? +- AV_CODEC_ID_VORBIS : AV_CODEC_ID_AC3, +- .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, + .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", + .priv_data_size = sizeof(MatroskaMuxContext), +- .audio_codec = CONFIG_LIBVORBIS_ENCODER ? +- AV_CODEC_ID_VORBIS : AV_CODEC_ID_AC3, ++ .audio_codec = PREFAUDIO, + .video_codec = AV_CODEC_ID_NONE, + .init = mkv_init, + .deinit = mkv_deinit, diff --git a/ffmpeg-fix-exif-include.patch b/ffmpeg-fix-exif-include.patch new file mode 100644 index 0000000..7086cbe --- /dev/null +++ b/ffmpeg-fix-exif-include.patch @@ -0,0 +1,95 @@ +From fe17c9fadf375d8beeb42b062390dfe18cb59e08 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +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 +--- + 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 + #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 +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 +--- + 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 + #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 + diff --git a/ffmpeg-fix-gnutls-priority.patch b/ffmpeg-fix-gnutls-priority.patch new file mode 100644 index 0000000..b64c516 --- /dev/null +++ b/ffmpeg-fix-gnutls-priority.patch @@ -0,0 +1,13 @@ +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; diff --git a/ffmpeg-new-coder-errors.patch b/ffmpeg-new-coder-errors.patch new file mode 100644 index 0000000..1dc687c --- /dev/null +++ b/ffmpeg-new-coder-errors.patch @@ -0,0 +1,60 @@ +From: Jan Engelhardt +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; diff --git a/ffmpeg-support-chromium.patch b/ffmpeg-support-chromium.patch new file mode 100644 index 0000000..8e9a0ac --- /dev/null +++ b/ffmpeg-support-chromium.patch @@ -0,0 +1,42 @@ +commit 95aab0fd83619408995720ce53d7a74790580220 +author liberato@chromium.org Thu Jul 08 02:01:22 2021 +committer liberato@chromium.org Thu Jul 08 02:01:22 2021 +tree ac725b5e2c548c8142aa7096d8184d87d3876a49 +parent e073b7a22e4993e0a7cab80a42a21524e5349f95 + +Add av_stream_get_first_dts for Chromium + +diff --git a/libavformat/avformat.h b/libavformat/avformat.h +index cd7b0d9..b4a6dce 100644 +--- a/libavformat/avformat.h ++++ b/libavformat/avformat.h +@@ -1010,6 +1010,10 @@ + */ + int64_t av_stream_get_end_pts(const AVStream *st); + ++// 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 de7580c..0ef0fe5 100644 +--- a/libavformat/utils.c ++++ b/libavformat/utils.c +@@ -121,6 +121,13 @@ + return AV_NOPTS_VALUE; + } + ++// 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 ^^^ ++ + struct AVCodecParserContext *av_stream_get_parser(const AVStream *st) + { + return cffstream(st)->parser; + diff --git a/ffmpeg.keyring b/ffmpeg.keyring new file mode 100644 index 0000000..ba6d858 Binary files /dev/null and b/ffmpeg.keyring differ diff --git a/ffmpeg.spec b/ffmpeg.spec new file mode 100644 index 0000000..c4074aa --- /dev/null +++ b/ffmpeg.spec @@ -0,0 +1,775 @@ +# For a complete build enable these two +%bcond_with upstream_tarball +%bcond_with all_codecs + +# If you want to do a build with the upstream source tarball, then set the +# pkg_suffix to %%nil. We can't handle this with a conditional, as srpm +# generation would not take it into account. +%global pkg_suffix -free + +# Fails due to asm issue +%ifarch %{ix86} %arm +%bcond_with lto +%else +%bcond_without lto +%endif + +%ifarch %{ix86} +%bcond_with vulkan +%else +%bcond_without vulkan +%endif + +%ifarch x86_64 +%bcond_without svtav1 +%else +%bcond_with svtav1 +%endif + +%if %{with all_codecs} +%bcond_without rtmp +%bcond_without x264 +%bcond_without x265 +%bcond_without xvid +%else +%bcond_with rtmp +%bcond_with x264 +%bcond_with x265 +%bcond_with xvid +%endif + +%global av_codec_soversion 59 +%global av_device_soversion 59 +%global av_filter_soversion 8 +%global av_format_soversion 59 +%global av_util_soversion 57 +%global postproc_soversion 56 +%global swresample_soversion 4 +%global swscale_soversion 6 + +Name: ffmpeg +%global pkg_name %{name}%{?pkg_suffix} + +Version: 5.0 +Release: 1%{?dist} +Summary: A complete solution to record, convert and stream audio and video +License: GPLv3+ +URL: https://ffmpeg.org/ +Source0: ffmpeg%{?pkg_suffix}-%{version}.tar.xz +Source1: https://ffmpeg.org/releases/ffmpeg-%{version}.tar.xz.asc +# https://ffmpeg.org/ffmpeg-devel.asc +# gpg2 --import --import-options import-export,import-minimal ffmpeg-devel.asc > ./ffmpeg.keyring +Source2: ffmpeg.keyring +Source3: ffmpeg_clean_sources.sh +Source20: enable_decoders +Source21: enable_encoders +# Change path from /usr/local to /usr +Patch1: fix-vmaf-model-path.patch +# Some header cleanup +# http://ffmpeg.org/pipermail/ffmpeg-devel/2022-February/292877.html +Patch2: ffmpeg-fix-exif-include.patch +# Fixes for reduced codec selection on free build +Patch3: ffmpeg-codec-choice.patch +# Better error messages for free build +Patch4: ffmpeg-new-coder-errors.patch +# Allow to build with fdk-aac-free +# See https://bugzilla.redhat.com/show_bug.cgi?id=1501522#c112 +Patch5: ffmpeg-allow-fdk-aac-free.patch +# http://ffmpeg.org/pipermail/ffmpeg-devel/2022-February/292853.html +Patch6: ffmpeg-fix-gnutls-priority.patch +# https://ffmpeg.org/pipermail/ffmpeg-devel/2021-September/285401.html +Patch7: ffmpeg-support-chromium.patch + +Requires: libavcodec%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavdevice%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavfilter%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavformat%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libpostproc%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libswresample%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libswscale%{?pkg_suffix}%{_isa} = %{version}-%{release} + +BuildRequires: fdk-aac-free-devel +BuildRequires: flite-devel +BuildRequires: game-music-emu-devel +BuildRequires: gcc +BuildRequires: gnupg2 +BuildRequires: gsm-devel +BuildRequires: ladspa-devel +BuildRequires: lame-devel +BuildRequires: libcrystalhd-devel +BuildRequires: libmysofa-devel +BuildRequires: make +BuildRequires: nasm +BuildRequires: perl(Pod::Man) +BuildRequires: pkgconfig(alsa) +BuildRequires: pkgconfig(aom) +BuildRequires: pkgconfig(bzip2) +BuildRequires: pkgconfig(caca) +BuildRequires: pkgconfig(codec2) +BuildRequires: pkgconfig(dav1d) +BuildRequires: pkgconfig(enca) +BuildRequires: pkgconfig(ffnvcodec) +BuildRequires: pkgconfig(flac) +BuildRequires: pkgconfig(fontconfig) +BuildRequires: pkgconfig(freetype2) +BuildRequires: pkgconfig(frei0r) +BuildRequires: pkgconfig(fribidi) +BuildRequires: pkgconfig(gnutls) +BuildRequires: pkgconfig(ilbc) +BuildRequires: pkgconfig(jack) +BuildRequires: pkgconfig(libass) +BuildRequires: pkgconfig(libavc1394) +BuildRequires: pkgconfig(libbluray) +BuildRequires: pkgconfig(libbs2b) +BuildRequires: pkgconfig(libcdio) +BuildRequires: pkgconfig(libcdio_paranoia) +BuildRequires: pkgconfig(libchromaprint) +BuildRequires: pkgconfig(libdc1394-2) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libiec61883) +BuildRequires: pkgconfig(libmfx) < 2.0 +BuildRequires: pkgconfig(libmodplug) +BuildRequires: pkgconfig(libomxil-bellagio) +BuildRequires: pkgconfig(libopenjp2) +BuildRequires: pkgconfig(libopenmpt) +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(librsvg-2.0) +BuildRequires: pkgconfig(libssh) +BuildRequires: pkgconfig(libv4l2) +BuildRequires: pkgconfig(libva) +BuildRequires: pkgconfig(libva-drm) +BuildRequires: pkgconfig(libva-x11) +BuildRequires: pkgconfig(libvmaf) +BuildRequires: pkgconfig(libwebp) +BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: pkgconfig(libzmq) +BuildRequires: pkgconfig(lilv-0) +BuildRequires: pkgconfig(netcdf) +BuildRequires: pkgconfig(ogg) +BuildRequires: pkgconfig(openal) +BuildRequires: pkgconfig(opencv4) +BuildRequires: pkgconfig(opus) +BuildRequires: pkgconfig(rav1e) +BuildRequires: pkgconfig(rubberband) +BuildRequires: pkgconfig(schroedinger-1.0) +BuildRequires: pkgconfig(sdl2) +BuildRequires: pkgconfig(smbclient) +BuildRequires: pkgconfig(snappy) +BuildRequires: pkgconfig(soxr) +BuildRequires: pkgconfig(speex) +BuildRequires: pkgconfig(srt) +BuildRequires: pkgconfig(tesseract) +BuildRequires: pkgconfig(theora) +BuildRequires: pkgconfig(twolame) +BuildRequires: pkgconfig(vapoursynth) +BuildRequires: pkgconfig(vdpau) +BuildRequires: pkgconfig(vidstab) +BuildRequires: pkgconfig(vorbis) +BuildRequires: pkgconfig(vpx) +BuildRequires: pkgconfig(wavpack) +BuildRequires: pkgconfig(xcb) +BuildRequires: pkgconfig(xcb-render) +BuildRequires: pkgconfig(xcb-shape) +BuildRequires: pkgconfig(xcb-shm) +BuildRequires: pkgconfig(xcb-xfixes) +BuildRequires: pkgconfig(zimg) +BuildRequires: pkgconfig(zlib) +BuildRequires: pkgconfig(zvbi-0.2) +BuildRequires: texinfo + +%if %{with amr} +BuildRequires: pkgconfig(opencore-amrnb) +BuildRequires: pkgconfig(vo-amrwbenc) +%endif +%if %{with rtmp} +BuildRequires: librtmp-devel +%endif +%if %{with svtav1} +BuildRequires: pkgconfig(SvtAv1Enc) >= 0.8.4 +%endif +%if %{with vulkan} +BuildRequires: vulkan-loader-devel +BuildRequires: glslang-devel +%endif +%if %{with x264} +BuildRequires: pkgconfig(x264) +%endif +%if %{with x265} +BuildRequires: pkgconfig(x265) +%endif +%if %{with xvid} +BuildRequires: xvidcore-devel +%endif + + +%description +FFmpeg is a leading multimedia framework, able to decode, encode, transcode, +mux, 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. + +%if %{without all_codecs} +This build of ffmpeg is limited in the number of codecs supported. +%endif + +%if "x%{?pkg_suffix}" != "x" +%package -n %{pkg_name} +Summary: A complete solution to record, convert and stream audio and video +Requires: libavcodec%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavdevice%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavfilter%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavformat%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libpostproc%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libswresample%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libswscale%{?pkg_suffix}%{_isa} = %{version}-%{release} + + +%description -n %{pkg_name} +FFmpeg is a leading multimedia framework, able to decode, encode, transcode, +mux, 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. + +%if %{without all_codecs} +This build of ffmpeg is limited in the number of codecs supported. +%endif + +#/ "x%%{?pkg_suffix}" != "x" +%endif + +%package -n %{pkg_name}-devel +Summary: Development package for %{name} +Requires: libavcodec%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavfilter%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavformat%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavutil%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libpostproc%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libswresample%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libswscale%{?pkg_suffix}-devel = %{version}-%{release} +Requires: pkgconfig + +%description -n %{pkg_name}-devel +FFmpeg is a leading multimedia framework, able to decode, encode, transcode, +mux, 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. + +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} +Summary: FFmpeg codec library +Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libswresample%{?pkg_suffix}%{_isa} = %{version}-%{release} + +%description -n libavcodec%{?pkg_suffix} +The libavcodec library provides a generic encoding/decoding framework +and contains multiple decoders and encoders for audio, video and +subtitle streams, and several bitstream filters. + +%if %{without all_codecs} +This build of ffmpeg is limited in the number of codecs supported. +%endif + +%package -n libavcodec%{?pkg_suffix}-devel +Summary: Development files for FFmpeg's codec library +Requires: libavutil%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavcodec%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: pkgconfig + +%description -n libavcodec%{?pkg_suffix}-devel +The libavcodec library provides a generic encoding/decoding framework +and contains multiple decoders and encoders for audio, video and +subtitle streams, and several bitstream filters. + +This subpackage contains the headers for FFmpeg libavcodec. + +%package -n libavdevice%{?pkg_suffix} +Summary: FFmpeg device library +Requires: libavcodec%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavfilter%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavformat%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} + +%description -n libavdevice%{?pkg_suffix} +The libavdevice library provides a generic framework for grabbing from +and rendering to many common multimedia input/output devices, and +supports several input and output devices, including Video4Linux2, VfW, +DShow, and ALSA. + +%package -n libavdevice%{?pkg_suffix}-devel +Summary: Development files for FFmpeg's device library +Requires: libavcodec%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavfilter%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavformat%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavutil%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libpostproc%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libswresample%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libswscale%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavdevice%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: pkgconfig + +%description -n libavdevice%{?pkg_suffix}-devel +The libavdevice library provides a generic framework for grabbing from +and rendering to many common multimedia input/output devices, and +supports several input and output devices, including Video4Linux2, VfW, +DShow, and ALSA. + +This subpackage contains the headers for FFmpeg libavdevice. + +%package -n libavfilter%{?pkg_suffix} +Summary: FFmpeg audio and video filtering library +Requires: libavcodec%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavformat%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libpostproc%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libswresample%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libswscale%{?pkg_suffix}%{_isa} = %{version}-%{release} + +%description -n libavfilter%{?pkg_suffix} +The libavfilter library provides a generic audio/video filtering +framework containing several filters, sources and sinks. + +%package -n libavfilter%{?pkg_suffix}-devel +Summary: Development files for FFmpeg's audio/video filter library +Requires: libavcodec%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavformat%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavutil%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libpostproc%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libswresample%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libswscale%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavfilter%{?pkg_suffix} = %{version}-%{release} +Requires: pkgconfig + +%description -n libavfilter%{?pkg_suffix}-devel +The libavfilter library provides a generic audio/video filtering +framework containing several filters, sources and sinks. + +This subpackage contains the headers for FFmpeg libavfilter. + +%package -n libavformat%{?pkg_suffix} +Summary: FFmpeg's stream format library +Requires: libavcodec%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} + +%description -n libavformat%{?pkg_suffix} +The libavformat library provides a generic framework for multiplexing +and demultiplexing (muxing and demuxing) audio, video and subtitle +streams. It encompasses multiple muxers and demuxers for multimedia +container formats. + +%if %{without all_codecs} +This build of ffmpeg is limited in the number of codecs supported. +%endif + +%package -n libavformat%{?pkg_suffix}-devel +Summary: Development files for FFmpeg's stream format library +Requires: libavcodec%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavutil%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libswresample%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libavformat%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: pkgconfig + +%description -n libavformat%{?pkg_suffix}-devel +The libavformat library provides a generic framework for multiplexing +and demultiplexing (muxing and demuxing) audio, video and subtitle +streams. It encompasses multiple muxers and demuxers for multimedia +container formats. + +This subpackage contains the headers for FFmpeg libavformat. + +%package -n libavutil%{?pkg_suffix} +Summary: FFmpeg's utility library +Group: System/Libraries + +%description -n libavutil%{?pkg_suffix} +The libavutil library is a utility library to aid portable multimedia +programming. It contains safe portable string functions, random +number generators, data structures, additional mathematics functions, +cryptography and multimedia related functionality (like enumerations +for pixel and sample formats). + +%package -n libavutil%{?pkg_suffix}-devel +Summary: Development files for FFmpeg's utility library +Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: pkgconfig + +%description -n libavutil%{?pkg_suffix}-devel +The libavutil library is a utility library to aid portable multimedia +programming. It contains safe portable string functions, random +number generators, data structures, additional mathematics functions, +cryptography and multimedia related functionality (like enumerations +for pixel and sample formats). + +This subpackage contains the headers for FFmpeg libavutil. + +%package -n libpostproc%{?pkg_suffix} +Summary: FFmpeg post-processing library +Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} + +%description -n libpostproc%{?pkg_suffix} +A library with video postprocessing filters, such as deblocking and +deringing filters, noise reduction, automatic contrast and brightness +correction, linear/cubic interpolating deinterlacing. + +%package -n libpostproc%{?pkg_suffix}-devel +Summary: Development files for the FFmpeg post-processing library +Requires: libavutil%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libpostproc%{?pkg_suffix}%{_isa} = %{version}-%{release} +Requires: pkgconfig + +%description -n libpostproc%{?pkg_suffix}-devel +A library with video postprocessing filters, such as deblocking and +deringing filters, noise reduction, automatic contrast and brightness +correction, linear/cubic interpolating deinterlacing. + +This subpackage contains the headers for FFmpeg libpostproc. + +%package -n libswresample%{?pkg_suffix} +Summary: FFmpeg software resampling library +Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} + +%description -n libswresample%{?pkg_suffix} +The libswresample library performs audio conversion between different +sample rates, channel layout and channel formats. + +%package -n libswresample%{?pkg_suffix}-devel +Summary: Development files for the FFmpeg software resampling library +Requires: libavutil%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libswresample%{?pkg_suffix}%{_isa} = %{version}-%{release} + +%description -n libswresample%{?pkg_suffix}-devel +The libswresample library performs audio conversion between different +sample rates, channel layout and channel formats. + +This subpackage contains the headers for FFmpeg libswresample. + +%package -n libswscale%{?pkg_suffix} +Summary: FFmpeg image scaling and colorspace/pixel conversion library +Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} + +%description -n libswscale%{?pkg_suffix} +The libswscale library performs image scaling and colorspace and +pixel format conversion operations. + +%package -n libswscale%{?pkg_suffix}-devel +Summary: Development files for FFmpeg's image scaling and colorspace library +Provides: libswscale%{?pkg_suffix}-devel = %{version}-%{release} +Conflicts: libswscale%{?pkg_suffix}-devel < %{version}-%{release} +Requires: libavutil%{?pkg_suffix}-devel = %{version}-%{release} +Requires: libswscale%{?pkg_suffix}%{_isa} = %{version}-%{release} + +%description -n libswscale%{?pkg_suffix}-devel +The libswscale library performs image scaling and colorspace and +pixel format conversion operations. + +This subpackage contains the headers for FFmpeg libswscale. + +%prep +%if %{with upstream_tarball} +gpgv2 --quiet --keyring %{SOURCE2} %{SOURCE1} %{SOURCE0} +%endif + +%autosetup -p1 +install -m 0644 %{SOURCE20} enable_decoders +install -m 0644 %{SOURCE21} enable_encoders +# fix -O3 -g in host_cflags +sed -i "s|check_host_cflags -O3|check_host_cflags %{optflags}|" configure +install -m0755 -d _doc/examples +cp -a doc/examples/{*.c,Makefile,README} _doc/examples/ + +%build +%set_build_flags + +# This is not a normal configure script, don't use %%configure +./configure \ + --prefix=%{_prefix} \ + --bindir=%{_bindir} \ + --datadir=%{_datadir}/%{name} \ + --docdir=%{_docdir}/%{name} \ + --incdir=%{_includedir}/%{name} \ + --libdir=%{_libdir} \ + --mandir=%{_mandir} \ + --arch=%{_target_cpu} \ + --optflags="%{optflags}" \ + --extra-cflags="%{build_cflags}" \ + --disable-htmlpages \ + --enable-pic \ + --disable-stripping \ + --enable-shared \ + --disable-static \ + --enable-gpl \ + --enable-version3 \ + --enable-libsmbclient \ + --disable-openssl \ + --enable-gnutls \ + --enable-ladspa \ +%if %{with vulkan} + --enable-vulkan \ +%endif + --disable-cuda-sdk \ + --enable-libaom \ + --enable-libass \ + --enable-libbluray \ + --enable-libbs2b \ + --enable-libcdio \ + --enable-libdav1d \ + --enable-libdc1394 \ + --enable-libdrm \ + --enable-libfdk-aac \ + --enable-libfontconfig \ + --enable-libfreetype \ + --enable-libfribidi \ + --enable-libgsm \ + --enable-libjack \ + --enable-libmp3lame \ + --enable-libmysofa \ + --enable-libopenjpeg \ + --enable-libopenmpt \ + --enable-libopus \ + --enable-libpulse \ + --enable-librav1e \ + --enable-librubberband \ +%if %{with svtav1} + --enable-libsvtav1 \ +%endif + --enable-libsoxr \ + --enable-libspeex \ + --enable-libssh \ + --enable-libsrt \ + --enable-libtheora \ + --enable-libtwolame \ + --enable-libvidstab \ + --enable-libvmaf \ + --enable-libvorbis \ + --enable-libv4l2 \ + --enable-libvpx \ + --enable-libwebp \ + --enable-libxml2 \ + --enable-libzimg \ + --enable-libzvbi \ +%if %{with lto} + --enable-lto \ +%endif + --enable-libmfx \ + --enable-vaapi \ + --enable-vdpau \ +%if %{with amr} + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-libvo-amrwbenc \ +%endif +%if %{with x264} + --enable-libx264 \ +%endif +%if %{with x265} + --enable-libx265 \ +%endif +%if %{with librtmp} + --enable-librtmp \ +%endif +%if %{with xvid} + --enable-libxvid \ +%endif +%if %{without all_codecs} + --enable-muxers \ + --enable-demuxers \ + --disable-encoders \ + --disable-decoders \ + --disable-decoder="mpeg4,h263,h264,hevc,vc1" \ + --enable-encoder="$(perl -pe 's{^(\w*).*}{$1,}gs' - 5.0-1 +- Initial import (fedora#2051008) diff --git a/ffmpeg_clean_sources.sh b/ffmpeg_clean_sources.sh new file mode 100755 index 0000000..5303e71 --- /dev/null +++ b/ffmpeg_clean_sources.sh @@ -0,0 +1,1239 @@ +#!/bin/bash +# +# Copyright (c) 2022 Andreas Schneider +# +# 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 . +# +# shellcheck disable=2181 + +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 +} + +function usage() +{ + echo "Usage: $(basename "${0}") BUILD_LOG" + cleanup_and_exit 0 +} + +if [[ $# -lt 1 ]]; then + usage +fi + +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 + +if [[ ! -w "${FF_TARBALL}" ]]; then + echo ">>> Downloading tarball and signature" + wget "${FF_TARBALL_URL}" + 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 + +other_files=(CONTRIBUTING.md + COPYING.GPLv2 + COPYING.GPLv3 + COPYING.LGPLv2.1 + COPYING.LGPLv3 + CREDITS + Changelog + INSTALL.md + LICENSE.md + MAINTAINERS + README.md + RELEASE + RELEASE_NOTES + VERSION + configure) + +doc_files=(doc/APIchanges + doc/Doxyfile + doc/authors.texi + doc/bitstream_filters.texi + doc/bootstrap.min.css + doc/build_system.txt + doc/codecs.texi + doc/decoders.texi + doc/default.css + doc/demuxers.texi + doc/dev_community/community.md + doc/dev_community/resolution_process.md + doc/developer.texi + doc/devices.texi + doc/doxy-wrapper.sh + doc/encoders.texi + doc/errno.txt + doc/examples/Makefile.example + doc/examples/README + doc/examples/avio_list_dir.c + doc/examples/avio_reading.c + doc/examples/decode_audio.c + doc/examples/decode_video.c + doc/examples/demuxing_decoding.c + doc/examples/encode_audio.c + doc/examples/encode_video.c + doc/examples/extract_mvs.c + doc/examples/filter_audio.c + doc/examples/filtering_audio.c + doc/examples/filtering_video.c + doc/examples/http_multiclient.c + doc/examples/hw_decode.c + doc/examples/metadata.c + doc/examples/muxing.c + doc/examples/qsvdec.c + doc/examples/remuxing.c + doc/examples/resampling_audio.c + doc/examples/scaling_video.c + doc/examples/transcode_aac.c + doc/examples/transcoding.c + doc/examples/vaapi_encode.c + doc/examples/vaapi_transcode.c + doc/faq.texi + doc/fate.texi + doc/fate_config.sh.template + doc/ffmpeg-bitstream-filters.texi + doc/ffmpeg-codecs.texi + doc/ffmpeg-devices.texi + doc/ffmpeg-filters.texi + doc/ffmpeg-formats.texi + doc/ffmpeg-protocols.texi + doc/ffmpeg-resampler.texi + doc/ffmpeg-scaler.texi + doc/ffmpeg-utils.texi + doc/ffmpeg.texi + doc/ffmpeg.txt + doc/ffplay.texi + doc/ffprobe.texi + doc/ffprobe.xsd + doc/fftools-common-opts.texi + doc/filter_design.txt + doc/filters.texi + doc/formats.texi + doc/general.texi + doc/general_contents.texi + doc/git-howto.texi + doc/indevs.texi + doc/issue_tracker.txt + doc/lexicon + doc/libav-merge.txt + doc/libavcodec.texi + doc/libavdevice.texi + doc/libavfilter.texi + doc/libavformat.texi + doc/libavutil.texi + doc/libswresample.texi + doc/libswscale.texi + doc/mailing-list-faq.texi + doc/metadata.texi + doc/mips.txt + doc/multithreading.txt + doc/muxers.texi + doc/nut.texi + doc/optimization.txt + doc/outdevs.texi + doc/patchwork + doc/platform.texi + doc/protocols.texi + doc/rate_distortion.txt + doc/resampler.texi + doc/scaler.texi + doc/snow.txt + doc/style.min.css + doc/swresample.txt + doc/swscale.txt + doc/t2h.init + doc/t2h.pm + doc/tablegen.txt + doc/texi2pod.pl + doc/texidep.pl + doc/transforms.md + doc/undefined.txt + doc/utils.texi + doc/writing_filters.txt) + +version_scripts=(libavcodec/libavcodec.v + libswscale/libswscale.v + libavfilter/libavfilter.v + libavutil/libavutil.v + libavdevice/libavdevice.v + libswresample/libswresample.v + libavformat/libavformat.v + libpostproc/libpostproc.v) + +build_files=(ffbuild/arch.mak + ffbuild/bin2c.c + ffbuild/common.mak + ffbuild/library.mak + ffbuild/libversion.sh + ffbuild/pkgconfig_generate.sh + ffbuild/version.sh) + +make_files=(Makefile + doc/Makefile + doc/examples/Makefile + fftools/Makefile + libavcodec/Makefile + libavcodec/aarch64/Makefile + libavcodec/alpha/Makefile + libavcodec/arm/Makefile + libavcodec/loongarch/Makefile + libavcodec/mips/Makefile + libavcodec/neon/Makefile + libavcodec/ppc/Makefile + libavcodec/x86/Makefile + libavdevice/Makefile + libavfilter/Makefile + libavfilter/aarch64/Makefile + libavfilter/dnn/Makefile + libavfilter/x86/Makefile + libavformat/Makefile + libavutil/Makefile + libavutil/aarch64/Makefile + libavutil/arm/Makefile + libavutil/loongarch/Makefile + libavutil/mips/Makefile + libavutil/ppc/Makefile + libavutil/x86/Makefile + libpostproc/Makefile + libswresample/Makefile + libswresample/aarch64/Makefile + libswresample/arm/Makefile + libswresample/x86/Makefile + libswscale/Makefile + libswscale/aarch64/Makefile + libswscale/arm/Makefile + libswscale/ppc/Makefile + libswscale/x86/Makefile + tools/Makefile) + +test_files=(tests/Makefile + tests/api/Makefile + tests/checkasm/Makefile + tests/fate/aac.mak + tests/fate/ac3.mak + tests/fate/acodec.mak + tests/fate/adpcm.mak + tests/fate/alac.mak + tests/fate/als.mak + tests/fate/amrnb.mak + tests/fate/amrwb.mak + tests/fate/api.mak + tests/fate/apng.mak + tests/fate/atrac.mak + tests/fate/audio.mak + tests/fate/bmp.mak + tests/fate/build.mak + tests/fate/caf.mak + tests/fate/canopus.mak + tests/fate/cbs.mak + tests/fate/cdxl.mak + tests/fate/checkasm.mak + tests/fate/concatdec.mak + tests/fate/cover-art.mak + tests/fate/dca.mak + tests/fate/demux.mak + tests/fate/dfa.mak + tests/fate/dnn.mak + tests/fate/dnxhd.mak + tests/fate/dpcm.mak + tests/fate/ea.mak + tests/fate/exif.mak + tests/fate/ffmpeg.mak + tests/fate/ffprobe.mak + tests/fate/fft.mak + tests/fate/fifo-muxer.mak + tests/fate/filter-audio.mak + tests/fate/filter-video.mak + tests/fate/fits.mak + tests/fate/flac.mak + tests/fate/flvenc.mak + tests/fate/gapless.mak + tests/fate/gif.mak + tests/fate/h264.mak + tests/fate/hap.mak + tests/fate/hevc.mak + tests/fate/hlsenc.mak + tests/fate/hw.mak + tests/fate/id3v2.mak + tests/fate/image.mak + tests/fate/indeo.mak + tests/fate/lavf-audio.mak + tests/fate/lavf-container.mak + tests/fate/lavf-image.mak + tests/fate/lavf-image2pipe.mak + tests/fate/lavf-video.mak + tests/fate/libavcodec.mak + tests/fate/libavdevice.mak + tests/fate/libavformat.mak + tests/fate/libavutil.mak + tests/fate/libswresample.mak + tests/fate/libswscale.mak + tests/fate/lossless-audio.mak + tests/fate/lossless-video.mak + tests/fate/matroska.mak + tests/fate/microsoft.mak + tests/fate/monkeysaudio.mak + tests/fate/mov.mak + tests/fate/mp3.mak + tests/fate/mpc.mak + tests/fate/mpeg4.mak + tests/fate/mpegps.mak + tests/fate/mpegts.mak + tests/fate/mxf.mak + tests/fate/oma.mak + tests/fate/opus.mak + tests/fate/pcm.mak + tests/fate/pixfmt.mak + tests/fate/pixlet.mak + tests/fate/probe.mak + tests/fate/prores.mak + tests/fate/qt.mak + tests/fate/qtrle.mak + tests/fate/real.mak + tests/fate/screen.mak + tests/fate/seek.mak + tests/fate/segment.mak + tests/fate/source.mak + tests/fate/speedhq.mak + tests/fate/subtitles.mak + tests/fate/truehd.mak + tests/fate/utvideo.mak + tests/fate/vcodec.mak + tests/fate/video.mak + tests/fate/voice.mak + tests/fate/vorbis.mak + tests/fate/vpx.mak + tests/fate/vqf.mak + tests/fate/wavpack.mak + tests/fate/wma.mak + tests/fate/xvid.mak) + +header_files=(compat/atomics/gcc/stdatomic.h + compat/cuda/dynlink_loader.h + compat/va_copy.h + compat/w32dlfcn.h + fftools/cmdutils.h + fftools/ffmpeg.h + libavcodec/aac_ac3_parser.h + libavcodec/aac_defines.h + libavcodec/aandcttab.h + libavcodec/ac3.h + libavcodec/ac3_channel_layout_tab.h + libavcodec/ac3_parser.h + libavcodec/ac3_parser_internal.h + libavcodec/ac3dec.c + libavcodec/ac3dec.h + libavcodec/ac3dec_data.h + libavcodec/ac3dsp.h + libavcodec/ac3enc.h + libavcodec/ac3enc_template.c + libavcodec/ac3tab.h + libavcodec/adts_header.h + libavcodec/adts_parser.h + libavcodec/adx.h + libavcodec/apng.h + libavcodec/arm/vp8dsp.h + libavcodec/ass.h + libavcodec/ass_split.h + libavcodec/atsc_a53.h + libavcodec/audio_frame_queue.h + libavcodec/audiodsp.h + libavcodec/av1.h + libavcodec/av1_parse.h + libavcodec/av1dec.h + libavcodec/avcodec.h + libavcodec/avdct.h + libavcodec/avfft.h + libavcodec/avs3.h + libavcodec/bethsoftvideo.h + libavcodec/bintext.h + libavcodec/bit_depth_template.c + libavcodec/blockdsp.h + libavcodec/bmp.h + libavcodec/bsf.h + libavcodec/bsf_internal.h + libavcodec/bswapdsp.h + libavcodec/bytestream.h + libavcodec/cabac.h + libavcodec/cavs.h + libavcodec/cavsdsp.h + libavcodec/cbrt_data.h + libavcodec/cbrt_tablegen.h + libavcodec/cbs.h + libavcodec/cbs_av1.h + libavcodec/cbs_av1_syntax_template.c + libavcodec/cbs_bsf.h + libavcodec/cbs_h264.h + libavcodec/cbs_h2645.h + libavcodec/cbs_h264_syntax_template.c + libavcodec/cbs_h265.h + libavcodec/cbs_h265_syntax_template.c + libavcodec/cbs_internal.h + libavcodec/cbs_jpeg.h + libavcodec/cbs_mpeg2.h + libavcodec/cbs_mpeg2_syntax_template.c + libavcodec/cbs_sei.h + libavcodec/cbs_sei_syntax_template.c + libavcodec/cbs_vp9.h + libavcodec/cbs_vp9_syntax_template.c + libavcodec/cga_data.h + libavcodec/codec.h + libavcodec/codec2utils.h + libavcodec/codec_desc.h + libavcodec/codec_id.h + libavcodec/codec_par.h + libavcodec/copy_block.h + libavcodec/d3d11va.h + libavcodec/dca.h + libavcodec/dca_core.h + libavcodec/dca_exss.h + libavcodec/dca_lbr.h + libavcodec/dca_sample_rate_tab.h + libavcodec/dca_syncwords.h + libavcodec/dca_xll.h + libavcodec/dcadata.h + libavcodec/dcadct.h + libavcodec/dcadec.h + libavcodec/dcadsp.h + libavcodec/dcaenc.h + libavcodec/dcahuff.h + libavcodec/dcamath.h + libavcodec/dct.h + libavcodec/dct32.h + libavcodec/dct32_template.c + libavcodec/decode.h + libavcodec/defs.h + libavcodec/dirac.h + libavcodec/dirac_arith.h + libavcodec/dirac_dwt.h + libavcodec/dirac_dwt_template.c + libavcodec/dirac_vlc.h + libavcodec/diracdsp.h + libavcodec/diractab.h + libavcodec/dnxhddata.h + libavcodec/dolby_e.h + libavcodec/dovi_rpu.h + libavcodec/dv.h + libavcodec/dv_profile.h + libavcodec/dv_profile_internal.h + libavcodec/dvaudio.h + libavcodec/dvbtxt.h + libavcodec/dxva2.h + libavcodec/dynamic_hdr10_plus.h + libavcodec/eac3_data.h + libavcodec/eac3dec.c + libavcodec/eac3enc.h + libavcodec/elbg.h + libavcodec/encode.h + libavcodec/error_resilience.h + libavcodec/exif.h + libavcodec/exrdsp.h + libavcodec/faandct.h + libavcodec/faanidct.h + libavcodec/faxcompr.h + libavcodec/fdctdsp.h + libavcodec/fft-internal.h + libavcodec/fft.h + libavcodec/fft_table.h + libavcodec/fft_template.c + libavcodec/ffv1.h + libavcodec/ffv1_template.c + libavcodec/ffv1dec_template.c + libavcodec/ffv1enc_template.c + libavcodec/fits.h + libavcodec/flac.h + libavcodec/flacdata.h + libavcodec/flacdsp.h + libavcodec/flacdsp_lpc_template.c + libavcodec/flacdsp_template.c + libavcodec/flv.h + libavcodec/fmtconvert.h + libavcodec/frame_thread_encoder.h + libavcodec/g723_1.h + libavcodec/g729.h + libavcodec/get_bits.h + libavcodec/gif.h + libavcodec/golomb.h + libavcodec/gsm.h + libavcodec/gsmdec_data.h + libavcodec/gsmdec_template.c + libavcodec/h261.h + libavcodec/h263.h + libavcodec/h263_parser.h + libavcodec/h263data.h + libavcodec/h263dsp.h + libavcodec/h264.h + libavcodec/h2645_parse.h + libavcodec/h264_levels.h + libavcodec/h264_parse.h + libavcodec/h264_ps.h + libavcodec/h264_sei.h + libavcodec/h264addpx_template.c + libavcodec/h264chroma.h + libavcodec/h264chroma_template.c + libavcodec/h264data.h + libavcodec/h264dec.h + libavcodec/h264dsp.h + libavcodec/h264dsp_template.c + libavcodec/h264idct.h + libavcodec/h264idct_template.c + libavcodec/h264pred.h + libavcodec/h264pred_template.c + libavcodec/h264qpel.h + libavcodec/h265_profile_level.h + libavcodec/h274.h + libavcodec/half2float.h + libavcodec/hap.h + libavcodec/hevc.h + libavcodec/hevc_data.h + libavcodec/hevc_parse.h + libavcodec/hevc_ps.h + libavcodec/hevc_sei.h + libavcodec/hevcdec.h + libavcodec/hevcdsp.h + libavcodec/hevcpred.h + libavcodec/hpeldsp.h + libavcodec/hpel_template.c + libavcodec/htmlsubtitles.h + libavcodec/huffman.h + libavcodec/huffyuv.h + libavcodec/huffyuvdsp.h + libavcodec/huffyuvencdsp.h + libavcodec/hwaccels.h + libavcodec/hwconfig.h + libavcodec/ilbcdata.h + libavcodec/idctdsp.h + libavcodec/iirfilter.h + libavcodec/internal.h + libavcodec/intrax8.h + libavcodec/intrax8dsp.h + libavcodec/jacosub.h + libavcodec/jfdctint_template.c + libavcodec/jni.h + libavcodec/jpegls.h + libavcodec/jpeg2000.h + libavcodec/jpeg2000dwt.h + libavcodec/jpeg2000dsp.h + libavcodec/jpeglsdec.h + libavcodec/jpegtables.h + libavcodec/jpegtabs.h + libavcodec/kbdwin.h + libavcodec/lcl.h + libavcodec/libopus.h + libavcodec/libvpx.h + libavcodec/libwebpenc_common.h + libavcodec/lossless_videodsp.h + libavcodec/lossless_videoencdsp.h + libavcodec/lpc.h + libavcodec/lzw.h + libavcodec/mathops.h + libavcodec/mdct15.h + libavcodec/mdct_template.c + libavcodec/me_cmp.h + libavcodec/mediacodec.h + libavcodec/mjpeg.h + libavcodec/mjpegdec.h + libavcodec/mjpegenc.h + libavcodec/mjpegenc_common.h + libavcodec/mjpegenc_huffman.h + libavcodec/mlp.h + libavcodec/mlp_parse.h + libavcodec/motion_est.h + libavcodec/motion_est_template.c + libavcodec/mpeg12.h + libavcodec/mpeg12data.h + libavcodec/mpeg12vlc.h + libavcodec/mpeg4audio.h + libavcodec/mpeg4audio_sample_rates.h + libavcodec/mpeg4data.h + libavcodec/mpeg4video.h + libavcodec/mpeg4video_parser.h + libavcodec/mpeg_er.h + libavcodec/mpegaudio.h + libavcodec/mpegaudio_tablegen.h + libavcodec/mpegaudiodata.h + libavcodec/mpegaudiodec_common_tablegen.h + libavcodec/mpegaudiodec_template.c + libavcodec/mpegaudiodecheader.h + libavcodec/mpegaudiodsp.h + libavcodec/mpegaudiodsp_template.c + libavcodec/mpegaudioenc_template.c + libavcodec/mpegaudiotab.h + libavcodec/mpegaudiotabs.h + libavcodec/mpegpicture.h + libavcodec/mpegutils.h + libavcodec/mpegvideo.h + libavcodec/mpegvideodata.h + libavcodec/mpegvideodsp.h + libavcodec/mpegvideoencdsp.h + libavcodec/mqc.h + libavcodec/msgsmdec.h + libavcodec/msmpeg4.h + libavcodec/msmpeg4data.h + libavcodec/msrledec.h + libavcodec/nvdec.h + libavcodec/options_table.h + libavcodec/opus.h + libavcodec/opus_celt.h + libavcodec/opus_pvq.h + libavcodec/opus_rc.h + libavcodec/opusdsp.h + libavcodec/opusenc.h + libavcodec/opusenc_psy.h + libavcodec/opusenc_utils.h + libavcodec/opustab.h + libavcodec/packet.h + libavcodec/packet_internal.h + libavcodec/paf.h + libavcodec/parser.h + libavcodec/pcm_tablegen.h + libavcodec/pel_template.c + libavcodec/pixblockdsp.h + libavcodec/pixels.h + libavcodec/png.h + libavcodec/pngdsp.h + libavcodec/pnm.h + libavcodec/profiles.h + libavcodec/psymodel.h + libavcodec/pthread_internal.h + libavcodec/put_bits.h + libavcodec/qpeldsp.h + libavcodec/qpel_template.c + libavcodec/qsv.h + libavcodec/qsv_internal.h + libavcodec/qsvenc.h + libavcodec/rangecoder.h + libavcodec/ratecontrol.h + libavcodec/raw.h + libavcodec/rdft.h + libavcodec/rectangle.h + libavcodec/rl.h + libavcodec/rle.h + libavcodec/rnd_avg.h + libavcodec/rv10.h + libavcodec/sbc.h + libavcodec/sbr.h + libavcodec/sbrdsp.h + libavcodec/sbrdsp_template.c + libavcodec/sei.h + libavcodec/sgi.h + libavcodec/simple_idct.h + libavcodec/simple_idct_template.c + libavcodec/sinewin.h + libavcodec/sinewin_tablegen.h + libavcodec/sp5x.h + libavcodec/speedhqenc.h + libavcodec/startcode.h + libavcodec/sunrast.h + libavcodec/synth_filter.h + libavcodec/tak.h + libavcodec/targa.h + libavcodec/texturedsp.h + libavcodec/thread.h + libavcodec/tiff.h + libavcodec/tiff_common.h + libavcodec/tiff_data.h + libavcodec/to_upper4.h + libavcodec/ttmlenc.h + libavcodec/unary.h + libavcodec/v210dec.h + libavcodec/v210enc.h + libavcodec/v210_template.c + libavcodec/v4l2_buffers.h + libavcodec/v4l2_context.h + libavcodec/v4l2_fmt.h + libavcodec/v4l2_m2m.h + libavcodec/vaapi_decode.h + libavcodec/vaapi_encode.h + libavcodec/vaapi_hevc.h + libavcodec/vc1.h + libavcodec/vc1_common.h + libavcodec/vc1_pred.h + libavcodec/vc1acdata.h + libavcodec/vc1data.h + libavcodec/vc1dsp.h + libavcodec/vdpau.h + libavcodec/vdpau_internal.h + libavcodec/version.h + libavcodec/videodsp.h + libavcodec/videodsp_template.c + libavcodec/videotoolbox.h + libavcodec/vlc.h + libavcodec/vorbis.h + libavcodec/vorbis_enc_data.h + libavcodec/vorbis_parser.h + libavcodec/vorbis_parser_internal.h + libavcodec/vorbisdsp.h + libavcodec/vp3data.h + libavcodec/vp3dsp.h + libavcodec/vp4data.h + libavcodec/vp56.h + libavcodec/vp56data.h + libavcodec/vp56dsp.h + libavcodec/vp5data.h + libavcodec/vp6data.h + libavcodec/vp8.h + libavcodec/vp8data.h + libavcodec/vp8dsp.h + libavcodec/vp9.h + libavcodec/vp9_mc_template.c + libavcodec/vp9data.h + libavcodec/vp9dec.h + libavcodec/vp9dsp.h + libavcodec/vp9dsp_template.c + libavcodec/vp9shared.h + libavcodec/wmv2.h + libavcodec/wmv2data.h + libavcodec/wmv2dsp.h + libavcodec/xiph.h + libavcodec/xvididct.h + libavcodec/xvmc.h + libavcodec/xvmc_internal.h + libavcodec/xwd.h + libavcodec/aarch64/vp8dsp.h + libavcodec/ppc/audiodsp.c + libavcodec/ppc/blockdsp.c + libavcodec/ppc/fdctdsp.c + libavcodec/ppc/fft_init.c + libavcodec/ppc/fmtconvert_altivec.c + libavcodec/ppc/idctdsp.c + libavcodec/ppc/lossless_audiodsp_altivec.c + libavcodec/ppc/lossless_videodsp_altivec.c + libavcodec/ppc/pixblockdsp.c + libavcodec/ppc/vc1dsp_altivec.c + libavcodec/ppc/vorbisdsp_altivec.c + libavcodec/ppc/vp3dsp_altivec.c + libavcodec/ppc/vp8dsp_altivec.c + libavcodec/x86/constants.h + libavcodec/x86/fdct.h + libavcodec/x86/fft.h + libavcodec/x86/fpel.h + libavcodec/x86/hpeldsp.h + libavcodec/x86/hpeldsp_rnd_template.c + libavcodec/x86/idctdsp.h + libavcodec/x86/inline_asm.h + libavcodec/x86/mathops.h + libavcodec/x86/mpegvideoenc_qns_template.c + libavcodec/x86/mpegvideoenc_template.c + libavcodec/x86/rnd_template.c + libavcodec/x86/simple_idct.h + libavcodec/x86/vc1dsp.h + libavcodec/x86/vp56_arith.h + libavcodec/x86/vp9dsp_init.h + libavcodec/x86/vp9dsp_init_16bpp_template.c + libavdevice/alsa.h + libavdevice/avdevice.h + libavdevice/decklink_common.h + libavdevice/decklink_common_c.h + libavdevice/decklink_dec.h + libavdevice/decklink_enc.h + libavdevice/dshow_capture.h + libavdevice/fbdev_common.h + libavdevice/internal.h + libavdevice/opengl_enc_shaders.h + libavdevice/oss.h + libavdevice/pulse_audio_common.h + libavdevice/sndio.h + libavdevice/timefilter.h + libavdevice/v4l2-common.h + libavdevice/version.h + libavfilter/af_afir.h + libavfilter/af_anlmdndsp.h + libavfilter/af_volume.h + libavfilter/atadenoise.h + libavfilter/audio.h + libavfilter/avf_showcqt.h + libavfilter/avfilter.h + libavfilter/bbox.h + libavfilter/blend.h + libavfilter/blend_modes.c + libavfilter/boxblur.h + libavfilter/bufferqueue.h + libavfilter/buffersink.h + libavfilter/buffersrc.h + libavfilter/bwdif.h + libavfilter/colorspace.h + libavfilter/colorspacedsp.h + libavfilter/colorspacedsp_template.c + libavfilter/colorspacedsp_yuv2yuv_template.c + libavfilter/convolution.h + libavfilter/deshake.h + libavfilter/dnn/dnn_backend_common.h + libavfilter/dnn/dnn_backend_native.h + libavfilter/dnn/dnn_backend_native_layer_avgpool.h + libavfilter/dnn/dnn_backend_native_layer_conv2d.h + libavfilter/dnn/dnn_backend_native_layer_dense.h + libavfilter/dnn/dnn_backend_native_layer_depth2space.h + libavfilter/dnn/dnn_backend_native_layer_mathbinary.h + libavfilter/dnn/dnn_backend_native_layer_mathunary.h + libavfilter/dnn/dnn_backend_native_layer_maximum.h + libavfilter/dnn/dnn_backend_native_layer_pad.h + libavfilter/dnn/dnn_backend_native_layers.h + libavfilter/dnn/dnn_backend_openvino.h + libavfilter/dnn/dnn_backend_tf.h + libavfilter/dnn/dnn_io_proc.h + libavfilter/dnn/queue.h + libavfilter/dnn/safe_queue.h + libavfilter/dnn_filter_common.h + libavfilter/dnn_interface.h + libavfilter/drawutils.h + libavfilter/ebur128.h + libavfilter/filters.h + libavfilter/formats.h + libavfilter/framepool.h + libavfilter/framequeue.h + libavfilter/framerate.h + libavfilter/framesync.h + libavfilter/gblur.h + libavfilter/generate_wave_table.h + libavfilter/gradfun.h + libavfilter/hermite.h + libavfilter/hflip.h + libavfilter/internal.h + libavfilter/lavfutils.h + libavfilter/limiter.h + libavfilter/lswsutils.h + libavfilter/lut3d.h + libavfilter/maskedclamp.h + libavfilter/maskedmerge.h + libavfilter/median.h + libavfilter/median_template.c + libavfilter/motion_estimation.h + libavfilter/phase_template.c + libavfilter/preserve_color.h + libavfilter/psnr.h + libavfilter/qp_table.h + libavfilter/qsvvpp.h + libavfilter/removegrain.h + libavfilter/scale_eval.h + libavfilter/scene_sad.h + libavfilter/signature.h + libavfilter/signature_lookup.c + libavfilter/ssim.h + libavfilter/stereo3d.h + libavfilter/thread.h + libavfilter/threshold.h + libavfilter/tinterlace.h + libavfilter/transform.h + libavfilter/transpose.h + libavfilter/unsharp.h + libavfilter/v360.h + libavfilter/vaapi_vpp.h + libavfilter/version.h + libavfilter/vf_eq.h + libavfilter/vf_fspp.h + libavfilter/vf_hqdn3d.h + libavfilter/vf_idet.h + libavfilter/vf_nlmeans.h + libavfilter/vf_noise.h + libavfilter/vf_overlay.h + libavfilter/vf_pp7.h + libavfilter/vf_pullup.h + libavfilter/vf_scale_cuda.h + libavfilter/vf_spp.h + libavfilter/video.h + libavfilter/vidstabutils.h + libavfilter/vmaf_motion.h + libavfilter/vulkan.h + libavfilter/vulkan_filter.h + libavfilter/w3fdif.h + libavfilter/window_func.h + libavfilter/yadif.h + libavformat/aiff.h + libavformat/apetag.h + libavformat/argo_asf.h + libavformat/asf.h + libavformat/asfcrypt.h + libavformat/ast.h + libavformat/av1.h + libavformat/avc.h + libavformat/avformat.h + libavformat/avi.h + libavformat/avio.h + libavformat/avio_internal.h + libavformat/avlanguage.h + libavformat/caf.h + libavformat/dash.h + libavformat/dovi_isom.h + libavformat/dv.h + libavformat/ffmeta.h + libavformat/flac_picture.h + libavformat/flacenc.h + libavformat/flv.h + libavformat/gxf.h + libavformat/hevc.h + libavformat/hls_sample_encryption.h + libavformat/hlsplaylist.h + libavformat/http.h + libavformat/httpauth.h + libavformat/id3v1.h + libavformat/id3v2.h + libavformat/imf.h + libavformat/img2.h + libavformat/internal.h + libavformat/ip.h + libavformat/ircam.h + libavformat/isom.h + libavformat/lrc.h + libavformat/matroska.h + libavformat/metadata.h + libavformat/mms.h + libavformat/mov_chan.h + libavformat/movenc.h + libavformat/movenc_ttml.h + libavformat/movenccenc.h + libavformat/mpeg.h + libavformat/mpegts.h + libavformat/mxf.h + libavformat/network.h + libavformat/nut.h + libavformat/oggdec.h + libavformat/oma.h + libavformat/options_table.h + libavformat/os_support.h + libavformat/pcm.h + libavformat/qtpalette.h + libavformat/rawdec.h + libavformat/rawenc.h + libavformat/rdt.h + libavformat/replaygain.h + libavformat/riff.h + libavformat/rm.h + libavformat/rmsipr.h + libavformat/rso.h + libavformat/rtmp.h + libavformat/rtmpcrypt.h + libavformat/rtmppkt.h + libavformat/rtp.h + libavformat/rtpdec.h + libavformat/rtpdec_formats.h + libavformat/rtpenc.h + libavformat/rtpenc_chain.h + libavformat/rtpproto.h + libavformat/rtsp.h + libavformat/rtspcodes.h + libavformat/sauce.h + libavformat/smjpeg.h + libavformat/sox.h + libavformat/spdif.h + libavformat/srtp.h + libavformat/subtitles.h + libavformat/swf.h + libavformat/tee_common.h + libavformat/tls.h + libavformat/ttmlenc.h + libavformat/url.h + libavformat/urldecode.h + libavformat/version.h + libavformat/voc.h + libavformat/vorbiscomment.h + libavformat/vpcc.h + libavformat/w64.h + libavformat/wtv.h + libavformat/wv.h + libavformat/yuv4mpeg.h + libavutil/aarch64/cpu.h + libavutil/adler32.h + libavutil/aes.h + libavutil/aes_ctr.h + libavutil/aes_internal.h + libavutil/arm/intmath.h + libavutil/attributes.h + libavutil/audio_fifo.h + libavutil/avassert.h + libavutil/avstring.h + libavutil/avutil.h + libavutil/base64.h + libavutil/blowfish.h + libavutil/bprint.h + libavutil/bswap.h + libavutil/buffer.h + libavutil/buffer_internal.h + libavutil/camellia.h + libavutil/cast5.h + libavutil/channel_layout.h + libavutil/color_utils.h + libavutil/colorspace.h + libavutil/common.h + libavutil/cpu.h + libavutil/cpu_internal.h + libavutil/crc.h + libavutil/cuda_check.h + libavutil/des.h + libavutil/detection_bbox.h + libavutil/dict.h + libavutil/display.h + libavutil/dovi_meta.h + libavutil/downmix_info.h + libavutil/dynarray.h + libavutil/encryption_info.h + libavutil/error.h + libavutil/eval.h + libavutil/ffmath.h + libavutil/fifo.h + libavutil/file.h + libavutil/film_grain_params.h + libavutil/fixed_dsp.h + libavutil/float_dsp.h + libavutil/frame.h + libavutil/hash.h + libavutil/hdr_dynamic_metadata.h + libavutil/hmac.h + libavutil/hwcontext.h + libavutil/hwcontext_cuda.h + libavutil/hwcontext_cuda_internal.h + libavutil/hwcontext_d3d11va.h + libavutil/hwcontext_drm.h + libavutil/hwcontext_dxva2.h + libavutil/hwcontext_internal.h + libavutil/hwcontext_mediacodec.h + libavutil/hwcontext_opencl.h + libavutil/hwcontext_qsv.h + libavutil/hwcontext_vaapi.h + libavutil/hwcontext_vdpau.h + libavutil/hwcontext_videotoolbox.h + libavutil/hwcontext_vulkan.h + libavutil/imgutils.h + libavutil/imgutils_internal.h + libavutil/integer.h + libavutil/internal.h + libavutil/intfloat.h + libavutil/intmath.h + libavutil/intreadwrite.h + libavutil/lfg.h + libavutil/libm.h + libavutil/lls.h + libavutil/log.h + libavutil/lzo.h + libavutil/macos_kperf.h + libavutil/macros.h + libavutil/mastering_display_metadata.h + libavutil/mathematics.h + libavutil/md5.h + libavutil/mem.h + libavutil/mem_internal.h + libavutil/motion_vector.h + libavutil/murmur3.h + libavutil/objc.h + libavutil/opt.h + libavutil/parseutils.h + libavutil/pca.h + libavutil/pixdesc.h + libavutil/pixelutils.h + libavutil/pixfmt.h + libavutil/ppc/cpu.h + libavutil/ppc/util_altivec.h + libavutil/qsort.h + libavutil/random_seed.h + libavutil/rational.h + libavutil/rc4.h + libavutil/replaygain.h + libavutil/reverse.h + libavutil/ripemd.h + libavutil/samplefmt.h + libavutil/sha.h + libavutil/sha512.h + libavutil/slicethread.h + libavutil/softfloat.h + libavutil/softfloat_ieee754.h + libavutil/softfloat_tables.h + libavutil/spherical.h + libavutil/stereo3d.h + libavutil/tablegen.h + libavutil/tea.h + libavutil/thread.h + libavutil/threadmessage.h + libavutil/time.h + libavutil/time_internal.h + libavutil/timecode.h + libavutil/timer.h + libavutil/timestamp.h + libavutil/tree.h + libavutil/twofish.h + libavutil/tx.h + libavutil/tx_priv.h + libavutil/tx_template.c + libavutil/version.h + libavutil/video_enc_params.h + libavutil/vulkan.h + libavutil/vulkan_functions.h + libavutil/vulkan_loader.h + libavutil/wchar_filename.h + libavutil/aarch64/timer.h + libavutil/arm/timer.h + libavutil/bfin/timer.h + libavutil/ppc/timer.h + libavutil/x86/asm.h + libavutil/x86/bswap.h + libavutil/x86/cpu.h + libavutil/x86/emms.h + libavutil/x86/intmath.h + libavutil/x86/intreadwrite.h + libavutil/x86/pixelutils.h + libavutil/x86/timer.h + libavutil/xga_font_data.h + libavutil/xtea.h + libavutil/ppc/cpu.c + libavutil/ppc/float_dsp_altivec.c + libavutil/ppc/float_dsp_init.c + libavutil/ppc/float_dsp_vsx.c + libpostproc/postprocess.h + libpostproc/postprocess_internal.h + libpostproc/postprocess_template.c + libpostproc/version.h + libswresample/audioconvert.h + libswresample/dither_template.c + libswresample/noise_shaping_data.c + libswresample/rematrix_template.c + libswresample/resample.h + libswresample/resample_template.c + libswresample/swresample.h + libswresample/swresample_internal.h + libswresample/version.h + libswscale/bayer_template.c + libswscale/rgb2rgb.h + libswscale/rgb2rgb_template.c + libswscale/swscale.h + libswscale/swscale_internal.h + libswscale/version.h + libswscale/ppc/swscale_altivec.c + libswscale/ppc/swscale_ppc_template.c + libswscale/ppc/swscale_vsx.c + libswscale/ppc/yuv2rgb_altivec.c + libswscale/ppc/yuv2yuv_altivec.c + libswscale/x86/rgb2rgb_template.c + libswscale/x86/swscale_template.c + libswscale/x86/yuv2rgb_template.c + tools/decode_simple.h) + +preset_files=(presets/libvpx-360p.ffpreset + presets/libvpx-720p50_60.ffpreset + presets/libvpx-1080p50_60.ffpreset + presets/libvpx-720p.ffpreset + presets/libvpx-1080p.ffpreset) + +asm_files=(libavcodec/x86/huffyuvdsp_template.asm + libavcodec/x86/simple_idct10_template.asm + libavcodec/x86/vp9itxfm_template.asm + libavutil/x86/x86util.asm + libavutil/x86/x86inc.asm) + +asm_files2="$(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 +keepfiles=(${other_files[@]} + ${doc_files[@]} + ${build_files[@]} + ${make_files[@]} + ${test_files[@]} + ${header_files[@]} + ${version_scripts[@]} + ${preset_files[@]} + ${asm_files[@]} + ${asm_files2} + ${c_files}) + +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 sources anymore (please cleanup keepfiles):" + 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 diff --git a/fix-vmaf-model-path.patch b/fix-vmaf-model-path.patch new file mode 100644 index 0000000..8108dc1 --- /dev/null +++ b/fix-vmaf-model-path.patch @@ -0,0 +1,24 @@ +From d87f2ce576ddb0ce8f6ade22b3c66a8b63c90713 Mon Sep 17 00:00:00 2001 +From: Leigh Scott +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 diff --git a/sources b/sources new file mode 100644 index 0000000..fad8a8b --- /dev/null +++ b/sources @@ -0,0 +1,2 @@ +SHA512 (ffmpeg-free-5.0.tar.xz) = 547d4dc9c90e00a6896e7ffd6c67f98e66c9d451655268570a72680655172ec97d85e761bc743906b85982b8768a155c9d2ddd67991633557bbaa32052902cfd +SHA512 (ffmpeg-5.0.tar.xz.asc) = 9238fcdc849895147a26669ac90fec94002af86e81270128f6eb0448d74487d8ba06ee08d10686a7a6e204689716ee744bfffc2a39466940940609cfcd7dfa85