Index: /trunk/Config.kmk
===================================================================
--- /trunk/Config.kmk	(revision 65262)
+++ /trunk/Config.kmk	(revision 65263)
@@ -651,7 +651,7 @@
 # Enable this to build vbox-img even if VBOX_WITH_TESTCASES is disabled
 VBOX_WITH_VBOX_IMG =
-# Enables the VPX module for VM video capturing
 if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.x86 darwin.amd64 linux.x86 linux.amd64 solaris.amd64 win.x86 win.amd64)
- VBOX_WITH_VPX = 1
+ # Enables the video capturing support.
+ VBOX_WITH_VIDEOREC = 1
  # Enables audio support for VM video capturing. Not enabled by default yet.
  VBOX_WITH_AUDIO_VIDEOREC =
@@ -679,4 +679,6 @@
 # Enable cURL (required for the network part of the GUI)
 VBOX_WITH_LIBCURL = 1
+# Enable VPX (VP8 / VP9 codec), used for video capturing.
+VBOX_WITH_LIBVPX = 1
 # Enable Host=>Guest Drag'n'Drop
 if1of ($(KBUILD_TARGET), darwin linux solaris win)
@@ -1148,5 +1150,5 @@
  endif
  if1of ($(KBUILD_TARGET), win)
-  VBOX_WITH_VPX=
+  VBOX_WITH_LIBVPX=
  endif
  VBOX_GUI_WITH_HIDPI=
@@ -3707,13 +3709,15 @@
 endif
 
-SDK_VBOX_VPX       = .
-SDK_VBOX_VPX_DEFAULT_INCS := $(PATH_ROOT)/src/libs/libvpx
-SDK_VBOX_VPX_INCS ?= $(SDK_VBOX_VPX_DEFAULT_INCS)
-SDK_VBOX_VPX_LIBS ?= $(PATH_STAGE_LIB)/VBox-libvpx$(VBOX_SUFF_LIB)
+ifdef VBOX_WITH_LIBVPX
+ SDK_VBOX_VPX       = .
+ SDK_VBOX_VPX_DEFAULT_INCS := $(PATH_ROOT)/src/libs/libvpx
+ SDK_VBOX_VPX_INCS ?= $(SDK_VBOX_VPX_DEFAULT_INCS)
+ SDK_VBOX_VPX_LIBS ?= $(PATH_STAGE_LIB)/VBox-libvpx$(VBOX_SUFF_LIB)
+endif
 
 ifdef VBOX_WITH_LIBOPUS
-SDK_VBOX_OPUS       = .
-SDK_VBOX_OPUS_INCS ?= $(PATH_ROOT)/src/libs/libopus-1.1.3/include
-SDK_VBOX_OPUS_LIBS ?= $(PATH_STAGE_LIB)/VBox-libopus$(VBOX_SUFF_LIB)
+ SDK_VBOX_OPUS       = .
+ SDK_VBOX_OPUS_INCS ?= $(PATH_ROOT)/src/libs/libopus-1.1.3/include
+ SDK_VBOX_OPUS_LIBS ?= $(PATH_STAGE_LIB)/VBox-libopus$(VBOX_SUFF_LIB)
 endif
 
Index: /trunk/src/VBox/Frontends/VBoxHeadless/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VBoxHeadless/Makefile.kmk	(revision 65262)
+++ /trunk/src/VBox/Frontends/VBoxHeadless/Makefile.kmk	(revision 65263)
@@ -5,5 +5,5 @@
 
 #
-# Copyright (C) 2006-2016 Oracle Corporation
+# Copyright (C) 2006-2017 Oracle Corporation
 #
 # This file is part of VirtualBox Open Source Edition (OSE), as
@@ -45,5 +45,5 @@
 #
 VBoxHeadless_TEMPLATE  := $(if $(VBOX_WITH_HARDENING),VBOXMAINCLIENTDLL,VBOXMAINCLIENTEXE)
-VBoxHeadless_DEFS      += $(if $(VBOX_WITH_VPX),VBOX_WITH_VPX,)
+VBoxHeadless_DEFS      += $(if $(VBOX_WITH_VIDEOREC),VBOX_WITH_VIDEOREC,)
 VBoxHeadless_SOURCES    = VBoxHeadless.cpp
 ifdef VBOX_WITH_GUEST_PROPS
Index: /trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp	(revision 65262)
+++ /trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp	(revision 65263)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2016 Oracle Corporation
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -44,5 +44,5 @@
 #include <VBox/VBoxVideo.h>
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
 # include <cstdlib>
 # include <cerrno>
@@ -464,5 +464,5 @@
              "                                       settings password\n"
              "   -start-paused, --start-paused     Start the VM in paused state\n"
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
              "   -c, -capture, --capture           Record the VM screen output to a file\n"
              "   -w, --width                       Frame width when recording\n"
@@ -475,5 +475,5 @@
 }
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
 /**
  * Parse the environment for variables which can influence the VIDEOREC settings.
@@ -524,5 +524,5 @@
         *ppszFileName = pszEnvTemp;
 }
-#endif /* VBOX_WITH_VPX defined */
+#endif /* VBOX_WITH_VIDEOREC defined */
 
 static RTEXITCODE readPasswordFile(const char *pszFilename, com::Utf8Str *pPasswd)
@@ -626,5 +626,5 @@
     unsigned fCSAM  = ~0U;
     unsigned fPaused = 0;
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     bool fVideoRec = 0;
     unsigned long ulFrameWidth = 800;
@@ -633,5 +633,5 @@
     char szMpegFile[RTPATH_MAX];
     const char *pszFileNameParam = "VBox-%d.vob";
