commit:     d1b13d1f73246abe7be23ab4f2560ea18d5bffb2
Author:     Nick Sarnie <sarnex <AT> gentoo <DOT> org>
AuthorDate: Wed May 31 23:45:27 2023 +0000
Commit:     Nick Sarnie <sarnex <AT> gentoo <DOT> org>
CommitDate: Wed May 31 23:47:12 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d1b13d1f

media-libs/ffmpegsource: Fix build with ffmpeg 5

Signed-off-by: Nick Sarnie <sarnex <AT> gentoo.org>

 .../ffmpegsource/ffmpegsource-2.40-r1.ebuild       |  45 +++++++++
 ...ffmpegsource-2.40-Fix-build-with-ffmpeg-5.patch | 106 +++++++++++++++++++++
 2 files changed, 151 insertions(+)

diff --git a/media-libs/ffmpegsource/ffmpegsource-2.40-r1.ebuild 
b/media-libs/ffmpegsource/ffmpegsource-2.40-r1.ebuild
new file mode 100644
index 000000000000..5b1170bad347
--- /dev/null
+++ b/media-libs/ffmpegsource/ffmpegsource-2.40-r1.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+QA_PKGCONFIG_VERSION=$(ver_cut 1-2)
+inherit autotools
+
+DESCRIPTION="A libav/ffmpeg based source library for easy frame accurate 
access"
+HOMEPAGE="https://github.com/FFMS/ffms2";
+if [[ ${PV} == 9999 ]] ; then
+       EGIT_REPO_URI="https://github.com/FFMS/ffms2.git";
+       inherit git-r3
+else
+       SRC_URI="https://github.com/FFMS/ffms2/archive/${PV}.tar.gz -> 
${P}.tar.gz"
+       S="${WORKDIR}"/ffms2-${PV}
+
+       KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="MIT"
+SLOT="0/4"
+
+RDEPEND="
+       >=media-video/ffmpeg-2.4:=
+       sys-libs/zlib
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES="${FILESDIR}/${P}-Fix-build-with-ffmpeg-5.patch"
+
+src_prepare() {
+       default
+
+       # Cheesy hack from autogen.sh
+       mkdir src/config || die
+       eautoreconf
+}
+
+src_install() {
+       default
+
+       find "${ED}" -name '*.la' -delete || die
+}

