Index: trunk/src/VBox/Main/include/ConsoleImpl.h
===================================================================
--- trunk/src/VBox/Main/include/ConsoleImpl.h	(revision 48313)
+++ trunk/src/VBox/Main/include/ConsoleImpl.h	(revision 48406)
@@ -33,9 +33,8 @@
 class SharedFolder;
 class VRDEServerInfo;
+class EmulatedUSB;
 class AudioSniffer;
 class Nvram;
-#ifdef VBOX_WITH_USB_VIDEO
 class EmWebcam;
-#endif
 #ifdef VBOX_WITH_USB_CARDREADER
 class UsbCardReader;
@@ -147,4 +146,5 @@
     STDMETHOD(COMGETTER(UseHostClipboard))(BOOL *aUseHostClipboard);
     STDMETHOD(COMSETTER(UseHostClipboard))(BOOL aUseHostClipboard);
+    STDMETHOD(COMGETTER(EmulatedUSB))(IEmulatedUSB **aEmulatedUSB);
 
     // IConsole methods
@@ -242,7 +242,5 @@
     UsbCardReader *getUsbCardReader() { return mUsbCardReader; }
 #endif
-#ifdef VBOX_WITH_USB_VIDEO
     EmWebcam *getEmWebcam() { return mEmWebcam; }
-#endif
 
     int VRDPClientLogon(uint32_t u32ClientId, const char *pszUser, const char *pszPassword, const char *pszDomain);
@@ -762,4 +760,5 @@
     const ComObjPtr<ExtPackManager> mptrExtPackManager;
 #endif
+    const ComObjPtr<EmulatedUSB> mEmulatedUSB;
 
     USBDeviceList mUSBDevices;
@@ -808,7 +807,5 @@
     AudioSniffer * const mAudioSniffer;
     Nvram   * const mNvram;
-#ifdef VBOX_WITH_USB_VIDEO
     EmWebcam * const mEmWebcam;
-#endif
 #ifdef VBOX_WITH_USB_CARDREADER
     UsbCardReader * const mUsbCardReader;
Index: trunk/src/VBox/Main/include/ConsoleVRDPServer.h
===================================================================
--- trunk/src/VBox/Main/include/ConsoleVRDPServer.h	(revision 48313)
+++ trunk/src/VBox/Main/include/ConsoleVRDPServer.h	(revision 48406)
@@ -144,8 +144,4 @@
 
     void SendAudioInputEnd(void *pvUserCtx);
-#ifdef VBOX_WITH_USB_VIDEO
-    int GetVideoFrameDimensions(uint16_t *pu16Heigh, uint16_t *pu16Width);
-    int SendVideoSreamOn(bool fFetch);
-#endif
 
     int SCardRequest(void *pvUser, uint32_t u32Function, const void *pvData, uint32_t cbData);
Index: trunk/src/VBox/Main/include/EmulatedUSBImpl.h
===================================================================
--- trunk/src/VBox/Main/include/EmulatedUSBImpl.h	(revision 48406)
+++ trunk/src/VBox/Main/include/EmulatedUSBImpl.h	(revision 48406)
@@ -0,0 +1,70 @@
+/* $Id$ */
+
+/** @file
+ *
+ * Emulated USB devices manager.
+ */
+
+/*
+ * Copyright (C) 2013 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef EMULATEDUSB_IMPL_H_
+#define EMULATEDUSB_IMPL_H_
+
+#include "EmulatedUSBWrap.h"
+
+class Console;
+class EUSBWEBCAM;
+
+typedef std::map<Utf8Str, EUSBWEBCAM *> WebcamsMap;
+
+class ATL_NO_VTABLE EmulatedUSB :
+    public EmulatedUSBWrap
+{
+public:
+
+    DECLARE_EMPTY_CTOR_DTOR(EmulatedUSB)
+
+    HRESULT FinalConstruct();
+    void FinalRelease();
+
+    /* Public initializer/uninitializer for internal purposes only. */
+    HRESULT init(ComObjPtr<Console> pConsole);
+    void uninit();
+
+private:
+
+    // wrapped IEmulatedUSB properties
+    virtual HRESULT getWebcams(std::vector<com::Utf8Str> &aWebcams);
+
+    // wrapped IEmulatedUSB methods
+    virtual HRESULT webcamAttach(const com::Utf8Str &aPath,
+                                 const com::Utf8Str &aSettings);
+    virtual HRESULT webcamDetach(const com::Utf8Str &aPath);
+
+    /* Data. */
+    struct Data
+    {
+        Data()
+	{
+	}
+
+        ComObjPtr<Console> pConsole;
+        WebcamsMap webcams;
+    };
+
+    Data m;
+};
+
+#endif // EMULATEDUSB_IMPL_H_
+
+/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Index: trunk/src/VBox/Main/include/MachineImpl.h
===================================================================
--- trunk/src/VBox/Main/include/MachineImpl.h	(revision 48313)
+++ trunk/src/VBox/Main/include/MachineImpl.h	(revision 48406)
@@ -306,5 +306,4 @@
         PointingHIDType_T   mPointingHIDType;
         ChipsetType_T       mChipsetType;
-        BOOL                mEmulatedUSBWebcamEnabled;
         BOOL                mEmulatedUSBCardReaderEnabled;
 
@@ -419,6 +418,4 @@
     STDMETHOD(COMGETTER(EmulatedUSBCardReaderEnabled))(BOOL *aEnabled);
     STDMETHOD(COMSETTER(EmulatedUSBCardReaderEnabled))(BOOL aEnabled);
-    STDMETHOD(COMGETTER(EmulatedUSBWebcameraEnabled))(BOOL *aEnabled);
-    STDMETHOD(COMSETTER(EmulatedUSBWebcameraEnabled))(BOOL aEnabled);
     STDMETHOD(COMGETTER(HPETEnabled))(BOOL *enabled);
     STDMETHOD(COMSETTER(HPETEnabled))(BOOL enabled);