-#endif /* VBOX_WITH_VPX */
+#endif /* VBOX_WITH_VIDEOREC */
 #ifdef RT_OS_WINDOWS
     ATL::CComModule _Module; /* Required internally by ATL (constructor records instance in global variable). */
@@ -643,5 +643,5 @@
              "All rights reserved.\n\n");
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     /* Parse the environment */
     parse_environ(&ulFrameWidth, &ulFrameHeight, &ulBitRate, &pszFileNameParam);
@@ -696,5 +696,5 @@
         { "--settingspw", OPT_SETTINGSPW, RTGETOPT_REQ_STRING },
         { "--settingspwfile", OPT_SETTINGSPW_FILE, RTGETOPT_REQ_STRING },
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
         { "-capture", 'c', 0 },
         { "--capture", 'c', 0 },
@@ -703,5 +703,5 @@
         { "--bitrate", 'r', RTGETOPT_REQ_UINT32 },
         { "--filename", 'f', RTGETOPT_REQ_STRING },
-#endif /* VBOX_WITH_VPX defined */
+#endif /* VBOX_WITH_VIDEOREC defined */
         { "-comment", OPT_COMMENT, RTGETOPT_REQ_STRING },
         { "--comment", OPT_COMMENT, RTGETOPT_REQ_STRING },
@@ -780,5 +780,5 @@
                 fPaused = true;
                 break;
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
             case 'c':
                 fVideoRec = true;
@@ -793,7 +793,7 @@
                 pszFileNameParam = ValueUnion.psz;
                 break;
-#endif /* VBOX_WITH_VPX defined */
+#endif /* VBOX_WITH_VIDEOREC defined */
             case 'h':
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
                 if ((GetState.pDef->fFlags & RTGETOPT_REQ_MASK) != RTGETOPT_REQ_NOTHING)
                 {
@@ -817,5 +817,5 @@
     }
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     if (ulFrameWidth < 512 || ulFrameWidth > 2048 || ulFrameWidth % 2)
     {
@@ -847,5 +847,5 @@
     }
     RTStrPrintf(&szMpegFile[0], RTPATH_MAX, pszFileNameParam, RTProcSelf());
-#endif /* defined VBOX_WITH_VPX */
+#endif /* defined VBOX_WITH_VIDEOREC */
 
     if (!pcszNameOrUUID)
@@ -958,5 +958,5 @@
         CHECK_ERROR_BREAK(console, COMGETTER(Display)(display.asOutParam()));
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
         if (fVideoRec)
         {
@@ -967,5 +967,5 @@
             CHECK_ERROR_BREAK(machine, COMSETTER(VideoCaptureEnabled)(TRUE));
         }
-#endif /* defined(VBOX_WITH_VPX) */
+#endif /* defined(VBOX_WITH_VIDEOREC) */
 
         /* get the machine debugger (isn't necessarily available) */
@@ -1216,5 +1216,5 @@
         Log(("VBoxHeadless: event loop has terminated...\n"));
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
         if (fVideoRec)
         {
@@ -1222,5 +1222,5 @@
                 machine->COMSETTER(VideoCaptureEnabled)(FALSE);
         }
-#endif /* defined(VBOX_WITH_VPX) */
+#endif /* defined(VBOX_WITH_VIDEOREC) */
 
         /* we don't have to disable VRDE here because we don't save the settings of the VM */
Index: /trunk/src/VBox/Frontends/VBoxManage/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/Makefile.kmk	(revision 65262)
+++ /trunk/src/VBox/Frontends/VBoxManage/Makefile.kmk	(revision 65263)
@@ -5,5 +5,5 @@
 
 #
-# Copyright (C) 2006-2016 Oracle Corporation
+# Copyright (C) 2006-2017 Oracle Corporation
 #
 # This file is part of VirtualBox Open Source Edition (OSE), as
@@ -38,5 +38,5 @@
  	$(if $(VBOX_WITH_USB_CARDREADER),VBOX_WITH_USB_CARDREADER) \
  	$(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH) \
- 	$(if $(VBOX_WITH_VPX),VBOX_WITH_VPX) \
+ 	$(if $(VBOX_WITH_VIDEOREC),VBOX_WITH_VIDEOREC) \
  	$(if $(VBOX_WITH_NAT_SERVICE),VBOX_WITH_NAT_SERVICE) \
  	$(if $(VBOX_WITH_VMSVGA),VBOX_WITH_VMSVGA)
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp	(revision 65262)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp	(revision 65263)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2016 Oracle Corporation
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -1706,5 +1706,5 @@
             RTFileClose(pngFile);
         }
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
         /*
          * Note: Commands starting with "vcp" are the deprecated versions and are
@@ -1940,5 +1940,5 @@
             CHECK_ERROR_BREAK(sessionMachine, COMSETTER(VideoCaptureOptions)(Bstr(a->argv[3]).raw()));
         }
-#endif /* VBOX_WITH_VPX */
+#endif /* VBOX_WITH_VIDEOREC */
         else if (!strcmp(a->argv[1], "webcam"))
         {
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 65262)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 65263)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2016 Oracle Corporation
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -885,5 +885,5 @@
                      "                                             acpishutdown]\n"
 #endif
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
                      "                            [--videocap on|off]\n"
                      "                            [--videocapscreens all|<screen ID> [<screen ID> ...]]\n"
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 65262)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 65263)
@@ -203,5 +203,5 @@
     MODIFYVM_USBCARDREADER,
 #endif
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     MODIFYVM_VIDEOCAP,
     MODIFYVM_VIDEOCAP_SCREENS,
