tsdemux: Save language tag when program is NULL
[platform/upstream/gstreamer.git] / configure.ac
index 0f3e02f..3b18db3 100644 (file)
@@ -3,7 +3,7 @@ AC_PREREQ([2.69])
 dnl initialize autoconf
 dnl when going to/from release please set the nano (fourth number) right !
 dnl releases only do Wall, git and prerelease does Werror too
-AC_INIT([GStreamer Bad Plug-ins],[1.13.0.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
+AC_INIT([GStreamer Bad Plug-ins],[1.16.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
 
 AG_GST_INIT
 
@@ -51,11 +51,11 @@ dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
 dnl - interfaces added -> increment AGE
 dnl - interfaces removed -> AGE = 0
 dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 1300, 0, 1300)
+AS_LIBTOOL(GST, 1602, 0, 1602)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.13.0.1
-GSTPB_REQ=1.13.0.1
+GST_REQ=1.16.2
+GSTPB_REQ=1.16.2
 
 dnl *** autotools stuff ****
 
@@ -107,6 +107,12 @@ AG_GST_ARCH
 dnl Determine endianness
 AC_C_BIGENDIAN
 
+dnl *** software ***
+
+dnl check for large file support
+dnl affected plugins must include config.h
+AC_SYS_LARGEFILE
+
 dnl *** checks for programs ***
 
 dnl find a compiler
@@ -186,6 +192,9 @@ dnl GLib is required
 GLIB_REQ=2.40.0
 AG_GST_GLIB_CHECK([$GLIB_REQ])
 
+dnl Needed by plugins that use g_module_*() API
+PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0)
+
 dnl checks for gstreamer
 dnl uninstalled is selected preferentially -- see pkg-config(1)
 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ], yes)
@@ -193,9 +202,49 @@ AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ], yes)
 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
 AG_GST_CHECK_GST_CONTROLLER($GST_API_VERSION, [$GST_REQ], yes)
 AG_GST_CHECK_GST_NET($GST_API_VERSION, [$GST_REQ], yes)
-AG_GST_PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-[$GST_API_VERSION], [$GST_REQ], yes)
-AG_GST_PKG_CHECK_MODULES(GST_AUDIO, gstreamer-audio-[$GST_API_VERSION], [$GST_REQ], yes)
-AG_GST_PKG_CHECK_MODULES(GST_PBUTILS, gstreamer-pbutils-[$GST_API_VERSION], [$GST_REQ], yes)
+AG_GST_PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-[$GST_API_VERSION], [$GSTPB_REQ], yes)
+AG_GST_PKG_CHECK_MODULES(GST_AUDIO, gstreamer-audio-[$GST_API_VERSION], [$GSTPB_REQ], yes)
+AG_GST_PKG_CHECK_MODULES(GST_PBUTILS, gstreamer-pbutils-[$GST_API_VERSION], [$GSTPB_REQ], yes)
+AG_GST_PKG_CHECK_MODULES(GST_GL, gstreamer-gl-[$GST_API_VERSION], [$GSTPB_REQ], no)
+AG_GST_PKG_CHECK_MODULES(GST_SDP, gstreamer-sdp-[$GST_API_VERSION], [$GSTPB_REQ], yes)
+
+if test "x$HAVE_GST_GL" = "xyes"; then
+
+  AC_MSG_CHECKING([GStreamer OpenGL window systems ...])
+  GST_GL_WINSYS=`$PKG_CONFIG --variable=gl_winsys gstreamer-gl-1.0`
+  AC_MSG_RESULT([$GST_GL_WINSYS])
+  GST_GL_HAVE_WINDOW_X11=""
+  GST_GL_HAVE_WINDOW_WAYLAND=""
+  GST_GL_HAVE_WINDOW_ANDROID=""
+  GST_GL_HAVE_WINDOW_COCOA=""
+  GST_GL_HAVE_WINDOW_EAGL=""
+  case "$GST_GL_WINSYS" in  *x11*) GST_GL_HAVE_WINDOW_X11="1" ;; esac
+  case "$GST_GL_WINSYS" in  *wayland*) GST_GL_HAVE_WINDOW_WAYLAND="1" ;; esac
+  case "$GST_GL_WINSYS" in  *android*) GST_GL_HAVE_WINDOW_ANDROID="1" ;; esac
+  case "$GST_GL_WINSYS" in  *cocoa*) GST_GL_HAVE_WINDOW_COCOA="1" ;; esac
+  case "$GST_GL_WINSYS" in  *eagl*) GST_GL_HAVE_WINDOW_EAGL="1" ;; esac
+
+  AC_MSG_CHECKING([GStreamer OpenGL platforms ...])
+  GST_GL_PLATFORMS=`$PKG_CONFIG --variable=gl_platforms gstreamer-gl-1.0`
+  AC_MSG_RESULT([$GST_GL_PLATFORMS])
+  GST_GL_HAVE_PLATFORM_GLX=""
+  GST_GL_HAVE_PLATFORM_EGL=""
+  GST_GL_HAVE_PLATFORM_CGL=""
+  GST_GL_HAVE_PLATFORM_EAGL=""
+  case "$GST_GL_PLATFORMS" in  *glx*) GST_GL_HAVE_PLATFORM_GLX="1" ;; esac
+  case "$GST_GL_PLATFORMS" in  *egl*) GST_GL_HAVE_PLATFORM_EGL="1" ;; esac
+  case "$GST_GL_PLATFORMS" in  *cgl*) GST_GL_HAVE_PLATFORM_CGL="1" ;; esac
+  case "$GST_GL_PLATFORMS" in  *eagl*) GST_GL_HAVE_PLATFORM_EAGL="1" ;; esac
+
+  AC_MSG_CHECKING([GStreamer OpenGL apis ...])
+  GST_GL_APIS=`$PKG_CONFIG --variable=gl_apis gstreamer-gl-1.0`
+  AC_MSG_RESULT([$GST_GL_APIS])
+  GST_GL_HAVE_API_GLES2=""
+  GST_GL_HAVE_API_GL=""
+  case "$GST_GL_APIS" in  *gles2*) GST_GL_HAVE_API_GLES2="1" ;; esac
+  case "$GST_GL_APIS" in "gl"|"gl "*|*" gl"|*" gl "*) GST_GL_HAVE_API_GL="1" ;; esac
+fi
+AM_CONDITIONAL(USE_OPENGL, test "x$GST_GL_HAVE_API_GL" = "x1")
 
 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
 
@@ -203,9 +252,9 @@ AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GSTPB_REQ], yes)
 
 dnl check for uninstalled plugin directories for unit tests
 AG_GST_CHECK_UNINSTALLED_SETUP([
-  AG_GST_CHECK_GST_PLUGINS_GOOD($GST_API_VERSION, [0.11.0])
-  AG_GST_CHECK_GST_PLUGINS_UGLY($GST_API_VERSION, [0.11.0])
-  AG_GST_CHECK_GST_PLUGINS_LIBAV($GST_API_VERSION, [0.11.0])
+  AG_GST_CHECK_GST_PLUGINS_GOOD($GST_API_VERSION, [$GSTPB_REQ])
+  AG_GST_CHECK_GST_PLUGINS_UGLY($GST_API_VERSION, [$GSTPB_REQ])
+  AG_GST_CHECK_GST_PLUGINS_LIBAV($GST_API_VERSION, [$GSTPB_REQ])
 ])
 
 dnl Check for documentation xrefs
@@ -257,6 +306,7 @@ dnl *** set variables based on configure arguments ***
 
 dnl GTK is optional and used in examples
 HAVE_GTK3=NO
+HAVE_GTK3_WAYLAND=""
 if test "x$BUILD_EXAMPLES" = "xyes"; then
   PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.4, HAVE_GTK3=yes, HAVE_GTK3=no)
   if test "x$HAVE_GTK3" = "xyes"; then
