Credit Andrew fixes for mostly Arch build
authorGood Guy <[email protected]>
Tue, 29 Aug 2023 18:14:49 +0000 (12:14 -0600)
committerGood Guy <[email protected]>
Tue, 29 Aug 2023 18:14:49 +0000 (12:14 -0600)
cinelerra-5.1/cinelerra/pluginfclient.C
cinelerra-5.1/thirdparty/src/ffmpeg-5.1.patch999 [new file with mode: 0644]

index d188eb39185814ca1419db7343b6a73abc6300b8..afb88c7a6624c59eb526c4afeecec4ad06dd60a6 100644 (file)
@@ -37,6 +37,8 @@
 #include "vframe.h"
 #include "filexml.h"
 
+#include "libavfilter/version.h"
+
 #ifdef FFMPEG3
 #define av_filter_iterate(p) ((*(const AVFilter**)(p))=avfilter_next(*(const AVFilter **)(p)))
 #endif
@@ -660,13 +662,22 @@ PluginFClient::~PluginFClient()
 }
 
 bool PluginFClient::is_audio(const AVFilter *fp)
+
 {
        if( !fp->outputs ) return 0;
+#if LIBAVFILTER_VERSION_MINOR > 2
+       if( avfilter_filter_pad_count(fp, 1) > 1 ) return 0;
+#else
        if( avfilter_pad_count(fp->outputs) > 1 ) return 0;
+#endif
        if( !avfilter_pad_get_name(fp->outputs, 0) ) return 0;
        if( avfilter_pad_get_type(fp->outputs, 0) != AVMEDIA_TYPE_AUDIO ) return 0;
        if( !fp->inputs ) return 1;
+#if LIBAVFILTER_VERSION_MINOR > 2
+       if( avfilter_filter_pad_count(fp, 0) > 1 ) return 0;
+#else
        if( avfilter_pad_count(fp->inputs) > 1 ) return 0;
+#endif
        if( !avfilter_pad_get_name(fp->inputs, 0) ) return 0;
        if( avfilter_pad_get_type(fp->inputs, 0) != AVMEDIA_TYPE_AUDIO ) return 0;
        return 1;
@@ -674,11 +685,19 @@ bool PluginFClient::is_audio(const AVFilter *fp)
 bool PluginFClient::is_video(const AVFilter *fp)
 {
        if( !fp->outputs ) return 0;
+#if LIBAVFILTER_VERSION_MINOR > 2
+       if( avfilter_filter_pad_count(fp, 1) > 1 ) return 0;
+#else
        if( avfilter_pad_count(fp->outputs) > 1 ) return 0;
+#endif
        if( !avfilter_pad_get_name(fp->outputs, 0) ) return 0;
        if( avfilter_pad_get_type(fp->outputs, 0) != AVMEDIA_TYPE_VIDEO ) return 0;
        if( !fp->inputs ) return 1;
+#if LIBAVFILTER_VERSION_MINOR > 2
+       if( avfilter_filter_pad_count(fp, 0) > 1 ) return 0;
+#else
        if( avfilter_pad_count(fp->inputs) > 1 ) return 0;
+#endif
        if( !avfilter_pad_get_name(fp->inputs, 0) ) return 0;
        if( avfilter_pad_get_type(fp->inputs, 0) != AVMEDIA_TYPE_VIDEO ) return 0;
        return 1;
diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-5.1.patch999 b/cinelerra-5.1/thirdparty/src/ffmpeg-5.1.patch999
new file mode 100644 (file)
index 0000000..1902177
--- /dev/null
@@ -0,0 +1,62 @@
+X-Git-Url: http://git.ffmpeg.org/gitweb/ffmpeg.git/blobdiff_plain/ccc684993276248d64c328a810fb7714af2f4c70..effadce6c756247ea8bae32dc13bb3e6f464f0eb:/libavcodec/x86/mathops.h
+
+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;
+ }