@@ -372,5 +372,5 @@
     { "--faulttolerancesyncinterval", MODIFYVM_FAULT_TOLERANCE_SYNC_INTERVAL, RTGETOPT_REQ_UINT32 },
     { "--chipset",                  MODIFYVM_CHIPSET,                   RTGETOPT_REQ_STRING },
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     { "--videocap",                 MODIFYVM_VIDEOCAP,                  RTGETOPT_REQ_BOOL_ONOFF },
     { "--vcpenabled",               MODIFYVM_VIDEOCAP,                  RTGETOPT_REQ_BOOL_ONOFF }, /* deprecated */
@@ -451,4 +451,5 @@
 }
 
+#ifdef VBOX_WITH_VIDEOREC
 static int parseScreens(const char *pcszScreens, com::SafeArray<BOOL> *pScreens)
 {
@@ -474,4 +475,5 @@
     return 0;
 }
+#endif
 
 static int parseNum(uint32_t uIndex, unsigned cMaxIndex, const char *pszName)
@@ -2849,5 +2851,5 @@
                 break;
             }
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
             case MODIFYVM_VIDEOCAP:
             {
Index: /trunk/src/VBox/Main/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Main/Makefile.kmk	(revision 65262)
+++ /trunk/src/VBox/Main/Makefile.kmk	(revision 65263)
@@ -289,5 +289,6 @@
 	$(if $(VBOX_WITH_AUDIO_VALIDATIONKIT),VBOX_WITH_AUDIO_VALIDATIONKIT,) \
 	$(if $(VBOX_WITH_AUDIO_VIDEOREC),VBOX_WITH_AUDIO_VIDEOREC,) \
-	$(if $(VBOX_WITH_VRDE_AUDIO),VBOX_WITH_VRDE_AUDIO,) \
+    $(if $(VBOX_WITH_VIDEOREC),VBOX_WITH_VIDEOREC,) \
+    $(if $(VBOX_WITH_VRDE_AUDIO),VBOX_WITH_VRDE_AUDIO,) \
 	$(if $(VBOX_WITH_E1000),VBOX_WITH_E1000,) \
 	$(if $(VBOX_WITH_VIRTIO),VBOX_WITH_VIRTIO,) \
@@ -671,4 +672,5 @@
 	$(if $(VBOX_WITH_AUDIO_VALIDATIONKIT),VBOX_WITH_AUDIO_VALIDATIONKIT,) \
 	$(if $(VBOX_WITH_AUDIO_VIDEOREC),VBOX_WITH_AUDIO_VIDEOREC,) \
+    $(if $(VBOX_WITH_VIDEOREC),VBOX_WITH_VIDEOREC,) \
 	$(if $(VBOX_WITH_VRDE_AUDIO),VBOX_WITH_VRDE_AUDIO,) \
 	$(if $(VBOX_WITH_E1000),VBOX_WITH_E1000,) \
@@ -686,6 +688,5 @@
 	$(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \
 	$(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH,) \
-	$(if $(VBOX_WITH_VRDEAUTH_IN_VBOXSVC),VBOX_WITH_VRDEAUTH_IN_VBOXSVC,) \
-	$(if $(VBOX_WITH_VPX),VBOX_WITH_VPX,)
+	$(if $(VBOX_WITH_VRDEAUTH_IN_VBOXSVC),VBOX_WITH_VRDEAUTH_IN_VBOXSVC,)
 ifdef VBOX_WITH_CRHGSMI
  VBoxC_DEFS += VBOX_WITH_CRHGSMI
@@ -703,14 +704,23 @@
 
 VBoxC_SDKS = VBOX_LIBPNG VBOX_ZLIB
-ifdef VBOX_WITH_VPX
-  VBoxC_SDKS += VBOX_VPX
-endif
+
+ifdef VBOX_WITH_VIDEOREC
+  ifdef VBOX_WITH_LIBVPX
+   VBoxC_SDKS += VBOX_VPX
+   VBoxC_DEFS += VBOX_WITH_LIBVPX
+  else
+   $(error "VBox: No alternative for VPX when using video capturing support yet")
+  endif
+endif
+
 ifdef VBOX_WITH_AUDIO_VIDEOREC
   ifdef VBOX_WITH_LIBOPUS
    VBoxC_SDKS += VBOX_OPUS
+   VBoxC_DEFS += VBOX_WITH_LIBOPUS
   else
    $(error "VBox: No alternative for Opus when using audio support for video capturing yet")
   endif
 endif
+
 ifdef VBOX_WITH_OPENSSL_FIPS
   VBoxC_SDKS += VBOX_OPENSSL2
@@ -802,4 +812,5 @@
 	src-client/DisplayImplLegacy.cpp \
 	src-client/DisplaySourceBitmapImpl.cpp \
+	src-client/EbmlWriter.cpp \
 	src-client/EmulatedUSBImpl.cpp \
 	src-client/GuestImpl.cpp \
@@ -812,4 +823,5 @@
 	src-client/USBDeviceImpl.cpp \
 	src-client/VBoxDriversRegister.cpp \
+	src-client/VideoRec.cpp \
 	src-client/VirtualBoxClientImpl.cpp \
 	src-client/VMMDevInterface.cpp \
@@ -857,9 +869,4 @@
  VBoxC_SOURCES += \
 	src-client/RemoteUSBBackend.cpp
-endif
-ifdef VBOX_WITH_VPX
- VBoxC_SOURCES += \
-	src-client/EbmlWriter.cpp \
-	src-client/VideoRec.cpp
 endif
 ifndef VBOX_WITH_VRDEAUTH_IN_VBOXSVC
Index: /trunk/src/VBox/Main/include/DisplayImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/DisplayImpl.h	(revision 65262)
+++ /trunk/src/VBox/Main/include/DisplayImpl.h	(revision 65263)
@@ -96,10 +96,10 @@
 #endif /* VBOX_WITH_CROGL */
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     struct
     {
         ComPtr<IDisplaySourceBitmap> pSourceBitmap;
     } videoCapture;
-#endif
+#endif /* VBOX_WITH_VIDEOREC */
 } DISPLAYFBINFO;
 
@@ -205,5 +205,5 @@
     void i_VideoCaptureStop();
     int  i_VideoCaptureEnableScreens(ComSafeArrayIn(BOOL, aScreens));
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     void videoCaptureScreenChanged(unsigned uScreenId);
 #endif
@@ -462,5 +462,5 @@
     /* Serializes access to mVideoAccelLegacy and mfVideoAccelVRDP, etc between VRDP and Display. */
     RTCRITSECT mVideoAccelLock;
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     /* Serializes access to video capture source bitmaps. */
     RTCRITSECT mVideoCaptureLock;
@@ -503,5 +503,5 @@
 #endif
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     VIDEORECCONTEXT *mpVideoRecCtx;
     bool maVideoRecEnabled[SchemaDefs::MaxGuestMonitors];
Index: /trunk/src/VBox/Main/src-client/DisplayImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 65262)
+++ /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 65263)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2016 Oracle Corporation
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -51,5 +51,5 @@
 #include <VBox/com/array.h>
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
 # include <iprt/path.h>
 # include "VideoRec.h"
