commit:     e99944422426ce41f27c3d53e4364dd05e7896f1
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Mon Aug 29 08:18:47 2022 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Mon Aug 29 08:18:47 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e9994442

media-video/aegisub: revbump to fix compatibility with ffmpegsource

Closes: https://bugs.gentoo.org/867298
Closes: https://bugs.gentoo.org/857765
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 ....ebuild => aegisub-3.2.2_p20160518-r104.ebuild} |   3 +-
 ...3.2.2_p20160518-ffmpegsource-2.40-compat2.patch | 106 +++++++++++++++++++++
 2 files changed, 108 insertions(+), 1 deletion(-)

diff --git a/media-video/aegisub/aegisub-3.2.2_p20160518-r103.ebuild 
b/media-video/aegisub/aegisub-3.2.2_p20160518-r104.ebuild
similarity index 98%
rename from media-video/aegisub/aegisub-3.2.2_p20160518-r103.ebuild
rename to media-video/aegisub/aegisub-3.2.2_p20160518-r104.ebuild
index a9c7d950a82c..cbf5e1a06090 100644
--- a/media-video/aegisub/aegisub-3.2.2_p20160518-r103.ebuild
+++ b/media-video/aegisub/aegisub-3.2.2_p20160518-r104.ebuild
@@ -29,7 +29,7 @@ RDEPEND="${LUA_DEPS}
        x11-libs/wxGTK:${WX_GTK_VER}[X,opengl,debug?]
        dev-libs/boost:=[icu,nls,threads(+)]
        dev-libs/icu:=
-       ~media-libs/ffmpegsource-2.23:=
+       media-libs/ffmpegsource
        media-libs/fontconfig
        media-libs/freetype
        media-libs/libass:=[fontconfig]
