[arch-commits] Commit in paraview/trunk (PKGBUILD ffmpeg5.patch)
Antonio Rojas
arojas at gemini.archlinux.org
Mon Feb 14 12:25:40 UTC 2022
Date: Monday, February 14, 2022 @ 12:25:40
Author: arojas
Revision: 1133134
FFmpeg 5 rebuild
Added:
paraview/trunk/ffmpeg5.patch
Modified:
paraview/trunk/PKGBUILD
---------------+
PKGBUILD | 10 ++-
ffmpeg5.patch | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 165 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2022-02-14 12:18:31 UTC (rev 1133133)
+++ PKGBUILD 2022-02-14 12:25:40 UTC (rev 1133134)
@@ -8,7 +8,7 @@
pkgname=${_pkg}
#-${_mpi}
pkgver=5.9.1
-pkgrel=10
+pkgrel=11
pkgdesc="Parallel Visualization application using VTK (${_mpi} version)"
arch=(x86_64)
url="https://www.paraview.org"
@@ -26,12 +26,14 @@
vtk-gcc11.patch::https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7554.patch
vtk-fix-shader-initialization.patch::https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7978.patch
paraview-tbb-2021.patch
- paraview-vtkm-tbb-2021.patch)
+ paraview-vtkm-tbb-2021.patch
+ ffmpeg5.patch)
sha256sums=('0d486cb6fbf55e428845c9650486f87466efcb3155e40489182a7ea85dfd4c8d'
'c9959adcb59e2f2657f0144b0b68239d4174947fb2ab8051f2575241281e4d68'
'10864f69e2d6577c56cc536438b5dd7a52b004f6bb253a17569899922d804fe8'
'7091f7b4052688191ca5594f8e1dc1ed00dcc882343b9d360fbacd187161a914'
- 'ee0b5b28fdb2e906ee04b5eb28d87fa1e6646601d48b523d3d8f1760a811c416')
+ 'ee0b5b28fdb2e906ee04b5eb28d87fa1e6646601d48b523d3d8f1760a811c416'
+ '066ad5eb3f7cd101c4bbbe4d91ba97419f18537f9dadf6654776b7151c7c6a8d')
prepare() {
cd ParaView-v${pkgver/R/-R}
@@ -47,6 +49,8 @@
patch -p1 -d VTK < ../paraview-tbb-2021.patch
cp VTK/CMake/FindTBB.cmake VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/CMake/FindTBB.cmake
patch -p1 -d VTK/ThirdParty/vtkm/vtkvtkm/vtk-m < "$srcdir"/paraview-vtkm-tbb-2021.patch
+ # Fix build with FFmpeg 5 https://gitlab.kitware.com/vtk/vtk/-/merge_requests/8863
+ patch -p1 -d VTK < "$srcdir"/ffmpeg5.patch
}
build() {
Added: ffmpeg5.patch
===================================================================
--- ffmpeg5.patch (rev 0)
+++ ffmpeg5.patch 2022-02-14 12:25:40 UTC (rev 1133134)
@@ -0,0 +1,158 @@
+From bad8f3e9d0aad03e8f2aff9524cb3c5f2d10ccaf Mon Sep 17 00:00:00 2001
+From: Ben Boeckel <ben.boeckel at kitware.com>
+Date: Fri, 28 Jan 2022 10:44:28 -0500
+Subject: [PATCH] IO/FFMPEG: support FFmpeg 5.0 API changes
+
+Fixes: #18445
+---
+ Documentation/release/dev/ffmpeg-5.0.md | 3 +++
+ IO/FFMPEG/CMakeLists.txt | 18 +++++++++++++++--
+ IO/FFMPEG/vtkFFMPEGVideoSource.cxx | 4 ++--
+ IO/FFMPEG/vtkFFMPEGWriter.cxx | 27 +++++++++++++------------
+ 4 files changed, 35 insertions(+), 17 deletions(-)
+ create mode 100644 Documentation/release/dev/ffmpeg-5.0.md
+
+diff --git a/Documentation/release/dev/ffmpeg-5.0.md b/Documentation/release/dev/ffmpeg-5.0.md
+new file mode 100644
+index 00000000000..02ebd3ff840
+--- /dev/null
++++ b/Documentation/release/dev/ffmpeg-5.0.md
+@@ -0,0 +1,3 @@
++## FFmpeg 5.0 support
++
++FFmpeg 5.0 API changes are now supported.
+diff --git a/IO/FFMPEG/CMakeLists.txt b/IO/FFMPEG/CMakeLists.txt
+index f6900843ac0..ed43978cfc6 100644
+--- a/IO/FFMPEG/CMakeLists.txt
++++ b/IO/FFMPEG/CMakeLists.txt
+@@ -6,7 +6,9 @@ vtk_module_find_package(
+ avformat
+ avcodec
+ avutil
+- swscale)
++ swscale
++ OPTIONAL_COMPONENTS
++ swresample)
+
+ set(classes
+ vtkFFMPEGWriter)
+@@ -21,6 +23,17 @@ if (NOT FFMPEG_VERSION VERSION_LESS "3.1")
+ vtkFFMPEGVideoSource)
+ endif ()
+
++set(ffmpeg_libraries)
++if (NOT FFMPEG_VERSION VERSION_LESS "5.0")
++ if (NOT FFMPEG_swresample_FOUND)
++ message(FATAL_ERROR
++ "FFMPEG 5.0 requires the `swresample` library.")
++ endif ()
++
++ list(APPEND ffmpeg_libraries
++ FFMPEG::swresample)
++endif ()
++
+ vtk_module_add_module(VTK::IOFFMPEG
+ CLASSES ${classes})
+ vtk_module_link(VTK::IOFFMPEG
+@@ -28,4 +41,5 @@ vtk_module_link(VTK::IOFFMPEG
+ FFMPEG::avformat
+ FFMPEG::avcodec
+ FFMPEG::avutil
+- FFMPEG::swscale)
++ FFMPEG::swscale
++ ${ffmpeg_libraries})
+diff --git a/IO/FFMPEG/vtkFFMPEGVideoSource.cxx b/IO/FFMPEG/vtkFFMPEGVideoSource.cxx
+index 45900ee02bc..f3169d3545d 100644
+--- a/IO/FFMPEG/vtkFFMPEGVideoSource.cxx
++++ b/IO/FFMPEG/vtkFFMPEGVideoSource.cxx
+@@ -205,7 +205,7 @@ void vtkFFMPEGVideoSource::Initialize()
+
+ this->Internal->VideoStream = fcontext->streams[this->Internal->VideoStreamIndex];
+
+- AVCodec* dec = avcodec_find_decoder(this->Internal->VideoStream->codecpar->codec_id);
++ const AVCodec* dec = avcodec_find_decoder(this->Internal->VideoStream->codecpar->codec_id);
+ if (!dec)
+ {
+ vtkErrorMacro("Failed to find codec for video");
+@@ -271,7 +271,7 @@ void vtkFFMPEGVideoSource::Initialize()
+ {
+ this->Internal->AudioStream = fcontext->streams[this->Internal->AudioStreamIndex];
+
+- AVCodec* adec = avcodec_find_decoder(this->Internal->AudioStream->codecpar->codec_id);
++ const AVCodec* adec = avcodec_find_decoder(this->Internal->AudioStream->codecpar->codec_id);
+ if (!adec)
+ {
+ vtkErrorMacro("Failed to find codec for audio");
+diff --git a/IO/FFMPEG/vtkFFMPEGWriter.cxx b/IO/FFMPEG/vtkFFMPEGWriter.cxx
+index 5011b40f579..5d284b088ed 100644
+--- a/IO/FFMPEG/vtkFFMPEGWriter.cxx
++++ b/IO/FFMPEG/vtkFFMPEGWriter.cxx
+@@ -21,10 +21,17 @@
+
+ extern "C"
+ {
++#include <libavcodec/avcodec.h>
+ #include <libavformat/avformat.h>
+ #include <libswscale/swscale.h>
+ }
+
++#if LIBAVFORMAT_VERSION_MAJOR < 59
++#define vtk_ff_const59
++#else
++#define vtk_ff_const59 const
++#endif
++
+ #if defined(LIBAVFORMAT_VERSION_MAJOR) && LIBAVFORMAT_VERSION_MAJOR >= 57
+ extern "C"
+ {
+@@ -51,7 +58,7 @@ private:
+
+ AVFormatContext* avFormatContext;
+
+- AVOutputFormat* avOutputFormat;
++ vtk_ff_const59 AVOutputFormat* avOutputFormat;
+
+ AVStream* avStream;
+
+@@ -115,15 +122,9 @@ int vtkFFMPEGWriterInternal::Start()
+ return 0;
+ }
+
+- if (this->Writer->GetCompression())
+- {
+- // choose a codec that is easily playable on windows
+- this->avOutputFormat->video_codec = AV_CODEC_ID_MJPEG;
+- }
+- else
+- {
+- this->avOutputFormat->video_codec = AV_CODEC_ID_RAWVIDEO;
+- }
++ enum AVCodecID video_codec = this->Writer->GetCompression()
++ ? AV_CODEC_ID_MJPEG // choose a codec that is easily playable on windows
++ : AV_CODEC_ID_RAWVIDEO;
+
+ // create the format context that wraps all of the media output structures
+ if (avformat_alloc_output_context2(
+@@ -133,8 +134,8 @@ int vtkFFMPEGWriterInternal::Start()
+ return 0;
+ }
+
+- AVCodec* codec;
+- if (!(codec = avcodec_find_encoder(this->avOutputFormat->video_codec)))
++ vtk_ff_const59 AVCodec* codec;
++ if (!(codec = avcodec_find_encoder(video_codec)))
+ {
+ vtkGenericWarningMacro(<< "Failed to get video codec.");
+ return 0;
+@@ -155,7 +156,7 @@ int vtkFFMPEGWriterInternal::Start()
+ return 0;
+ }
+
+- this->avStream->codecpar->codec_id = static_cast<AVCodecID>(this->avOutputFormat->video_codec);
++ this->avStream->codecpar->codec_id = video_codec;
+ this->avStream->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
+ this->avStream->codecpar->width = this->Dim[0];
+ this->avStream->codecpar->height = this->Dim[1];
+--
+GitLab
+
More information about the arch-commits
mailing list