@@ -131,5 +131,5 @@
     mfHostCursorCapabilities = 0;
 #endif
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     rc = RTCritSectInit(&mVideoCaptureLock);
     AssertRC(rc);
@@ -163,5 +163,5 @@
     uninit();
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     if (RTCritSectIsInitialized(&mVideoCaptureLock))
     {
@@ -714,5 +714,5 @@
         maFramebuffers[uScreenId].updateImage.cbLine = 0;
         maFramebuffers[uScreenId].pFramebuffer.setNull();
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
         maFramebuffers[uScreenId].videoCapture.pSourceBitmap.setNull();
 #endif
@@ -988,5 +988,5 @@
         i_handleSetVisibleRegion(mcRectVisibleRegion, mpRectVisibleRegion);
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     videoCaptureScreenChanged(uScreenId);
 #endif
@@ -2266,5 +2266,5 @@
 int Display::i_VideoCaptureEnableScreens(ComSafeArrayIn(BOOL, aScreens))
 {
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     com::SafeArray<BOOL> Screens(ComSafeArrayInArg(aScreens));
     for (unsigned i = 0; i < Screens.size(); i++)
@@ -2280,5 +2280,6 @@
     return VINF_SUCCESS;
 #else
-    return VERR_NOT_IMPLEMENTED;
+    ComSafeArrayNoRef(aScreens);
+    return VERR_NOT_SUPPORTED;
 #endif
 }
@@ -2289,5 +2290,5 @@
 int Display::i_VideoCaptureStart()
 {
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     if (VideoRecIsEnabled(mpVideoRecCtx))
         return VINF_SUCCESS;
@@ -2348,8 +2349,15 @@
         if (RT_SUCCESS(rc))
         {
+#ifndef DEUBG_andy
             if (mcMonitors > 1)
                 rc = RTStrAPrintf(&pszName, "%s-%u%s", pszAbsPath, uScreen+1, pszSuff);
             else
                 rc = RTStrAPrintf(&pszName, "%s%s", pszAbsPath, pszSuff);
+#else
+            if (mcMonitors > 1)
+                rc = RTStrAPrintf(&pszName, "/tmp/avcap-%u.webm", uScreen+1);
+            else
+                rc = RTStrAPrintf(&pszName, "/tmp/avcap.webm");
+#endif
         }
         if (RT_SUCCESS(rc))
@@ -2396,6 +2404,6 @@
     }
     return rc;
-#else
-    return VERR_NOT_IMPLEMENTED;
+#else /* VBOX_WITH_VIDEOREC */
+    return VERR_NOT_SUPPORTED;
 #endif
 }
@@ -2406,5 +2414,5 @@
 void Display::i_VideoCaptureStop()
 {
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     if (VideoRecIsEnabled(mpVideoRecCtx))
         LogRel(("Display::VideoCaptureStop: WebM/VP8 video recording stopped\n"));
@@ -2418,5 +2426,5 @@
 }
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
 void Display::videoCaptureScreenChanged(unsigned uScreenId)
 {
@@ -2436,5 +2444,5 @@
     }
 }
-#endif
+#endif /* VBOX_WITH_VIDEOREC */
 
 int Display::i_drawToScreenEMT(Display *pDisplay, ULONG aScreenId, BYTE *address,
@@ -3133,5 +3141,5 @@
     }
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     if (VideoRecIsEnabled(pDisplay->mpVideoRecCtx))
     {
@@ -3229,5 +3237,5 @@
         } while (0);
     }
-#endif /* VBOX_WITH_VPX */
+#endif /* VBOX_WITH_VIDEOREC */
 
 #ifdef DEBUG_sunlover_2
@@ -3578,5 +3586,5 @@
      *        However, using one of the prefixes indicating the timestamp unit
      *        would be very valuable!  */
-# if VBOX_WITH_VPX
+# if VBOX_WITH_VIDEOREC
     return VideoRecIsReady(mpVideoRecCtx, uScreen, u64Timestamp);
 # else
