diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C index df39763c..786ca723 100644 --- a/cinelerra-5.1/cinelerra/ffmpeg.C +++ b/cinelerra-5.1/cinelerra/ffmpeg.C @@ -404,7 +404,7 @@ int FFStream::decode_activate() } while( ret >= 0 && st != 0 && !reading ) { AVCodecID codec_id = st->codecpar->codec_id; - AVCodec *decoder = 0; + const AVCodec *decoder = 0; if( is_video() ) { if( ffmpeg->opt_video_decoder ) decoder = avcodec_find_decoder_by_name(ffmpeg->opt_video_decoder); @@ -1243,6 +1243,7 @@ int FFVideoStream::probe(int64_t pos) ret = -1; ret = ret > 0 ? 1 : ret < 0 ? -1 : 0; + av_frame_free(&frame); return ret; } @@ -2089,7 +2090,7 @@ void FFMPEG::scan_audio_options(Asset *asset, EDL *edl) cin_fmt = (int)av_get_sample_fmt(cin_sample_fmt); if( cin_fmt < 0 ) { char audio_codec[BCSTRLEN]; audio_codec[0] = 0; - AVCodec *av_codec = !FFMPEG::get_codec(audio_codec, "audio", asset->acodec) ? + const AVCodec *av_codec = !FFMPEG::get_codec(audio_codec, "audio", asset->acodec) ? avcodec_find_encoder_by_name(audio_codec) : 0; if( av_codec && av_codec->sample_fmts ) cin_fmt = find_best_sample_fmt_of_list(av_codec->sample_fmts, AV_SAMPLE_FMT_FLT); @@ -2125,7 +2126,7 @@ void FFMPEG::scan_video_options(Asset *asset, EDL *edl) cin_fmt = (int)av_get_pix_fmt(cin_pix_fmt); if( cin_fmt < 0 ) { char video_codec[BCSTRLEN]; video_codec[0] = 0; - AVCodec *av_codec = !get_codec(video_codec, "video", asset->vcodec) ? + const AVCodec *av_codec = !get_codec(video_codec, "video", asset->vcodec) ? avcodec_find_encoder_by_name(video_codec) : 0; if( av_codec && av_codec->pix_fmts ) { if( 0 && edl ) { // frequently picks a bad answer @@ -2322,7 +2323,7 @@ int FFCodecRemaps::add(const char *val) int FFCodecRemaps::update(AVCodecID &codec_id, AVCodec *&decoder) { - AVCodec *codec = avcodec_find_decoder(codec_id); + const AVCodec *codec = avcodec_find_decoder(codec_id); if( !codec ) return -1; const char *name = codec->name; FFCodecRemaps &map = *this; @@ -2542,7 +2543,7 @@ int FFMPEG::init_decoder(const char *filename) char *sp = strrchr(bp, '.'); if( !sp ) sp = bp + strlen(bp); FILE *fp = 0; - AVInputFormat *ifmt = 0; + const AVInputFormat *ifmt = 0; if( sp ) { strcpy(sp, ".opts"); fp = fopen(file_opts, "r"); @@ -2759,7 +2760,7 @@ int FFMPEG::open_encoder(const char *type, const char *spec) AVCodecContext *ctx = 0; const AVCodecDescriptor *codec_desc = 0; - AVCodec *codec = avcodec_find_encoder_by_name(codec_name); + const AVCodec *codec = avcodec_find_encoder_by_name(codec_name); if( !codec ) { eprintf(_("cant find codec %s:%s\n"), codec_name, filename); ret = 1; @@ -3651,7 +3652,7 @@ Preferences *FFMPEG::ff_prefs() double FFVideoStream::get_rotation_angle() { int size = 0; - int *matrix = (int*)av_stream_get_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, &size); + uint32_t *matrix = (uint32_t*)av_stream_get_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, &size); int len = size/sizeof(*matrix); if( !matrix || len < 5 ) return 0; const double s = 1/65536.; @@ -3875,7 +3876,7 @@ AVCodecContext *FFMPEG::activate_decoder(AVStream *st) AVDictionary *copts = 0; av_dict_copy(&copts, opts, 0); AVCodecID codec_id = st->codecpar->codec_id; - AVCodec *decoder = 0; + const AVCodec *decoder = 0; switch( st->codecpar->codec_type ) { case AVMEDIA_TYPE_VIDEO: if( opt_video_decoder ) 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; diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac index ceddac2a..9404d2fb 100644 --- a/cinelerra-5.1/configure.ac +++ b/cinelerra-5.1/configure.ac @@ -1,11 +1,11 @@ -AC_PREREQ([2.69]) -AC_INIT([cinelerra], [5.1], [mail@lists.cinelerra-gg.org]) +AC_PREREQ([2.71]) +AC_INIT([cinelerra],[5.1],[mail@lists.cinelerra-gg.org]) AM_INIT_AUTOMAKE([foreign]) AM_PROG_AS -AC_LANG_CPLUSPLUS -AC_LANG_C +AC_LANG([C++]) +AC_LANG([C]) AC_PROG_CXX CFG_CFLAGS+=" -fno-omit-frame-pointer -fno-math-errno -fno-signed-zeros" @@ -24,14 +24,15 @@ CFG_CFLAGS+=" -D__STDC_CONSTANT_MACROS" CFG_CFLAGS+=" -D__STDC_LIMIT_MACROS" 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 -I/usr/local/include" +CFG_CFLAGS+=" -I/data/data/com.termux/files/usr/include/freetype2" CFG_CFLAGS+=" -I/usr/include/freetype2 -I/usr/local/include/freetype2" CFG_CFLAGS+=" -I/usr/include/uuid -I/usr/local/include/uuid" CFG_CFLAGS+=" -I/usr/include/mjpegtools -I/usr/local/include/mjpegtools" AC_DEFUN([CHECK_WITH], [ AC_ARG_WITH([$1], - AC_HELP_STRING([--with-[$1]], [$2 ($4)]), + AS_HELP_STRING([--with-[$1]],[$2 ($4)]), [WANT_$3=$withval], [WANT_$3='$4']) AC_SUBST([WANT_$3]) ]) @@ -64,6 +65,45 @@ CHECK_WITH([nv],[nvenc/nvdec ffnvcodec api],[NV],[yes]) CHECK_WITH([cuda],[nv cuda plugins],[CUDA],[auto]) CHECK_WITH([clang],[use clang instead of gcc/g++],[CLANG],[no]) +# Checks for header files. +AC_PATH_X +AC_CHECK_HEADERS([arpa/inet.h fcntl.h fenv.h inttypes.h libintl.h malloc.h mntent.h netdb.h netinet/in.h stdint.h strings.h sys/file.h sys/ioctl.h sys/socket.h sys/statfs.h sys/time.h unistd.h utime.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_CHECK_HEADER_STDBOOL +AC_C_INLINE +AC_TYPE_INT16_T +AC_TYPE_INT32_T +AC_TYPE_INT64_T +AC_TYPE_INT8_T +AC_TYPE_OFF_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T +AC_CHECK_MEMBERS([struct stat.st_blksize]) +AC_STRUCT_ST_BLOCKS +AC_CHECK_MEMBERS([struct stat.st_rdev]) +AC_TYPE_UINT16_T +AC_TYPE_UINT32_T +AC_TYPE_UINT64_T +AC_TYPE_UINT8_T + +# Checks for library functions. +AC_FUNC_ALLOCA +AC_FUNC_ERROR_AT_LINE +AC_FUNC_FORK +AC_FUNC_FSEEKO +AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK +AC_FUNC_MALLOC +AC_FUNC_MKTIME +AC_FUNC_MMAP +AC_FUNC_REALLOC +AC_FUNC_STRERROR_R +AC_FUNC_STRNLEN +AC_FUNC_STRTOD +AC_CHECK_FUNCS([atexit bzero dup2 endpwent floor ftruncate getcwd gethostbyname gettimeofday inet_ntoa localtime_r memmove memset mkdir mkfifo modf munmap nl_langinfo pow putenv realpath rint rmdir select setenv setlocale socket sqrt strcasecmp strchr strdup strerror strncasecmp strrchr strstr strtol strtoul tzset uname utime]) + + if test "x$WANT_LV2" != "xno"; then GTK2_LIBS=`pkg-config --libs gtk+-2.0` AC_CHECK_LIB([m], [gtk_init], [HAVE_gtk=yes], [HAVE_gtk=no], [$GTK2_LIBS]) @@ -153,7 +193,7 @@ inc_$1="$4" AC_DEFUN([PKG_3RD],[ AC_ARG_ENABLE([$1], - AC_HELP_STRING([--enable-$1],[build $1 ($2)]), + AS_HELP_STRING([--enable-$1],[build $1 ($2)]), [PKG_$1=$enableval], [PKG_$1=$2]) PKG_DEF([$1],[$3],[$4],[$5]) ]) @@ -432,7 +472,7 @@ AC_SUBST(STATIC_PKGS) AC_DEFUN([CHECK_ENABLE], [ AC_ARG_ENABLE([$1], - AC_HELP_STRING([--enable-[$1]], [$3 ([$4])]), + AS_HELP_STRING([--enable-[$1]],[$3 ([$4])]), [WANT_$2=$enableval], [WANT_$2=[$4]]) ]) @@ -615,7 +655,7 @@ AC_DEFUN([CHECK_WANT], [ RESULT=yes # WANT_$1 AC_ARG_WITH(m4_tolower([$1]), - AC_HELP_STRING([m4_join([-],[--with],m4_tolower([$1]))], [$3] (auto)), + AS_HELP_STRING([m4_join([-],[--with],m4_tolower([$1]))],[$3 (auto)]), [WANT_$1=$withval],[WANT_$1=$2]) m4_quote($4) if test "x$WANT_$1" = "xauto" ; then @@ -821,14 +861,14 @@ HAVE_ilmbase=no \ OBJDIR=`uname -m` AC_SUBST(OBJDIR) -echo "AC_HELP_STRING([Reason],[Package])" -echo "AC_HELP_STRING([------],[-------])" +echo "AS_HELP_STRING([Reason],[Package])" +echo "AS_HELP_STRING([------],[-------])" AC_DEFUN([PKG_DISABLED],[ PKG_$1="no" BUILD_$1=0 AC_SUBST(BUILD_$1) - echo "AC_HELP_STRING([disabled],[$1])" + echo "AS_HELP_STRING([disabled],[$1])" ]) AC_DEFUN([PKG_SHARED],[ PKG_$1="shared" @@ -843,7 +883,7 @@ AC_DEFUN([PKG_STATIC],[ BUILD_$1=1 AC_SUBST(BUILD_$1) STATIC_BLDS+=" [$1]" - echo "AC_HELP_STRING([$2],[$1])" + echo "AS_HELP_STRING([$2],[$1])" fi ]) @@ -937,11 +977,11 @@ fi AC_SUBST(STATIC_BLDS) for f in $SHARED_LIBS; do - echo "AC_HELP_STRING([shared],[$f])" + echo "AS_HELP_STRING([shared],[$f])" done AC_SUBST(SHARED_LIBS) for f in $SYSTEM_LIBS; do - echo "AC_HELP_STRING([system],[$f])" + echo "AS_HELP_STRING([system],[$f])" done AC_SUBST(SYSTEM_LIBS) @@ -955,7 +995,7 @@ for v in GL XFT XXF86VM OSS ALSA FIREWIRE OGG DV DVB LADSPA \ VAAPI VDPAU CUDA NV WINTV X10TV; do eval vv="\$WANT_$v" if test "x$vv" != "xno"; then - CFG_CFLAGS+=" -DHAVE_$v" + echo "CFG_CFLAGS+="-DHAVE_$v"" vv=with else vv=without diff --git a/cinelerra-5.1/guicast/bcresources.h b/cinelerra-5.1/guicast/bcresources.h index 2b305f80..c3f85a35 100644 --- a/cinelerra-5.1/guicast/bcresources.h +++ b/cinelerra-5.1/guicast/bcresources.h @@ -39,6 +39,8 @@ #include "vframe.inc" #include +#include +#include typedef struct { diff --git a/cinelerra-5.1/guicast/bcwindowbase.h b/cinelerra-5.1/guicast/bcwindowbase.h index e4eb8ba4..8a034acd 100644 --- a/cinelerra-5.1/guicast/bcwindowbase.h +++ b/cinelerra-5.1/guicast/bcwindowbase.h @@ -97,6 +97,10 @@ #include #endif +#include +#include +#include + // scaled x,y unit #define xS(v) (BC_WindowBase::get_resources()->x_scale*(v)) #define yS(v) (BC_WindowBase::get_resources()->y_scale*(v)) diff --git a/cinelerra-5.1/guicast/thread.h b/cinelerra-5.1/guicast/thread.h index 79f3e713..bec2509d 100644 --- a/cinelerra-5.1/guicast/thread.h +++ b/cinelerra-5.1/guicast/thread.h @@ -29,13 +29,15 @@ #ifndef NO_TID #include +#if defined(__GLIBC__) // 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(); } +//static inline long gettid() { return (long)pthread_self(); } #endif +#endif // GLIBC // The thread does not autodelete by default. // If autodelete is 1 the thread autodeletes.