diff --git 
a/media-libs/ffmpegsource/files/ffmpegsource-2.40-Fix-build-with-ffmpeg-5.patch 
b/media-libs/ffmpegsource/files/ffmpegsource-2.40-Fix-build-with-ffmpeg-5.patch
new file mode 100644
index 000000000000..2a2cd0f0a5e1
--- /dev/null
+++ 
b/media-libs/ffmpegsource/files/ffmpegsource-2.40-Fix-build-with-ffmpeg-5.patch
@@ -0,0 +1,106 @@
+From 586d87de3f896d0c4ff01b21f572375e11f9c3f1 Mon Sep 17 00:00:00 2001
+From: Derek Buitenhuis <[email protected]>
+Date: Tue, 4 May 2021 14:20:47 +0100
+Subject: [PATCH] configure: Remove deprecated API use
+
+Signed-off-by: Derek Buitenhuis <[email protected]>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index b35ef80bcd..d19714d0f6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -102,10 +102,10 @@ CFLAGS="$_CFLAGS $FFMPEG_CFLAGS"
+ 
+ AC_DEFUN([TEST_FFMPEG],
+          [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+-            #include <libavcodec/avcodec.h>
++            #include <libavformat/avformat.h>
+             #include <libswscale/swscale.h>
+             ]],[[
+-                avcodec_register_all();
++                avformat_network_init();
+                 swscale_version();
+             ]])], [eval $1=yes], [eval $1=no])
+         ])
+From 45673149e9a2f5586855ad472e3059084eaa36b1 Mon Sep 17 00:00:00 2001
+From: Derek Buitenhuis <[email protected]>
+Date: Tue, 4 May 2021 14:41:21 +0100
+Subject: [PATCH] Use auto for AVCodec
+
+The geniuses over at FFmpeg decided to constify this API, so old
+versions of the library will return AVCodec *, while new versions
+of the libary will return const AVCodec *, which, in C++, are not
+OK to convert between.
+
+Rather than use some macro hell in ffmscompat.h, we can work around
+this by using auto.
+
+Gross.
+
+Signed-off-by: Derek Buitenhuis <[email protected]>
+---
+ src/core/audiosource.cpp | 2 +-
+ src/core/indexing.cpp    | 6 +++---
+ src/core/videosource.cpp | 2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/core/audiosource.cpp b/src/core/audiosource.cpp
+index e4ce97cdb..ac0966636 100644
+--- a/src/core/audiosource.cpp
++++ b/src/core/audiosource.cpp
+@@ -469,7 +469,7 @@ void FFMS_AudioSource::OpenFile() {
+
+     LAVFOpenFile(SourceFile.c_str(), FormatContext, TrackNumber);
+
+-    AVCodec *Codec = 
avcodec_find_decoder(FormatContext->streams[TrackNumber]->codecpar->codec_id);
++    auto *Codec = 
avcodec_find_decoder(FormatContext->streams[TrackNumber]->codecpar->codec_id);
+     if (Codec == nullptr)
+         throw FFMS_Exception(FFMS_ERROR_DECODING, FFMS_ERROR_CODEC,
+             "Audio codec not found");
+diff --git a/src/core/indexing.cpp b/src/core/indexing.cpp
+index e547c5abf..59fb4e8ea 100644
+--- a/src/core/indexing.cpp
++++ b/src/core/indexing.cpp
+@@ -384,7 +384,7 @@ FFMS_TrackType FFMS_Indexer::GetTrackType(int Track) {
+ }
+
+ const char *FFMS_Indexer::GetTrackCodec(int Track) {
+-    AVCodec *codec = 
avcodec_find_decoder(FormatContext->streams[Track]->codecpar->codec_id);
++    auto *codec = 
avcodec_find_decoder(FormatContext->streams[Track]->codecpar->codec_id);
+     return codec ? codec->name : nullptr;
+ }
+
+@@ -402,7 +402,7 @@ FFMS_Index *FFMS_Indexer::DoIndexing() {
+             UseDTS);
+
+         if (IndexMask.count(i) && 
FormatContext->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
+-            AVCodec *VideoCodec = 
avcodec_find_decoder(FormatContext->streams[i]->codecpar->codec_id);
++            auto *VideoCodec = 
avcodec_find_decoder(FormatContext->streams[i]->codecpar->codec_id);
+             if (!VideoCodec) {
+                 FormatContext->streams[i]->discard = AVDISCARD_ALL;
+                 IndexMask.erase(i);
+@@ -433,7 +433,7 @@ FFMS_Index *FFMS_Indexer::DoIndexing() {
+                 IndexMask.insert(i);
+             }
+         } else if (IndexMask.count(i) && 
FormatContext->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
+-            AVCodec *AudioCodec = 
avcodec_find_decoder(FormatContext->streams[i]->codecpar->codec_id);
++            auto *AudioCodec = 
avcodec_find_decoder(FormatContext->streams[i]->codecpar->codec_id);
+             if (AudioCodec == nullptr)
+                 throw FFMS_Exception(FFMS_ERROR_CODEC, FFMS_ERROR_UNSUPPORTED,
+                     "Audio codec not found");
+diff --git a/src/core/videosource.cpp b/src/core/videosource.cpp
+index b889970e2..8956c2256 100644
+--- a/src/core/videosource.cpp
++++ b/src/core/videosource.cpp
+@@ -171,7 +171,7 @@ FFMS_VideoSource::FFMS_VideoSource(const char *SourceFile, 
FFMS_Index &Index, in
+
+         LAVFOpenFile(SourceFile, FormatContext, VideoTrack);
+
+-        AVCodec *Codec = 
avcodec_find_decoder(FormatContext->streams[VideoTrack]->codecpar->codec_id);
++        auto *Codec = 
avcodec_find_decoder(FormatContext->streams[VideoTrack]->codecpar->codec_id);
+         if (Codec == nullptr)
+             throw FFMS_Exception(FFMS_ERROR_DECODING, FFMS_ERROR_CODEC,
+                 "Video codec not found");

Reply via email to