@@ -3598,5 +3606,5 @@
 {
     Assert(mfCrOglVideoRecState == CRVREC_STATE_SUBMITTED);
-# if VBOX_WITH_VPX
+# if VBOX_WITH_VIDEOREC
     int rc = VideoRecCopyToIntBuf(mpVideoRecCtx, uScreen, x, y,
                                   uPixelFormat,
@@ -3606,5 +3614,8 @@
     NOREF(rc);
     Assert(rc == VINF_SUCCESS /* || rc == VERR_TRY_AGAIN || rc == VINF_TRY_AGAIN*/);
-# endif
+# else
+    RT_NOREF(uScreen, x, y, uPixelFormat, \
+             uBitsPerPixel, uBytesPerLine, uGuestWidth, uGuestHeight, pu8BufferAddress, u64Timestamp);
+# endif /* VBOX_WITH_VIDEOREC */
 }
 
@@ -4278,5 +4289,5 @@
     {
         AutoWriteLock displayLock(pThis->pDisplay COMMA_LOCKVAL_SRC_POS);
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
         pThis->pDisplay->i_VideoCaptureStop();
 #endif
@@ -4389,13 +4400,9 @@
 #endif
 
-#ifdef VBOX_WITH_VPX
+#ifdef VBOX_WITH_VIDEOREC
     ComPtr<IMachine> pMachine = pDisplay->mParent->i_machine();
     BOOL fEnabled = false;
     HRESULT hrc = pMachine->COMGETTER(VideoCaptureEnabled)(&fEnabled);
     AssertComRCReturn(hrc, VERR_COM_UNEXPECTED);
-
-#ifdef DEBUG_andy
-    fEnabled = true;
-#endif
 
     if (fEnabled)
Index: /trunk/src/VBox/Main/src-client/DrvAudioVideoRec.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/DrvAudioVideoRec.cpp	(revision 65262)
+++ /trunk/src/VBox/Main/src-client/DrvAudioVideoRec.cpp	(revision 65263)
@@ -39,6 +39,7 @@
 #include <VBox/err.h>
 
-#include <opus.h>
-
+#ifdef VBOX_WITH_LIBOPUS
+# include <opus.h>
+#endif
 
 /*********************************************************************************************************************************
@@ -70,4 +71,5 @@
     union
     {
+#ifdef VBOX_WITH_LIBOPUS
         struct
         {
@@ -75,4 +77,5 @@
             OpusEncoder *pEnc;
         } Opus;
+#endif /* VBOX_WITH_LIBOPUS */
     };
 } AVRECCODEC, *PAVRECCODEC;
@@ -135,5 +138,8 @@
     PAVRECSTREAMOUT pStreamOut = (PAVRECSTREAMOUT)pStream;
 
-    int rc = DrvAudioHlpStreamCfgToProps(pCfgReq, &pStreamOut->Props);
+    int rc;
+
+#ifdef VBOX_WITH_LIBOPUS
+    rc = DrvAudioHlpStreamCfgToProps(pCfgReq, &pStreamOut->Props);
     if (RT_SUCCESS(rc))
     {
@@ -177,7 +183,10 @@
         }
     }
-
-    LogFlowFuncLeaveRC(VINF_SUCCESS);
-    return VINF_SUCCESS;
+#else
+    rc = VERR_NOT_SUPPORTED;
+#endif /* VBOX_WITH_LIBOPUS */
+
+    LogFlowFuncLeaveRC(rc);
+    return rc;
 }
 
@@ -310,7 +319,12 @@
                  pStreamOut->Props.cBits, pStreamOut->Props.fSigned, cSamplesToSend));
 
+    uint32_t csRead = 0;
+
+    int rc;
+
     /*
      * Call the encoder with the data.
      */
+#ifdef VBOX_WITH_LIBOPUS
 
     /** @todo For now we ASSUME 25 FPS. */
@@ -318,7 +332,6 @@
     size_t   cbFrameSize = AUDIOMIXBUF_S2B(&pStream->MixBuf, csFrameSize);
 
-    uint32_t csRead = 0;
-    int rc = AudioMixBufReadCirc(&pStream->MixBuf, (uint8_t *)&pStreamOut->pvFrameBuf[pStreamOut->offFrameBufWrite],
-                                 pStreamOut->cbFrameBufSize - pStreamOut->offFrameBufWrite, &csRead);
+    rc = AudioMixBufReadCirc(&pStream->MixBuf, (uint8_t *)&pStreamOut->pvFrameBuf[pStreamOut->offFrameBufWrite],
+                             pStreamOut->cbFrameBufSize - pStreamOut->offFrameBufWrite, &csRead);
     if (RT_SUCCESS(rc))
     {
@@ -356,4 +369,7 @@
         }
     }
+#else
+    rc = VERR_NOT_SUPPORTED;
+#endif /* VBOX_WITH_LIBOPUS */
 
     if (csRead)
@@ -385,4 +401,5 @@
     }
 
+#ifdef VBOX_WITH_LIBOPUS
     if (pStreamOut->Codec.Opus.pEnc)
     {
@@ -390,4 +407,5 @@
         pStreamOut->Codec.Opus.pEnc = NULL;
     }
+#endif
 
     return VINF_SUCCESS;
Index: /trunk/src/VBox/Main/src-client/EbmlWriter.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/EbmlWriter.cpp	(revision 65262)
+++ /trunk/src/VBox/Main/src-client/EbmlWriter.cpp	(revision 65263)
@@ -309,5 +309,5 @@
     };
 
-#ifdef VBOX_WITH_AUDIO_VIDEOREC
+#ifdef VBOX_WITH_LIBOPUS
 # pragma pack(push)
 # pragma pack(1)
@@ -325,5 +325,5 @@
     };
 # pragma pack(pop)
