[Cin] Build with external ffmpeg fixed, thanks!

Andrew Randrianasulu randrianasulu at gmail.com
Mon May 13 03:36:58 CEST 2019

by https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=commit;h=413642aafb5e96e9c72b53312176838526fbfd97

while I still have some troubles, may be because I run configure and after it initially failed I just rerun make in cinelerra source directory
I was forced to make ffmpeg.git symlink in thirdparty folder, because otherwise mpeg2enc part of cinelerra failed to link correctly. But if I made this symlinc before cloning/patching ffmpeg.git - patching will fail!

Right now diff between my thirdparty/Makefile and official one looks like this:

guest at slax:/dev/shm/tmp/cinelerra-goodguy-20190512/cinelerra-5.1/thirdparty/ffmpeg$ diff -u   /dev/shm/Makefile ../Makefile
--- /dev/shm/Makefile   2019-05-13 04:23:58.274067188 +0300
+++ ../Makefile 2019-05-13 04:19:25.410065898 +0300
@@ -46,7 +46,8 @@
 ext=$(lastword $(subst ., ,$(1)))
 tarball=$(if $($(1).git),$(1).git,$(lastword $(sort $(wildcard src/$(1)*.tar.*))))
 unpack=$(call unpack_$(call ext,$(1)),$(1))
-unpack_git=git clone $($(1)) $(1)
+#unpack_git=git clone $($(1)) $(1)
+unpack_git=git clone --depth 1 https://git.ffmpeg.org/$(1)
 unpack_gz=tar -xzf $(1)
 unpack_bz2=tar -xjf $(1)
 unpack_xz=tar -xJf $(1)
@@ -109,7 +110,7 @@
 esound.ldflags=" -lm -lstdc++"
 fftw.cfg_params= --disable-fortran --enable-shared=no
 ffmpeg.cfg_params= \
-       --enable-pthreads --enable-gpl --disable-ffplay \
+       --enable-pthreads --enable-gpl --enable-opencl --enable-libdav1d --enable-frei0r --enable-libsnappy --enable-libvidstab --disable-ffplay \
        $(if $(WANT_VAAPI),--enable-vaapi,--disable-vaapi) \
        $(if $(WANT_VDPAU),--enable-vdpau,--disable-vdpau) \
        $(call if_pkg,twolame,--enable-libtwolame) \
@@ -152,7 +153,7 @@
                $(call ld_path,libvpx) \
                $(call ld_path,x264) \
                $(call ld_path,x265) \
-               -Wl,--end-group -lm -lstdc++ -pthread \
+               -Wl,--end-group -lm -lstdc++ -pthread -ldav1d -lvidstab \
                $(EXTRA_LIBS)" $(FFMPEG_EXTRA_CFG) \

 #cmake_config=echo "exec cmake \$$$$@ $(1)" > ./configure; chmod +x ./configure;

as you can see, I enabled libdav1d (0.2.1) installed locally, enabled opencl, frei0r (local), libsnappy (local, for hap encoding), and libvidstab (local).
Liblensfun requred enabling (L)GPL v3 in ffmpeg config, so I omitted it for now.

Full "no" list for ffmpeg's configure looks like this:

