Andreas Wacknitz
2023-10-05 031d3b3f4dd5321bf772901b8039af43774132fa
ffmpeg: add patch for binutls-2.41 & switch to openssl-3.1

1 files added
2 files modified
84 ■■■■■ changed files
components/encumbered/ffmpeg/Makefile 6 ●●●● patch | view | raw | blame | history
components/encumbered/ffmpeg/patches/01-fix-mathops.h.patch 76 ●●●●● patch | view | raw | blame | history
components/encumbered/ffmpeg/pkg5 2 ●●● patch | view | raw | blame | history
components/encumbered/ffmpeg/Makefile
@@ -14,12 +14,12 @@
# Copyright 2023 Niklas Poslovski
#
USE_OPENSSL11= yes
OPENSSL_VERSION= 3.1
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME=         ffmpeg
COMPONENT_VERSION=      6.0
COMPONENT_REVISION=        1
COMPONENT_REVISION=        2
COMPONENT_SUMMARY=      A very fast video and audio converter
COMPONENT_SRC=          $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE=      $(COMPONENT_SRC).tar.xz
@@ -117,7 +117,7 @@
REQUIRED_PACKAGES += library/graphics/libvdpau
REQUIRED_PACKAGES += library/libvorbis
REQUIRED_PACKAGES += library/sdl2
REQUIRED_PACKAGES += library/security/openssl-11
REQUIRED_PACKAGES += library/security/openssl-31
REQUIRED_PACKAGES += library/video/libass
REQUIRED_PACKAGES += library/video/libvpx
REQUIRED_PACKAGES += library/video/x264
components/encumbered/ffmpeg/patches/01-fix-mathops.h.patch
New file
@@ -0,0 +1,76 @@
From effadce6c756247ea8bae32dc13bb3e6f464f0eb Mon Sep 17 00:00:00 2001
From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
Date: Sun, 16 Jul 2023 18:18:02 +0300
Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
 instructions within inline assembly
Fixes assembling with binutil as >= 2.41
Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/x86/mathops.h | 26 +++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/libavcodec/x86/mathops.h b/libavcodec/x86/mathops.h
index 6298f5ed19..ca7e2dffc1 100644
--- a/libavcodec/x86/mathops.h
+++ b/libavcodec/x86/mathops.h
@@ -35,12 +35,20 @@
 static av_always_inline av_const int MULL(int a, int b, unsigned shift)
 {
     int rt, dummy;
+    if (__builtin_constant_p(shift))
     __asm__ (
         "imull %3               \n\t"
         "shrdl %4, %%edx, %%eax \n\t"
         :"=a"(rt), "=d"(dummy)
-        :"a"(a), "rm"(b), "ci"((uint8_t)shift)
+        :"a"(a), "rm"(b), "i"(shift & 0x1F)
     );
+    else
+        __asm__ (
+            "imull %3               \n\t"
+            "shrdl %4, %%edx, %%eax \n\t"
+            :"=a"(rt), "=d"(dummy)
+            :"a"(a), "rm"(b), "c"((uint8_t)shift)
+        );
     return rt;
 }
@@ -113,19 +121,31 @@ __asm__ volatile(\
 // avoid +32 for shift optimization (gcc should do that ...)
 #define NEG_SSR32 NEG_SSR32
 static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
+    if (__builtin_constant_p(s))
     __asm__ ("sarl %1, %0\n\t"
          : "+r" (a)
-         : "ic" ((uint8_t)(-s))
+         : "i" (-s & 0x1F)
     );
+    else
+        __asm__ ("sarl %1, %0\n\t"
+               : "+r" (a)
+               : "c" ((uint8_t)(-s))
+        );
     return a;
 }
 #define NEG_USR32 NEG_USR32
 static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
+    if (__builtin_constant_p(s))
     __asm__ ("shrl %1, %0\n\t"
          : "+r" (a)
-         : "ic" ((uint8_t)(-s))
+         : "i" (-s & 0x1F)
     );
+    else
+        __asm__ ("shrl %1, %0\n\t"
+               : "+r" (a)
+               : "c" ((uint8_t)(-s))
+        );
     return a;
 }
--
2.30.2
components/encumbered/ffmpeg/pkg5
@@ -12,7 +12,7 @@
        "library/graphics/libvdpau",
        "library/libvorbis",
        "library/sdl2",
        "library/security/openssl-11",
        "library/security/openssl-31",
        "library/video/libass",
        "library/video/libvpx",
        "library/video/x264",