-#endif /* VBOX_WITH_AUDIO_VIDEOREC */
+#endif /* VBOX_WITH_LIBOPUS */
 
     /** Audio codec to use. */
@@ -387,5 +387,5 @@
     int AddAudioTrack(float fSamplingHz, float fOutputHz, uint8_t cChannels, uint8_t cBitDepth)
     {
-#ifdef VBOX_WITH_AUDIO_VIDEOREC
+#ifdef VBOX_WITH_LIBOPUS
         m_Ebml.subStart(TrackEntry);
         m_Ebml.serializeUnsignedInteger(TrackNumber, (uint8_t)m_lstTracks.size());
@@ -557,5 +557,5 @@
     }
 
-#ifdef VBOX_WITH_AUDIO_VIDEOREC
+#ifdef VBOX_WITH_LIBOPUS
     /* Audio blocks that have same absolute timecode as video blocks SHOULD be written before the video blocks. */
     int writeBlockOpus(const void *pvData, size_t cbData)
@@ -563,5 +563,5 @@
 static uint16_t s_uTimecode = 0;
 
-        return writeSimpleBlockInternal(1 /** @todo FIX! */, s_uTimecode++, pvData, cbData, 0 /* Flags */);
+        return writeSimpleBlockInternal(0 /** @todo FIX! */, s_uTimecode++, pvData, cbData, 0 /* Flags */);
     }
 #endif
@@ -581,7 +581,8 @@
         switch (blockType)
         {
-#ifdef VBOX_WITH_AUDIO_VIDEOREC
+
             case WebMWriter::BlockType_Audio:
             {
+#ifdef VBOX_WITH_LIBOPUS
                 if (m_enmAudioCodec == WebMWriter::AudioCodec_Opus)
                 {
@@ -591,8 +592,9 @@
                 }
                 else
+#endif /* VBOX_WITH_LIBOPUS */
                     rc = VERR_NOT_SUPPORTED;
                 break;
             }
-#endif
+
             case WebMWriter::BlockType_Video:
             {
Index: /trunk/src/VBox/Main/src-client/VideoRec.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/VideoRec.cpp	(revision 65262)
+++ /trunk/src/VBox/Main/src-client/VideoRec.cpp	(revision 65263)
@@ -1,5 +1,5 @@
 /* $Id$ */
 /** @file
- * Encodes the screen content in VPX format.
+ * Video capturing utility routines.
  */
 
@@ -34,10 +34,12 @@
 #include "VideoRec.h"
 
-#define VPX_CODEC_DISABLE_COMPAT 1
-#include <vpx/vp8cx.h>
-#include <vpx/vpx_image.h>
+#ifdef VBOX_WITH_LIBVPX
+# define VPX_CODEC_DISABLE_COMPAT 1
+# include <vpx/vp8cx.h>
+# include <vpx/vpx_image.h>
 
 /** Default VPX codec to use. */
-#define DEFAULTCODEC (vpx_codec_vp8_cx())
+# define DEFAULTCODEC (vpx_codec_vp8_cx())
+#endif /* VBOX_WITH_LIBVPX */
 
 static int videoRecEncodeAndWrite(PVIDEORECSTREAM pStrm);
@@ -49,18 +51,33 @@
  * Enumeration for a video recording state.
  */
-enum
+enum VIDEORECSTS
 {
     /** Not initialized. */
-    VIDREC_UNINITIALIZED = 0,
+    VIDEORECSTS_UNINITIALIZED = 0,
     /** Initialized, idle. */
-    VIDREC_IDLE = 1,
+    VIDEORECSTS_IDLE          = 1,
     /** Currently in VideoRecCopyToIntBuf(), delay termination. */
-    VIDREC_COPYING = 2,
+    VIDEORECSTS_COPYING       = 2,
     /** Signal that we are terminating. */
-    VIDREC_TERMINATING = 3
+    VIDEORECSTS_TERMINATING   = 3
 };
 
+/**
+ * Enumeration for supported pixel formats.
+ */
+enum VIDEORECPIXELFMT
+{
+    /** Unknown pixel format. */
+    VIDEORECPIXELFMT_UNKNOWN = 0,
+    /** RGB 24. */
+    VIDEORECPIXELFMT_RGB24   = 1,
+    /** RGB 24. */
+    VIDEORECPIXELFMT_RGB32   = 2,
+    /** RGB 565. */
+    VIDEORECPIXELFMT_RGB565  = 3
+};
+
 /* Must be always accessible and therefore cannot be part of VIDEORECCONTEXT */
-static uint32_t g_enmState = VIDREC_UNINITIALIZED;
+static uint32_t g_enmState = VIDEORECSTS_UNINITIALIZED;
 
 /**
@@ -71,4 +88,5 @@
     union
     {
+#ifdef VBOX_WITH_LIBVPX
         struct
         {
@@ -80,4 +98,5 @@
             vpx_image_t         RawImage;
         } VPX;
+#endif /* VBOX_WITH_LIBVPX */
     };
 } VIDEORECCODEC, *PVIDEORECCODEC;
@@ -424,5 +443,5 @@
         AssertRCBreak(rc);
 
-        if (ASMAtomicReadU32(&g_enmState) == VIDREC_TERMINATING)
+        if (ASMAtomicReadU32(&g_enmState) == VIDEORECSTS_TERMINATING)
             break;
 
@@ -469,5 +488,5 @@
     AssertPtrReturn(ppCtx, VERR_INVALID_POINTER);
 
-    Assert(ASMAtomicReadU32(&g_enmState) == VIDREC_UNINITIALIZED);
+    Assert(ASMAtomicReadU32(&g_enmState) == VIDEORECSTS_UNINITIALIZED);
 
     int rc = VINF_SUCCESS;
