+++ /dev/null
---- a/Makefile 2020-02-10 20:33:30.257695474 -0700
-+++ b/Makefile 2020-02-10 20:37:25.217129318 -0700
-@@ -6,7 +6,7 @@
- # of code space in the shared library.
-
- #
--OFLAGS = -O0 -g
-+#OFLAGS = -O0 -g
- OFLAGS = -O2
- CFLAGS = -std=gnu99 -fPIC -Wall -Wno-format-truncation $(OFLAGS)
-
-@@ -62,7 +62,7 @@
- LDLIBS=libgif.a -lm
-
- all: libgif.so libgif.a libutil.so libutil.a $(UTILS)
-- $(MAKE) -C doc
-+# $(MAKE) -C doc
-
- $(UTILS):: libgif.a libutil.a
-
+++ /dev/null
-diff -ur a/quantize.c b/quantize.c
---- a/quantize.c 2019-02-11 07:43:57.000000000 -0700
-+++ b/quantize.c 2019-02-27 17:20:06.369498072 -0700
-# SortRGBAxis is static and not locked, qsort recoded
-# GAErrorToken is also static and not locked, not fixed
-@@ -11,8 +11,9 @@
-
- ******************************************************************************/
-
--#include <stdlib.h>
- #include <stdio.h>
-+#include <stdlib.h>
-+
- #include "gif_lib.h"
- #include "gif_lib_private.h"
-
-@@ -22,8 +23,6 @@
- #define BITS_PER_PRIM_COLOR 5
- #define MAX_PRIM_COLOR 0x1f
-
--static int SortRGBAxis;
--
- typedef struct QuantizedColorType {
- GifByteType RGB[3];
- GifByteType NewColorIndex;
-@@ -31,6 +30,40 @@
- struct QuantizedColorType *Pnext;
- } QuantizedColorType;
-
-+static int QCmpr(QuantizedColorType *a, QuantizedColorType *b, int i)
-+{
-+ int i0 = i, i1 = i+1, i2 = i+2;
-+ if( i1 >= 3 ) i1 -= 3;
-+ if( i2 >= 3 ) i2 -= 3;
-+ /* sort on all axes of the color space! */
-+ int hash_a = (a->RGB[i0] << 16) | (a->RGB[i1] << 8) | (a->RGB[i2] << 0);
-+ int hash_b = (b->RGB[i0] << 16) | (b->RGB[i1] << 8) | (b->RGB[i2] << 0);
-+ return hash_a - hash_b;
-+}
-+
-+static int QSplit(QuantizedColorType **q, int l, int r, int i)
-+{
-+ int m;
-+ QuantizedColorType *t;
-+ for(;;) {
-+ while( QCmpr(q[r],q[l], i) >= 0 ) if( ++l == r ) return r;
-+ t = q[l]; q[l] = q[r]; q[r] = t; m = l; l = r; r = m;
-+ while( QCmpr(q[l],q[r], i) >= 0 ) if( r == --l ) return r;
-+ t = q[l]; q[l] = q[r]; q[r] = t; m = l; l = r; r = m;
-+ }
-+}
-+
-+static void QSort(QuantizedColorType **q, int ll, int rr, int i)
-+{
-+ for(;;) {
-+ int l = ll+1; if( l == rr ) return;
-+ int r = rr-1; if( l == r ) return;
-+ int m = QSplit(q, l, r, i);
-+ QSort(q, ll, m, i);
-+ ll = m;
-+ }
-+}
-+
- typedef struct NewColorMapType {
- GifByteType RGBMin[3], RGBWidth[3];
- unsigned int NumEntries; /* # of QuantizedColorType in linked list below */
-@@ -41,7 +74,6 @@
- static int SubdivColorMap(NewColorMapType * NewColorSubdiv,
- unsigned int ColorMapSize,
- unsigned int *NewColorMapSize);
--static int SortCmpRtn(const void *Entry1, const void *Entry2);
-
- /******************************************************************************
- Quantize high resolution image into lower one. Input image consists of a
-@@ -198,6 +230,7 @@
- unsigned int ColorMapSize,
- unsigned int *NewColorMapSize) {
-
-+ int SortRGBAxis = 0;
- unsigned int i, j, Index = 0;
- QuantizedColorType *QuantizedColor, **SortArray;
-
-@@ -234,19 +267,7 @@
- j++, QuantizedColor = QuantizedColor->Pnext)
- SortArray[j] = QuantizedColor;
-
-- /*
-- * Because qsort isn't stable, this can produce differing
-- * results for the order of tuples depending on platform
-- * details of how qsort() is implemented.
-- *
-- * We mitigate this problem by sorting on all three axes rather
-- * than only the one specied by SortRGBAxis; that way the instability
-- * can only become an issue if there are multiple color indices
-- * referring to identical RGB tuples. Older versions of this
-- * sorted on only the one axis.
-- */
-- qsort(SortArray, NewColorSubdiv[Index].NumEntries,
-- sizeof(QuantizedColorType *), SortCmpRtn);
-+ QSort(SortArray, -1, NewColorSubdiv[Index].NumEntries, SortRGBAxis);
-
- /* Relink the sorted list into one: */
- for (j = 0; j < NewColorSubdiv[Index].NumEntries - 1; j++)
-@@ -310,21 +331,4 @@
- Routine called by qsort to compare two entries.
- *****************************************************************************/
-
--static int
--SortCmpRtn(const void *Entry1,
-- const void *Entry2) {
-- QuantizedColorType *entry1 = (*((QuantizedColorType **) Entry1));
-- QuantizedColorType *entry2 = (*((QuantizedColorType **) Entry2));
--
-- /* sort on all axes of the color space! */
-- int hash1 = entry1->RGB[SortRGBAxis] * 256 * 256
-- + entry1->RGB[(SortRGBAxis+1) % 3] * 256
-- + entry1->RGB[(SortRGBAxis+2) % 3];
-- int hash2 = entry2->RGB[SortRGBAxis] * 256 * 256
-- + entry2->RGB[(SortRGBAxis+1) % 3] * 256
-- + entry2->RGB[(SortRGBAxis+2) % 3];
--
-- return hash1 - hash2;
--}
--
- /* end */
+++ /dev/null
---- libsvtav1-v1.8.0/CMakeLists.txt
-+++ libsvtav1-v1.8.0/CMakeLists.txt
-@@ -9,7 +9,7 @@
- # PATENTS file, you can obtain it at https://www.aomedia.org/license/patent-license.
- #
-
--cmake_minimum_required(VERSION 3.16)
-+cmake_minimum_required(VERSION 3.12)
-
- if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
- message(WARNING "Building in-source is highly not recommended\n"
+++ /dev/null
---- libsvtav1-v2.2.1/CMakeLists.txt
-+++ libsvtav1-v2.2.1/CMakeLists.txt
-@@ -9,7 +9,7 @@
- # PATENTS file, you can obtain it at https://www.aomedia.org/license/patent-license.
- #
-
--cmake_minimum_required(VERSION 3.16)
-+cmake_minimum_required(VERSION 3.12)
-
- if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
- message(WARNING "Building in-source is highly not recommended\n"
+++ /dev/null
---- a/vpx_ports/mem.h 2019-12-09 16:09:20.000000000 -0700
-+++ b/vpx_ports/mem.h 2020-07-31 09:20:22.303406738 -0600
-@@ -15,7 +15,7 @@
- #include "vpx/vpx_integer.h"
-
- #if (defined(__GNUC__) && __GNUC__) || defined(__SUNPRO_C)
--#define DECLARE_ALIGNED(n, typ, val) typ val __attribute__((aligned(n)))
-+#define DECLARE_ALIGNED(n, typ, val) typ val __attribute__((aligned(64)))
- #elif defined(_MSC_VER)
- #define DECLARE_ALIGNED(n, typ, val) __declspec(align(n)) typ val
- #else
+++ /dev/null
---- libwebp-1.3.2/src/libwebp.pc.in.orig 2023-09-15 19:52:28.960943568 +0300
-+++ libwebp-1.3.2/src/libwebp.pc.in 2023-09-15 19:55:00.828943460 +0300
-@@ -6,7 +6,7 @@
- Name: libwebp
- Description: Library for the WebP graphics format
- Version: @PACKAGE_VERSION@
--Requires.private: libsharpyuv
-+Requires: libsharpyuv
- Cflags: -I${includedir}
--Libs: -L${libdir} -l@webp_libname_prefix@webp
-+Libs: -L${libdir} -l@webp_libname_prefix@webp -lsharpyuv
- Libs.private: -lm @PTHREAD_CFLAGS@ @PTHREAD_LIBS@
+++ /dev/null
---- a/cpuinfo.sh 2009-08-31 15:59:37.000000000 -0600
-+++ b/cpuinfo.sh 2015-02-01 22:20:28.469910599 -0700
-@@ -144,9 +144,6 @@
- # synonym for 'k8'
- proc=k8
- ;;
-- 16)
-- proc=barcelona
-- ;;
- *) proc=athlon-xp
- ;;
- esac
-@@ -165,9 +162,7 @@
- fi
- ;;
- 6) iproc=686
-- if test "$pmodel" -ge 23; then
-- proc=core2
-- elif test "$pmodel" -ge 15; then
-+ if test "$pmodel" -ge 15; then
- proc=nocona
- elif test "$pmodel" -ge 13; then
- proc=pentium-m
-@@ -228,11 +223,6 @@
- fi
- fi
-
--# Seems some variants of gcc accept 'core2' instead of 'nocona'.
--if test "$proc" = "core2"; then
-- do_cc -march=$proc $_opt_mcpu=$proc || proc=nocona
--fi
--
- if test "$proc" = "pentium4" || test "$proc" = "pentium3" || test "$proc" = "pentium2" || test "$proc" = "athlon"; then
- do_cc -march=$proc $_opt_mcpu=$proc || proc=i686
- fi
-@@ -249,7 +239,6 @@
- do_cc -march=$proc $_opt_mcpu=$proc || proc=error
- fi
- if test "$proc" = "error" ; then
-- echo "Your $CC does not even support \"i386\" for '-march' and $_opt_mcpu."
- _mcpu=""
- _march=""
- elif test "$proc" = "i586-i686"; then
+++ /dev/null
-diff -ur a/configure.ac b/configure.ac
---- a/configure.ac 2016-12-24 08:32:29.025598527 -0700
-+++ b/configure.ac 2016-12-24 08:33:15.857611555 -0700
-@@ -382,6 +382,7 @@
- dnl programs such as yuvdenoise and y4mspatialfilter can use this flag by
- dnl simply adding programname_CFLAGS=@PROGRAM_NOPIC@ to the Makefile.am
-
-+PROGRAM_NOPIC=""
- AC_SUBST(PROGRAM_NOPIC)
-
- if test "$enable_simd_accel" != "false" -a "$enable_simd_accel" != "no"
-diff -ur a/configure b/configure
---- a/configure 2016-12-24 08:59:51.019865977 -0700
-+++ b/configure 2016-12-24 08:59:28.814032493 -0700
-@@ -19069,6 +19069,7 @@
- esac
-
-
-+PROGRAM_NOPIC=""
-
- if test "$enable_simd_accel" != "false" -a "$enable_simd_accel" != "no"
- then
+++ /dev/null
---- mjpegtools-2.1.0/utils/videodev_mjpeg.h.orig 2019-01-12 11:13:19.901685543 -0700
-+++ mjpegtools-2.1.0/utils/videodev_mjpeg.h 2019-01-12 11:14:33.325683843 -0700
-@@ -109,6 +109,11 @@
- /*
- Private IOCTL to set up for displaying MJPEG
- */
-+/* bad spelling, see /usr/include/videodev2.h */
-+#ifndef BASE_VIDIOCPRIVATE
-+#define BASE_VIDIOCPRIVATE BASE_VIDIOC_PRIVATE
-+#endif
-+
- #define MJPIOC_G_PARAMS _IOR ('v', BASE_VIDIOCPRIVATE+0, struct mjpeg_params)
- #define MJPIOC_S_PARAMS _IOWR('v', BASE_VIDIOCPRIVATE+1, struct mjpeg_params)
- #define MJPIOC_REQBUFS _IOWR('v', BASE_VIDIOCPRIVATE+2, struct mjpeg_requestbuffers)
+++ /dev/null
---- mjpegtools-2.1.0/y4mdenoise/newdenoise.cc.orig 2021-07-23 14:03:35.999564700 +0300
-+++ mjpegtools-2.1.0/y4mdenoise/newdenoise.cc 2021-07-23 14:04:35.779564703 +0300
-@@ -1852,14 +1852,14 @@
- if (nErr != 0)
- mjpeg_error_exit1 ("pthread_attr_init() failed: %s",
- strerror (nErr));
--
-+#if !defined(__TERMUX__)
- // Inherit scheduling parameters from the main thread.
- nErr = pthread_attr_setinheritsched (&sThreadAttributes,
- PTHREAD_INHERIT_SCHED);
- if (nErr != 0)
- mjpeg_error_exit1 ("pthread_attr_setinheritsched() failed: %s",
- strerror (nErr));
--
-+#endif
- // Create the thread.
- nErr = pthread_create (&m_oThreadInfo,
- &sThreadAttributes, WorkLoop, (void *)this);
+++ /dev/null
---- ./mpeg2enc/seqencoder.cc.orig 2021-08-12 22:15:24.907277309 +0300
-+++ ./mpeg2enc/seqencoder.cc 2021-08-12 22:17:49.471277317 +0300
-@@ -198,7 +198,9 @@
- {
- EncoderJob *job;
- mjpeg_debug( "Worker thread started" );
-+#if !defined (__TERMUX__)
- pthread_setcanceltype( PTHREAD_CANCEL_ASYNCHRONOUS, NULL );
-+#endif
-
- for(;;)
- {
+++ /dev/null
---- mjpegtools-2.1.0/mpeg2enc/seqencoder.cc.orig 2021-05-25 19:04:26.332933944 +0300
-+++ mjpegtools-2.1.0/mpeg2enc/seqencoder.cc 2021-05-25 19:05:44.904933948 +0300
-@@ -56,6 +56,9 @@
- #include "ratectl.hh"
- #include "tables.h"
- #include "channel.hh"
-+#if defined(__TERMUX__)
-+#include "bthread.h"
-+#endif
-
-
- // --------------------------------------------------------------------------------
+++ /dev/null
---- /dev/null 2021-05-22 06:52:04.572000000 +0300
-+++ mjpegtools-2.1.0/mpeg2enc/bthread.h 2021-05-23 10:38:11.073808915 +0300
-@@ -0,0 +1,31 @@
-+/* BThread main header
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Library General Public License as
-+ published by the Free Software Foundation; either version 2 of the
-+ License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with the GNU C Library; see the file COPYING.LIB. If not,
-+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-+
-+# define PTHREAD_CANCEL_ENABLE 0x00000010
-+# define PTHREAD_CANCEL_DISABLE 0x00000000
-+
-+# define PTHREAD_CANCEL_ASYNCHRONOUS 0x00000020
-+# define PTHREAD_CANCEL_DEFERRED 0x00000000
-+
-+#define PTHREAD_CANCELED ((void *) -1)
-+
-+int pthread_setcancelstate (int , int *);
-+int pthread_setcanceltype (int , int *);
-+void pthread_testcancel (void);
-+int pthread_cancel (pthread_t t);
+++ /dev/null
-Index: mplex/lpcmstrm_in.cpp
-===================================================================
---- ./mplex/lpcmstrm_in.cpp (revision 3507)
-+++ ./mplex/lpcmstrm_in.cpp (working copy)
-@@ -306,7 +306,15 @@
- default : bps_code = 3; break;
- }
- dst[4] = starting_frame_index;
-- unsigned int bsf_code = (samples_per_second == 48000) ? 0 : 1;
-+ unsigned int bsf_code;
-+ switch(samples_per_second)
-+ {
-+ case 48000: bsf_code = 0; break;
-+ case 96000: bsf_code = 1; break;
-+ case 44100: bsf_code = 2; break;
-+ case 32000: bsf_code = 3; break;
-+ }
-+ //unsigned int bsf_code = (samples_per_second == 48000) ? 0 : 1;
- unsigned int channels_code = channels - 1;
- dst[5] = (bps_code << 6) | (bsf_code << 4) | channels_code;
- dst[6] = dynamic_range_code;
-Index: mplex/stream_params.cpp
-===================================================================
---- ./mplex/stream_params.cpp (revision 3507)
-+++ ./mplex/stream_params.cpp (working copy)
-@@ -46,7 +46,7 @@
- unsigned int chans,
- unsigned int bits )
- {
-- if( samples != 48000 && samples != 96000 )
-+ if( samples != 48000 && samples != 96000 && samples != 44100 && samples != 32000 )
- return 0;
- if( chans < 1 || chans > 7 )
- return 0;