@@ -75,6 +75,7 @@ PATCHES=(
        "${FILESDIR}/${PV}/${P}-tests_luarocks_lua_version.patch"
        
"${FILESDIR}/${PV}/${P}-avoid-conveying-positional-parameters-to-source-builtin.patch"
        "${FILESDIR}/${PV}/${P}-luaL_Reg-not-luaL_reg.patch"
+       "${FILESDIR}/${PV}/${P}-ffmpegsource-2.40-compat2.patch"
 )
 
 aegisub_check_compiler() {

diff --git 
a/media-video/aegisub/files/3.2.2_p20160518/aegisub-3.2.2_p20160518-ffmpegsource-2.40-compat2.patch
 
b/media-video/aegisub/files/3.2.2_p20160518/aegisub-3.2.2_p20160518-ffmpegsource-2.40-compat2.patch
new file mode 100644
index 000000000000..17dc3f2dbabc
--- /dev/null
+++ 
b/media-video/aegisub/files/3.2.2_p20160518/aegisub-3.2.2_p20160518-ffmpegsource-2.40-compat2.patch
@@ -0,0 +1,106 @@
+commit 89c4e8d34ab77c3322f097b91fd9de22cbea7a37
+Author: Thomas Goyne <[email protected]>
+Date:   Wed Nov 21 16:41:05 2018 -0800
+
+    Update ffmpeg and ffms2
+
+diff --git a/src/video_provider_ffmpegsource.cpp 
b/src/video_provider_ffmpegsource.cpp
+index 8bd68fbbf..f4ed6a2f2 100644
+--- a/src/video_provider_ffmpegsource.cpp
++++ b/src/video_provider_ffmpegsource.cpp
+@@ -44,6 +44,23 @@
+ #include <libaegisub/make_unique.h>
+ 
+ namespace {
++typedef enum AGI_ColorSpaces {
++      AGI_CS_RGB = 0,
++      AGI_CS_BT709 = 1,
++      AGI_CS_UNSPECIFIED = 2,
++      AGI_CS_FCC = 4,
++      AGI_CS_BT470BG = 5,
++      AGI_CS_SMPTE170M = 6,
++      AGI_CS_SMPTE240M = 7,
++      AGI_CS_YCOCG = 8,
++      AGI_CS_BT2020_NCL = 9,
++      AGI_CS_BT2020_CL = 10,
++      AGI_CS_SMPTE2085 = 11,
++      AGI_CS_CHROMATICITY_DERIVED_NCL = 12,
++      AGI_CS_CHROMATICITY_DERIVED_CL = 13,
++      AGI_CS_ICTCP = 14
++} AGI_ColorSpaces;
++
+ /// @class FFmpegSourceVideoProvider
+ /// @brief Implements video loading through the FFMS library.
+ class FFmpegSourceVideoProvider final : public VideoProvider, 
FFmpegSourceProvider {
+@@ -78,7 +95,7 @@ public:
+               if (matrix == RealColorSpace)
+                       FFMS_SetInputFormatV(VideoSource, CS, CR, 
FFMS_GetPixFmt(""), nullptr);
+               else if (matrix == "TV.601")
+-                      FFMS_SetInputFormatV(VideoSource, FFMS_CS_BT470BG, CR, 
FFMS_GetPixFmt(""), nullptr);
++                      FFMS_SetInputFormatV(VideoSource, AGI_CS_BT470BG, CR, 
FFMS_GetPixFmt(""), nullptr);
+               else
+                       return;
+               ColorSpace = matrix;
+@@ -103,16 +120,16 @@ std::string colormatrix_description(int cs, int cr) {
+       std::string str = cr == FFMS_CR_JPEG ? "PC" : "TV";
+ 
+       switch (cs) {
+-              case FFMS_CS_RGB:
++              case AGI_CS_RGB:
+                       return "None";
+-              case FFMS_CS_BT709:
++              case AGI_CS_BT709:
+                       return str + ".709";
+-              case FFMS_CS_FCC:
++              case AGI_CS_FCC:
+                       return str + ".FCC";
+-              case FFMS_CS_BT470BG:
+-              case FFMS_CS_SMPTE170M:
++              case AGI_CS_BT470BG:
++              case AGI_CS_SMPTE170M:
+                       return str + ".601";
+-              case FFMS_CS_SMPTE240M:
++              case AGI_CS_SMPTE240M:
+                       return str + ".240M";
+               default:
+                       throw VideoOpenError("Unknown video color space");
+@@ -206,8 +223,10 @@ void FFmpegSourceVideoProvider::LoadVideo(agi::fs::path 
const& filename, std::st
+ 
+       // set thread count
+       int Threads = OPT_GET("Provider/Video/FFmpegSource/Decoding 
Threads")->GetInt();
++#if FFMS_VERSION < ((2 << 24) | (30 << 16) | (0 << 8) | 0)
+       if (FFMS_GetVersion() < ((2 << 24) | (17 << 16) | (2 << 8) | 1) && 
FFMS_GetSourceType(Index) == FFMS_SOURCE_LAVF)
+               Threads = 1;
++#endif
+ 
+       // set seekmode
+       // TODO: give this its own option?
+@@ -235,18 +254,22 @@ void FFmpegSourceVideoProvider::LoadVideo(agi::fs::path 
const& filename, std::st
+       else
+               DAR = double(Width) / Height;
+ 
+-      CS = TempFrame->ColorSpace;
++      int VideoCS = CS = TempFrame->ColorSpace;
+       CR = TempFrame->ColorRange;
+ 
+-      if (CS == FFMS_CS_UNSPECIFIED)
+-              CS = Width > 1024 || Height >= 600 ? FFMS_CS_BT709 : 
FFMS_CS_BT470BG;
++      if (CS == AGI_CS_UNSPECIFIED)
++              CS = Width > 1024 || Height >= 600 ? AGI_CS_BT709 : 
AGI_CS_BT470BG;
+       RealColorSpace = ColorSpace = colormatrix_description(CS, CR);
+ 
+ #if FFMS_VERSION >= ((2 << 24) | (17 << 16) | (1 << 8) | 0)
+-      if (CS != FFMS_CS_RGB && CS != FFMS_CS_BT470BG && ColorSpace != 
colormatrix && (colormatrix == "TV.601" || OPT_GET("Video/Force 
BT.601")->GetBool())) {
+-              if (FFMS_SetInputFormatV(VideoSource, FFMS_CS_BT470BG, CR, 
FFMS_GetPixFmt(""), &ErrInfo))
++      if (CS != AGI_CS_RGB && CS != AGI_CS_BT470BG && ColorSpace != 
colormatrix && (colormatrix == "TV.601" || OPT_GET("Video/Force 
BT.601")->GetBool())) {
++              CS = AGI_CS_BT470BG;
++              ColorSpace = colormatrix_description(AGI_CS_BT470BG, CR);
++      }
++
++      if (CS != VideoCS) {
++              if (FFMS_SetInputFormatV(VideoSource, CS, CR, 
FFMS_GetPixFmt(""), &ErrInfo))
+                       throw VideoOpenError(std::string("Failed to set input 
format: ") + ErrInfo.Buffer);
+-              ColorSpace = colormatrix_description(FFMS_CS_BT470BG, CR);
+       }
+ #endif
+ 

Reply via email to