@@ -511,5 +530,5 @@
         AssertRCReturn(rc, rc);
 
-        ASMAtomicWriteU32(&g_enmState, VIDREC_IDLE);
+        ASMAtomicWriteU32(&g_enmState, VIDEORECSTS_IDLE);
 
         if (ppCtx)
@@ -549,15 +568,15 @@
         return;
 
-    uint32_t enmState = VIDREC_IDLE;
+    uint32_t enmState = VIDEORECSTS_IDLE;
 
     for (;;) /** @todo r=andy Remove busy waiting! */
     {
-        if (ASMAtomicCmpXchgExU32(&g_enmState, VIDREC_TERMINATING, enmState, &enmState))
-            break;
-        if (enmState == VIDREC_UNINITIALIZED)
+        if (ASMAtomicCmpXchgExU32(&g_enmState, VIDEORECSTS_TERMINATING, enmState, &enmState))
+            break;
+        if (enmState == VIDEORECSTS_UNINITIALIZED)
             return;
     }
 
-    if (enmState == VIDREC_COPYING)
+    if (enmState == VIDEORECSTS_COPYING)
     {
         int rc = RTSemEventWait(pCtx->TermEvent, RT_INDEFINITE_WAIT);
@@ -606,5 +625,5 @@
     RTMemFree(pCtx);
 
-    ASMAtomicWriteU32(&g_enmState, VIDREC_UNINITIALIZED);
+    ASMAtomicWriteU32(&g_enmState, VIDEORECSTS_UNINITIALIZED);
 }
 
@@ -640,5 +659,4 @@
     pStream->pu8RgbBuf = (uint8_t *)RTMemAllocZ(uWidth * uHeight * 4);
     AssertReturn(pStream->pu8RgbBuf, VERR_NO_MEMORY);
-    pStream->uEncoderDeadline = VPX_DL_REALTIME;
 
     /* Play safe: the file must not exist, overwriting is potentially
@@ -646,4 +664,7 @@
      * other important file, causing unintentional data loss. */
 
+#ifdef VBOX_WITH_LIBVPX
+    pStream->uEncoderDeadline = VPX_DL_REALTIME;
+
     vpx_codec_err_t rcv = vpx_codec_enc_config_default(DEFAULTCODEC, &pStream->Codec.VPX.Config, 0);
     if (rcv != VPX_CODEC_OK)
@@ -652,4 +673,5 @@
         return VERR_INVALID_PARAMETER;
     }
+#endif
 
     com::Utf8Str options(pszOptions);
@@ -669,5 +691,7 @@
             if (value.compare("realtime", Utf8Str::CaseInsensitive) == 0)
             {
+#ifdef VBOX_WITH_LIBVPX
                 pStream->uEncoderDeadline = VPX_DL_REALTIME;
+#endif
             }
             else if (value.compare("good", Utf8Str::CaseInsensitive) == 0)
@@ -677,5 +701,7 @@
             else if (value.compare("best", Utf8Str::CaseInsensitive) == 0)
             {
+#ifdef VBOX_WITH_LIBVPX
                 pStream->uEncoderDeadline = VPX_DL_BEST_QUALITY;
+#endif
             }
             else
@@ -724,4 +750,17 @@
     }
 
+    pStream->uDelay = 1000 / uFps;
+
+    if (fHasVideoTrack)
+    {
+        rc = pStream->pEBML->AddVideoTrack(uWidth, uHeight, uFps);
+        if (RT_FAILURE(rc))
+        {
+            LogRel(("VideoRec: Failed to add video track to output file '%s' (%Rrc)\n", pszFile, rc));
+            return rc;
+        }
+    }
+
+#ifdef VBOX_WITH_LIBVPX
     /* target bitrate in kilobits per second */
     pStream->Codec.VPX.Config.rc_target_bitrate = uRate;
@@ -736,19 +775,5 @@
     pStream->Codec.VPX.Config.g_threads = 0;
 
-    pStream->uDelay = 1000 / uFps;
-
-    if (fHasVideoTrack)
-    {
-        rc = pStream->pEBML->AddVideoTrack(pStream->Codec.VPX.Config.g_w, /* Width */
-                                           pStream->Codec.VPX.Config.g_h, /* Height */
-                                           uFps);
-        if (RT_FAILURE(rc))
-        {
-            LogRel(("VideoRec: Failed to add video track to output file '%s' (%Rrc)\n", pszFile, rc));
-            return rc;
-        }
-    }
-
-    /* Initialize codec */
+    /* Initialize codec. */
     rcv = vpx_codec_enc_init(&pStream->Codec.VPX.CodecCtx, DEFAULTCODEC, &pStream->Codec.VPX.Config, 0);
     if (rcv != VPX_CODEC_OK)
@@ -765,4 +790,5 @@
 
     pStream->pu8YuvBuf = pStream->Codec.VPX.RawImage.planes[0];
+#endif
 
     pCtx->fEnabled = true;
@@ -782,6 +808,6 @@
     RT_NOREF(pCtx);
     uint32_t enmState = ASMAtomicReadU32(&g_enmState);
-    return (   enmState == VIDREC_IDLE
-            || enmState == VIDREC_COPYING);
+    return (   enmState == VIDEORECSTS_IDLE
+            || enmState == VIDEORECSTS_COPYING);
 }
 
