%bcond_without flite # flite voice synthesis support
%bcond_without frei0r # frei0r video filtering
%bcond_without fribidi # fribidi support
-%bcond_without glslang # GLSL->SPIRV compilation via libglslang
+%bcond_with glslang # GLSL->SPIRV compilation via libglslang
%bcond_without gme # Game Music Emu support
%bcond_without gsm # GSM de/encoding via libgsm
%bcond_without iec61883 # ec61883 via libiec61883
%bcond_with libdrm # Linux Direct Rendering Manager code
%bcond_with libklvanc # Kernel Labs VANC processing (in decklink driver)
%bcond_without libmysofa # sofalizer filter
+%bcond_with libplacebo # libplacebo filters
%bcond_without librist # RIST support via librist
%bcond_with librsvg # SVG rasterization via librsvg
%bcond_with libxml2 # XML parsing using libxml2
%bcond_with rav1e # AV1 encoding using rav1e
%bcond_with rkmpp # Rockchip Media Process Platform code [implies libdrm]
%bcond_without rubberband # rubberband filter
+%bcond_without shaderc # GLSL->SPIRV compilation via libshaderc
%bcond_without shine # shine fixed-point MP3 encoder
%bcond_with smb # SMB support via libsmbclient
%bcond_without snappy # Snappy compression support (needed for hap encoding)
%if %{with rkmpp} || %{with v4l2_request}
%define with_libdrm 1
%endif
+%if %{with glslang}
+%undefine with_shaderc
+%endif
%ifnarch %{ix86} %{x8664}
%undefine with_ffnvcodec
Summary: FFmpeg - a very fast video and audio converter
Summary(pl.UTF-8): FFmpeg - szybki konwerter audio/wideo
Name: ffmpeg
-Version: 4.4.1
+Version: 5.0
Release: 1
# LGPL or GPL, chosen at configure time (GPL version is more featured)
# GPL: frei0r libcdio libdavs2 rubberband vidstab x264 x265 xavs xavs2 xvid
License: GPL v3+ with LGPL v3+ parts
Group: Applications/Multimedia
Source0: https://ffmpeg.org/releases/%{name}-%{version}.tar.xz
-# Source0-md5: 41a1ca8693acc56088e8eaf3899b91ea
+# Source0-md5: be3a9c73f7b492cd98301ac2086f0862
Patch0: %{name}-omx-libnames.patch
Patch1: %{name}-atadenoise.patch
Patch2: opencv4.patch
Patch3: v4l2-request-hwdec.patch
-Patch4: %{name}-glslang.patch
URL: http://www.ffmpeg.org/
-%{?with_decklink:BuildRequires: Blackmagic_DeckLink_SDK >= 10.10}
+%{?with_decklink:BuildRequires: Blackmagic_DeckLink_SDK >= 10.11}
%{?with_openal:BuildRequires: OpenAL-devel >= 1.1}
%{?with_opencl:BuildRequires: OpenCL-devel >= 1.2}
%{?with_opengl:BuildRequires: OpenGL-GLX-devel}
%{?with_omx:BuildRequires: OpenMAX-IL-devel}
BuildRequires: SDL2-devel >= 2.0.1
BuildRequires: SDL2-devel < 2.1.0
-%{?with_vulkan:BuildRequires: Vulkan-Loader-devel >= 1.1.97}
+%{?with_vulkan:BuildRequires: Vulkan-Loader-devel >= 1.2.189}
BuildRequires: alsa-lib-devel
%{?with_aom:BuildRequires: aom-devel >= 1.0.0}
%{?with_aribb24:BuildRequires: aribb24-devel}
%{?with_ladspa:BuildRequires: ladspa-devel}
BuildRequires: lame-libs-devel >= 3.98.3
%{?with_lensfun:BuildRequires: lensfun-devel >= 0.3.95}
-BuildRequires: libass-devel
+BuildRequires: libass-devel >= 0.11.0
%ifarch %{armv6}
BuildRequires: libatomic-devel
%endif
%{?with_modplug:BuildRequires: libmodplug-devel}
%{?with_libmysofa:BuildRequires: libmysofa-devel >= 0.7}
%{?with_openmpt:BuildRequires: libopenmpt-devel >= 0.4.5}
+%{?with_libplacebo:BuildRequires: libplacebo-devel >= 4.192.0}
%if %{with dc1394} || %{with iec61883}
BuildRequires: libraw1394-devel >= 2
%endif
%{?with_rkmpp:BuildRequires: rockchip-mpp-devel >= 1.3.7}
BuildRequires: rpmbuild(macros) >= 2.007
%{?with_rubberband:BuildRequires: rubberband-devel >= 1.8.1}
+%{?with_shaderc:BuildRequires: shaderc-devel >= 2019.1}
%{?with_shine:BuildRequires: shine-devel >= 3.0.0}
%{?with_snappy:BuildRequires: snappy-devel}
%{?with_soxr:BuildRequires: soxr-devel}
Summary(pl.UTF-8): Biblioteki ffmpeg
Group: Libraries
Requires: SDL2 >= 2.0.1
-%{?with_vulkan:Requires: Vulkan-Loader >= 1.1.97}
+%{?with_vulkan:Requires: Vulkan-Loader >= 1.2.189}
%{?with_aom:Requires: aom >= 1.0.0}
Requires: celt >= 0.11.0
%{?with_dav1d:Requires: dav1d >= 0.5.0}
Requires: gnutls-libs >= 3.0.20
%endif
%{?with_kvazaar:Requires: kvazaar-libs >= 0.8.1}
+Requires: libass >= 0.11.0
%{?with_libmysofa:Requires: libmysofa >= 0.7}
%{?with_openmpt:Requires: libopenmpt >= 0.4.5}
+%{?with_libplacebo:BuildRequires: libplacebo >= 4.192.0}
%{?with_librist:Requires: librist >= 0.2}
%{?with_theora:Requires: libtheora >= 1.0-0.beta3}
%if %{with va}
%{?with_openal:Requires: OpenAL-devel >= 1.1}
%{?with_opencl:Requires: OpenCL-devel >= 1.2}
%{?with_opengl:Requires: OpenGL-devel}
-%{?with_vulkan:Requires: Vulkan-Loader-devel >= 1.1.97}
+%{?with_vulkan:Requires: Vulkan-Loader-devel >= 1.2.189}
Requires: SDL2-devel >= 2.0.1
Requires: alsa-lib-devel
%{?with_aom:Requires: aom-devel >= 1.0.0}
%{?with_kvazaar:Requires: kvazaar-devel >= 0.8.1}
Requires: lame-libs-devel >= 3.98.3
%{?with_lensfun:Requires: lensfun-devel >= 0.3.95}
-Requires: libass-devel
+Requires: libass-devel >= 0.11.0
%{?with_iec61883:Requires: libavc1394-devel}
Requires: libbluray-devel
%{?with_bs2b:Requires: libbs2b-devel}
%if %{with v4l2_request}
%patch3 -p1
%endif
-%patch4 -p1
# package the grep result for mplayer, the result formatted as ./mplayer/configure
cat <<EOF > ffmpeg-avconfig
--disable-stripping \
%{!?with_doc:--disable-doc} \
--enable-avfilter \
- --enable-avresample \
%{?with_chromaprint:--enable-chromaprint} \
%{?with_cudasdk:--enable-cuda-nvcc} \
%{?with_decklink:--enable-decklink} \
%{?with_librsvg:--enable-librsvg} \
--enable-librtmp \
%{?with_rubberband:--enable-librubberband} \
+ %{?with_shaderc:--enable-libshaderc} \
%{?with_shine:--enable-libshine} \
%{?with_smb:--enable-libsmbclient} \
%{?with_snappy:--enable-libsnappy} \
--enable-swscale \
%{!?with_va:--disable-vaapi} \
%{?with_vapoursynth:--enable-vapoursynth} \
- %{?with_vulkan:--enable-vulkan} \
+ %{!?with_vulkan:--disable-vulkan} \
%if %{with v4l2_request}
--enable-libudev \
--enable-v4l2-request \
%files libs
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libavcodec.so.58
+%attr(755,root,root) %ghost %{_libdir}/libavcodec.so.59
%attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libavdevice.so.58
+%attr(755,root,root) %ghost %{_libdir}/libavdevice.so.59
%attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libavfilter.so.7
+%attr(755,root,root) %ghost %{_libdir}/libavfilter.so.8
%attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libavformat.so.58
-%attr(755,root,root) %{_libdir}/libavresample.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libavresample.so.4
+%attr(755,root,root) %ghost %{_libdir}/libavformat.so.59
%attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libavutil.so.56
+%attr(755,root,root) %ghost %{_libdir}/libavutil.so.57
%attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libpostproc.so.55
+%attr(755,root,root) %ghost %{_libdir}/libpostproc.so.56
%attr(755,root,root) %{_libdir}/libswresample.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libswresample.so.3
+%attr(755,root,root) %ghost %{_libdir}/libswresample.so.4
%attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libswscale.so.5
+%attr(755,root,root) %ghost %{_libdir}/libswscale.so.6
%files devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libavdevice.so
%attr(755,root,root) %{_libdir}/libavfilter.so
%attr(755,root,root) %{_libdir}/libavformat.so
-%attr(755,root,root) %{_libdir}/libavresample.so
%attr(755,root,root) %{_libdir}/libavutil.so
%attr(755,root,root) %{_libdir}/libpostproc.so
%attr(755,root,root) %{_libdir}/libswresample.so
%{_includedir}/libavdevice
%{_includedir}/libavfilter
%{_includedir}/libavformat
-%{_includedir}/libavresample
%{_includedir}/libavutil
%{_includedir}/libpostproc
%{_includedir}/libswresample
%{_pkgconfigdir}/libavdevice.pc
%{_pkgconfigdir}/libavfilter.pc
%{_pkgconfigdir}/libavformat.pc
-%{_pkgconfigdir}/libavresample.pc
%{_pkgconfigdir}/libavutil.pc
%{_pkgconfigdir}/libpostproc.pc
%{_pkgconfigdir}/libswresample.pc
%{_libdir}/libavdevice.a
%{_libdir}/libavfilter.a
%{_libdir}/libavformat.a
-%{_libdir}/libavresample.a
%{_libdir}/libavutil.a
%{_libdir}/libpostproc.a
%{_libdir}/libswresample.a
--- a/libavutil/buffer.h
+++ b/libavutil/buffer.h
@@ -267,6 +267,11 @@ AVBufferPool *av_buffer_pool_init2(int size, void *opaque,
- #endif
+ AVBufferRef* (*alloc)(void *opaque, size_t size),
void (*pool_free)(void *opaque));
+/**
omx
opencl
+ v4l2_request
- vulkan
"
+ DOCUMENT_LIST="
@@ -2903,6 +2907,7 @@ d3d11va_deps="dxva_h ID3D11VideoDecoder ID3D11VideoContext"
dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode ole32 user32"
ffnvcodec_deps_any="libdl LoadLibrary"
nvdec_deps="ffnvcodec"
+v4l2_request_deps="linux_videodev2_h linux_media_h v4l2_timeval_to_ns libdrm libudev"
- vaapi_x11_deps="xlib"
+ vaapi_x11_deps="xlib_x11"
videotoolbox_hwaccel_deps="videotoolbox pthreads"
videotoolbox_hwaccel_extralibs="-framework QuartzCore"
@@ -6376,6 +6381,7 @@ enabled libtls && require_pkg_config libtls libtls tls.h tls_configur
+int ff_v4l2_request_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx);
+
+#endif /* AVCODEC_V4L2_REQUEST_H */
-From a0a5b816593e3911aeedd201baa8057b64a89a39 Mon Sep 17 00:00:00 2001
-From: Ezequiel Garcia <ezequiel@collabora.com>
-Date: Wed, 20 Feb 2019 11:18:00 -0300
-Subject: [PATCH] h264dec: add idr_pic_id to slice context
-
-Used by V4L2 request API h264 hwaccel
-
-Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
-Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
----
- libavcodec/h264_slice.c | 2 +-
- libavcodec/h264dec.h | 1 +
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
-index db8363e4cc98..a19635a23d44 100644
---- a/libavcodec/h264_slice.c
-+++ b/libavcodec/h264_slice.c
-@@ -1818,7 +1818,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
- }
-
- if (nal->type == H264_NAL_IDR_SLICE)
-- get_ue_golomb_long(&sl->gb); /* idr_pic_id */
-+ sl->idr_pic_id = get_ue_golomb_long(&sl->gb);
-
- sl->poc_lsb = 0;
- sl->delta_poc_bottom = 0;
-diff --git a/libavcodec/h264dec.h b/libavcodec/h264dec.h
-index a419615124b2..316dc6a2c890 100644
---- a/libavcodec/h264dec.h
-+++ b/libavcodec/h264dec.h
-@@ -335,6 +335,7 @@ typedef struct H264SliceContext {
- int delta_poc[2];
- int curr_pic_num;
- int max_pic_num;
-+ int idr_pic_id;
- } H264SliceContext;
-
- /**
From 6349ae1e10d1b68c47c3b883b27567f9678c6e0c Mon Sep 17 00:00:00 2001
From: Boris Brezillon <boris.brezillon@collabora.com>
Date: Wed, 22 May 2019 14:44:22 +0200
if (first_slice)
av_assert0(!h->setup_finished);
@@ -1820,6 +1820,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
- if (nal->type == H264_NAL_IDR_SLICE)
- sl->idr_pic_id = get_ue_golomb_long(&sl->gb);
+ av_log(h->avctx, AV_LOG_WARNING, "idr_pic_id is invalid\n");
+ }
+ pos = sl->gb.index;
sl->poc_lsb = 0;
+ int ref_pic_marking_bit_size;
int frame_num;
- int poc_lsb;
+ int idr_pic_id;
@@ -336,6 +337,7 @@ typedef struct H264SliceContext {
+ int delta_poc[2];
int curr_pic_num;
int max_pic_num;
- int idr_pic_id;
+ int pic_order_cnt_bit_size;
} H264SliceContext;
CONFIG_H264_VIDEOTOOLBOX_HWACCEL + \
CONFIG_H264_VDPAU_HWACCEL)
@@ -843,6 +844,9 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
- #endif
#if CONFIG_H264_VIDEOTOOLBOX_HWACCEL
+ if (h->avctx->colorspace != AVCOL_SPC_RGB)
*fmt++ = AV_PIX_FMT_VIDEOTOOLBOX;
+#endif
+#if CONFIG_H264_V4L2REQUEST_HWACCEL
+ *fmt++ = AV_PIX_FMT_DRM_PRIME;
#endif
- if (h->avctx->codec->pix_fmts)
- choices = h->avctx->codec->pix_fmts;
+ if (CHROMA444(h)) {
+ if (h->avctx->colorspace == AVCOL_SPC_RGB) {
diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
index 5eedeb3c275d..a504c89565c7 100644
--- a/libavcodec/h264dec.c