updated series a bit more, hopefully now it has both my configure params and launch params as shell scripts, added dv ifdefs to livevideo plugin (so it can be compiled with - - without-dv)
On Sunday, May 23, 2021, Andrew Randrianasulu <[email protected]> wrote: > fixed (hopefully) 0001 patch, added mjpegtools and ffmpeg 4.4 > termux-specific patches... also added libbthread source and simple Makefile > (might be useful if i manage to include resulted library in > libzmpeg-related files) > > > > On Wednesday, May 19, 2021, Andrew Randrianasulu <[email protected]> > wrote: > >> probably not very complete (mjpegtools had their own problems) but should >> give you some idea where I am >> >> patch 0001 still not fixed.. (as in, it reintroduced ff->video_probe and >> this one still leaks..) >> >> configured with >> >> $ ./configure --without-lv2 --without-vdpau --without-vaapi >> --without-firewire --without-nv --without-shuttle --without-shuttle_usb >> --with-single-user --without-libzmpeg --with-clang --with-booby >> --without-dv --without-dvb --without-video4linux2 --disable-dav1d >> >> >>
From c7721ddf60656abd40e1128c762296aeaf7f976f Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sat, 15 May 2021 17:10:22 +0300 Subject: [PATCH 01/29] constify fileffmpeg.C --- cinelerra-5.1/cinelerra/fileffmpeg.C | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cinelerra-5.1/cinelerra/fileffmpeg.C b/cinelerra-5.1/cinelerra/fileffmpeg.C index a71d692a..853e5839 100644 --- a/cinelerra-5.1/cinelerra/fileffmpeg.C +++ b/cinelerra-5.1/cinelerra/fileffmpeg.C @@ -159,7 +159,7 @@ void FFMpegPixelFormat::update_formats() pixfmts.remove_all_objects(); char video_codec[BCSTRLEN]; video_codec[0] = 0; const char *vcodec = vid_config->asset->vcodec; - AVCodec *av_codec = !FFMPEG::get_codec(video_codec, "video", vcodec) ? + const AVCodec *av_codec = !FFMPEG::get_codec(video_codec, "video", vcodec) ? avcodec_find_encoder_by_name(video_codec) : 0; const AVPixelFormat *pix_fmts = av_codec ? av_codec->pix_fmts : 0; if( pix_fmts ) { @@ -190,7 +190,7 @@ void FFMpegSampleFormat::update_formats() samplefmts.remove_all_objects(); char audio_codec[BCSTRLEN]; audio_codec[0] = 0; const char *acodec = aud_config->asset->acodec; - AVCodec *av_codec = !FFMPEG::get_codec(audio_codec, "audio", acodec) ? + const AVCodec *av_codec = !FFMPEG::get_codec(audio_codec, "audio", acodec) ? avcodec_find_encoder_by_name(audio_codec) : 0; const AVSampleFormat *sample_fmts = av_codec ? av_codec->sample_fmts : 0; if( sample_fmts ) { @@ -345,7 +345,7 @@ int FileFFMPEG::open_file(int rd, int wr) asset->aspect_ratio = ff->ff_aspect_ratio(0); if (!asset->interlace_mode) asset->interlace_mode = ff->ff_interlace(0); if ( ff->ff_video_frames(0) > 1 ) { -// ff->video_probe(1); + ff->video_probe(1); if (!asset->interlace_mode && (ff->interlace_from_codec) ) asset->interlace_mode = ff->video_probe(1); } if( !asset->layers ) asset->layers = video_layers; @@ -1844,7 +1844,7 @@ int FFOptionsViewAudio::handle_event() const char *name = asset->acodec; char audio_format[BCSTRLEN]; audio_format[0] = 0; char audio_codec[BCSTRLEN]; audio_codec[0] = 0; - AVCodec *codec = !ret && + const AVCodec *codec = !ret && !FFMPEG::get_format(audio_format, "audio", name) && !FFMPEG::get_codec(audio_codec, "audio", name) ? avcodec_find_encoder_by_name(audio_codec) : 0; @@ -1882,7 +1882,7 @@ int FFOptionsViewVideo::handle_event() const char *name = asset->vcodec; char video_format[BCSTRLEN]; video_format[0] = 0; char video_codec[BCSTRLEN]; video_codec[0] = 0; - AVCodec *codec = !ret && + const AVCodec *codec = !ret && !FFMPEG::get_format(video_format, "video", name) && !FFMPEG::get_codec(video_codec, "video", name) ? avcodec_find_encoder_by_name(video_codec) : 0; -- 2.31.1
From 9dbb2ac0d94e8a13f6c4c01f42045db3035b05e4 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sat, 15 May 2021 18:00:21 +0300 Subject: [PATCH 02/29] ifdef for DV --- cinelerra-5.1/cinelerra/ffmpeg.C | 2 ++ cinelerra-5.1/cinelerra/record.C | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C index df39763c..55fa668e 100644 --- a/cinelerra-5.1/cinelerra/ffmpeg.C +++ b/cinelerra-5.1/cinelerra/ffmpeg.C @@ -29,7 +29,9 @@ #include "ffmpeg.h" #include "indexfile.h" #include "interlacemodes.h" +#ifdef HAVE_DV #include "libdv.h" +#endif #include "libmjpeg.h" #include "mainerror.h" #include "mwindow.h" diff --git a/cinelerra-5.1/cinelerra/record.C b/cinelerra-5.1/cinelerra/record.C index ad293f7b..f42fe9e1 100644 --- a/cinelerra-5.1/cinelerra/record.C +++ b/cinelerra-5.1/cinelerra/record.C @@ -46,7 +46,9 @@ #include "keys.h" #include "language.h" #include "localsession.h" +#ifdef HAVE_DV #include "libdv.h" +#endif #include "libmjpeg.h" #include "libzmpeg3.h" #include "mainmenu.h" @@ -215,10 +217,12 @@ int Record::load_defaults() case VIDEO4LINUX2JPEG: vcodec = CODEC_TAG_MJPEG; break; +#ifdef HAVE_DV case CAPTURE_FIREWIRE: case CAPTURE_IEC61883: vcodec = CODEC_TAG_DVSD; break; +#endif } if( vcodec ) strcpy(default_asset->vcodec, vcodec); -- 2.31.1
From 4ead9a1bd5b84aadc0805975b3daa5fe2fd83495 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sat, 15 May 2021 20:27:37 +0300 Subject: [PATCH 04/29] libzmpeg TERMUX ifdefs --- cinelerra-5.1/libzmpeg3/bthread.h | 31 +++++++++++++++++++++++++++++ cinelerra-5.1/libzmpeg3/libzmpeg3.h | 2 ++ cinelerra-5.1/libzmpeg3/zio.C | 3 +++ 3 files changed, 36 insertions(+) create mode 100644 cinelerra-5.1/libzmpeg3/bthread.h diff --git a/cinelerra-5.1/libzmpeg3/bthread.h b/cinelerra-5.1/libzmpeg3/bthread.h new file mode 100644 index 00000000..57a0c492 --- /dev/null +++ b/cinelerra-5.1/libzmpeg3/bthread.h @@ -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); diff --git a/cinelerra-5.1/libzmpeg3/libzmpeg3.h b/cinelerra-5.1/libzmpeg3/libzmpeg3.h index 430ebb4d..8993aed4 100644 --- a/cinelerra-5.1/libzmpeg3/libzmpeg3.h +++ b/cinelerra-5.1/libzmpeg3/libzmpeg3.h @@ -5,7 +5,9 @@ /* for quicktime build */ #define MAXFRAMESAMPLES 65536 #define ZDVB +#if defined(__i386__) || defined(__x86-64__) #define USE_FUTEX +#endif #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS diff --git a/cinelerra-5.1/libzmpeg3/zio.C b/cinelerra-5.1/libzmpeg3/zio.C index cb6ce15d..2f6f6c58 100644 --- a/cinelerra-5.1/libzmpeg3/zio.C +++ b/cinelerra-5.1/libzmpeg3/zio.C @@ -1,4 +1,7 @@ #include "libzmpeg3.h" +#if defined(__TERMUX__) +#include "bthread.h" +#endif #ifdef USE_FUTEX typedef zmpeg3_t::zloc_t zzloc_t; -- 2.31.1
From 794d3a552090aca0aab92834635afc6cb4329568 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sat, 15 May 2021 20:14:27 +0300 Subject: [PATCH 03/29] TERMUX ifdefs in guicast --- cinelerra-5.1/guicast/Makefile | 7 +++++++ cinelerra-5.1/guicast/bthread.h | 31 ++++++++++++++++++++++++++++++ cinelerra-5.1/guicast/filesystem.C | 3 ++- cinelerra-5.1/guicast/thread.C | 5 +++++ cinelerra-5.1/guicast/thread.h | 4 +++- cinelerra-5.1/guicast/vframe.C | 10 +++++----- cinelerra-5.1/guicast/vframe.h | 3 ++- 7 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 cinelerra-5.1/guicast/bthread.h diff --git a/cinelerra-5.1/guicast/Makefile b/cinelerra-5.1/guicast/Makefile index cf189dea..fc086f92 100644 --- a/cinelerra-5.1/guicast/Makefile +++ b/cinelerra-5.1/guicast/Makefile @@ -12,6 +12,11 @@ ifeq ($(OBJDIR), amd64) BOOTSTRAPFLAGS := -DBOOTSTRAP="\"objcopy -B i386 -I binary -O elf64-x86-64\"" endif +ifeq ($(OBJDIR), armv8l) +BOOTSTRAPFLAGS := -DBOOTSTRAP="\"objcopy -B arm -I binary -O elf32-littlearm\"" +endif + + $(shell mkdir -p $(OBJDIR) ) OBJS = \ @@ -83,6 +88,7 @@ OBJS = \ $(OBJDIR)/vicon.o \ $(OBJDIR)/workarounds.o + OUTPUT = $(OBJDIR)/libguicast.a UTILS = $(OBJDIR)/bootstrap $(OBJDIR)/pngtoh $(OBJDIR)/pngtoraw @@ -90,6 +96,7 @@ BCXFER = xfer/$(OBJDIR)/xfer.stamp CFLAGS += $(static_incs) + $(shell echo $(CFLAGS) > $(OBJDIR)/c_flags) $(shell echo $(OBJS) > $(OBJDIR)/objs) diff --git a/cinelerra-5.1/guicast/bthread.h b/cinelerra-5.1/guicast/bthread.h new file mode 100644 index 00000000..57a0c492 --- /dev/null +++ b/cinelerra-5.1/guicast/bthread.h @@ -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); diff --git a/cinelerra-5.1/guicast/filesystem.C b/cinelerra-5.1/guicast/filesystem.C index 6017f6ea..b1ace6fd 100644 --- a/cinelerra-5.1/guicast/filesystem.C +++ b/cinelerra-5.1/guicast/filesystem.C @@ -536,7 +536,7 @@ int FileSystem::parse_tildas(char *new_dir) new_user[j] = new_dir[i]; } new_user[j] = 0; - +#if !defined(__TERMUX__) setpwent(); while( (pw = getpwent()) != 0 ) { @@ -550,6 +550,7 @@ int FileSystem::parse_tildas(char *new_dir) } } endpwent(); +#endif return 0; } } diff --git a/cinelerra-5.1/guicast/thread.C b/cinelerra-5.1/guicast/thread.C index 50b52a47..9908a628 100644 --- a/cinelerra-5.1/guicast/thread.C +++ b/cinelerra-5.1/guicast/thread.C @@ -28,6 +28,9 @@ #include <string.h> #include <typeinfo> #include "thread.h" +#if defined(__TERMUX__) +#include "bthread.h" +#endif Thread::Thread(int synchronous, int realtime, int autodelete) @@ -102,8 +105,10 @@ void Thread::start() perror("Thread::start pthread_attr_setschedparam"); } else { +#if !defined(__TERMUX__) if(pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED) < 0) perror("Thread::start pthread_attr_setinheritsched"); +#endif } // autodelete may delete this immediately after create diff --git a/cinelerra-5.1/guicast/thread.h b/cinelerra-5.1/guicast/thread.h index 79f3e713..e701a8f4 100644 --- a/cinelerra-5.1/guicast/thread.h +++ b/cinelerra-5.1/guicast/thread.h @@ -29,13 +29,15 @@ #ifndef NO_TID #include <sys/syscall.h> +#if !defined(__TERMUX__) // glibc >= 2.30 provides gettid() in unistd #if !defined(__GLIBC_PREREQ) || !__GLIBC_PREREQ(2, 30) static inline int gettid() { return syscall(SYS_gettid, 0, 0, 0); } -#endif #else static inline long gettid() { return (long)pthread_self(); } #endif +#endif // TERMUX +#endif //no_tid // The thread does not autodelete by default. // If autodelete is 1 the thread autodeletes. diff --git a/cinelerra-5.1/guicast/vframe.C b/cinelerra-5.1/guicast/vframe.C index af0e52a8..44d7f97e 100644 --- a/cinelerra-5.1/guicast/vframe.C +++ b/cinelerra-5.1/guicast/vframe.C @@ -334,7 +334,7 @@ if( memory_type != VFrame::SHARED ) shmid = -1; break; - case VFrame::SHMGET: + case VFrame::SHM_GET: if(data) shmdt(data); data = 0; @@ -510,7 +510,7 @@ int VFrame::allocate_data(unsigned char *data, int shmid, this->v_offset = v_offset; } else if( shmid >= 0 ) { - memory_type = VFrame::SHMGET; + memory_type = VFrame::SHM_GET; this->data = (unsigned char*)shmat(shmid, NULL, 0); if( this->data == (unsigned char*)-1 ) { printf("VFrame::allocate_data %d could not attach" @@ -593,7 +593,7 @@ void VFrame::set_memory(unsigned char *data, else if(shmid >= 0) { - memory_type = VFrame::SHMGET; + memory_type = VFrame::SHM_GET; this->data = (unsigned char*)shmat(shmid, NULL, 0); this->shmid = shmid; } @@ -635,7 +635,7 @@ void VFrame::set_compressed_memory(unsigned char *data, else if(shmid >= 0) { - memory_type = VFrame::SHMGET; + memory_type = VFrame::SHM_GET; this->data = (unsigned char*)shmat(shmid, NULL, 0); this->shmid = shmid; } @@ -713,7 +713,7 @@ UNBUFFER(data); else free(data); } - else if( memory_type == VFrame::SHMGET ) { + else if( memory_type == VFrame::SHM_GET ) { if( data ) shmdt(data); } diff --git a/cinelerra-5.1/guicast/vframe.h b/cinelerra-5.1/guicast/vframe.h index 589fce1c..55590bda 100644 --- a/cinelerra-5.1/guicast/vframe.h +++ b/cinelerra-5.1/guicast/vframe.h @@ -31,6 +31,7 @@ #include "bccmodels.h" #include "vframe.inc" + // Maximum number of prev or next effects to be pushed onto the stacks. #define MAX_STACK_ELEMENTS 255 #define SHM_MIN_SIZE 2048 @@ -417,7 +418,7 @@ private: { PRIVATE, SHARED, - SHMGET + SHM_GET }; // Data pointer is pointing to someone else's buffer. -- 2.31.1
From 3b6a576bc6a02d064b2746659808777938909fe2 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sat, 15 May 2021 21:14:35 +0300 Subject: [PATCH 06/29] more ifdefs for file.C (ac3 demand libzmpeg) --- cinelerra-5.1/cinelerra/file.C | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cinelerra-5.1/cinelerra/file.C b/cinelerra-5.1/cinelerra/file.C index 9828d6ec..b8a5ed3d 100644 --- a/cinelerra-5.1/cinelerra/file.C +++ b/cinelerra-5.1/cinelerra/file.C @@ -173,10 +173,12 @@ int File::get_options(FormatTools *format, format_completion->lock("File::get_options"); switch( asset->format ) { #ifdef HAVE_CIN_3RDPARTY +#ifdef HAVE_LIBZMPEG case FILE_AC3: FileAC3::get_parameters(parent_window, asset, format_window, audio_options, video_options, edl); break; #endif +#endif #ifdef HAVE_DV case FILE_RAWDV: FileDV::get_parameters(parent_window, asset, format_window, @@ -542,9 +544,11 @@ int File::open_file(Preferences *preferences, break; } // format already determined #ifdef HAVE_CIN_3RDPARTY +#ifdef HAVE_LIBZMPEG case FILE_AC3: file = new FileAC3(this->asset, this); break; +#endif #endif case FILE_SCENE: file = new FileScene(this->asset, this); -- 2.31.1
From 4131ef4f95f4dceb1684d67335f4eda35b77f99c Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sat, 15 May 2021 21:05:21 +0300 Subject: [PATCH 05/29] Add libzmpeg ifdef in fileac3, move fireware objects into their own group in Makefile in cinelerra/ --- cinelerra-5.1/cinelerra/Makefile | 22 ++++++++++++++-------- cinelerra-5.1/cinelerra/fileac3.C | 3 ++- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/cinelerra-5.1/cinelerra/Makefile b/cinelerra-5.1/cinelerra/Makefile index 81d1acee..d5145d7d 100644 --- a/cinelerra-5.1/cinelerra/Makefile +++ b/cinelerra-5.1/cinelerra/Makefile @@ -56,7 +56,6 @@ OBJS := $(OVERLAYS) \ $(OBJDIR)/assets.o \ $(OBJDIR)/atrack.o \ $(OBJDIR)/attachmentpoint.o \ - $(OBJDIR)/audio1394.o \ $(OBJDIR)/audioalsa.o \ $(OBJDIR)/audiodevice.o \ $(OBJDIR)/audiodvb.o \ @@ -70,8 +69,6 @@ OBJS := $(OVERLAYS) \ $(OBJDIR)/automation.o \ $(OBJDIR)/auto.o \ $(OBJDIR)/autos.o \ - $(OBJDIR)/avc1394control.o \ - $(OBJDIR)/avc1394transport.o \ $(OBJDIR)/awindowgui.o \ $(OBJDIR)/awindow.o \ $(OBJDIR)/batch.o \ @@ -112,8 +109,6 @@ OBJS := $(OVERLAYS) \ $(OBJDIR)/cwindowtool.o \ $(OBJDIR)/dcoffset.o \ $(OBJDIR)/deleteallindexes.o \ - $(OBJDIR)/device1394input.o \ - $(OBJDIR)/device1394output.o \ $(OBJDIR)/devicedvbinput.o \ $(OBJDIR)/devicev4l2base.o \ $(OBJDIR)/devicev4l2input.o \ @@ -170,8 +165,6 @@ OBJS := $(OVERLAYS) \ $(OBJDIR)/garbage.o \ $(OBJDIR)/gwindowgui.o \ $(OBJDIR)/gwindow.o \ - $(OBJDIR)/iec61883input.o \ - $(OBJDIR)/iec61883output.o \ $(OBJDIR)/indexable.o \ $(OBJDIR)/indexfile.o \ $(OBJDIR)/indexstate.o \ @@ -339,7 +332,6 @@ OBJS := $(OVERLAYS) \ $(OBJDIR)/undostack.o \ $(OBJDIR)/vattachmentpoint.o \ $(OBJDIR)/vautomation.o \ - $(OBJDIR)/vdevice1394.o \ $(OBJDIR)/vdevicebase.o \ $(OBJDIR)/vdevicedvb.o \ $(OBJDIR)/vdeviceprefs.o \ @@ -378,6 +370,19 @@ OBJS := $(OVERLAYS) \ $(OBJDIR)/zwindow.o \ $(OBJDIR)/zwindowgui.o \ +ifneq ($(WANT_FIREWARE),no) +OBJ += \ + $(OBJDIR)/audio1394.o \ + $(OBJDIR)/avc1394control.o \ + $(OBJDIR)/avc1394transport.o \ + $(OBJDIR)/vdevice1394.o \ + $(OBJDIR)/device1394input.o \ + $(OBJDIR)/device1394output.o \ + $(OBJDIR)/iec61883input.o \ + $(OBJDIR)/iec61883output.o \ + +endif + ifneq ($(WANT_LIBZMPEG),no) OBJS += \ $(OBJDIR)/audiompeg.o \ @@ -426,6 +431,7 @@ LIBRARIES += \ endif + LIBS := $(LIBRARIES) ifeq ($(WANT_CIN_3RDPARTY),no) diff --git a/cinelerra-5.1/cinelerra/fileac3.C b/cinelerra-5.1/cinelerra/fileac3.C index c6a94161..be62f2b7 100644 --- a/cinelerra-5.1/cinelerra/fileac3.C +++ b/cinelerra-5.1/cinelerra/fileac3.C @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ - +#if HAVE_LIBZMPEG #include <stdio.h> #include <stdint.h> #include <stdlib.h> @@ -421,3 +421,4 @@ int AC3ConfigAudioBitrate::handle_event() } #endif +#endif //libzmpeg \ No newline at end of file -- 2.31.1
From e9afc7199f2701f293428203f05b526fe8ad4814 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 19 May 2021 12:19:49 +0300 Subject: [PATCH 07/29] configure.ac update for libaom 3.1.0 --- cinelerra-5.1/configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac index ceddac2a..f9362edf 100644 --- a/cinelerra-5.1/configure.ac +++ b/cinelerra-5.1/configure.ac @@ -409,7 +409,7 @@ PKG_3RD([suil],[auto], [ usr/local/include ]) PKG_3RD([libaom],[auto], - [libaom-v3.0.0], + [libaom-v3.1.0], [ usr/local/lib*/libaom*.a ], [ usr/local/include ]) -- 2.31.1
From b2e5bfdf7ebdccca73e81cc1ef34524b5408edb6 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 19 May 2021 13:00:24 +0300 Subject: [PATCH 10/29] libaom 3.1.0 and libwebp 1.1.0 patches for thirdparty --- .../thirdparty/src/libaom-v3.1.0.patch1 | 21 +++++++++++++++++ .../thirdparty/src/libwebp-1.1.0.patch1 | 23 +++++++++++++++++++ .../thirdparty/src/libwebp-1.1.0.patch2 | 18 +++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 cinelerra-5.1/thirdparty/src/libaom-v3.1.0.patch1 create mode 100644 cinelerra-5.1/thirdparty/src/libwebp-1.1.0.patch1 create mode 100644 cinelerra-5.1/thirdparty/src/libwebp-1.1.0.patch2 diff --git a/cinelerra-5.1/thirdparty/src/libaom-v3.1.0.patch1 b/cinelerra-5.1/thirdparty/src/libaom-v3.1.0.patch1 new file mode 100644 index 00000000..befe1c14 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/libaom-v3.1.0.patch1 @@ -0,0 +1,21 @@ +--- libaom-v3.0.0/aom_ports/arm_cpudetect.c 2020-07-10 02:32:42.000000000 +0300 ++++ libaom-v3.0.0_1/aom_ports/arm_cpudetect.c 2021-05-08 05:18:23.404156362 +0300 +@@ -87,7 +87,7 @@ + return flags & mask; + } + +-#elif defined(__ANDROID__) /* end _MSC_VER */ ++#elif (defined(__ANDROID__) && !defined(__TERMUX__))/* end _MSC_VER */ + #include <cpu-features.h> + + int aom_arm_cpu_caps(void) { +@@ -106,8 +106,7 @@ + return flags & mask; + } + +-#elif defined(__linux__) /* end __ANDROID__ */ +- ++#elif defined(__LINUX__) || defined(__TERMUX__)/* end __ANDROID__ */ + #include <stdio.h> + + int aom_arm_cpu_caps(void) { diff --git a/cinelerra-5.1/thirdparty/src/libwebp-1.1.0.patch1 b/cinelerra-5.1/thirdparty/src/libwebp-1.1.0.patch1 new file mode 100644 index 00000000..9cab9ed5 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/libwebp-1.1.0.patch1 @@ -0,0 +1,23 @@ +--- libwebp-1.1.0/CMakeLists.txt 2019-12-21 16:37:43.000000000 +0300 ++++ libwebp-1.1.0/CMakeLists.txt 2021-05-08 09:02:20.884388273 +0300 +@@ -75,20 +75,6 @@ + + # ############################################################################## + # Android only. +-if(ANDROID) +- include_directories(${ANDROID_NDK}/sources/android/cpufeatures) +- add_library(cpufeatures STATIC +- ${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c) +- list(APPEND INSTALLED_LIBRARIES cpufeatures) +- target_link_libraries(cpufeatures dl) +- set(WEBP_DEP_LIBRARIES ${WEBP_DEP_LIBRARIES} cpufeatures) +- set(WEBP_DEP_INCLUDE_DIRS ${WEBP_DEP_INCLUDE_DIRS} +- ${ANDROID_NDK}/sources/android/cpufeatures) +- add_definitions(-DHAVE_CPU_FEATURES_H=1) +- set(HAVE_CPU_FEATURES_H 1) +-else() +- set(HAVE_CPU_FEATURES_H 0) +-endif() + + function(configure_pkg_config FILE) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.in" diff --git a/cinelerra-5.1/thirdparty/src/libwebp-1.1.0.patch2 b/cinelerra-5.1/thirdparty/src/libwebp-1.1.0.patch2 new file mode 100644 index 00000000..47bb0f18 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/libwebp-1.1.0.patch2 @@ -0,0 +1,18 @@ +--- libwebp-1.1.0/cmake/cpu.cmake 2019-12-21 16:37:43.000000000 +0300 ++++ _libwebp-1.1.0/cmake/cpu.cmake 2021-05-08 10:55:09.056074195 +0300 +@@ -46,14 +46,7 @@ + set(WEBP_SIMD_FILES_TO_INCLUDE) + set(WEBP_SIMD_FLAGS_TO_INCLUDE) + +-if(${ANDROID}) +- if(${ANDROID_ABI} STREQUAL "armeabi-v7a") +- # This is because Android studio uses the configuration "-march=armv7-a +- # -mfloat-abi=softfp -mfpu=vfpv3-d16" that does not trigger neon +- # optimizations but should (as this configuration does not exist anymore). +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=neon ") +- endif() +-endif() ++ + + list(LENGTH WEBP_SIMD_FLAGS WEBP_SIMD_FLAGS_LENGTH) + math(EXPR WEBP_SIMD_FLAGS_RANGE "${WEBP_SIMD_FLAGS_LENGTH} - 1") -- 2.31.1
From bf4d26eaa6bc1be9a6cc4a4cbda10b22318b8e8e Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 19 May 2021 12:44:22 +0300 Subject: [PATCH 09/29] configure.ac change for non-x86 cflags --- cinelerra-5.1/configure.ac | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac index 8e910529..f3fe0297 100644 --- a/cinelerra-5.1/configure.ac +++ b/cinelerra-5.1/configure.ac @@ -476,6 +476,10 @@ if test "x$I86$X86" != "x00" ; then REQUIRE_PROG(YASM, [yasm]) fi +if test "x$I86$X86" == "x00"; then + CFG_CFLAGS+=" -DNO_CTX -DNO_GDB -DNO_BTRACE" +fi + ## end arch dep tests REQUIRE_PROG(OBJCOPY, [objcopy]) -- 2.31.1
From 4b9ef303d65b5c8da480738efffe6aed792f8185 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 19 May 2021 12:21:26 +0300 Subject: [PATCH 08/29] configure.ac update for ffmpeg-4.4 --- cinelerra-5.1/configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac index f9362edf..8e910529 100644 --- a/cinelerra-5.1/configure.ac +++ b/cinelerra-5.1/configure.ac @@ -189,7 +189,7 @@ PKG_3RD([esound],[no], [ . ]) PKG_3RD([ffmpeg],[yes], - [ffmpeg-4.3], + [ffmpeg-4.4], [ libavutil/libavutil.a \ libavcodec/libavcodec.a \ libpostproc/libpostproc.a \ -- 2.31.1
From 8c6c700209b3cf42202b2b38b6713a765494c89f Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 19 May 2021 13:07:44 +0300 Subject: [PATCH 12/29] libaom and libopus cfg fixes for termux/arm --- cinelerra-5.1/thirdparty/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cinelerra-5.1/thirdparty/Makefile b/cinelerra-5.1/thirdparty/Makefile index 27f13c65..2dd2867e 100644 --- a/cinelerra-5.1/thirdparty/Makefile +++ b/cinelerra-5.1/thirdparty/Makefile @@ -199,7 +199,7 @@ lame.cfg_vars?= CFLAGS+=" -O" lame.cfg_params?=--enable-shared=no lame.mak_params?= ; cd $(call bld_path,lame,include); ln -sf . lame libaom.cfg_vars?= mkdir aom.build && cd aom.build && $(call cmake_config,..) -libaom.cfg_params?= -DENABLE_SHARED=no -DCMAKE_INSTALL_LIBDIR=lib \ +libaom.cfg_params?= -DENABLE_DOCS=no -DENABLE_SHARED=no -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_PREFIX=$(call bld_path,libaom)/usr/local libaom.mak_params?= ; $(MAKE) -C libaom*/aom.build install dav1d.cfg_vars?=echo "echo dav1d custom make" >> configure; chmod +x ./configure; @@ -242,6 +242,7 @@ opencv.cfg_vars?=$(call cmake_config,.) opencv.cfg_params?= -DBUILD_SHARED_LIBS:BOOL=OFF openexr.cfg_vars?=true; \# openexr.mak_vars?=true; \# +opus.cfg_vars?= --disable-extra-programs speech_tools.mak_params?=-j1 tiff.cfg_vars+=LIBS+=" -lpthread" tiff.cfg_params+= --enable-shared=no --disable-zstd $(call if_pkg,libwebp,\ -- 2.31.1
From 9980d156ce85a7b312f509c5be46c778c291a701 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 19 May 2021 13:18:59 +0300 Subject: [PATCH 13/29] configure.ac ifdef for mjpegtools on non-x86 --- cinelerra-5.1/configure.ac | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac index f3fe0297..cab8d509 100644 --- a/cinelerra-5.1/configure.ac +++ b/cinelerra-5.1/configure.ac @@ -317,6 +317,13 @@ PKG_3RD([libvorbis],[auto], lib/.libs/libvorbisfile.a ], [ include . ]) +## arch dep tests +ARCH=[`uname -m`] +I86=[`expr "x$ARCH" : 'xi[346]86.*'`] +X86=[`expr "x$ARCH" : 'x..._64*'`] + +if test "x$I86$X86" != "x00" ; then + PKG_3RD([mjpegtools],[yes], [mjpegtools-2.1.0], [ utils/mmxsse/.libs/libmmxsse.a \ @@ -328,6 +335,20 @@ PKG_3RD([mjpegtools],[yes], mpeg2enc/.libs/libmpeg2encpp.a ], [ . lavtools utils ]) +else + +PKG_3RD([mjpegtools],[yes], + [mjpegtools-2.1.0], + [ utils/.libs/libmjpegutils.a \ + lavtools/.libs/liblavfile.a \ + lavtools/.libs/liblavjpeg.a \ + mplex/.libs/libmplex2.a \ + yuvfilters/.libs/libyuvfilters.a \ + mpeg2enc/.libs/libmpeg2encpp.a ], + [ . lavtools utils ]) + +fi + PKG_3RD([openexr],[auto], [openexr-2.4.1], [ usr/local/lib/libHalf.a \ -- 2.31.1
From 2d32b503f581a7cad1d741d95ce66e6f7477c677 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 19 May 2021 13:03:38 +0300 Subject: [PATCH 11/29] add ffmpeg-4.4 patches into thirdparty/src --- .../thirdparty/src/ffmpeg-4.4.patch0 | 12 +++ .../thirdparty/src/ffmpeg-4.4.patch1 | 13 ++++ .../thirdparty/src/ffmpeg-4.4.patch3 | 74 +++++++++++++++++++ .../thirdparty/src/ffmpeg-4.4.patch5 | 30 ++++++++ .../thirdparty/src/ffmpeg-4.4.patch6 | 12 +++ .../thirdparty/src/ffmpeg-4.4.patch7 | 13 ++++ .../thirdparty/src/ffmpeg-4.4.patch8 | 16 ++++ .../thirdparty/src/ffmpeg-4.4.patch9 | 36 +++++++++ .../thirdparty/src/ffmpeg-4.4.patchA | 24 ++++++ 9 files changed, 230 insertions(+) create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch0 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch1 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch3 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch5 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch6 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch7 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch8 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch9 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchA diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch0 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch0 new file mode 100644 index 00000000..f9760935 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch0 @@ -0,0 +1,12 @@ +diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c +index 88fdbeaf1e..f39d2e7cc4 100644 +--- a/fftools/cmdutils.c ++++ b/fftools/cmdutils.c +@@ -1184,6 +1184,7 @@ static void print_buildconf(int flags, int level) + + void show_banner(int argc, char **argv, const OptionDef *options) + { ++ return; + int idx = locate_option(argc, argv, options, "version"); + if (hide_banner || idx) + return; diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch1 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch1 new file mode 100644 index 00000000..88631302 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch1 @@ -0,0 +1,13 @@ +diff --git a/libavformat/bluray.c b/libavformat/bluray.c +index 635c4f1b87..80a2e2c3d2 100644 +--- a/libavformat/bluray.c ++++ b/libavformat/bluray.c +@@ -28,7 +28,7 @@ + #include "libavutil/opt.h" + + #define BLURAY_PROTO_PREFIX "bluray:" +-#define MIN_PLAYLIST_LENGTH 180 /* 3 min */ ++#define MIN_PLAYLIST_LENGTH 0 + + typedef struct { + const AVClass *class; diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch3 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch3 new file mode 100644 index 00000000..28d3876f --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch3 @@ -0,0 +1,74 @@ +diff --git a/libavformat/avformat.h b/libavformat/avformat.h +index e91e7f1d33..0f9b26a6d3 100644 +--- a/libavformat/avformat.h ++++ b/libavformat/avformat.h +@@ -480,6 +480,9 @@ typedef struct AVProbeData { + The user or muxer can override this through + AVFormatContext.avoid_negative_ts + */ ++#define AVFMT_SEEK_NOSTREAMS 0x80000 /**< Stream index ignored by seek, ++ or some streams fail to seek ++ */ + + #define AVFMT_SEEK_TO_PTS 0x4000000 /**< Seeking is based on PTS */ + +@@ -650,7 +653,8 @@ typedef struct AVInputFormat { + /** + * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, + * AVFMT_NOTIMESTAMPS, AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, +- * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS. ++ * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS, ++ * AVFMT_SEEK_NOSTREAMS + */ + int flags; + +diff --git a/libavformat/dv.c b/libavformat/dv.c +index e99422d4b5..58ce1bbb5f 100644 +--- a/libavformat/dv.c ++++ b/libavformat/dv.c +@@ -642,6 +642,7 @@ static int dv_probe(const AVProbeData *p) + AVInputFormat ff_dv_demuxer = { + .name = "dv", + .long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"), ++ .flags = AVFMT_SEEK_NOSTREAMS, + .priv_data_size = sizeof(RawDVContext), + .read_probe = dv_probe, + .read_header = dv_read_header, +diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c +index cff7f0cb54..8b6d22aff2 100644 +--- a/libavformat/matroskadec.c ++++ b/libavformat/matroskadec.c +@@ -4251,6 +4251,7 @@ static const AVClass webm_dash_class = { + AVInputFormat ff_matroska_demuxer = { + .name = "matroska,webm", + .long_name = NULL_IF_CONFIG_SMALL("Matroska / WebM"), ++ .flags = AVFMT_SEEK_NOSTREAMS, + .extensions = "mkv,mk3d,mka,mks,webm", + .priv_data_size = sizeof(MatroskaDemuxContext), + .read_probe = matroska_probe, +@@ -4264,6 +4265,7 @@ AVInputFormat ff_matroska_demuxer = { + AVInputFormat ff_webm_dash_manifest_demuxer = { + .name = "webm_dash_manifest", + .long_name = NULL_IF_CONFIG_SMALL("WebM DASH Manifest"), ++ .flags = AVFMT_SEEK_NOSTREAMS, + .priv_data_size = sizeof(MatroskaDemuxContext), + .read_header = webm_dash_manifest_read_header, + .read_packet = webm_dash_manifest_read_packet, +diff --git a/libavformat/utils.c b/libavformat/utils.c +index 807d9f10cb..55a444e7b6 100644 +--- a/libavformat/utils.c ++++ b/libavformat/utils.c +@@ -2486,6 +2486,13 @@ static int seek_frame_internal(AVFormatContext *s, int stream_index, + return seek_frame_byte(s, stream_index, timestamp, flags); + } + ++ if (stream_index != -1 && (s->iformat->flags & AVFMT_SEEK_NOSTREAMS)) { ++ timestamp = av_rescale_q(timestamp, ++ s->streams[stream_index]->time_base, ++ AV_TIME_BASE_Q); ++ stream_index = -1; ++ } ++ + if (stream_index < 0) { + stream_index = av_find_default_stream_index(s); + if (stream_index < 0) diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch5 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch5 new file mode 100644 index 00000000..32e7fe11 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch5 @@ -0,0 +1,30 @@ +diff --git a/libavfilter/formats.c b/libavfilter/formats.c +index de4315369d..f430908343 100644 +--- a/libavfilter/formats.c ++++ b/libavfilter/formats.c +@@ -107,11 +107,13 @@ AVFilterFormats *ff_merge_formats(AVFilterFormats *a, AVFilterFormats *b, + possibly causing a lossy conversion elsewhere in the graph. + To avoid that, pretend that there are no common formats to force the + insertion of a conversion filter. */ +- if (type == AVMEDIA_TYPE_VIDEO) +- for (i = 0; i < a->nb_formats; i++) ++ if (type == AVMEDIA_TYPE_VIDEO) { ++ for (i = 0; i < a->nb_formats; i++) { ++ const AVPixFmtDescriptor *adesc = av_pix_fmt_desc_get(a->formats[i]); ++ if( !adesc ) continue; + for (j = 0; j < b->nb_formats; j++) { +- const AVPixFmtDescriptor *adesc = av_pix_fmt_desc_get(a->formats[i]); + const AVPixFmtDescriptor *bdesc = av_pix_fmt_desc_get(b->formats[j]); ++ if( !bdesc ) continue; + alpha2 |= adesc->flags & bdesc->flags & AV_PIX_FMT_FLAG_ALPHA; + chroma2|= adesc->nb_components > 1 && bdesc->nb_components > 1; + if (a->formats[i] == b->formats[j]) { +@@ -119,6 +121,8 @@ AVFilterFormats *ff_merge_formats(AVFilterFormats *a, AVFilterFormats *b, + chroma1|= adesc->nb_components > 1; + } + } ++ } ++ } + + // If chroma or alpha can be lost through merging then do not merge + if (alpha2 > alpha1 || chroma2 > chroma1) diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch6 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch6 new file mode 100644 index 00000000..e59a17cc --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch6 @@ -0,0 +1,12 @@ +diff --git a/libavcodec/vdpau_mpeg12.c b/libavcodec/vdpau_mpeg12.c +index 72220ffb4e..5687c416c9 100644 +--- a/libavcodec/vdpau_mpeg12.c ++++ b/libavcodec/vdpau_mpeg12.c +@@ -114,6 +114,7 @@ const AVHWAccel ff_mpeg1_vdpau_hwaccel = { + .frame_priv_data_size = sizeof(struct vdpau_picture_context), + .init = vdpau_mpeg1_init, + .uninit = ff_vdpau_common_uninit, ++ .frame_params = ff_vdpau_common_frame_params, + .priv_data_size = sizeof(VDPAUContext), + .caps_internal = HWACCEL_CAP_ASYNC_SAFE, + }; diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch7 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch7 new file mode 100644 index 00000000..05d3b1d0 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch7 @@ -0,0 +1,13 @@ +diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c +index 3b29a189e9..681a4187c5 100644 +--- a/libavcodec/h263dec.c ++++ b/libavcodec/h263dec.c +@@ -684,7 +684,7 @@ frame_end: + if (CONFIG_MPEG4_DECODER && avctx->codec_id == AV_CODEC_ID_MPEG4) + ff_mpeg4_frame_end(avctx, buf, buf_size); + +- if (!s->divx_packed && avctx->hwaccel) ++ if (s->divx_packed && avctx->hwaccel) + ff_thread_finish_setup(avctx); + + av_assert1(s->current_picture.f->pict_type == s->current_picture_ptr->f->pict_type); diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch8 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch8 new file mode 100644 index 00000000..51bc09e3 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch8 @@ -0,0 +1,16 @@ +diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c +index 9bd0a555d4..111a9f3a46 100644 +--- a/libavformat/mpegenc.c ++++ b/libavformat/mpegenc.c +@@ -976,9 +976,9 @@ static int remove_decoded_packets(AVFormatContext *ctx, int64_t scr) + PacketDesc *pkt_desc; + + while ((pkt_desc = stream->predecode_packet) && ++ pkt_desc != stream->premux_packet && + scr > pkt_desc->dts) { // FIXME: > vs >= +- if (stream->buffer_index < pkt_desc->size || +- stream->predecode_packet == stream->premux_packet) { ++ if (stream->buffer_index < pkt_desc->size) { + av_log(ctx, AV_LOG_ERROR, + "buffer underflow st=%d bufi=%d size=%d\n", + i, stream->buffer_index, pkt_desc->size); diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch9 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch9 new file mode 100644 index 00000000..0cf24e74 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch9 @@ -0,0 +1,36 @@ +diff --git a/libavutil/hwcontext_cuda.c b/libavutil/hwcontext_cuda.c +index 718a449b6e..84685fe1d9 100644 +--- a/libavutil/hwcontext_cuda.c ++++ b/libavutil/hwcontext_cuda.c +@@ -269,9 +269,11 @@ static void cuda_device_uninit(AVHWDeviceContext *device_ctx) + CudaFunctions *cu = hwctx->internal->cuda_dl; + + if (hwctx->internal->is_allocated && hwctx->cuda_ctx) { ++#ifdef CUDA_PRIMARY_CTX + if (hwctx->internal->flags & AV_CUDA_USE_PRIMARY_CONTEXT) + CHECK_CU(cu->cuDevicePrimaryCtxRelease(hwctx->internal->cuda_device)); + else ++#endif + CHECK_CU(cu->cuCtxDestroy(hwctx->cuda_ctx)); + + hwctx->cuda_ctx = NULL; +@@ -321,7 +323,7 @@ static int cuda_context_init(AVHWDeviceContext *device_ctx, int flags) { + cu = hwctx->internal->cuda_dl; + + hwctx->internal->flags = flags; +- ++#ifdef CUDA_PRIMARY_CTX + if (flags & AV_CUDA_USE_PRIMARY_CONTEXT) { + ret = CHECK_CU(cu->cuDevicePrimaryCtxGetState(hwctx->internal->cuda_device, + &dev_flags, &dev_active)); +@@ -342,7 +344,9 @@ static int cuda_context_init(AVHWDeviceContext *device_ctx, int flags) { + hwctx->internal->cuda_device)); + if (ret < 0) + return ret; +- } else { ++ } else ++#endif ++ { + ret = CHECK_CU(cu->cuCtxCreate(&hwctx->cuda_ctx, desired_flags, + hwctx->internal->cuda_device)); + if (ret < 0) diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchA b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchA new file mode 100644 index 00000000..6d181e3c --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchA @@ -0,0 +1,24 @@ +diff --git a/libavutil/hwcontext_vdpau.c b/libavutil/hwcontext_vdpau.c +index dbef5495af..fba06d8ccf 100644 +--- a/libavutil/hwcontext_vdpau.c ++++ b/libavutil/hwcontext_vdpau.c +@@ -68,6 +68,11 @@ static const VDPAUPixFmtMap pix_fmts_420[] = { + { 0, AV_PIX_FMT_NONE, }, + }; + ++static const VDPAUPixFmtMap pix_fmts_420j[] = { ++ { VDP_YCBCR_FORMAT_YV12, AV_PIX_FMT_YUVJ420P }, ++ { 0, AV_PIX_FMT_NONE, }, ++}; ++ + static const VDPAUPixFmtMap pix_fmts_422[] = { + { VDP_YCBCR_FORMAT_NV12, AV_PIX_FMT_NV16 }, + { VDP_YCBCR_FORMAT_YV12, AV_PIX_FMT_YUV422P }, +@@ -92,6 +97,7 @@ static const struct { + const VDPAUPixFmtMap *map; + } vdpau_pix_fmts[] = { + { VDP_CHROMA_TYPE_420, AV_PIX_FMT_YUV420P, pix_fmts_420 }, ++ { VDP_CHROMA_TYPE_420, AV_PIX_FMT_YUVJ420P, pix_fmts_420j }, + { VDP_CHROMA_TYPE_422, AV_PIX_FMT_YUV422P, pix_fmts_422 }, + { VDP_CHROMA_TYPE_444, AV_PIX_FMT_YUV444P, pix_fmts_444 }, + #ifdef VDP_YCBCR_FORMAT_P016 -- 2.31.1
From a812c03413dacacaaa08cbcb8a9f9f24fec44413 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 19 May 2021 13:36:16 +0300 Subject: [PATCH 14/29] ifdef commercials db only for x86 --- cinelerra-5.1/cinelerra/commercials.h | 2 ++ cinelerra-5.1/cinelerra/dbwindow.h | 2 ++ cinelerra-5.1/cinelerra/mediadb.h | 2 ++ cinelerra-5.1/cinelerra/mwindow.C | 2 ++ cinelerra-5.1/db/tdb.h | 2 ++ 5 files changed, 10 insertions(+) diff --git a/cinelerra-5.1/cinelerra/commercials.h b/cinelerra-5.1/cinelerra/commercials.h index b7b815c4..123ce480 100644 --- a/cinelerra-5.1/cinelerra/commercials.h +++ b/cinelerra-5.1/cinelerra/commercials.h @@ -1,3 +1,4 @@ +#ifdef (__I386__) || (__x86-64__) #ifndef _COMMERCIALS_H_ #define _COMMERCIALS_H_ @@ -202,3 +203,4 @@ public: #endif +#endif /* x86 */ \ No newline at end of file diff --git a/cinelerra-5.1/cinelerra/dbwindow.h b/cinelerra-5.1/cinelerra/dbwindow.h index 24a40df8..e2507945 100644 --- a/cinelerra-5.1/cinelerra/dbwindow.h +++ b/cinelerra-5.1/cinelerra/dbwindow.h @@ -1,3 +1,4 @@ +#ifdef (__I386__) || (__x86-64__) #ifndef _DBWINDOW_H_ #define _DBWINDOW_H_ @@ -296,3 +297,4 @@ public: #endif +#endif /* x86 */ \ No newline at end of file diff --git a/cinelerra-5.1/cinelerra/mediadb.h b/cinelerra-5.1/cinelerra/mediadb.h index 9bb970ee..04d1d2aa 100644 --- a/cinelerra-5.1/cinelerra/mediadb.h +++ b/cinelerra-5.1/cinelerra/mediadb.h @@ -1,3 +1,4 @@ +#ifdef (__I386__) || (__x86-64__) #ifndef _MEDIA_DB_H_ #define _MEDIA_DB_H_ @@ -239,3 +240,4 @@ public: }; #endif +#endif /* x86 */ \ No newline at end of file diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C index e5d4bc69..c4371646 100644 --- a/cinelerra-5.1/cinelerra/mwindow.C +++ b/cinelerra-5.1/cinelerra/mwindow.C @@ -283,8 +283,10 @@ MWindow::~MWindow() delete convert_render; convert_render = 0; delete render; render = 0; delete mixers_align; mixers_align = 0; +#ifdef HAVE_COMMERCIALS commit_commercial(); if( commercials && !commercials->remove_user() ) commercials = 0; +#endif close_mixers(); if( speed_edl ) { speed_edl->remove_user(); speed_edl = 0; } // Save defaults for open plugins diff --git a/cinelerra-5.1/db/tdb.h b/cinelerra-5.1/db/tdb.h index 8ee88002..4e9d25a5 100644 --- a/cinelerra-5.1/db/tdb.h +++ b/cinelerra-5.1/db/tdb.h @@ -1,3 +1,4 @@ +#ifdef (__I386__) || (__x86-64__) #ifndef __DB_H__ #define __DB_H__ #include <cstring> @@ -1514,3 +1515,4 @@ public: }; #endif +#endif /* x86 */ \ No newline at end of file -- 2.31.1
From 6ae426c3352821e49bfe7c4565d110e6390e5dd9 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 19 May 2021 14:08:01 +0300 Subject: [PATCH 15/29] fixed x86 ifdefs --- cinelerra-5.1/cinelerra/commercials.h | 2 +- cinelerra-5.1/cinelerra/dbwindow.h | 2 +- cinelerra-5.1/cinelerra/mediadb.h | 2 +- cinelerra-5.1/db/tdb.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cinelerra-5.1/cinelerra/commercials.h b/cinelerra-5.1/cinelerra/commercials.h index 123ce480..7869c3c3 100644 --- a/cinelerra-5.1/cinelerra/commercials.h +++ b/cinelerra-5.1/cinelerra/commercials.h @@ -1,4 +1,4 @@ -#ifdef (__I386__) || (__x86-64__) +#ifdef __I386__ || __x86-64__ #ifndef _COMMERCIALS_H_ #define _COMMERCIALS_H_ diff --git a/cinelerra-5.1/cinelerra/dbwindow.h b/cinelerra-5.1/cinelerra/dbwindow.h index e2507945..c8a12f66 100644 --- a/cinelerra-5.1/cinelerra/dbwindow.h +++ b/cinelerra-5.1/cinelerra/dbwindow.h @@ -1,4 +1,4 @@ -#ifdef (__I386__) || (__x86-64__) +#ifdef __I386__ || __x86-64__ #ifndef _DBWINDOW_H_ #define _DBWINDOW_H_ diff --git a/cinelerra-5.1/cinelerra/mediadb.h b/cinelerra-5.1/cinelerra/mediadb.h index 04d1d2aa..71e96bfb 100644 --- a/cinelerra-5.1/cinelerra/mediadb.h +++ b/cinelerra-5.1/cinelerra/mediadb.h @@ -1,4 +1,4 @@ -#ifdef (__I386__) || (__x86-64__) +#ifdef __I386__ || __x86-64__ #ifndef _MEDIA_DB_H_ #define _MEDIA_DB_H_ diff --git a/cinelerra-5.1/db/tdb.h b/cinelerra-5.1/db/tdb.h index 4e9d25a5..e4a08565 100644 --- a/cinelerra-5.1/db/tdb.h +++ b/cinelerra-5.1/db/tdb.h @@ -1,4 +1,4 @@ -#ifdef (__I386__) || (__x86-64__) +#ifdef __I386__ || __x86-64__ #ifndef __DB_H__ #define __DB_H__ #include <cstring> -- 2.31.1
From 5e0a8d8e82540511f068aae58138a5955fe4f51c Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sun, 23 May 2021 09:58:39 +0300 Subject: [PATCH 19/29] additional XOpenIM call in bcwindowbase.C --- cinelerra-5.1/guicast/bcwindowbase.C | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cinelerra-5.1/guicast/bcwindowbase.C b/cinelerra-5.1/guicast/bcwindowbase.C index 93279934..5a29eaa2 100644 --- a/cinelerra-5.1/guicast/bcwindowbase.C +++ b/cinelerra-5.1/guicast/bcwindowbase.C @@ -2527,10 +2527,15 @@ void BC_WindowBase::init_im() XIMStyles *xim_styles; XIMStyle xim_style; + if(!(input_method = XOpenIM(display, NULL, NULL, NULL))) { printf("BC_WindowBase::init_im: Could not open input method.\n"); + XSetLocaleModifiers("@im=local"); + if(!(input_method = XOpenIM(display, NULL, NULL, NULL))) { + printf("BC_WindowBase::init_im: Could not open input method local.\n"); exit(1); + } } if(XGetIMValues(input_method, XNQueryInputStyle, &xim_styles, NULL) || xim_styles == NULL) @@ -2540,6 +2545,7 @@ void BC_WindowBase::init_im() exit(1); } + xim_style = 0; for(int z = 0; z < xim_styles->count_styles; z++) { -- 2.31.1
From e4ec33bbf002c3f4c56ef2d797102d2a8b237574 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 19 May 2021 14:08:57 +0300 Subject: [PATCH 16/29] add termux-specific include path --- cinelerra-5.1/configure.ac | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac index cab8d509..534f444d 100644 --- a/cinelerra-5.1/configure.ac +++ b/cinelerra-5.1/configure.ac @@ -26,7 +26,9 @@ CFG_CFLAGS+=" -DPNG_SKIP_SETJMP_CHECK=1" CFG_CFLAGS+=" -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" CFG_CFLAGS+=" -I/usr/include -I/usr/local/include" CFG_CFLAGS+=" -I/usr/include/freetype2 -I/usr/local/include/freetype2" +CFG_CFLAGS+=" -I/data/data/com.termux/files/usr/include/freetype2" CFG_CFLAGS+=" -I/usr/include/uuid -I/usr/local/include/uuid" +CFG_CFLAGS+=" -I/data/data/com.termux/files/usr/include/uuid -I/usr/local/include/uuid" CFG_CFLAGS+=" -I/usr/include/mjpegtools -I/usr/local/include/mjpegtools" AC_DEFUN([CHECK_WITH], [ -- 2.31.1
From 11a8a15f0cdbda794ff545883070ba278828528a Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 19 May 2021 14:21:05 +0300 Subject: [PATCH 17/29] configure.ac - add -liconv for termux --- cinelerra-5.1/configure.ac | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac index 534f444d..be18c243 100644 --- a/cinelerra-5.1/configure.ac +++ b/cinelerra-5.1/configure.ac @@ -1042,6 +1042,9 @@ if test "x$WANT_BOOBY" != "xno"; then CFG_CFLAGS+=" -DBOOBY" fi +# termux +EXTRA_LIBS+=' -liconv' + # intel lock elision bugs if test "x$WANT_NOELISION" != "xno"; then CFG_RPATH=`ls -1fd 2> /dev/null \ -- 2.31.1
From 1855b532a3a3bbff5ec9aab3ff1f10de55a12e2e Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Fri, 21 May 2021 09:46:32 +0300 Subject: [PATCH 18/29] attempt to fix _probe function memory leak --- cinelerra-5.1/cinelerra/ffmpeg.C | 1 + 1 file changed, 1 insertion(+) diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C index 55fa668e..96a5c385 100644 --- a/cinelerra-5.1/cinelerra/ffmpeg.C +++ b/cinelerra-5.1/cinelerra/ffmpeg.C @@ -1245,6 +1245,7 @@ int FFVideoStream::probe(int64_t pos) ret = -1; ret = ret > 0 ? 1 : ret < 0 ? -1 : 0; + av_frame_free(&frame); return ret; } -- 2.31.1
From 4a29c3b8a02cb00404a0974331693393bbf0484e Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sun, 23 May 2021 10:03:09 +0300 Subject: [PATCH 20/29] change type of j variable in virtualanode.C to int64_t --- cinelerra-5.1/cinelerra/virtualanode.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cinelerra-5.1/cinelerra/virtualanode.C b/cinelerra-5.1/cinelerra/virtualanode.C index a1ad5235..55a79d35 100644 --- a/cinelerra-5.1/cinelerra/virtualanode.C +++ b/cinelerra-5.1/cinelerra/virtualanode.C @@ -475,11 +475,11 @@ int VirtualANode::render_pan(double *input, // start of input fragment } } else if( EQUIV(intercept, 1) ) { - for(int j = 0; j < slope_len; j++, i++) + for(int64_t j = 0; j < slope_len; j++, i++) output[i] += input[i]; } else if( !EQUIV(intercept, 0) ) { - for(int j = 0; j < slope_len; j++, i++) + for(int64_t j = 0; j < slope_len; j++, i++) output[i] += input[i] * intercept; } else -- 2.31.1
From 52b961525c705b2bf10fd2b22d02250234f9095a Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sun, 23 May 2021 10:48:19 +0300 Subject: [PATCH 21/29] libbthread source and Makefile patch (not integrated into buildsystem ye --- cinelerra-5.1/thirdparty/src/libbthread.patch1 | 8 ++++++++ cinelerra-5.1/thirdparty/src/libbthread.tar.gz | Bin 0 -> 14695 bytes 2 files changed, 8 insertions(+) create mode 100644 cinelerra-5.1/thirdparty/src/libbthread.patch1 create mode 100644 cinelerra-5.1/thirdparty/src/libbthread.tar.gz diff --git a/cinelerra-5.1/thirdparty/src/libbthread.patch1 b/cinelerra-5.1/thirdparty/src/libbthread.patch1 new file mode 100644 index 00000000..cf373a71 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/libbthread.patch1 @@ -0,0 +1,8 @@ +--- /dev/null 2021-05-22 06:52:04.572000000 +0300 ++++ libbthread-master/Makefile 2021-05-23 10:18:06.719050843 +0300 +@@ -0,0 +1,4 @@ ++all: ++ cat `ls *.c` > just-pt.c ++ g++ -c -o jpt.o just-pt.c -I. ++ ar crs jpt.a jpt.o +\ No newline at end of file diff --git a/cinelerra-5.1/thirdparty/src/libbthread.tar.gz b/cinelerra-5.1/thirdparty/src/libbthread.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e642e36624a4fc15936cef34bef64bf69080eaba GIT binary patch literal 14695 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 z%0A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 literal 0 HcmV?d00001 -- 2.31.1
From cc8fa3042ef9d8207c53fee10895984136e5b5a5 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sun, 23 May 2021 11:29:57 +0300 Subject: [PATCH 23/29] More ffmpeg-4.4 patches renaming B0 to B0_ due to termux-specific includes defining macro in termbits.h --- .../thirdparty/src/ffmpeg-4.4.patch_1 | 35 +++++ .../thirdparty/src/ffmpeg-4.4.patch_2 | 139 ++++++++++++++++++ .../thirdparty/src/ffmpeg-4.4.patch_3 | 104 +++++++++++++ 3 files changed, 278 insertions(+) create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_1 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_2 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_3 diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_1 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_1 new file mode 100644 index 00000000..36643f41 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_1 @@ -0,0 +1,35 @@ +--- ffmpeg-4.4/libavcodec/aaccoder.c.orig 2021-05-08 11:52:41.824074401 +0300 ++++ ffmpeg-4.4/libavcodec/aaccoder.c 2021-05-08 11:55:06.868074410 +0300 +@@ -800,7 +800,7 @@ + + for (sid_sf_boost = 0; sid_sf_boost < 4; sid_sf_boost++) { + float dist1 = 0.0f, dist2 = 0.0f; +- int B0 = 0, B1 = 0; ++ int B0_ = 0, B1 = 0; + int minidx; + int mididx, sididx; + int midcb, sidcb; +@@ -862,12 +862,12 @@ + sididx, + sidcb, + mslambda / (minthr * bmax), INFINITY, &b4, NULL, 0); +- B0 += b1+b2; ++ B0_ += b1+b2; + B1 += b3+b4; + dist1 -= b1+b2; + dist2 -= b3+b4; + } +- cpe->ms_mask[w*16+g] = dist2 <= dist1 && B1 < B0; ++ cpe->ms_mask[w*16+g] = dist2 <= dist1 && B1 < B0_; + if (cpe->ms_mask[w*16+g]) { + if (sce0->band_type[w*16+g] != NOISE_BT && sce1->band_type[w*16+g] != NOISE_BT) { + sce0->sf_idx[w*16+g] = mididx; +@@ -879,7 +879,7 @@ + cpe->ms_mask[w*16+g] = 0; + } + break; +- } else if (B1 > B0) { ++ } else if (B1 > B0_) { + /* More boost won't fix this */ + break; + } diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_2 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_2 new file mode 100644 index 00000000..45adca97 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_2 @@ -0,0 +1,139 @@ +--- ffmpeg-4.4/libavcodec/hevc_mvs.c.orig 2021-05-08 12:22:19.580985429 +0300 ++++ ffmpeg-4.4/libavcodec/hevc_mvs.c 2021-05-08 12:29:05.340985454 +0300 +@@ -307,8 +307,8 @@ + const int xB1 = x0 + nPbW - 1; + const int yB1 = y0 - 1; + +- const int xB0 = x0 + nPbW; +- const int yB0 = y0 - 1; ++ const int xB0_ = x0 + nPbW; ++ const int yB0_ = y0 - 1; + + const int xA0 = x0 - 1; + const int yA0 = y0 + nPbH; +@@ -365,14 +365,14 @@ + } + + // above right spatial merge candidate +- is_available_b0 = AVAILABLE(cand_up_right, B0) && +- xB0 < s->ps.sps->width && +- PRED_BLOCK_AVAILABLE(B0) && +- !is_diff_mer(s, xB0, yB0, x0, y0); ++ is_available_b0 = AVAILABLE(cand_up_right, B0_) && ++ xB0_ < s->ps.sps->width && ++ PRED_BLOCK_AVAILABLE(B0_) && ++ !is_diff_mer(s, xB0_, yB0_, x0, y0); + + if (is_available_b0 && +- !(is_available_b1 && COMPARE_MV_REFIDX(B0, B1))) { +- mergecandlist[nb_merge_cand] = TAB_MVF_PU(B0); ++ !(is_available_b1 && COMPARE_MV_REFIDX(B0_, B1))) { ++ mergecandlist[nb_merge_cand] = TAB_MVF_PU(B0_); + if (merge_idx == nb_merge_cand) + return; + nb_merge_cand++; +@@ -588,7 +588,7 @@ + MvField *tab_mvf = s->ref->tab_mvf; + int isScaledFlag_L0 = 0; + int availableFlagLXA0 = 1; +- int availableFlagLXB0 = 1; ++ int availableFlagLXB0_ = 1; + int numMVPCandLX = 0; + int min_pu_width = s->ps.sps->min_pu_width; + +@@ -596,7 +596,7 @@ + int is_available_a0; + int xA1, yA1; + int is_available_a1; +- int xB0, yB0; ++ int xB0_, yB0_; + int is_available_b0; + int xB1, yB1; + int is_available_b1; +@@ -677,12 +677,12 @@ + b_candidates: + // B candidates + // above right spatial merge candidate +- xB0 = x0 + nPbW; +- yB0 = y0 - 1; ++ xB0_ = x0 + nPbW; ++ yB0_ = y0 - 1; + +- is_available_b0 = AVAILABLE(cand_up_right, B0) && +- xB0 < s->ps.sps->width && +- PRED_BLOCK_AVAILABLE(B0); ++ is_available_b0 = AVAILABLE(cand_up_right, B0_) && ++ xB0_ < s->ps.sps->width && ++ PRED_BLOCK_AVAILABLE(B0_); + + // above spatial merge candidate + xB1 = x0 + nPbW - 1; +@@ -696,10 +696,10 @@ + + // above right spatial merge candidate + if (is_available_b0) { +- if (MP_MX(B0, pred_flag_index_l0, mxB)) { ++ if (MP_MX(B0_, pred_flag_index_l0, mxB)) { + goto scalef; + } +- if (MP_MX(B0, pred_flag_index_l1, mxB)) { ++ if (MP_MX(B0_, pred_flag_index_l1, mxB)) { + goto scalef; + } + } +@@ -723,40 +723,40 @@ + goto scalef; + } + } +- availableFlagLXB0 = 0; ++ availableFlagLXB0_ = 0; + + scalef: + if (!isScaledFlag_L0) { +- if (availableFlagLXB0) { ++ if (availableFlagLXB0_) { + availableFlagLXA0 = 1; + mxA = mxB; + } +- availableFlagLXB0 = 0; ++ availableFlagLXB0_ = 0; + + // XB0 and L1 + if (is_available_b0) { +- availableFlagLXB0 = MP_MX_LT(B0, pred_flag_index_l0, mxB); +- if (!availableFlagLXB0) +- availableFlagLXB0 = MP_MX_LT(B0, pred_flag_index_l1, mxB); ++ availableFlagLXB0_ = MP_MX_LT(B0_, pred_flag_index_l0, mxB); ++ if (!availableFlagLXB0_) ++ availableFlagLXB0_ = MP_MX_LT(B0_, pred_flag_index_l1, mxB); + } + +- if (is_available_b1 && !availableFlagLXB0) { +- availableFlagLXB0 = MP_MX_LT(B1, pred_flag_index_l0, mxB); +- if (!availableFlagLXB0) +- availableFlagLXB0 = MP_MX_LT(B1, pred_flag_index_l1, mxB); ++ if (is_available_b1 && !availableFlagLXB0_) { ++ availableFlagLXB0_ = MP_MX_LT(B1, pred_flag_index_l0, mxB); ++ if (!availableFlagLXB0_) ++ availableFlagLXB0_ = MP_MX_LT(B1, pred_flag_index_l1, mxB); + } + +- if (is_available_b2 && !availableFlagLXB0) { +- availableFlagLXB0 = MP_MX_LT(B2, pred_flag_index_l0, mxB); +- if (!availableFlagLXB0) +- availableFlagLXB0 = MP_MX_LT(B2, pred_flag_index_l1, mxB); ++ if (is_available_b2 && !availableFlagLXB0_) { ++ availableFlagLXB0_ = MP_MX_LT(B2, pred_flag_index_l0, mxB); ++ if (!availableFlagLXB0_) ++ availableFlagLXB0_ = MP_MX_LT(B2, pred_flag_index_l1, mxB); + } + } + + if (availableFlagLXA0) + mvpcand_list[numMVPCandLX++] = mxA; + +- if (availableFlagLXB0 && (!availableFlagLXA0 || mxA.x != mxB.x || mxA.y != mxB.y)) ++ if (availableFlagLXB0_ && (!availableFlagLXA0 || mxA.x != mxB.x || mxA.y != mxB.y)) + mvpcand_list[numMVPCandLX++] = mxB; + + //temporal motion vector prediction candidate diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_3 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_3 new file mode 100644 index 00000000..4442402c --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patch_3 @@ -0,0 +1,104 @@ +--- ffmpeg-4.4/libavcodec/opus_pvq.c.orig 2021-05-08 12:19:49.996985421 +0300 ++++ ffmpeg-4.4/libavcodec/opus_pvq.c 2021-05-08 12:21:12.440985425 +0300 +@@ -495,12 +495,12 @@ + uint32_t N0 = N; + int N_B = N / blocks; + int N_B0 = N_B; +- int B0 = blocks; ++ int B0_ = blocks; + int time_divide = 0; + int recombine = 0; + int inv = 0; + float mid = 0, side = 0; +- int longblocks = (B0 == 1); ++ int longblocks = (B0_ == 1); + uint32_t cm = 0; + + if (N == 1) { +@@ -532,7 +532,7 @@ + /* Band recombining to increase frequency resolution */ + + if (lowband && +- (recombine || ((N_B & 1) == 0 && tf_change < 0) || B0 > 1)) { ++ (recombine || ((N_B & 1) == 0 && tf_change < 0) || B0_ > 1)) { + for (i = 0; i < N; i++) + lowband_scratch[i] = lowband[i]; + lowband = lowband_scratch; +@@ -556,13 +556,13 @@ + time_divide++; + tf_change++; + } +- B0 = blocks; ++ B0_ = blocks; + N_B0 = N_B; + + /* Reorganize the samples in time order instead of frequency order */ +- if (B0 > 1 && (quant || lowband)) ++ if (B0_ > 1 && (quant || lowband)) + celt_deinterleave_hadamard(pvq->hadamard_tmp, quant ? X : lowband, +- N_B >> recombine, B0 << recombine, ++ N_B >> recombine, B0_ << recombine, + longblocks); + } + +@@ -604,7 +604,7 @@ + if (quant) { + if (stereo && N > 2) + ff_opus_rc_enc_uint_step(rc, itheta, qn / 2); +- else if (stereo || B0 > 1) ++ else if (stereo || B0_ > 1) + ff_opus_rc_enc_uint(rc, itheta, qn + 1); + else + ff_opus_rc_enc_uint_tri(rc, itheta, qn); +@@ -619,7 +619,7 @@ + } else { + if (stereo && N > 2) + itheta = ff_opus_rc_dec_uint_step(rc, qn / 2); +- else if (stereo || B0 > 1) ++ else if (stereo || B0_ > 1) + itheta = ff_opus_rc_dec_uint(rc, qn+1); + else + itheta = ff_opus_rc_dec_uint_tri(rc, qn); +@@ -725,7 +725,7 @@ + + /* Give more bits to low-energy MDCTs than they would + * otherwise deserve */ +- if (B0 > 1 && !stereo && (itheta & 0x3fff)) { ++ if (B0_ > 1 && !stereo && (itheta & 0x3fff)) { + if (itheta > 8192) + /* Rough approximation for pre-echo masking */ + delta -= delta >> (4 - duration); +@@ -764,14 +764,14 @@ + cmt = pvq->quant_band(pvq, f, rc, band, Y, NULL, N, sbits, blocks, + next_lowband2, duration, NULL, next_level, + gain * side, NULL, fill >> blocks); +- cm |= cmt << ((B0 >> 1) & (stereo - 1)); ++ cm |= cmt << ((B0_ >> 1) & (stereo - 1)); + } else { + /* For a stereo split, the high bits of fill are always zero, + * so no folding will be done to the side. */ + cm = pvq->quant_band(pvq, f, rc, band, Y, NULL, N, sbits, blocks, + next_lowband2, duration, NULL, next_level, + gain * side, NULL, fill >> blocks); +- cm <<= ((B0 >> 1) & (stereo - 1)); ++ cm <<= ((B0_ >> 1) & (stereo - 1)); + rebalance = sbits - (rebalance - f->remaining2); + if (rebalance > 3 << 3 && itheta != 16384) + mbits += rebalance - (3 << 3); +@@ -842,13 +842,13 @@ + int k; + + /* Undo the sample reorganization going from time order to frequency order */ +- if (B0 > 1) ++ if (B0_ > 1) + celt_interleave_hadamard(pvq->hadamard_tmp, X, N_B >> recombine, +- B0 << recombine, longblocks); ++ B0_ << recombine, longblocks); + + /* Undo time-freq changes that we did earlier */ + N_B = N_B0; +- blocks = B0; ++ blocks = B0_; + for (k = 0; k < time_divide; k++) { + blocks >>= 1; + N_B <<= 1; -- 2.31.1
From 8a9d1e42fefe88d8046ca41c87b05c7eb244f53c Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sun, 23 May 2021 10:51:34 +0300 Subject: [PATCH 22/29] Additonal mjpegtools patches for termux (not ifdefed) --- .../thirdparty/src/mjpegtools-2.1.0.patch4 | 17 ++++++++++ .../thirdparty/src/mjpegtools-2.1.0.patch5 | 11 ++++++ .../thirdparty/src/mjpegtools-2.1.0.patch6 | 10 ++++++ .../thirdparty/src/mjpegtools-2.1.0.patch7 | 34 +++++++++++++++++++ 4 files changed, 72 insertions(+) create mode 100644 cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch4 create mode 100644 cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch5 create mode 100644 cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch6 create mode 100644 cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch7 diff --git a/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch4 b/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch4 new file mode 100644 index 00000000..5312f19b --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch4 @@ -0,0 +1,17 @@ +--- mjpegtools-2.1.0/y4mdenoise/newdenoise.cc 2009-04-26 21:40:20.000000000 +0400 ++++ mjpegtools-2.1.0/y4mdenoise/newdenoise.cc.new 2021-05-23 09:27:12.071050661 +0300 +@@ -1853,12 +1853,14 @@ + 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 /* termux */ + + // Create the thread. + nErr = pthread_create (&m_oThreadInfo, diff --git a/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch5 b/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch5 new file mode 100644 index 00000000..14ee272e --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch5 @@ -0,0 +1,11 @@ +--- mjpegtools-2.1.0/mpeg2enc/Makefile.am.orig 2010-09-11 23:46:04.000000000 +0400 ++++ mjpegtools-2.1.0/mpeg2enc/Makefile.am 2021-05-23 09:39:14.731050704 +0300 +@@ -3,7 +3,7 @@ + # and mpeg2enc command line wrapper. + # + +-bin_PROGRAMS = mpeg2enc ++#bin_PROGRAMS = mpeg2enc + + mpeg2encpp_MMXSSE_INLINE = \ + fdct_x86.c \ diff --git a/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch6 b/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch6 new file mode 100644 index 00000000..42fed77d --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch6 @@ -0,0 +1,10 @@ +--- mjpegtools-2.1.0/mpeg2enc/seqencoder.cc 2010-10-17 19:19:48.000000000 +0400 ++++ mjpegtools-2.1.0/mpeg2enc/seqencoder.cc 2021-05-23 09:24:18.791050651 +0300 +@@ -56,6 +56,7 @@ + #include "ratectl.hh" + #include "tables.h" + #include "channel.hh" ++#include "bthread.h" + + + // -------------------------------------------------------------------------------- diff --git a/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch7 b/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch7 new file mode 100644 index 00000000..71eede47 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/mjpegtools-2.1.0.patch7 @@ -0,0 +1,34 @@ +--- /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); -- 2.31.1
From cd3b05d735fd4fa6a5b1b21ee7b3da5c6bf8c3b1 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sun, 23 May 2021 14:23:01 +0300 Subject: [PATCH 25/29] add libbthread to configure.ac (termux-specific) --- cinelerra-5.1/configure.ac | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac index be18c243..84bd1218 100644 --- a/cinelerra-5.1/configure.ac +++ b/cinelerra-5.1/configure.ac @@ -451,6 +451,11 @@ PKG_3RD([ffnvcodec],[auto], [ ], [ . ]) +PKG_3RD([libbthread],[auto], + [libbthread-master], + [ *.a ], + [ . ]) + AC_SUBST(STATIC_PKGS) AC_DEFUN([CHECK_ENABLE], [ @@ -912,6 +917,7 @@ if test "x$BUILD_$1" = "x" ; then fi ]) +PKG_PROVIDE([libbthread]) PKG_PROVIDE([a52dec]) PKG_PROVIDE([djbfft]) PKG_PROVIDE([encore]) -- 2.31.1
From 72cdf2951e47af1098c81153d5735ef0ddb33ea4 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sun, 23 May 2021 14:32:24 +0300 Subject: [PATCH 26/29] Fix libzmpeg.h x86 ifdef --- cinelerra-5.1/libzmpeg3/libzmpeg3.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cinelerra-5.1/libzmpeg3/libzmpeg3.h b/cinelerra-5.1/libzmpeg3/libzmpeg3.h index 8993aed4..c1fec34f 100644 --- a/cinelerra-5.1/libzmpeg3/libzmpeg3.h +++ b/cinelerra-5.1/libzmpeg3/libzmpeg3.h @@ -5,7 +5,7 @@ /* for quicktime build */ #define MAXFRAMESAMPLES 65536 #define ZDVB -#if defined(__i386__) || defined(__x86-64__) +#ifdef __i386__ || __x86-64__ #define USE_FUTEX #endif -- 2.31.1
From 3fdc604189337e3e9ee34f09b74100957a036f90 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sun, 23 May 2021 12:18:21 +0300 Subject: [PATCH 24/29] add libbthread to thirdparty/Makefile, do not install mpeg2enc/mplex from mjpegtools --- cinelerra-5.1/thirdparty/Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cinelerra-5.1/thirdparty/Makefile b/cinelerra-5.1/thirdparty/Makefile index 2dd2867e..5f0924f4 100644 --- a/cinelerra-5.1/thirdparty/Makefile +++ b/cinelerra-5.1/thirdparty/Makefile @@ -183,6 +183,7 @@ ffmpeg.cfg_params= \ #cmake_config=echo "exec cmake \$$$$@ $(1)" > ./configure; chmod +x ./configure; cmake_config=echo 'cmake "$$$$@" "$(1)"' > ./configure; chmod +x ./configure; +libbthread.cfg_vars?= echo "exec true" > ./configure; chmod +x ./configure; a52dec.mak_params?= ; cd $(call bld_path,a52dec,include); ln -sf . a52dec a52dec.cfg_vars?= CFLAGS+=" -U__FreeBSD__ $(call inc_path,djbfft)" LIBS+=" $(call ld_path,djbfft)" a52dec.cfg_params?=--enable-djbfft @@ -317,6 +318,7 @@ else rules=$(eval $(1)) endif +$(call rules,$(call std-build,libbthread)) $(call rules,$(call std-build,a52dec,djbfft)) $(call rules,$(call std-build,djbfft)) $(call rules,$(call std-build,audiofile)) @@ -391,8 +393,8 @@ clean: rm -rf $(BLD) install: - cp -a $(ver_mjpegtools)/mpeg2enc/mpeg2enc $(BINDIR)/. - cp -a $(ver_mjpegtools)/mplex/mplex $(BINDIR)/. +# cp -a $(ver_mjpegtools)/mpeg2enc/mpeg2enc $(BINDIR)/. +# cp -a $(ver_mjpegtools)/mplex/mplex $(BINDIR)/. else # not WANT_CIN_3RDPARTY all: -- 2.31.1
From 534b4762efc8fbd76129947a6c5b6352548898b1 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sun, 23 May 2021 15:10:36 +0300 Subject: [PATCH 28/29] correctly-named libbthread patch --- cinelerra-5.1/thirdparty/src/libbthread-master.patch1 | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 cinelerra-5.1/thirdparty/src/libbthread-master.patch1 diff --git a/cinelerra-5.1/thirdparty/src/libbthread-master.patch1 b/cinelerra-5.1/thirdparty/src/libbthread-master.patch1 new file mode 100644 index 00000000..7d22bf04 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/libbthread-master.patch1 @@ -0,0 +1,9 @@ +--- /dev/null 2021-05-22 06:52:04.572000000 +0300 ++++ libbthread-master/Makefile 2021-05-23 15:06:41.348461769 +0300 +@@ -0,0 +1,6 @@ ++all: ++ mv pt-test.c pt-test ++ cat `ls *.c` > just-pt.c ++ g++ -c -o jpt.o just-pt.c -I. ++ ar crs jpt.a jpt.o ++ -- 2.31.1
From 11b5e3f3b68a472da2100b071dfe7258ffa54bbb Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sun, 23 May 2021 15:34:01 +0300 Subject: [PATCH 29/29] DV ifdefs in plugins/livevide --- cinelerra-5.1/plugins/livevideo/livevideo.C | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cinelerra-5.1/plugins/livevideo/livevideo.C b/cinelerra-5.1/plugins/livevideo/livevideo.C index 1aa84222..c30034ab 100644 --- a/cinelerra-5.1/plugins/livevideo/livevideo.C +++ b/cinelerra-5.1/plugins/livevideo/livevideo.C @@ -31,7 +31,9 @@ #include "filexml.h" #include "guicast.h" #include "language.h" +#if HAVE_LIBDV #include "libdv.h" +#endif #include "libmjpeg.h" #include "mwindow.h" #include "picture.h" @@ -150,7 +152,9 @@ public: int prev_channel; int w, h; // Decompressors for different video drivers +#if HAVE_DV dv_t *dv; +#endif mjpeg_t *mjpeg; }; @@ -350,7 +354,9 @@ LiveVideo::LiveVideo(PluginServer *server) w = xS(320); h = yS(640); prev_channel = 0; +#if HAVE_DV dv = 0; +#endif mjpeg = 0; picture = 0; this->server = server; @@ -370,7 +376,9 @@ LiveVideo::~LiveVideo() delete channeldb; delete temp; +#if HAVE_DV if(dv) dv_delete(dv); +#endif if(mjpeg) mjpeg_delete(mjpeg); delete picture; } @@ -499,6 +507,7 @@ int LiveVideo::process_buffer(VFrame *frame, { switch(session->vconfig_in->driver) { +#if HAVE_DV case CAPTURE_FIREWIRE: case CAPTURE_IEC61883: // Decompress a DV frame from the driver @@ -511,7 +520,7 @@ int LiveVideo::process_buffer(VFrame *frame, frame->get_color_model()); frame->set_opengl_state(VFrame::RAM); break; - +#endif case VIDEO4LINUX2JPEG: if(!mjpeg) mjpeg = mjpeg_new(frame->get_w(), -- 2.31.1
#!/bin/bash export DISPLAY=":1" export LC_CTYPE="en_US.UTF-8" vncserver -kill :1 rm $PREFIX/tmp/.X1-lock rm $PREFIX/tmp/.X11-unix/X1 vncserver xfwm4& LD_PRELOAD=$PREFIX/lib/libandroid-shmem.so bin/cin
From 121af06653738abf2d4004084042478c89cb700d Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Sun, 23 May 2021 14:55:50 +0300 Subject: [PATCH 27/29] libzmpeg3 Makefile: add libbthread (termux) --- cinelerra-5.1/libzmpeg3/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cinelerra-5.1/libzmpeg3/Makefile b/cinelerra-5.1/libzmpeg3/Makefile index aeade023..47a0596f 100644 --- a/cinelerra-5.1/libzmpeg3/Makefile +++ b/cinelerra-5.1/libzmpeg3/Makefile @@ -80,7 +80,7 @@ UTILS += $(OBJDIR)/zmpeg3cc2txt LIBS = -lm -lpthread -LIBS += $(lib_a52dec) $(lib_djbfft) +LIBS += $(lib_a52dec) $(lib_djbfft) $(lib_libbthread) ifeq ($(DYNAMIC_FONTS), 1) LIBS += -lX11 -- 2.31.1
my_configure
Description: Binary data
-- Cin mailing list [email protected] https://lists.cinelerra-gg.org/mailman/listinfo/cin