@@ -265,12 +315,15 @@ if test "x$BUILD_EXAMPLES" = "xyes"; then
     AC_SUBST(GTK_VERSION)
     GTK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
     AC_SUBST(GTK_BASE_DIR)
+    GTK3_TARGETS=`$PKG_CONFIG --variable=targets gtk+-3.0`
+    case "$GTK3_TARGETS" in  *wayland*) HAVE_GTK3_WAYLAND="1" ;; esac
   fi
 fi
 AC_SUBST(GTK3_LIBS)
 AC_SUBST(GTK3_CFLAGS)
 AC_SUBST(HAVE_GTK3)
 AM_CONDITIONAL(HAVE_GTK3, test "x$HAVE_GTK3" = "xyes")
+AM_CONDITIONAL(HAVE_GTK3_WAYLAND, test "x$HAVE_GTK3_WAYLAND" = "x1")
 
 dnl x11 is optional for librfb
 HAVE_X11=NO
@@ -386,9 +439,8 @@ AG_GST_CHECK_PLUGIN(videoframe_audiolevel)
 AG_GST_CHECK_PLUGIN(asfmux)
 AG_GST_CHECK_PLUGIN(audiobuffersplit)
 AG_GST_CHECK_PLUGIN(audiofxbad)
-AG_GST_CHECK_PLUGIN(audiomixer)
+AG_GST_CHECK_PLUGIN(audiolatency)
 AG_GST_CHECK_PLUGIN(audiomixmatrix)
-AG_GST_CHECK_PLUGIN(compositor)
 AG_GST_CHECK_PLUGIN(audiovisualizers)
 AG_GST_CHECK_PLUGIN(autoconvert)
 AG_GST_CHECK_PLUGIN(bayer)
@@ -423,6 +475,7 @@ AG_GST_CHECK_PLUGIN(netsim)
 AG_GST_CHECK_PLUGIN(onvif)
 AG_GST_CHECK_PLUGIN(pcapparse)
 AG_GST_CHECK_PLUGIN(pnm)
+AG_GST_CHECK_PLUGIN(proxy)
 AG_GST_CHECK_PLUGIN(rawparse)
 AG_GST_CHECK_PLUGIN(removesilence)
 AG_GST_CHECK_PLUGIN(sdp)
@@ -431,7 +484,6 @@ AG_GST_CHECK_PLUGIN(siren)
 AG_GST_CHECK_PLUGIN(smooth)
 AG_GST_CHECK_PLUGIN(speed)
 AG_GST_CHECK_PLUGIN(subenc)
-AG_GST_CHECK_PLUGIN(stereo)
 AG_GST_CHECK_PLUGIN(timecode)
 AG_GST_CHECK_PLUGIN(videofilters)
 AG_GST_CHECK_PLUGIN(videoparsers)
@@ -836,12 +888,6 @@ AG_GST_CHECK_FEATURE(IPCPIPELINE, [Unix sockets], ipcpipeline, [
     fi
 ])
 