guest at slax:/dev/shm/tmp/cinelerra-goodguy-20190512/cinelerra-5.1/thirdparty/ffmpeg$ ./configure --help | grep no
  --disable-logging        do not log configure debug information
                           not part of the dynamic linker search path
                           and binaries will be under GPL [no]
  --enable-version3        upgrade (L)GPL to version 3 [no]
  --enable-nonfree         allow use of nonfree code, the resulting libs
                           and binaries will be unredistributable [no]
  --disable-static         do not build static libraries [no]
  --enable-shared          build shared libraries [no]
  --disable-autodetect     disable automatically detected external libraries [no]
  --disable-programs       do not build command line programs
  --disable-doc            do not build documentation
  --disable-htmlpages      do not build HTML documentation pages
  --disable-manpages       do not build man documentation pages
  --disable-podpages       do not build POD documentation pages
  --disable-txtpages       do not build text documentation pages
  --enable-avresample      enable libavresample build (deprecated) [no]
  --disable-network        disable network support [no]
  will become enabled, if all their other dependencies are met and they are not
  Also note that the following help text describes the purpose of the libraries
  themselves, not all their features will necessarily be usable by FFmpeg.
  --enable-avisynth        enable reading of AviSynth script files [no]
  --enable-chromaprint     enable audio fingerprinting with chromaprint [no]
  --enable-frei0r          enable frei0r video filtering [no]
                           if openssl, librtmp or gmp is not used [no]
                           if openssl or librtmp is not used [no]
                           if openssl, libtls or mbedtls is not used [no]
  --enable-jni             enable JNI support [no]
  --enable-ladspa          enable LADSPA audio filtering [no]
  --enable-libaom          enable AV1 video encoding/decoding via libaom [no]
  --enable-libaribb24      enable ARIB text and caption decoding via libaribb24 [no]
                           needed for subtitles and ass filter [no]
  --enable-libbluray       enable BluRay reading using libbluray [no]
  --enable-libbs2b         enable bs2b DSP library [no]
  --enable-libcaca         enable textual display using libcaca [no]
  --enable-libcelt         enable CELT decoding via libcelt [no]
  --enable-libcdio         enable audio CD grabbing with libcdio [no]
  --enable-libcodec2       enable codec2 en/decoding using libcodec2 [no]
  --enable-libdav1d        enable AV1 decoding via libdav1d [no]
  --enable-libdavs2        enable AVS2 decoding via libdavs2 [no]
                           and libraw1394 [no]
  --enable-libfdk-aac      enable AAC de/encoding via libfdk-aac [no]
  --enable-libflite        enable flite (voice synthesis) support via libflite [no]
  --enable-libfontconfig   enable libfontconfig, useful for drawtext filter [no]
  --enable-libfreetype     enable libfreetype, needed for drawtext filter [no]
  --enable-libfribidi      enable libfribidi, improves drawtext filter [no]
  --enable-libgme          enable Game Music Emu via libgme [no]
  --enable-libgsm          enable GSM de/encoding via libgsm [no]
  --enable-libiec61883     enable iec61883 via libiec61883 [no]
  --enable-libilbc         enable iLBC de/encoding via libilbc [no]
  --enable-libjack         enable JACK audio sound server [no]
  --enable-libklvanc       enable Kernel Labs VANC processing [no]
  --enable-libkvazaar      enable HEVC encoding via libkvazaar [no]
  --enable-liblensfun      enable lensfun lens correction [no]
  --enable-libmodplug      enable ModPlug via libmodplug [no]
  --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
  --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
  --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
  --enable-libopencv       enable video filtering via libopencv [no]
  --enable-libopenh264     enable H.264 encoding via OpenH264 [no]
  --enable-libopenjpeg     enable JPEG 2000 de/encoding via OpenJPEG [no]
  --enable-libopenmpt      enable decoding tracked files via libopenmpt [no]
  --enable-libopus         enable Opus de/encoding via libopus [no]
  --enable-libpulse        enable Pulseaudio input via libpulse [no]
  --enable-librsvg         enable SVG rasterization via librsvg [no]
  --enable-librubberband   enable rubberband needed for rubberband filter [no]
  --enable-librtmp         enable RTMP[E] support via librtmp [no]
  --enable-libshine        enable fixed-point MP3 encoding via libshine [no]
  --enable-libsmbclient    enable Samba protocol via libsmbclient [no]
  --enable-libsnappy       enable Snappy compression, needed for hap encoding [no]
  --enable-libsoxr         enable Include libsoxr resampling [no]
  --enable-libspeex        enable Speex de/encoding via libspeex [no]
  --enable-libsrt          enable Haivision SRT protocol via libsrt [no]
  --enable-libssh          enable SFTP protocol via libssh [no]
                           for DNN based filters like sr [no]
  --enable-libtesseract    enable Tesseract, needed for ocr filter [no]
  --enable-libtheora       enable Theora encoding via libtheora [no]
                           if openssl, gnutls or mbedtls is not used [no]
  --enable-libtwolame      enable MP2 encoding via libtwolame [no]
  --enable-libv4l2         enable libv4l2/v4l-utils [no]
  --enable-libvidstab      enable video stabilization using vid.stab [no]
  --enable-libvmaf         enable vmaf filter via libvmaf [no]
  --enable-libvo-amrwbenc  enable AMR-WB encoding via libvo-amrwbenc [no]
                           native implementation exists [no]
  --enable-libvpx          enable VP8 and VP9 de/encoding via libvpx [no]
  --enable-libwavpack      enable wavpack encoding via libwavpack [no]
  --enable-libwebp         enable WebP encoding via libwebp [no]
  --enable-libx264         enable H.264 encoding via x264 [no]
  --enable-libx265         enable HEVC encoding via x265 [no]
  --enable-libxavs         enable AVS encoding via xavs [no]
  --enable-libxavs2        enable AVS2 encoding via xavs2 [no]
                           native MPEG-4/Xvid encoder exists [no]
                           for dash demuxing support [no]
  --enable-libzimg         enable z.lib, needed for zscale filter [no]
  --enable-libzmq          enable message passing via libzmq [no]
  --enable-libzvbi         enable teletext support via libzvbi [no]
  --enable-lv2             enable LV2 audio filtering [no]
  --enable-decklink        enable Blackmagic DeckLink I/O support [no]
                           if openssl, gnutls or libtls is not used [no]
  --enable-mediacodec      enable Android MediaCodec support [no]
  --enable-libmysofa       enable libmysofa, needed for sofalizer filter [no]
  --enable-openal          enable OpenAL 1.1 capture support [no]
  --enable-opencl          enable OpenCL processing [no]
  --enable-opengl          enable OpenGL rendering [no]
                           if gnutls, libtls or mbedtls is not used [no]
                           Windows if openssl and gnutls are not used [autodetect]
                           on OSX if openssl and gnutls are not used [autodetect]
  --enable-vapoursynth     enable VapourSynth demuxer [no]
  --enable-cuda-nvcc       enable Nvidia CUDA compiler [no]
  --enable-libdrm          enable DRM code (Linux) [no]
  --enable-libmfx          enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no]
  --enable-libnpp          enable Nvidia Performance Primitives-based code [no]
  --enable-mmal            enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no]
  --enable-omx             enable OpenMAX IL code [no]
  --enable-omx-rpi         enable OpenMAX IL code for Raspberry Pi [no]
  --enable-rkmpp           enable Rockchip Media Process Platform code [no]
  --disable-amd3dnow       disable 3DNow! optimizations
  --disable-amd3dnowext    disable 3DNow! extended optimizations
                           Cannot be combined with --target-exec
  --samples=PATH           location of test samples for FATE, if not set use
  --disable-valgrind-backtrace do not print a backtrace under Valgrind
  --ignore-tests=TESTS     comma-separated list (without "fate-" prefix
                           in the name) of tests whose result is ignored

so, plenty of things one can enable .....

More information about the Cin mailing list