@@ -798,5 +824,5 @@
 {
     uint32_t enmState = ASMAtomicReadU32(&g_enmState);
-    if (enmState != VIDREC_IDLE)
+    if (enmState != VIDEORECSTS_IDLE)
         return false;
 
@@ -858,4 +884,7 @@
 static int videoRecEncodeAndWrite(PVIDEORECSTREAM pStream)
 {
+    int rc;
+
+#ifdef VBOX_WITH_LIBVPX
     /* presentation time stamp */
     vpx_codec_pts_t pts = pStream->u64TimeStamp;
@@ -873,5 +902,5 @@
 
     vpx_codec_iter_t iter = NULL;
-    int rc = VERR_NO_DATA;
+    rc = VERR_NO_DATA;
     for (;;)
     {
@@ -896,4 +925,8 @@
 
     pStream->cFrame++;
+#else
+    RT_NOREF(pStream);
+    rc = VERR_NOT_SUPPORTED;
+#endif /* VBOX_WITH_LIBVPX */
     return rc;
 }
@@ -909,5 +942,5 @@
     switch (pStrm->u32PixelFormat)
     {
-        case VPX_IMG_FMT_RGB32:
+        case VIDEORECPIXELFMT_RGB32:
             LogFlow(("32 bit\n"));
             if (!colorConvWriteYUV420p<ColorConvBGRA32Iter>(pStrm->uTargetWidth,
@@ -915,7 +948,7 @@
                                                             pStrm->pu8YuvBuf,
                                                             pStrm->pu8RgbBuf))
-                return VERR_GENERAL_FAILURE;
-            break;
-        case VPX_IMG_FMT_RGB24:
+                return VERR_INVALID_PARAMETER;
+            break;
+        case VIDEORECPIXELFMT_RGB24:
             LogFlow(("24 bit\n"));
             if (!colorConvWriteYUV420p<ColorConvBGR24Iter>(pStrm->uTargetWidth,
@@ -923,7 +956,7 @@
                                                            pStrm->pu8YuvBuf,
                                                            pStrm->pu8RgbBuf))
-                return VERR_GENERAL_FAILURE;
-            break;
-        case VPX_IMG_FMT_RGB565:
+                return VERR_INVALID_PARAMETER;
+            break;
+        case VIDEORECPIXELFMT_RGB565:
             LogFlow(("565 bit\n"));
             if (!colorConvWriteYUV420p<ColorConvBGR565Iter>(pStrm->uTargetWidth,
@@ -931,8 +964,8 @@
                                                             pStrm->pu8YuvBuf,
                                                             pStrm->pu8RgbBuf))
-                return VERR_GENERAL_FAILURE;
+                return VERR_INVALID_PARAMETER;
             break;
         default:
-            return VERR_GENERAL_FAILURE;
+            return VERR_NOT_SUPPORTED;
     }
     return VINF_SUCCESS;
@@ -964,5 +997,5 @@
 {
     /* Do not execute during termination and guard against termination */
-    if (!ASMAtomicCmpXchgU32(&g_enmState, VIDREC_COPYING, VIDREC_IDLE))
+    if (!ASMAtomicCmpXchgU32(&g_enmState, VIDEORECSTS_COPYING, VIDEORECSTS_IDLE))
         return VINF_TRY_AGAIN;
 
@@ -1050,13 +1083,13 @@
             {
                 case 32:
-                    pStream->u32PixelFormat = VPX_IMG_FMT_RGB32;
+                    pStream->u32PixelFormat = VIDEORECPIXELFMT_RGB32;
                     bpp = 4;
                     break;
                 case 24:
-                    pStream->u32PixelFormat = VPX_IMG_FMT_RGB24;
+                    pStream->u32PixelFormat = VIDEORECPIXELFMT_RGB24;
                     bpp = 3;
                     break;
                 case 16:
-                    pStream->u32PixelFormat = VPX_IMG_FMT_RGB565;
+                    pStream->u32PixelFormat = VIDEORECPIXELFMT_RGB565;
                     bpp = 2;
                     break;
@@ -1098,5 +1131,5 @@
     } while (0);
 
-    if (!ASMAtomicCmpXchgU32(&g_enmState, VIDREC_IDLE, VIDREC_COPYING))
+    if (!ASMAtomicCmpXchgU32(&g_enmState, VIDEORECSTS_IDLE, VIDEORECSTS_COPYING))
     {
         rc = RTSemEventSignal(pCtx->TermEvent);
Index: /trunk/src/libs/Makefile.kmk
===================================================================
--- /trunk/src/libs/Makefile.kmk	(revision 65262)
+++ /trunk/src/libs/Makefile.kmk	(revision 65263)
@@ -5,5 +5,5 @@
 
 #
-# Copyright (C) 2006-2016 Oracle Corporation
+# Copyright (C) 2006-2017 Oracle Corporation
 #
 # This file is part of VirtualBox Open Source Edition (OSE), as
@@ -78,6 +78,6 @@
  endif
 
- # VP8 for video capture
- if defined(VBOX_WITH_VPX) && !defined(VBOX_ONLY_DOCS) && !defined(VBOX_WITH_SDK) \
+ # VPX for video capture.
+ if defined(VBOX_WITH_LIBVPX) && !defined(VBOX_ONLY_DOCS) && !defined(VBOX_WITH_SDK) \
    && ("$(SDK_VBOX_VPX_INCS)" == "$(SDK_VBOX_VPX_DEFAULT_INCS)")
   if1of ($(KBUILD_TARGET), darwin linux solaris win)
@@ -86,5 +86,5 @@
  endif
 
- # Opus for audio encoding video capture
+ # Opus for audio encoding video capture.
  if defined(VBOX_WITH_LIBOPUS) && !defined(VBOX_ONLY_DOCS) && !defined(VBOX_WITH_SDK) \
    && ("$(SDK_VBOX_OPUS_INCS)" == "$(SDK_VBOX_OPUS_DEFAULT_INCS)")