-dnl check for Video CD
-translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true)
-AG_GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [
-  AC_CHECK_HEADER(linux/cdrom.h, HAVE_VCD="yes", HAVE_VCD="no")
-])
-
 dnl check for OpenSL ES
 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENSLES, true)
 AG_GST_CHECK_FEATURE(OPENSLES, [OpenSL ES], opensl, [
@@ -873,6 +919,18 @@ AC_SUBST(LIBUDEV_LIBS)
 AC_SUBST(LIBUSB_CFLAGS)
 AC_SUBST(LIBUSB_LIBS)
 
+dnl check for tv profile
+AC_ARG_ENABLE(tv, AC_HELP_STRING([--enable-tv], [enable tv profile]),
+        [
+          case "${enableval}" in
+           yes) TV_PROFILE=yes ;;
+           no)  TV_PROFILE=no ;;
+           *)   AC_MSG_ERROR(bad value ${enableval} for --enable-tv) ;;
+          esac
+        ],
+        [TV_PROFILE=no])
+AM_CONDITIONAL([TV_PROFILE], [test "x$TV_PROFILE" = "xyes"])
+
 dnl *** CUDA ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_CUDA, true)
 AG_GST_CHECK_FEATURE(CUDA, [NVIDIA CUDA API],, [
@@ -892,11 +950,16 @@ AG_GST_CHECK_FEATURE(CUDA, [NVIDIA CUDA API],, [
       CUDA_LIBS="-L$CUDA_PREFIX/lib -L$CUDA_PREFIX/lib64 -L$CUDA_PREFIX/lib/stubs -L$CUDA_PREFIX/lib64/stubs -lcuda -lcudart"
     fi
   else
-    PKG_CHECK_MODULES([CUDA], [cuda-8.0 cudart-8.0],, [
-      PKG_CHECK_MODULES([CUDA], [cuda-7.5 cudart-7.5],, [
-        PKG_CHECK_MODULES([CUDA], [cuda-7.0 cudart-7.0],, [
-          PKG_CHECK_MODULES([CUDA], [cuda-6.5 cudart-6.5],, [
-            AC_MSG_WARN([Could not find cuda headers/libraries])])])])])
+    PKG_CHECK_MODULES([CUDA], [cuda-10.1 cudart-10.1],, [
+      PKG_CHECK_MODULES([CUDA], [cuda-10.0 cudart-10.0],, [
+        PKG_CHECK_MODULES([CUDA], [cuda-9.2 cudart-9.2],, [
+          PKG_CHECK_MODULES([CUDA], [cuda-9.1 cudart-9.1],, [
+            PKG_CHECK_MODULES([CUDA], [cuda-9.0 cudart-9.0],, [
+              PKG_CHECK_MODULES([CUDA], [cuda-8.0 cudart-8.0],, [
+                PKG_CHECK_MODULES([CUDA], [cuda-7.5 cudart-7.5],, [
+                  PKG_CHECK_MODULES([CUDA], [cuda-7.0 cudart-7.0],, [
+                    PKG_CHECK_MODULES([CUDA], [cuda-6.5 cudart-6.5],, [
+                      AC_MSG_WARN([Could not find cuda headers/libraries])])])])])])])])])])
   fi
 
   HAVE_CUDA_H=no
@@ -924,11 +987,8 @@ AG_GST_CHECK_FEATURE(CUDA, [NVIDIA CUDA API],, [
 dnl *** NVDEC ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_NVDEC, true)
 AG_GST_CHECK_FEATURE(NVDEC, [nvdec], nvdec, [
-  HAVE_NVCUVID_H=no
   save_CPPFLAGS="$CPPFLAGS"
   CPPFLAGS="$CUDA_CFLAGS $save_CPPFLAGS"
-  AC_CHECK_HEADER([nvcuvid.h], [HAVE_NVCUVID_H=yes],
-      AC_MSG_WARN([Could not find nvcuvid.h]))
   CPPFLAGS=$save_CPPFLAGS
 
   HAVE_NVCUVID=no
@@ -938,7 +998,7 @@ AG_GST_CHECK_FEATURE(NVDEC, [nvdec], nvdec, [
       AC_MSG_WARN([Could not find library nvcuvid]))
   LIBS="$save_LIBS"
 
-  if test "x$HAVE_NVCUVID_H" = "xyes" -a "x$HAVE_NVCUVID" = "xyes"; then
+  if test "x$HAVE_NVCUVID" = "xyes"; then
     HAVE_NVDEC=yes
   else
     HAVE_NVDEC=no
@@ -948,26 +1008,6 @@ AG_GST_CHECK_FEATURE(NVDEC, [nvdec], nvdec, [
 dnl *** NVENC ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_NVENC, true)
 AG_GST_CHECK_FEATURE(NVENC, [NVIDIA Encode API], nvenc, [
-  dnl nvEncodeAPI.h header
-  HAVE_NVENCODEAPI_H=no
-  AC_ARG_VAR(NVENCODE_CFLAGS, [C compiler flags for NvEncodeAPI.h])
-  save_CPPFLAGS="$CPPFLAGS"
-  CPPFLAGS="$NVENCODE_CFLAGS $save_CPPFLAGS"
-  AC_CHECK_HEADER([nvEncodeAPI.h], [
-      AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <nvEncodeAPI.h>
-          #if NVENCAPI_MAJOR_VERSION < 5
-          #error "Need nvEncodeAPI.h >= 5.0"
-          #endif
-          ]])], [
-          HAVE_NVENCODEAPI_H=yes
-          ], [
-          AC_MSG_WARN([nvEncodeAPI.h must be >= 5.0])
-          ])
-      ],
-      AC_MSG_WARN([Could not find nvEncodeAPI.h]))
-  AC_SUBST(NVENCODE_CFLAGS)
-  CPPFLAGS="$save_CPPFLAGS"
-
   dnl libnvnidia-encode library
   HAVE_NVENCODE_LIB=no
   AC_ARG_VAR(NVENCODE_LIBS, [linker flags for nvidia-encode])
@@ -984,10 +1024,9 @@ AG_GST_CHECK_FEATURE(NVENC, [NVIDIA Encode API], nvenc, [
       -a "x$HAVE_CUDART_H" = "xyes" \
       -a "x$HAVE_CUDA_LIB" = "xyes" \
       -a "x$HAVE_CUDART_LIB" = "xyes" \
-      -a "x$HAVE_NVENCODEAPI_H" = "xyes" \
       -a "x$HAVE_NVENCODE_LIB" = "xyes"; then
     HAVE_NVENC="yes"
-    if test x"$USE_OPENGL" = x"yes"; then
+    if test "x$GST_GL_HAVE_API_GL" = "x1"; then
       dnl cuda-gl interop header
       save_CPPFLAGS="$CPPFLAGS"
       CPPFLAGS="$save_CPPFLAGS $CUDA_CFLAGS"
@@ -1012,10 +1051,25 @@ AG_GST_CHECK_FEATURE(TINYALSA, [tinyalsa], tinyalsa, [
 dnl check for intel mediasdk
 translit(dnm, m, l) AM_CONDITIONAL(USE_MSDK, true)
 AG_GST_CHECK_FEATURE(MSDK, [Intel MediaSDK], msdk, [
+  AG_GST_PKG_CHECK_MODULES(GST_ALLOCATORS, gstreamer-allocators-1.0)
+  PKG_CHECK_MODULES(G_UDEV, gudev-1.0 , [
+          AC_DEFINE([HAVE_GUDEV], 1, [Define if gudev is installed])
+          HAVE_GUDEV="yes" ],
+          [HAVE_GUDEV="no"])
   PKG_CHECK_MODULES(LIBMFX, libmfx,
   [
     AC_DEFINE(HAVE_LIBMFX, 1, [Define if mfx_dispatcher is available])
     HAVE_MSDK="yes"
+    dnl external msdk dispatchers sometimes install headers into prefix/mfx/
+    save_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$LIBMFX_CFLAGS $save_CPPFLAGS"
+    AC_CHECK_HEADER(mfx/mfxdefs.h, [HAVE_MFX_MFXDEFS_H=1], [HAVE_MFX_MFXDEFS_H=0])
+    if test $HAVE_MFX_MFXDEFS_H -eq 1; then
+      MFX_INCDIR="`$PKG_CONFIG --variable=includedir libmfx`"
+      MSDK_CFLAGS="-I$MFX_INCDIR/mfx"
+      AC_SUBST(MSDK_CFLAGS)
+    fi
+    CPPFLAGS="$save_CPPFLAGS"
   ], [
     AC_ARG_WITH([msdk-prefix],
             AS_HELP_STRING([--with-msdk-prefix],
@@ -1025,8 +1079,8 @@ AG_GST_CHECK_FEATURE(MSDK, [Intel MediaSDK], msdk, [
             [AS_IF([test "x$MFX_HOME" != "x"],
                    [MSDK_PREFIX="$MFX_HOME"],
                    [MSDK_PREFIX="/opt/intel/media"])])
-    MSDK_CFLAGS="-I$MSDK_PREFIX/include"
-    MSDK_LIBS="-L$MSDK_PREFIX/lib/lin_x64 -lmfx -ldl"
+    MSDK_CFLAGS="-I$MSDK_PREFIX/include -I$MSDK_PREFIX/include/mfx"
+    MSDK_LIBS="-L$MSDK_PREFIX/lib/lin_x64 -L$MSDK_PREFIX/lib/x64 -L$MSDK_PREFIX/lib64 -L$MSDK_PREFIX/lib -lmfx -ldl"
     AC_SUBST(MSDK_CFLAGS)
     AC_SUBST(MSDK_LIBS)
 
@@ -1052,15 +1106,32 @@ AG_GST_CHECK_FEATURE(MSDK, [Intel MediaSDK], msdk, [
 
   PKG_CHECK_MODULES(LIBVA_DRM, libva-drm, HAVE_LIBVA_DRM="yes", HAVE_LIBVA_DRM="no")
 
-  if test "x$HAVE_MSDK" = "xyes" \
-      -a "x$HAVE_LIBVA_DRM" = "xyes"; then
+  if test "x$HAVE_GUDEV" = "xyes" \
+     -a  "x$HAVE_MSDK" = "xyes" \
+     -a "x$HAVE_LIBVA_DRM" = "xyes"; then
     HAVE_MSDK="yes"
   else
     HAVE_MSDK="no"
   fi
-])
+], [], [
+  dnl check the availability of vp9 apis
+  USE_MSDK_VP9_DEC=0
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$LIBMFX_CFLAGS $MSDK_CFLAGS $save_CPPFLAGS"
+  AC_CHECK_HEADER(mfxvp9.h, [HAVE_MFXVP9_H=1], [HAVE_MFXVP9_H=0],
+  [
+    #include <mfxplugin.h>
+  ])
+
+  if test $HAVE_MFXVP9_H -eq 1; then
+      USE_MSDK_VP9_DEC=1
+      AC_DEFINE(USE_MSDK_VP9_DEC, 1, [Define if MediaSDK VP9 decoder api is available])
+  fi
+], [USE_MSDK_VP9_DEC=0])
 AM_CONDITIONAL(USE_MSDK_LIBVA,
     test "x$HAVE_MSDK" = "xyes" -a "x$HAVE_LIBVA_DRM" = "xyes")
+AM_CONDITIONAL([USE_MSDK_VP9_DEC],
+    [test $USE_MSDK_VP9_DEC -eq 1])
 
 dnl *** ext plug-ins ***
 dnl keep this list sorted alphabetically !
@@ -1261,7 +1332,7 @@ dnl **** Wayland ****
 translit(dnm, m, l) AM_CONDITIONAL(USE_WAYLAND, true)
 AC_PATH_PROG([wayland_scanner], [wayland-scanner])
 AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink], wayland , [
-  PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.4.0 libdrm >= 2.4.55 wayland-protocols >= 1.4, [
+  PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.11.0 libdrm >= 2.4.55 wayland-protocols >= 1.15, [
     if test "x$wayland_scanner" != "x"; then
       HAVE_WAYLAND="yes"
       AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
@@ -1274,6 +1345,27 @@ AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink], wayland , [
   ])
 ])
 
+dnl **** use webrtctest ****
+AC_ARG_ENABLE(webrtctest, AC_HELP_STRING([--enable-webrtctest], [using webrtctest]),
+[
+ case "${enableval}" in
+         yes) ENABLE_WEBRTCTEST=yes ;;
+         no)  ENABLE_WEBRTCTEST=no ;;
+         *)   AC_MSG_ERROR(bad value ${enableval} for --enable-webrtctest) ;;
+ esac
+ ],
+ [ENABLE_WEBRTCTEST=no])
+AM_CONDITIONAL(ENABLE_WEBRTCTEST, test "x$ENABLE_WEBRTCTEST" = "xyes")
+if test "x$ENABLE_WEBRTCTEST" = "xyes"; then
+PKG_CHECK_MODULES(JSON_GLIB, json-glib-1.0)
+AC_SUBST(JSON_GLIB_CFLAGS)
+AC_SUBST(JSON_GLIB_LIBS)
+
+PKG_CHECK_MODULES(SOUP, libsoup-2.4)
+AC_SUBST(SOUP_CFLAGS)
+AC_SUBST(SOUP_LIBS)
+fi
+
 dnl **** WebP ****
 translit(dnm, m, l) AM_CONDITIONAL(USE_WEBP, true)
 AG_GST_CHECK_FEATURE(WEBP, [WebP], webp , [
@@ -1284,20 +1376,6 @@ AG_GST_CHECK_FEATURE(WEBP, [WebP], webp , [
   AC_SUBST(WEBP_LIBS)
 ])
 
-dnl *** Daala ***
-translit(dnm, m, l) AM_CONDITIONAL(USE_DAALA, true)
-AG_GST_CHECK_FEATURE(DAALA, [daala], daala, [
-  if test "x$BUILD_EXPERIMENTAL" = "xyes"; then
-    PKG_CHECK_MODULES(DAALA, daalaenc daaladec, [
-            HAVE_DAALA="yes"
-    ], [
-            HAVE_DAALA="no"
-    ])
-    AC_SUBST(DAALA_CFLAGS)
-    AC_SUBST(DAALA_LIBS)
-  fi
-])
-
 dnl *** DTS ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_DTS, true)
 AG_GST_CHECK_FEATURE(DTS, [dts library], dtsdec, [
@@ -1363,12 +1441,14 @@ AG_GST_CHECK_FEATURE(FBDEV, [linux framebuffer], fbdevsink, [
 dnl *** fdkaac ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_FDK_AAC, true)
 AG_GST_CHECK_FEATURE(FDK_AAC, [fdkaac plugin], fdkaac, [
-  PKG_CHECK_MODULES(FDK_AAC, fdk-aac >= 0.1.4, [
-    HAVE_FDK_AAC="yes",
-    HAVE_FDK_AAC_0_1_4="yes"
+  PKG_CHECK_MODULES(FDK_AAC, fdk-aac, HAVE_FDK_AAC="yes", HAVE_FDK_AAC="no")
+
+  PKG_CHECK_EXISTS(fdk-aac >= 2.0.0, [
+    AC_DEFINE(HAVE_FDK_AAC_2_0_0, 1, [Define if we have fdk-aac >= 2.0.0])
+  ])
+
+  PKG_CHECK_EXISTS(fdk-aac >= 0.1.4, [
     AC_DEFINE(HAVE_FDK_AAC_0_1_4, 1, [Define if we have fdk-aac >= 0.1.4])
-  ],[
-    PKG_CHECK_MODULES(FDK_AAC, fdk-aac, HAVE_FDK_AAC="yes", HAVE_FDK_AAC="no")
   ])
 ])
 
@@ -1489,9 +1569,7 @@ AC_SUBST(LIBMMS_LIBS)
 dnl *** libsrt ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_SRT, true)
 AG_GST_CHECK_FEATURE(SRT, [srt library], srt, [
-  PKG_CHECK_MODULES(SRT, libsrt, HAVE_SRT="yes",
-    AG_GST_CHECK_LIBHEADER(SRT, srt, srt_startup, , srt/srt.h, SRT_LIBS="-lsrt")
-  )
+  PKG_CHECK_MODULES(SRT, srt, HAVE_SRT="yes", HAVE_SRT=no)
   AC_SUBST(SRT_LIBS)
   AC_SUBST(SRT_CFLAGS)
 ])
@@ -1499,9 +1577,15 @@ AG_GST_CHECK_FEATURE(SRT, [srt library], srt, [
 dnl *** libsrtp ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_SRTP, true)
 AG_GST_CHECK_FEATURE(SRTP, [srtp library], srtp, [
-  PKG_CHECK_MODULES(SRTP, libsrtp, HAVE_SRTP="yes",
-    AG_GST_CHECK_LIBHEADER(SRTP, srtp, srtp_init, , srtp/srtp.h, SRTP_LIBS="-lsrtp")
-  )
+  HAVE_SRTP="no"
+  AG_GST_PKG_CHECK_MODULES(SRTP, libsrtp2 >= 2.1.0)
+  if test x"$HAVE_SRTP" = x"yes"; then
+    AC_DEFINE([HAVE_SRTP2], 1, [Define if libsrtp2 is used])
+  else
+    PKG_CHECK_MODULES(SRTP, libsrtp, HAVE_SRTP="yes",
+      AG_GST_CHECK_LIBHEADER(SRTP, srtp, crypto_policy_set_aes_gcm_128_16_auth, , srtp/srtp.h, SRTP_LIBS="-lsrtp")
+    )
+  fi
   AC_SUBST(SRTP_LIBS)
   AC_SUBST(SRTP_CFLAGS)
 ])
@@ -1509,7 +1593,7 @@ AG_GST_CHECK_FEATURE(SRTP, [srtp library], srtp, [
 dnl *** dtls ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_DTLS, true)
 AG_GST_CHECK_FEATURE(DTLS, [DTLS plugin], dtls, [
-  PKG_CHECK_MODULES(DTLS, [ openssl >= 1.0.1  libcrypto ], [
+  PKG_CHECK_MODULES(DTLS, [ openssl1.1 >= 1.0.1  libcrypto1.1 ], [
     HAVE_DTLS="yes"
     AC_SUBST(DTLS_CFLAGS)
     AC_SUBST(DTLS_LIBS)
@@ -1692,9 +1776,9 @@ main (int   argc,
     TestOutputStream () : OutputStream () { }
     void Write (uint8_t *a, unsigned int b) { }
     void NextSegment () { }
-    uint64_t SegmentSize () { }
+    uint64_t SegmentSize () { return 0; }
     void Close () { }
-    int Open () { }
+    int Open () { return 0; }
 };
   MultiplexJob *job = new MultiplexJob ();
   vector<IBitStream *> inputs;
@@ -1727,12 +1811,7 @@ AG_GST_CHECK_FEATURE(MUSEPACK, [musepackdec], musepack, [
     HAVE_MUSEPACK="yes"
     MUSEPACK_LIBS="-lmpcdec"
     AC_SUBST(MUSEPACK_LIBS)
-    ], [AC_CHECK_HEADER([mpcdec/mpcdec.h], [
-      HAVE_MUSEPACK="yes"
-      MUSEPACK_LIBS="-lmpcdec"
-      AC_DEFINE(MPC_IS_OLD_API, 1, [Define if the old MusePack API is used])
-      AC_SUBST(MUSEPACK_LIBS)
-    ], [HAVE_MUSEPACK="no"])])
+    ], [HAVE_MUSEPACK="no"])
 ])
 
 dnl *** neon ***
@@ -1774,25 +1853,45 @@ AG_GST_CHECK_FEATURE(OPENCV, [opencv plugins], opencv, [
   dnl a new version and the no-backward-compatibility define. (There doesn't
   dnl seem to be a switch to suppress the warnings the cvcompat.h header
   dnl causes.)
-  PKG_CHECK_MODULES(OPENCV, opencv >= 2.3.0 opencv < 3.4.0 , [
+  PKG_CHECK_MODULES([OPENCV], [opencv >= 3.0.0 opencv < 3.5.0] , [
     AC_PROG_CXX
     AC_LANG([C++])
     OLD_CPPFLAGS=$CPPFLAGS
     CPPFLAGS=$OPENCV_CFLAGS
     something_not_found=no
-    AC_CHECK_HEADERS([opencv2/core/core_c.h \
-                      opencv2/core/version.hpp \
-                      opencv2/highgui/highgui_c.h \
-                      opencv2/imgproc/imgproc.hpp \
-                      opencv2/imgproc/imgproc_c.h \
-                      opencv2/objdetect/objdetect.hpp \
-                      opencv2/video/background_segm.hpp], [], [something_not_found=yes])
-
-    dnl Only required for OpenCV >= 3, we have compat code for older versions
-    PKG_CHECK_MODULES(OPENCV_3, opencv >= 3, [
-      dnl check opencv_contrib headers (not always present in opencv distributions)
-      AC_CHECK_HEADERS([opencv2/bgsegm.hpp], [], [something_not_found=yes])],
-      [NOT_A_PROBLEM=yes])
+    AC_CHECK_HEADERS([opencv2/bgsegm.hpp \
+                      opencv2/calib3d.hpp \
+                      opencv2/core.hpp \
+                      opencv2/imgproc.hpp \
+                      opencv2/objdetect.hpp \
+                      opencv2/opencv.hpp \
+                      opencv2/video.hpp \
+                      opencv2/bgsegm.hpp], [], [something_not_found=yes])
+
+    CPPFLAGS=$OLD_CPPFLAGS
+    AC_LANG([C])
+
+    if test $something_not_found = "yes"; then
+      AC_MSG_RESULT([not all opencv2 headers were found])
+      HAVE_OPENCV="no"
+    else
+      HAVE_OPENCV="yes"
+    fi
+  ], [
+    PKG_CHECK_MODULES([OPENCV], [opencv4 >= 4.0.0 opencv4 < 4.2.0] , [
+    AC_PROG_CXX
+    AC_LANG([C++])
+    OLD_CPPFLAGS=$CPPFLAGS
+    CPPFLAGS=$OPENCV_CFLAGS
+    something_not_found=no
+    AC_CHECK_HEADERS([opencv2/bgsegm.hpp \
+                      opencv2/calib3d.hpp \
+                      opencv2/core.hpp \
+                      opencv2/imgproc.hpp \
+                      opencv2/objdetect.hpp \
+                      opencv2/opencv.hpp \
+                      opencv2/video.hpp \
+                      opencv2/bgsegm.hpp], [], [something_not_found=yes])
 
     CPPFLAGS=$OLD_CPPFLAGS
     AC_LANG([C])
@@ -1806,6 +1905,10 @@ AG_GST_CHECK_FEATURE(OPENCV, [opencv plugins], opencv, [
   ], [
     HAVE_OPENCV="no"
   ])
+  ])
+  OPENCV_PREFIX="`$PKG_CONFIG --variable=prefix opencv`"
+  AC_DEFINE_UNQUOTED(OPENCV_PREFIX, "$OPENCV_PREFIX", [opencv install prefix])
+  AC_SUBST(OPENCV_PREFIX)
   OPENCV_PREFIX="`$PKG_CONFIG --variable=prefix opencv`"
   AC_DEFINE_UNQUOTED(OPENCV_PREFIX, "$OPENCV_PREFIX", [opencv install prefix])
   AC_SUBST(OPENCV_PREFIX)
@@ -1826,6 +1929,15 @@ dnl *** OpenEXR ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENEXR, true)
 AG_GST_CHECK_FEATURE(OPENEXR, [openexr library], openexr, [
   AG_GST_PKG_CHECK_MODULES(OPENEXR, OpenEXR)
+  if test "x$HAVE_OPENEXR" = "xyes"; then
+    AG_GST_PKG_CHECK_MODULES(OPENEXR240, OpenEXR >= 2.4.0)
+    if test "x$HAVE_OPENEXR240" = "xyes"; then
+      OPENEXR_STDCFLAGS=
+    else
+      OPENEXR_STDCFLAGS="-std=c++98"
+    fi
+    AC_SUBST([OPENEXR_STDCFLAGS])
+  fi
 ])
 
 dnl *** openh264 ***
@@ -1883,6 +1995,12 @@ AG_GST_CHECK_FEATURE(OPUS, [opus], opus, [
   AC_SUBST(OPUS_LIBS)
 ])
 
+dnl *** pango ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_PANGO, true)
+AG_GST_CHECK_FEATURE(PANGO, [Pango font rendering], pango, [
+  AG_GST_PKG_CHECK_MODULES(PANGO, pango >= 1.22.0  pangocairo >= 1.22.0)
+])
+
 dnl *** rsvg ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_RSVG, true)
 AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
@@ -1890,153 +2008,15 @@ AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
 ])
 
 dnl *** gl ***
+HAVE_GL="no"
 translit(dnm, m, l) AM_CONDITIONAL(USE_GL, true)
 AG_GST_CHECK_FEATURE(GL, [gl elements], gl, [
-  HAVE_GL="no"
-
-  dnl FIXME: detect and re-enable opengl plugin
-  dnl if test x"$USE_OPENGL" = x"yes" -o x"$USE_GLES2" = x"yes"; then
-  dnl  HAVE_GL="yes"
-  dnlfi
-])
-
-dnl *** gtk+ ***
-HAVE_GTK3_GL="no"
-translit(dnm, m, l) AM_CONDITIONAL(USE_GTK3, true)
-AG_GST_CHECK_FEATURE(GTK3, [Gtk+ elements], gtk, [
-  PKG_CHECK_MODULES(GTK3, gtk+-3.0, [
-    AC_DEFINE([HAVE_GTK3], 1, [Define if Gtk+ 3.0 is installed])
-    HAVE_GTK3="yes"
-  ], [
-    HAVE_GTK3="no"
-  ])
-  PKG_CHECK_MODULES(GTK3_GL, gtk+-3.0 >= 3.15.0, [
-    GDK_WINDOWING="no"
-    if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1"; then
-      PKG_CHECK_MODULES(GTK3_X11, gtk+-x11-3.0, [
-        GTK3_CFLAGS="$GTK3_CFLAGS $GTK3_X11_CFLAGS"
-        GTK3_LIBS="$GTK3_LIBS $GTK3_X11_LIBS"
-        GDK_WINDOWING="yes"
-      ], [AC_MSG_NOTICE([Could not find Gtk X11 integration])])
-    fi
-    if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
-      PKG_CHECK_MODULES(GTK3_WAYLAND, gtk+-wayland-3.0, [
-        GTK3_CFLAGS="$GTK3_CFLAGS $GTK3_WAYLAND_CFLAGS"
-        GTK3_LIBS="$GTK3_LIBS $GTK3_WAYLAND_LIBS"
-        GDK_WINDOWING="yes"
-      ], [AC_MSG_NOTICE([Could not find Gtk Wayland integration])])
-    fi
-    if test "x$GDK_WINDOWING" = "xyes"; then
-      AC_DEFINE([HAVE_GTK3_GL], 1, [Define if Gtk+ 3.0 GL is installed])
-      HAVE_GTK3_GL="yes"
-    fi
-  ], [
-      HAVE_GTK3_GL="no"
-  ])
-])
-AM_CONDITIONAL(USE_GTK3_GL, test "x$HAVE_GTK3_GL" = "xyes")
-
-dnl *** Qt ***
-translit(dnm, m, l) AM_CONDITIONAL(USE_QT, true)
-AG_GST_CHECK_FEATURE(QT, [Qt elements], qt, [
-  PKG_CHECK_MODULES(QT, Qt5Core Qt5Gui Qt5Qml Qt5Quick >= 5.4.0, [
-      QT_PATH=`$PKG_CONFIG --variable=exec_prefix Qt5Core`
-      QT_HOST_PATH=`$PKG_CONFIG --variable=host_bins Qt5Core`
-      AC_ARG_WITH([moc],
-           AS_HELP_STRING([--with-moc], [Set location of qt moc tool]),
-           [MOC=$withval])
-      AC_PATH_PROGS(MOC, [moc-qt5 moc], [moc], ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
-      AC_ARG_WITH([rcc],
-           AS_HELP_STRING([--with-rcc], [Set location of qt rcc tool]),
-           [RCC=$withval])
-      AC_PATH_PROGS(RCC, [rcc-qt5 rcc], [rcc], ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
-      AC_ARG_WITH([uic],
-               AS_HELP_STRING([--with-uic], [Set location of qt uic tool]),
-               [UIC=$withval])
-      AC_PATH_PROGS(UIC, [uic-qt5 uic], [uic], ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
-      if test "x$MOC" = "x" || test "x$UIC" = "x" || test "x$RCC" = "x"; then
-        AC_MSG_WARN([One of the required qt build programs was not found])
-        HAVE_QT="no"
-      else
-        HAVE_QT="yes"
-        HAVE_QT_WINDOWING="no"
-        QT_VERSION="`$PKG_CONFIG --define-prefix --modversion Qt5Core`"
-        QPA_INCLUDE_PATH=`$PKG_CONFIG --variable=includedir Qt5Core`/QtGui/${QT_VERSION}/QtGui
-        AS_IF([test -f "$PKG_CONFIG_SYSROOT_DIR/$QPA_INCLUDE_PATH/qpa/qplatformnativeinterface.h"], [
-          QT_CFLAGS="$QT_CFLAGS -I$PKG_CONFIG_SYSROOT_DIR/$QPA_INCLUDE_PATH"
-          HAVE_QT_QPA_HEADER="yes"
-        ], [AC_MSG_NOTICE([Cannot find QPA])])
-        if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1" || test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
-          PKG_CHECK_MODULES(QT_X11, Qt5X11Extras, [
-            AC_DEFINE([HAVE_QT_X11], [], [Define if Qt X11 integration is installed])
-            QT_CFLAGS="$QT_CFLAGS $QT_X11_CFLAGS"
-            QT_LIBS="$QT_LIBS $QT_X11_LIBS"
-            HAVE_QT_WINDOWING="yes"
-          ], [AC_MSG_NOTICE([Could not find Qt X11 integration])])
-        fi
-        if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1" -a "x$HAVE_QT_QPA_HEADER" = "xyes"; then
-          PKG_CHECK_MODULES(QT_WAYLAND, Qt5WaylandClient, [
-            AC_DEFINE([HAVE_QT_WAYLAND], [],
-                [Define if Qt Wayland integration is installed])
-            QT_CFLAGS="$QT_CFLAGS $QT_WAYLAND_CFLAGS"
-            QT_LIBS="$QT_LIBS $QT_WAYLAND_LIBS"
-            HAVE_QT_WINDOWING="yes"
-          ], [AC_MSG_NOTICE([Could not find Qt Wayland integration])])
-        fi
-        if test "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
-          if test "x$GST_GL_HAVE_WINDOW_ANDROID" = "x1"; then
-            PKG_CHECK_MODULES(QT_ANDROID, Qt5AndroidExtras, [
-              # c++ on android requires a standard library and there are multiple
-              # choices.  cerbero provides a pkg-config file the describes a choice
-              # so try to use that.  Outside cerbero one has to pass these flags
-              # manually for the library one is using
-              PKG_CHECK_MODULES(GNUSTL, gnustl, [
-                QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS"
-                QT_LIBS="$QT_LIBS $GNUSTL_LIBS"
-                ], [
-                AC_MSG_NOTICE([Could not find Standard C++ library])])
-              AC_DEFINE([HAVE_QT_EGLFS], [],
-                [Define if Qt eglfs integration is installed])
-              QT_CFLAGS="$QT_CFLAGS $QT_ANDROID_CFLAGS"
-              QT_LIBS="$QT_LIBS $QT_ANDROID_LIBS"
-              HAVE_QT_WINDOWING="yes"
-            ], [AC_MSG_NOTICE([Could not find Qt Android integration])])
-          else
-              AC_DEFINE([HAVE_QT_EGLFS], [],
-                [Define if Qt eglfs integration is installed])
-              HAVE_QT_WINDOWING="yes"
-          fi
-        fi
-        if test "x$GST_GL_HAVE_WINDOW_COCOA" = "x1" -a "x$GST_GL_HAVE_PLATFORM_CGL" = "x1"; then
-          PKG_CHECK_MODULES(QT_MAC, Qt5MacExtras, [
-            AC_DEFINE([HAVE_QT_MAC], [],
-                [Define if Qt Mac integration is installed])
-            QT_LIBDIR=`$PKG_CONFIG --variable=libdir Qt5Core`
-            QT_CFLAGS="$QT_CFLAGS $QT_MAC_CFLAGS -F$QT_LIBDIR -framework QtCore -framework QtGui -framework QtQuick -framework QtQml -framework QtMacExtras"
-            QT_LIBS="$QT_LIBS $QT_MAC_LIBS"
-            HAVE_QT_WINDOWING="yes"
-          ], [AC_MSG_NOTICE([Could not find Qt Mac integration])])
-        fi
-        if test "x$GST_GL_HAVE_WINDOW_EAGL" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EAGL" = "x1"; then
-          if test "x$HAVE_IOS" = "xyes"; then
-            # iOS doesn't have its own extras package so if we have the core
-            # modules we are good to go
-            AC_DEFINE([HAVE_QT_IOS], [],
-                [Define if Qt iOS integration is installed])
-            HAVE_QT_WINDOWING="yes"
-          fi
-        fi
-        if test "x$HAVE_QT_WINDOWING" = "xno"; then
-          AC_MSG_WARN([Could not find any Qt Windowing integration])
-          HAVE_QT="no"
-        fi
-        AC_SUBST([QT_CFLAGS])
-        AC_SUBST([QT_LIBS])
-      fi
-  ], [
-      HAVE_QT="no"
-  ])
+  if test "x$HAVE_GST_GL" = "xyes"; then
+    HAVE_GL="yes"
+  fi
 ])
+AM_CONDITIONAL(USE_GL, test "x$HAVE_GL" = "xyes")
+AM_CONDITIONAL(USE_OPENGL, test "x$GST_GL_HAVE_API_GL" = "x1")
 
 dnl *** Vulkan ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_VULKAN, true)
@@ -2144,22 +2124,6 @@ AG_GST_CHECK_FEATURE(SOUNDTOUCH, [soundtouch plug-in], soundtouch, [
   fi
 ])
 
-dnl *** spc ***
-translit(dnm, m, l) AM_CONDITIONAL(USE_SPC, true)
-AG_GST_CHECK_FEATURE(SPC, [spc decoder], spc, [
-  AC_CHECK_HEADER(openspc.h, [
-    AC_CHECK_LIB(openspc, OSPC_Init, [
-      SPC_LIBS="-lopenspc"
-      AC_SUBST(SPC_LIBS)
-      HAVE_SPC=yes
-    ], [
-      HAVE_SPC=no
-    ])
-  ], [
-    HAVE_SPC=no
-  ])
-])
-
 dnl *** gme ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_GME, true)
 AG_GST_CHECK_FEATURE(GME, [gme decoder], gme, [
@@ -2200,19 +2164,6 @@ AG_GST_CHECK_FEATURE(DVB, [DVB Source], dvb, [
   ], [HAVE_DVB="no"])
 ])
 
-dnl *** acm ***
-translit(dnm, m, l) AM_CONDITIONAL(USE_ACM, true)
-AG_GST_CHECK_FEATURE(ACM, [Windows ACM library], acm, [
-  AC_MSG_CHECKING([Checking for ACM support])
-  AC_CHECK_HEADERS([windows.h msacm.h],
-      [HAVE_ACM="yes"
-       AC_SUBST(ACMENC_CFLAGS)
-       AC_SUBST(ACMMP3DEC_CFLAGS)
-      ], [HAVE_ACM="no"],
-      [AC_INCLUDES_DEFAULT
-#include <windows.h>])
-])
-
 dnl *** vdpau ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_VDPAU, true)
 AG_GST_CHECK_FEATURE(VDPAU, [VDPAU], vdpau, [
@@ -2264,12 +2215,6 @@ AG_GST_CHECK_FEATURE(SBC, [SBC bluetooth audio codec], sbc, [
   AG_GST_PKG_CHECK_MODULES(SBC, [sbc >= 1.0])
 ])
 
-dnl *** schroedinger ***
-translit(dnm, m, l) AM_CONDITIONAL(USE_SCHRO, true)
-AG_GST_CHECK_FEATURE(SCHRO, [Schroedinger video codec], schro, [
-  AG_GST_PKG_CHECK_MODULES(SCHRO, schroedinger-1.0 >= 1.0.10)
-])
-
 dnl *** zbar ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_ZBAR, true)
 AG_GST_CHECK_FEATURE(ZBAR, [ZBar barcode detector], zbar, [
@@ -2324,26 +2269,22 @@ AG_GST_CHECK_FEATURE(HLS, [http live streaming plugin], hls, [
       ],[AC_MSG_ERROR([Could not find libgcrypt library])])
     ],
     [openssl], [
-      PKG_CHECK_MODULES(OPENSSL, openssl, [
+      PKG_CHECK_MODULES(OPENSSL, openssl1.1, [
         AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
         HAVE_HLS="yes"
       ],[AC_MSG_ERROR([Could not find openssl library])])
     ],
     [
       dnl Try to find a valid crypto library
+      HAVE_HLS="yes"
       PKG_CHECK_MODULES(NETTLE, nettle, [
         AC_DEFINE(HAVE_NETTLE, 1, [Define if nettle is available])
-        HAVE_HLS="yes"
       ],[
         AM_PATH_LIBGCRYPT([1.2.0], [
           AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
-          HAVE_HLS="yes"
         ],[
-          PKG_CHECK_MODULES(OPENSSL, openssl, [
+          PKG_CHECK_MODULES(OPENSSL, openssl1.1, [
             AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
-            HAVE_HLS="yes"
-          ],[
-            HAVE_HLS="no"
           ])
         ])
       ])
@@ -2383,6 +2324,40 @@ AG_GST_CHECK_FEATURE(WEBRTCDSP, [WebRTC Audio Processing], webrtcdsp, [
   AC_LANG_POP([C++])
 ])
 
+dnl *** WebRTC ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_WEBRTC, true)
+AG_GST_CHECK_FEATURE(WEBRTC, [WebRTC], webrtc, [
+  PKG_CHECK_MODULES(NICE, nice >= 0.1.14, [
+    HAVE_WEBRTC="yes" ], [
+    HAVE_WEBRTC="no"
+  ])
+])
+
+dnl *** WPE ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_WPE, true)
+AG_GST_CHECK_FEATURE(WPE, [WPE plug-in], wpe, [
+PKG_CHECK_MODULES(WPE, [ wpe-webkit-1.0 >= 2.24 wpebackend-fdo-1.0 egl xkbcommon ], [
+    HAVE_WPE="yes" ], [
+    HAVE_WPE="no"
+  ])
+])
+
+dnl *** usrsctp ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_SCTP, true)
+AG_GST_CHECK_FEATURE(SCTP, [sctp plug-in], sctp, [
+  AC_CHECK_HEADER(usrsctp.h, [
+    AC_CHECK_LIB(usrsctp, usrsctp_init, [
+      USRSCTP_LIBS="-lusrsctp"
+      AC_SUBST(USRSCTP_LIBS)
+      HAVE_SCTP=yes
+    ], [
+      HAVE_SCTP=no
+    ])
+  ], [
+    HAVE_SCTP=no
+  ])
+])
+
 else
 
 dnl not building plugins with external dependencies,
@@ -2401,9 +2376,9 @@ AM_CONDITIONAL(USE_DASH, false)
 AM_CONDITIONAL(USE_DC1394, false)
 AM_CONDITIONAL(USE_DECKLINK, false)
 AM_CONDITIONAL(DECKLINK_OSX, false)
+AM_CONDITIONAL(DECKLINK_WIN, false)
 AM_CONDITIONAL(USE_DIRECTFB, false)
 AM_CONDITIONAL(USE_WAYLAND, false)
-AM_CONDITIONAL(USE_DAALA, false)
 AM_CONDITIONAL(USE_DTS, false)
 AM_CONDITIONAL(USE_EXIF, false)
 AM_CONDITIONAL(USE_RESINDVD, false)
@@ -2413,9 +2388,8 @@ AM_CONDITIONAL(USE_FBDEV, false)
 AM_CONDITIONAL(USE_FDK_AAC, false)
 AM_CONDITIONAL(USE_FLITE, false)
 AM_CONDITIONAL(USE_FLUIDSYNTH, false)
+AM_CONDITIONAL(USE_GL, false)
 AM_CONDITIONAL(USE_GSM, false)
-AM_CONDITIONAL(USE_GTK3, false)
-AM_CONDITIONAL(USE_GTK3_GL, false)
 AM_CONDITIONAL(USE_HLS, false)
 AM_CONDITIONAL(USE_IQA, false)
 AM_CONDITIONAL(USE_KATE, false)
@@ -2435,36 +2409,37 @@ AM_CONDITIONAL(USE_OFA, false)
 AM_CONDITIONAL(USE_OPENAL, false)
 AM_CONDITIONAL(USE_OPENCV, false)
 AM_CONDITIONAL(USE_OPENEXR, false)
+AM_CONDITIONAL(USE_OPENGL, false)
 AM_CONDITIONAL(USE_OPENJPEG, false)
 AM_CONDITIONAL(USE_OPENMPT, false)
 AM_CONDITIONAL(USE_OPENNI2, false)
 AM_CONDITIONAL(USE_OPUS, false)
-AM_CONDITIONAL(USE_QT, false)
+AM_CONDITIONAL(USE_PANGO, false)
 AM_CONDITIONAL(USE_WILDMIDI, false)
 AM_CONDITIONAL(USE_SMOOTHSTREAMING, false)
 AM_CONDITIONAL(USE_SNDFILE, false)
 AM_CONDITIONAL(USE_SOUNDTOUCH, false)
 AM_CONDITIONAL(USE_SPANDSP, false)
-AM_CONDITIONAL(USE_SPC, false)
 AM_CONDITIONAL(USE_SRTP, false)
+AM_CONDITIONAL(USE_SRT, false)
 AM_CONDITIONAL(USE_GME, false)
 AM_CONDITIONAL(USE_DVB, false)
-AM_CONDITIONAL(USE_ACM, false)
 AM_CONDITIONAL(USE_VDPAU, false)
 AM_CONDITIONAL(USE_SBC, false)
-AM_CONDITIONAL(USE_SCHRO, false)
 AM_CONDITIONAL(USE_ZBAR, false)
 AM_CONDITIONAL(USE_RSVG, false)
 AM_CONDITIONAL(USE_RTMP, false)
 AM_CONDITIONAL(USE_TELETEXTDEC, false)
 AM_CONDITIONAL(USE_UVCH264, false)
 AM_CONDITIONAL(USE_WEBP, false)
+AM_CONDITIONAL(USE_WEBRTC, false)
 AM_CONDITIONAL(USE_WEBRTCDSP, false)
 AM_CONDITIONAL(USE_OPENH264, false)
 AM_CONDITIONAL(USE_X265, false)
 AM_CONDITIONAL(USE_DTLS, false)
 AM_CONDITIONAL(USE_VULKAN, false)
 AM_CONDITIONAL(USE_TTML, false)
+AM_CONDITIONAL(USE_SCTP, false)
 
 fi dnl of EXT plugins
 
@@ -2493,7 +2468,13 @@ fi
 AC_SUBST(DEPRECATED_CFLAGS)
 
 VISIBILITY_CFLAGS=""
-AS_COMPILER_FLAG([-fvisibility=hidden], [VISIBILITY_CFLAGS="-fvisibility=hidden"])
+AS_COMPILER_FLAG([-fvisibility=hidden], [
+  VISIBILITY_CFLAGS="-fvisibility=hidden"
+  AC_DEFINE(GST_API_EXPORT, [extern __attribute__ ((visibility ("default")))], [public symbol export define])
+], [
+  VISIBILITY_CFLAGS=""
+  AC_DEFINE(GST_API_EXPORT, [extern], [public symbol export define])
+])
 AC_SUBST(VISIBILITY_CFLAGS)
 
 VISIBILITY_CXXFLAGS=""
@@ -2502,6 +2483,10 @@ if test "x$HAVE_CXX" = "xyes"; then
 fi
 AC_SUBST(VISIBILITY_CXXFLAGS)
 
+dnl disable strict aliasing
+AS_COMPILER_FLAG([-fno-strict-aliasing], [EXTRA_CFLAGS="-fno-strict-aliasing"])
+AC_SUBST(EXTRA_CFLAGS)
+
 dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
 dnl at make time with e.g. make ERROR_CFLAGS=""
 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
@@ -2516,9 +2501,9 @@ dnl prefer internal headers to already installed ones
 dnl also add builddir include for enumtypes and marshal
 dnl add GST_OPTION_CFLAGS, but overridable
 GST_CFLAGS="$GST_CFLAGS $GST_STATIC_CFLAGS -DGST_USE_UNSTABLE_API"
-GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS) \$(VISIBILITY_CXXFLAGS)"
-GST_OBJCFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS) \$(VISIBILITY_CFLAGS)"
-GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS) \$(VISIBILITY_CFLAGS)"
+GST_CXXFLAGS="$GST_CFLAGS $EXTRA_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS) \$(VISIBILITY_CXXFLAGS)"
+GST_OBJCFLAGS="$GST_CFLAGS $EXTRA_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS) \$(VISIBILITY_CFLAGS)"
+GST_CFLAGS="$GST_CFLAGS $EXTRA_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS) \$(VISIBILITY_CFLAGS)"
 AC_SUBST(GST_CFLAGS)
 AC_SUBST(GST_CXXFLAGS)
 AC_SUBST(GST_OBJCFLAGS)
@@ -2569,7 +2554,7 @@ gst/videoframe_audiolevel/Makefile
 gst/asfmux/Makefile
 gst/audiobuffersplit/Makefile
 gst/audiofxbad/Makefile
-gst/audiomixer/Makefile
+gst/audiolatency/Makefile
 gst/audiomixmatrix/Makefile
 gst/audiovisualizers/Makefile
 gst/autoconvert/Makefile
@@ -2606,6 +2591,7 @@ gst/netsim/Makefile
 gst/onvif/Makefile
 gst/pcapparse/Makefile
 gst/pnm/Makefile
+gst/proxy/Makefile
 gst/rawparse/Makefile
 gst/removesilence/Makefile
 gst/sdp/Makefile
@@ -2614,7 +2600,6 @@ gst/siren/Makefile
 gst/smooth/Makefile
 gst/speed/Makefile
 gst/subenc/Makefile
-gst/stereo/Makefile
 gst/timecode/Makefile
 gst/videofilters/Makefile
 gst/videoparsers/Makefile
@@ -2622,7 +2607,6 @@ gst/videosignal/Makefile
 gst/vmnc/Makefile
 gst/y4m/Makefile
 gst/yadif/Makefile
-gst/compositor/Makefile
 gst-libs/Makefile
 gst-libs/gst/Makefile
 gst-libs/gst/adaptivedemux/Makefile
@@ -2632,17 +2616,15 @@ gst-libs/gst/interfaces/Makefile
 gst-libs/gst/isoff/Makefile
 gst-libs/gst/codecparsers/Makefile
 gst-libs/gst/mpegts/Makefile
+gst-libs/gst/sctp/Makefile
 gst-libs/gst/uridownloader/Makefile
 gst-libs/gst/wayland/Makefile
+gst-libs/gst/webrtc/Makefile
 gst-libs/gst/player/Makefile
-gst-libs/gst/video/Makefile
 gst-libs/gst/audio/Makefile
 gst-libs/gst/opencv/Makefile
-gst-libs/gst/allocators/Makefile
 sys/Makefile
 sys/dshowdecwrapper/Makefile
-sys/acmenc/Makefile
-sys/acmmp3dec/Makefile
 sys/androidmedia/Makefile
 sys/applemedia/Makefile
 sys/bluez/Makefile
@@ -2662,7 +2644,6 @@ sys/opensles/Makefile
 sys/shm/Makefile
 sys/tinyalsa/Makefile
 sys/uvch264/Makefile
-sys/vcd/Makefile
 sys/vdpau/Makefile
 sys/wasapi/Makefile
 sys/winks/Makefile
@@ -2676,13 +2657,13 @@ tests/examples/camerabin2/Makefile
 tests/examples/codecparsers/Makefile
 tests/examples/directfb/Makefile
 tests/examples/audiomixmatrix/Makefile
-tests/examples/gtk/Makefile
 tests/examples/ipcpipeline/Makefile
 tests/examples/mpegts/Makefile
 tests/examples/mxf/Makefile
 tests/examples/opencv/Makefile
 tests/examples/uvch264/Makefile
 tests/examples/waylandsink/Makefile
+tests/examples/webrtc/Makefile
 tests/icles/Makefile
 ext/voamrwbenc/Makefile
 ext/voaacenc/Makefile
@@ -2691,15 +2672,14 @@ ext/aom/Makefile
 ext/bs2b/Makefile
 ext/bz2/Makefile
 ext/chromaprint/Makefile
+ext/closedcaption/Makefile
 ext/colormanagement/Makefile
 ext/curl/Makefile
 ext/dash/Makefile
 ext/dc1394/Makefile
 ext/directfb/Makefile
 ext/wayland/Makefile
-ext/daala/Makefile
 ext/dts/Makefile
-ext/gtk/Makefile
 ext/faac/Makefile
 ext/faad/Makefile
 ext/fdkaac/Makefile
@@ -2728,12 +2708,11 @@ ext/openjpeg/Makefile
 ext/openmpt/Makefile
 ext/openni2/Makefile
 ext/opus/Makefile
-ext/qt/Makefile
 ext/rsvg/Makefile
 ext/resindvd/Makefile
 ext/rtmp/Makefile
 ext/sbc/Makefile
-ext/schroedinger/Makefile
+ext/sctp/Makefile
 ext/smoothstreaming/Makefile
 ext/sndfile/Makefile
 ext/soundtouch/Makefile
@@ -2742,7 +2721,6 @@ ext/srt/Makefile
 ext/srtp/Makefile
 ext/teletextdec/Makefile
 ext/gme/Makefile
-ext/spc/Makefile
 ext/wildmidi/Makefile
 ext/vulkan/Makefile
 ext/vulkan/xcb/Makefile
@@ -2751,7 +2729,9 @@ ext/webp/Makefile
 ext/x265/Makefile
 ext/zbar/Makefile
 ext/dtls/Makefile
+ext/webrtc/Makefile
 ext/webrtcdsp/Makefile
+ext/wpe/Makefile
 ext/ttml/Makefile
 po/Makefile.in
 docs/Makefile
@@ -2769,14 +2749,14 @@ pkgconfig/gstreamer-mpegts.pc
 pkgconfig/gstreamer-mpegts-uninstalled.pc
 pkgconfig/gstreamer-player.pc
 pkgconfig/gstreamer-player-uninstalled.pc
+pkgconfig/gstreamer-sctp.pc
+pkgconfig/gstreamer-sctp-uninstalled.pc
 pkgconfig/gstreamer-wayland.pc
 pkgconfig/gstreamer-wayland-uninstalled.pc
-pkgconfig/gstreamer-bad-video.pc
-pkgconfig/gstreamer-bad-video-uninstalled.pc
+pkgconfig/gstreamer-webrtc.pc
+pkgconfig/gstreamer-webrtc-uninstalled.pc
 pkgconfig/gstreamer-bad-audio.pc
 pkgconfig/gstreamer-bad-audio-uninstalled.pc
-pkgconfig/gstreamer-bad-allocators.pc
-pkgconfig/gstreamer-bad-allocators-uninstalled.pc
 tools/Makefile
 m4/Makefile
 )
@@ -2785,4 +2765,3 @@ AC_OUTPUT
 
 AG_GST_OUTPUT_PLUGINS
 ORC_OUTPUT
-