From fc79a51a92fc4f1aebba1fd05d336a727abb4f5a Mon Sep 17 00:00:00 2001 From: Tee KOBAYASHI Date: Fri, 25 Mar 2022 04:02:40 +0900 Subject: [PATCH] new package: transcode --- packages/transcode/build.sh | 56 +++++++++ packages/transcode/configure.in.patch | 108 ++++++++++++++++++ .../transcode/export-ffmpeg_cfg.c.patch.txt | 11 ++ .../transcode/filter-filter_compare.c.patch | 11 ++ packages/transcode/filter-filter_text.c.patch | 11 ++ .../transcode/filter-parse_csv.awk.in.patch | 11 ++ .../filter-preview-filter_pv.c.patch | 13 +++ packages/transcode/import-clone.c.patch | 11 ++ packages/transcode/import-dvd_reader.c.patch | 11 ++ .../transcode/import-import_mplayer.c.patch | 17 +++ packages/transcode/import-import_vnc.c.patch | 11 ++ packages/transcode/pvm3-tcpvmexportd.c.patch | 20 ++++ packages/transcode/src-tc_defaults.h.patch | 11 ++ packages/transcode/src-transcode.c.patch | 53 +++++++++ packages/transcode/tools-avisync.c.patch | 11 ++ 15 files changed, 366 insertions(+) create mode 100644 packages/transcode/build.sh create mode 100644 packages/transcode/configure.in.patch create mode 100644 packages/transcode/export-ffmpeg_cfg.c.patch.txt create mode 100644 packages/transcode/filter-filter_compare.c.patch create mode 100644 packages/transcode/filter-filter_text.c.patch create mode 100644 packages/transcode/filter-parse_csv.awk.in.patch create mode 100644 packages/transcode/filter-preview-filter_pv.c.patch create mode 100644 packages/transcode/import-clone.c.patch create mode 100644 packages/transcode/import-dvd_reader.c.patch create mode 100644 packages/transcode/import-import_mplayer.c.patch create mode 100644 packages/transcode/import-import_vnc.c.patch create mode 100644 packages/transcode/pvm3-tcpvmexportd.c.patch create mode 100644 packages/transcode/src-tc_defaults.h.patch create mode 100644 packages/transcode/src-transcode.c.patch create mode 100644 packages/transcode/tools-avisync.c.patch diff --git a/packages/transcode/build.sh b/packages/transcode/build.sh new file mode 100644 index 000000000..9e846c469 --- /dev/null +++ b/packages/transcode/build.sh @@ -0,0 +1,56 @@ +# Dead upstream. +TERMUX_PKG_HOMEPAGE=https://packages.gentoo.org/packages/media-video/transcode +TERMUX_PKG_DESCRIPTION="A video stream processing utility" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=1.1.7 +TERMUX_PKG_SRCURL=(https://ftp-osl.osuosl.org/pub/gentoo/distfiles/transcode-${TERMUX_PKG_VERSION}.tar.bz2 + https://dev.gentoo.org/~mgorny/dist/transcode-${TERMUX_PKG_VERSION}-patchset.tar.bz2) +TERMUX_PKG_SHA256=(1e4e72d8e0dd62a80b8dd90699f5ca64c9b0cb37a5c9325c184166a9654f0a92 + 487866077b7227fe9921b742edea9d01749edb3b7e50162923c6a60748d94248) +TERMUX_PKG_DEPENDS="freetype, gawk, imagemagick, libandroid-glob, libandroid-shmem, libdvdread, libjpeg-turbo, liblzo, libmp3lame, libogg, libtheora, libvorbis, libxml2, zlib" +TERMUX_PKG_BUILD_DEPENDS="libiconv, libx264, xvidcore" +# FFmpeg 5.0 is not yet supported by the current patchset. +TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" +--disable-ffmpeg +--enable-freetype2 +--enable-xvid +--enable-x264 +--enable-ogg +--enable-vorbis +--enable-theora +--enable-lzo +--enable-libxml2 +--enable-imagemagick +--with-x=no +" + +termux_step_post_get_source() { + local _PATCH_FILES=" + transcode-1.1.7-freetype251.patch + transcode-1.1.7-imagemagick7.patch + " + pushd transcode-${TERMUX_PKG_VERSION}-patchset + cat ${_PATCH_FILES} | patch --silent -p1 -d .. + popd +} + +termux_step_pre_configure() { + autoreconf -fi + + CFLAGS+=" -fcommon" + LDFLAGS+=" -landroid-glob -landroid-shmem" + + local p + for p in lame xvid libdvdread pvm3 lzo a52 faac libjpegmmx libjpeg bsdav iconv; do + TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" + --with-${p}-prefix=$TERMUX_PREFIX + --with-${p}-includes=$TERMUX_PREFIX/include + --with-${p}-libs=$TERMUX_PREFIX/lib + " + done + + if [ "$TERMUX_ARCH" = "i686" ]; then + TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --disable-mmx" + fi +} diff --git a/packages/transcode/configure.in.patch b/packages/transcode/configure.in.patch new file mode 100644 index 000000000..a99cd41c8 --- /dev/null +++ b/packages/transcode/configure.in.patch @@ -0,0 +1,108 @@ +--- a/configure.in ++++ b/configure.in +@@ -776,42 +776,6 @@ + LAME_CFLAGS="$lame_ii" + fi + CPPFLAGS="$save_CPPFLAGS" +- +- AC_MSG_CHECKING([lame version]) +- ac_save_CFLAGS="$CFLAGS" +- ac_save_LIBS="$LIBS" +- CFLAGS="$CFLAGS $LAME_CFLAGS" +- LIBS="$LIBS $LAME_LIBS" +- AC_RUN_IFELSE([AC_LANG_SOURCE([[ +-#include +- +-#ifdef HAVE_LAME_INC +-#include +-#else +-#include +-#endif +- +-int main () { +- lame_version_t lv; +- get_lame_version_numerical(&lv); +- if(lv.alpha || lv.beta) lv.minor--; +- printf("%d%d\n", lv.major, lv.minor); +- return 0; +-} +-]])], +- [lame_version="`./conftest$ac_exeext`"], +- [AC_MSG_RESULT([failed]) +- TC_PKG_ERROR(lame, lame.h, yes, lame, [http://www.mp3dev.org/], +- [cannot compile and run a test program])],, +- [AC_MSG_RESULT([cross compiling; assumed OK...])]) +- CFLAGS="$ac_save_CFLAGS" +- LIBS="$ac_save_LIBS" +- +- if test 393 -ge "$lame_version" ; then +- have_lame="no" +- TC_PKG_ERROR(lame, lame.h, yes, lame, [http://www.mp3dev.org/], +- [lame version < 3.93]) +- fi + fi + TC_PKG_HAVE(lame, LAME) + +@@ -820,62 +784,12 @@ + dnl + TC_PKG_CHECK(xvid, no, xvid, no, xvid.h, xvidcore, xvid_global, xvid, + [http://www.xvid.org/]) +-if test x"$have_xvid" = x"yes" ; then +- AC_MSG_CHECKING([xvid version >= 1.0]) +- AC_RUN_IFELSE([AC_LANG_SOURCE([[ +-#include +-#include +- +-int main() { +- printf("%s\n", (XVID_API >= XVID_MAKE_API(4, 0)) ?"yes" :"no"); +- return 0; +-} +-]])], +- [xvid_version_ok="`./conftest$ac_exeext`"], +- [AC_MSG_RESULT([failed]) +- TC_PKG_ERROR(xvid, xvid.h, yes, xvid, [http://www.xvid.org/], +- [cannot compile and run a test program])],, +- [AC_MSG_RESULT([cross compiling; assumed OK...])]) +- if test x"$xvid_version_ok" = x"yes"; then +- XVID_LIBS="-lxvidcore" +- else +- have_xvid="no" +- TC_PKG_ERROR(xvid, xvid.h, yes, xvid, [http://www.xvid.org/], +- [XviD version < 1.0]) +- fi +-fi + TC_PKG_HAVE(xvid, XVID) + + dnl + dnl x264 + dnl + TC_PKG_CONFIG_CHECK(x264, no, X264, x264, [http://developers.videolan.org/x264.html]) +-if test x"$have_x264" = x"yes" ; then +- AC_MSG_CHECKING([x264 version]) +- AC_RUN_IFELSE([AC_LANG_SOURCE([[ +-#include +-#include /* required by x264.h */ +-#include +- +-int main() { +- printf("%d\n", X264_BUILD); +- return 0; +-} +-]])], +- [x264_version="`./conftest$ac_exeext`"], +- [AC_MSG_RESULT([failed]) +- TC_PKG_ERROR(x264, x264.h, yes, x264, +- [http://developers.videolan.org/x264.html], +- [cannot compile and run a test program])], +- [AC_MSG_RESULT([cross compiling; assumed OK...]) +- x264_version=54]) +- if test 54 -gt "$x264_version"; then +- have_x264="no" +- TC_PKG_ERROR(x264, x264.h, yes, x264, +- [http://developers.videolan.org/x264.html], +- [x264 version too old (must be at least 54)]) +- fi +-fi + TC_PKG_HAVE(x264, X264) + + dnl diff --git a/packages/transcode/export-ffmpeg_cfg.c.patch.txt b/packages/transcode/export-ffmpeg_cfg.c.patch.txt new file mode 100644 index 000000000..fdb8b7473 --- /dev/null +++ b/packages/transcode/export-ffmpeg_cfg.c.patch.txt @@ -0,0 +1,11 @@ +--- a/export/ffmpeg_cfg.c ++++ b/export/ffmpeg_cfg.c +@@ -125,7 +125,7 @@ + //int lavc_param_abitrate = 224; + + char *lavc_param_video_preset = "none"; +-char *lavc_param_ffmpeg_datadir = "/usr/share/ffmpeg"; ++char *lavc_param_ffmpeg_datadir = "@TERMUX_PREFIX@/share/ffmpeg"; + + TCConfigEntry lavcopts_conf[]={ + // {"acodec", &lavc_param_acodec, TCCONF_TYPE_STRING, 0, 0, 0}, diff --git a/packages/transcode/filter-filter_compare.c.patch b/packages/transcode/filter-filter_compare.c.patch new file mode 100644 index 000000000..7cd03ceb7 --- /dev/null +++ b/packages/transcode/filter-filter_compare.c.patch @@ -0,0 +1,11 @@ +--- a/filter/filter_compare.c ++++ b/filter/filter_compare.c +@@ -182,7 +182,7 @@ + + if (strlen(results_name) == 0) { + // Ponemos el nombre del fichero al original con extension dat +- strlcpy(results_name, "/tmp/compare.dat", sizeof(results_name)); ++ strlcpy(results_name, "@TERMUX_PREFIX@/tmp/compare.dat", sizeof(results_name)); + + } + if (!(compare[instance]->results = fopen(results_name, "w"))) diff --git a/packages/transcode/filter-filter_text.c.patch b/packages/transcode/filter-filter_text.c.patch new file mode 100644 index 000000000..a1429bc10 --- /dev/null +++ b/packages/transcode/filter-filter_text.c.patch @@ -0,0 +1,11 @@ +--- a/filter/filter_text.c ++++ b/filter/filter_text.c +@@ -232,7 +232,7 @@ + static float elapsed_ss; + static uint8_t *buf = NULL; + static uint8_t *p, *q; +- char *default_font = "/usr/share/fonts/corefonts/arial.ttf"; ++ char *default_font = "/system/fonts/DroidSans.ttf"; + extern int flip; // transcode.c + + if (ptr->tag & TC_AUDIO) diff --git a/packages/transcode/filter-parse_csv.awk.in.patch b/packages/transcode/filter-parse_csv.awk.in.patch new file mode 100644 index 000000000..e2da8198b --- /dev/null +++ b/packages/transcode/filter-parse_csv.awk.in.patch @@ -0,0 +1,11 @@ +--- a/filter/parse_csv.awk.in ++++ b/filter/parse_csv.awk.in +@@ -3,7 +3,7 @@ + # "strength", "Blending factor.", "%f", "0.9", "0.0", "2.0" + # "range", "Apply the filter only to a range", "%u-%u", "0-0", "0", "-1", "0", "-1" + # "pre", "Run as a PRE filter", "", "0" +-# "log", "Logfile for verbose info", "%s", "/tmp/logfile" ++# "log", "Logfile for verbose info", "%s", "@TERMUX_PREFIX@/tmp/logfile" + + + # "filter_logoaway.so", "remove an image from the video", "v0.1.0 (2002-12-04)", "Thomas Wehrspann", "VRY", "1" diff --git a/packages/transcode/filter-preview-filter_pv.c.patch b/packages/transcode/filter-preview-filter_pv.c.patch new file mode 100644 index 000000000..86e0a6382 --- /dev/null +++ b/packages/transcode/filter-preview-filter_pv.c.patch @@ -0,0 +1,13 @@ +--- a/filter/preview/filter_pv.c ++++ b/filter/preview/filter_pv.c +@@ -474,8 +474,8 @@ + { + FILE *f; + FILE *g; +- char tmpfile[] = "/tmp/filter-select"; +- char infile[] = "/tmp/filter-in"; ++ char tmpfile[] = "@TERMUX_PREFIX@/tmp/filter-select"; ++ char infile[] = "@TERMUX_PREFIX@/tmp/filter-in"; + char buf[1024]; + char filter_name[255]; + char *config, *c; diff --git a/packages/transcode/import-clone.c.patch b/packages/transcode/import-clone.c.patch new file mode 100644 index 000000000..a5b00ee1e --- /dev/null +++ b/packages/transcode/import-clone.c.patch @@ -0,0 +1,11 @@ +--- a/import/clone.c ++++ b/import/clone.c +@@ -323,7 +323,7 @@ + if ((a = getenv("TMPDIR")) != NULL) + tc_snprintf(b, PATH_MAX, "%s/%s", a, "fileXXXXXX"); + else +- tc_snprintf(b, PATH_MAX, "%s/%s", "/tmp", "fileXXXXXX"); ++ tc_snprintf(b, PATH_MAX, "%s/%s", "@TERMUX_PREFIX@/tmp", "fileXXXXXX"); + + name = mktemp(b); + diff --git a/packages/transcode/import-dvd_reader.c.patch b/packages/transcode/import-dvd_reader.c.patch new file mode 100644 index 000000000..41c5eec95 --- /dev/null +++ b/packages/transcode/import-dvd_reader.c.patch @@ -0,0 +1,11 @@ +--- a/import/dvd_reader.c ++++ b/import/dvd_reader.c +@@ -48,7 +48,7 @@ + #endif + + +-static char lock_file[] = "/tmp/LCK..dvd"; ++static char lock_file[] = "@TERMUX_PREFIX@/tmp/LCK..dvd"; + + /* + * lock - create a lock file for the device diff --git a/packages/transcode/import-import_mplayer.c.patch b/packages/transcode/import-import_mplayer.c.patch new file mode 100644 index 000000000..7f0ad6d92 --- /dev/null +++ b/packages/transcode/import-import_mplayer.c.patch @@ -0,0 +1,17 @@ +--- a/import/import_mplayer.c ++++ b/import/import_mplayer.c +@@ -37,10 +37,10 @@ + + + +-#define VIDEOPIPE_TEMPLATE "/tmp/mplayer2transcode-video.XXXXXX" +-#define AUDIOPIPE_TEMPLATE "/tmp/mplayer2transcode-audio.XXXXXX" +-static char videopipe[40]; +-static char audiopipe[40]; ++#define VIDEOPIPE_TEMPLATE "@TERMUX_PREFIX@/tmp/mplayer2transcode-video.XXXXXX" ++#define AUDIOPIPE_TEMPLATE "@TERMUX_PREFIX@/tmp/mplayer2transcode-audio.XXXXXX" ++static char videopipe[strlen(VIDEOPIPE_TEMPLATE)+1]; ++static char audiopipe[strlen(AUDIOPIPE_TEMPLATE)+1]; + static FILE *videopipefd = NULL; + static FILE *audiopipefd = NULL; + diff --git a/packages/transcode/import-import_vnc.c.patch b/packages/transcode/import-import_vnc.c.patch new file mode 100644 index 000000000..aa964cadb --- /dev/null +++ b/packages/transcode/import-import_vnc.c.patch @@ -0,0 +1,11 @@ +--- a/import/import_vnc.c ++++ b/import/import_vnc.c +@@ -33,7 +33,7 @@ + char fps[32]; + char cmdbuf[1024]; + +- tc_snprintf (fifo, 256, "%s-%d", "/tmp/tc-vncfifo", getpid()); ++ tc_snprintf (fifo, 256, "%s-%d", "@TERMUX_PREFIX@/tmp/tc-vncfifo", getpid()); + tc_snprintf (fps, 32, "%f", vob->fps); + tc_snprintf (cmdbuf, 1024, "%s -o %s", PROGTOCALL, fifo); + diff --git a/packages/transcode/pvm3-tcpvmexportd.c.patch b/packages/transcode/pvm3-tcpvmexportd.c.patch new file mode 100644 index 000000000..331168ea5 --- /dev/null +++ b/packages/transcode/pvm3-tcpvmexportd.c.patch @@ -0,0 +1,20 @@ +--- a/pvm3/tcpvmexportd.c ++++ b/pvm3/tcpvmexportd.c +@@ -91,7 +91,7 @@ + fprintf(stderr,"\t -c name name of slave function req in slave mode [none]\n"); + fprintf(stderr,"\t -x parameters multiplex parameters [none]\n"); + fprintf(stderr,"\t -t type elab video or audio frame (video|audio|system|multisystem) [video]\n"); +- fprintf(stderr,"\t -f name out file name [/tmp/my_file_name]\n"); ++ fprintf(stderr,"\t -f name out file name [@TERMUX_PREFIX@/tmp/my_file_name]\n"); + fprintf(stderr,"\t -1 param first parameter to pass to the slave function [null]\n"); + fprintf(stderr,"\t -2 param second parameter to pass to the slave function [null]\n"); + fprintf(stderr,"\t -3 param third parameter to pass to the slave function [null]\n"); +@@ -188,7 +188,7 @@ + char s_cmd; + char *p_argv[]={"-s",(char*)0,(char*)0,(char*)0,(char*)0,(char*)0,(char*)0,(char*)0,(char*)0,(char*)0,(char*)0}; + int s_slave=0,s_cont=1,s_file_dest; +- char *p_tmp_file="/tmp/my_file_name"; ++ char *p_tmp_file="@TERMUX_PREFIX@/tmp/my_file_name"; + pvm_config_env *p_pvm_conf; + pvm_config_filelist *p_my_filelist=NULL; + char s_hostname[MAX_BUF]; diff --git a/packages/transcode/src-tc_defaults.h.patch b/packages/transcode/src-tc_defaults.h.patch new file mode 100644 index 000000000..ae1140657 --- /dev/null +++ b/packages/transcode/src-tc_defaults.h.patch @@ -0,0 +1,11 @@ +--- a/src/tc_defaults.h ++++ b/src/tc_defaults.h +@@ -30,7 +30,7 @@ + #ifndef TC_DEFAULTS_H + #define TC_DEFAULTS_H + +-#define TC_DEFAULT_MOD_PATH "/usr/local/lib/transcode" ++#define TC_DEFAULT_MOD_PATH "@TERMUX_PREFIX@/lib/transcode" + + #define TC_DEFAULT_IN_FILE "/dev/zero" + #define TC_DEFAULT_OUT_FILE "/dev/null" diff --git a/packages/transcode/src-transcode.c.patch b/packages/transcode/src-transcode.c.patch new file mode 100644 index 000000000..9cc7cf055 --- /dev/null +++ b/packages/transcode/src-transcode.c.patch @@ -0,0 +1,53 @@ +--- a/src/transcode.c ++++ b/src/transcode.c +@@ -41,6 +41,7 @@ + + #include + #include ++#include + + #include "cmdline.h" + +@@ -215,6 +216,7 @@ + /*************************************************************************/ + + static pthread_t event_thread_id = (pthread_t)0; ++static atomic_flag event_thread_cancel; + static const char *signame = "unknown signal"; + + static void tc_stop_all(void) +@@ -271,7 +273,7 @@ + + /* Loop waiting for external events */ + for (;;) { +- pthread_testcancel(); ++ if (!atomic_flag_test_and_set(&event_thread_cancel)) pthread_exit(NULL); + + tc_socket_wait(); + +@@ -283,7 +285,7 @@ + if (tc_probe_pid > 0) + kill(tc_probe_pid, SIGTERM); + } +- pthread_testcancel(); ++ if (!atomic_flag_test_and_set(&event_thread_cancel)) pthread_exit(NULL); + } + return NULL; + } +@@ -305,7 +307,7 @@ + void *thread_status = NULL; + + // pthread_kill(event_thread_id, SIGINT); +- pthread_cancel(event_thread_id); ++ atomic_flag_clear(&event_thread_cancel); + pthread_join(event_thread_id, &thread_status); + } + } +@@ -2721,6 +2723,7 @@ + tc_error("failed to initialize socket handler"); + + // now we start the signal handler thread ++ atomic_flag_test_and_set(&event_thread_cancel); + if (pthread_create(&event_thread_id, NULL, event_thread, &sigs_to_block) != 0) + tc_error("failed to start signal handler thread"); + diff --git a/packages/transcode/tools-avisync.c.patch b/packages/transcode/tools-avisync.c.patch new file mode 100644 index 000000000..caad9a590 --- /dev/null +++ b/packages/transcode/tools-avisync.c.patch @@ -0,0 +1,11 @@ +--- a/tools/avisync.c ++++ b/tools/avisync.c +@@ -103,7 +103,7 @@ + /* for null frame encoding */ + char nulls[32000]; + long nullbytes=0; +- char tmp0[] = "/tmp/nullfile.00.avi"; /* XXX: use mktemp*() */ ++ char tmp0[] = "@TERMUX_PREFIX@/tmp/nullfile.00.avi"; /* XXX: use mktemp*() */ + + buffer_list_t *ptr; +