Index: /trunk/src/VBox/Frontends/VirtualBox/VirtualBox1.qrc
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/VirtualBox1.qrc	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/VirtualBox1.qrc	(revision 46542)
@@ -247,4 +247,6 @@
         <file alias="save_state_16px.png">images/save_state_16px.png</file>
         <file alias="save_state_disabled_16px.png">images/save_state_disabled_16px.png</file>
+        <file alias="video_capture_16px.png">images/video_capture_16px.png</file>
+        <file alias="video_capture_disabled_16px.png">images/video_capture_disabled_16px.png</file>
     </qresource>
 </RCC>
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp	(revision 46542)
@@ -7,5 +7,5 @@
 
 /*
- * Copyright (C) 2010-2012 Oracle Corporation
+ * Copyright (C) 2010-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -209,4 +209,9 @@
             break;
         }
+        case KVBoxEventType_OnVideoCaptureChanged:
+        {
+            emit sigVideoCaptureChange();
+            break;
+        }
         case KVBoxEventType_OnUSBControllerChanged:
         {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.h	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.h	(revision 46542)
@@ -6,5 +6,5 @@
 
 /*
- * Copyright (C) 2010-2012 Oracle Corporation
+ * Copyright (C) 2010-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -73,4 +73,5 @@
     void sigMediumChange(CMediumAttachment attachment);
     void sigVRDEChange();
+    void sigVideoCaptureChange();
     void sigUSBControllerChange();
     void sigUSBDeviceStateChange(CUSBDevice device, bool fAttached, CVirtualBoxErrorInfo error);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 46542)
@@ -879,4 +879,31 @@
         setName(QApplication::translate("UIActionPool", "Enable R&emote Display"));
         setStatusTip(QApplication::translate("UIActionPool", "Enable remote desktop (RDP) connections to this machine"));
+    }
+};
+
+class UIActionToggleVideoCapture : public UIActionToggle
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionToggleVideoCapture(UIActionPool *pParent)
+        : UIActionToggle(pParent,
+                         ":/video_capture_16px.png", ":/video_capture_disabled_16px.png")
+    {
+        retranslateUi();
+    }
+
+protected:
+
+    QString shortcutExtraDataID() const
+    {
+        return QString("VideoCapture");
+    }
+
+    void retranslateUi()
+    {
+        setName(QApplication::translate("UIActionPool", "Enable &Video Capture"));
+        setStatusTip(QApplication::translate("UIActionPool", "Enable video capture"));
     }
 };
@@ -1145,4 +1172,5 @@
     m_pool[UIActionIndexRuntime_Simple_SharedFoldersDialog] = new UIActionSimpleShowSharedFoldersDialog(this);
     m_pool[UIActionIndexRuntime_Toggle_VRDEServer] = new UIActionToggleVRDEServer(this);
+    m_pool[UIActionIndexRuntime_Toggle_VideoCapture] = new UIActionToggleVideoCapture(this);
     m_pool[UIActionIndexRuntime_Simple_InstallGuestTools] = new UIActionSimplePerformInstallGuestTools(this);
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 46542)
@@ -65,4 +65,5 @@
     UIActionIndexRuntime_Simple_SharedFoldersDialog,
     UIActionIndexRuntime_Toggle_VRDEServer,
+    UIActionIndexRuntime_Toggle_VideoCapture,
     UIActionIndexRuntime_Simple_InstallGuestTools,
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp	(revision 46542)
@@ -7,5 +7,5 @@
 
 /*
- * Copyright (C) 2010-2012 Oracle Corporation
+ * Copyright (C) 2010-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -73,4 +73,5 @@
         << KVBoxEventType_OnVRDEServerChanged
         << KVBoxEventType_OnVRDEServerInfoChanged
+        << KVBoxEventType_OnVideoCaptureChanged
         << KVBoxEventType_OnUSBControllerChanged
         << KVBoxEventType_OnUSBDeviceStateChanged
@@ -116,4 +117,8 @@
     connect(pListener->getWrapped(), SIGNAL(sigVRDEChange()),
             this, SIGNAL(sigVRDEChange()),
+            Qt::QueuedConnection);
+
+    connect(pListener->getWrapped(), SIGNAL(sigVideoCaptureChange()),
+            this, SIGNAL(sigVideoCaptureChange()),
             Qt::QueuedConnection);
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.h	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.h	(revision 46542)
@@ -6,5 +6,5 @@
 
 /*
- * Copyright (C) 2010-2012 Oracle Corporation
+ * Copyright (C) 2010-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -48,4 +48,5 @@
     void sigMediumChange(CMediumAttachment attachment);
     void sigVRDEChange();
+    void sigVideoCaptureChange();
     void sigUSBControllerChange();
     void sigUSBDeviceStateChange(CUSBDevice device, bool fAttached, CVirtualBoxErrorInfo error);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 46542)
@@ -747,4 +747,5 @@
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Simple_SharedFoldersDialog));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_VRDEServer));
+    m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_VideoCapture));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Simple_InstallGuestTools));
 
@@ -808,4 +809,6 @@
     connect(gActionPool->action(UIActionIndexRuntime_Toggle_VRDEServer), SIGNAL(toggled(bool)),
             this, SLOT(sltSwitchVrde(bool)));
+    connect(gActionPool->action(UIActionIndexRuntime_Toggle_VideoCapture), SIGNAL(toggled(bool)),
+            this, SLOT(sltToggleVideoCapture(bool)));
     connect(gActionPool->action(UIActionIndexRuntime_Simple_InstallGuestTools), SIGNAL(triggered()),
             this, SLOT(sltInstallGuestAdditions()));
@@ -1890,4 +1893,32 @@
 }
 
+void UIMachineLogic::sltToggleVideoCapture(bool fEnabled)
+{
+    /* Do not process if window(s) missed! */
+    if (!isMachineWindowsCreated())
+        return;
+
+    /* Make sure something had changed: */
+    CMachine machine = session().GetMachine();
+    if (machine.GetVideoCaptureEnabled() == fEnabled)
+        return;
+
+    /* Machine is OK? */
+    if (machine.isOk())
+    {
+        /* Update Video Capture state: */
+        machine.SetVideoCaptureEnabled(fEnabled);
+        /* Machine still OK? */
+        if (machine.isOk())
+        {
+            /* Save machine-settings: */
+            machine.SaveSettings();
+        }
+    }
+    /* Machine had failed on one of steps? */
+    if (!machine.isOk())
+        msgCenter().cannotSaveMachineSettings(machine, activeMachineWindow());
+}
+
 void UIMachineLogic::sltInstallGuestAdditions()
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 46542)
@@ -206,4 +206,5 @@
     void sltChangeDragAndDropType(QAction *pAction);
     void sltSwitchVrde(bool fOn);
+    void sltToggleVideoCapture(bool fEnabled);
     void sltInstallGuestAdditions();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 46542)
@@ -245,4 +245,5 @@
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_SharedFoldersDialog));
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_VRDEServer));
+    pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_VideoCapture));
     pMenu->addSeparator();
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_InstallGuestTools));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 46542)
@@ -718,5 +718,5 @@
 {
     /* Get machine: */
-    const CMachine &machine = session().GetMachine();
+    const CMachine machine = session().GetMachine();
     /* Get VRDE server: */
     const CVRDEServer &server = machine.GetVRDEServer();
@@ -729,4 +729,14 @@
     /* Notify listeners about VRDE change: */
     emit sigVRDEChange();
+}
+
+void UISession::sltVideoCaptureChange()
+{
+    /* Get machine: */
+    const CMachine machine = session().GetMachine();
+    /* Check/Uncheck Video Capture action depending on feature status: */
+    gActionPool->action(UIActionIndexRuntime_Toggle_VideoCapture)->setChecked(machine.GetVideoCaptureEnabled());
+    /* Notify listeners about Video Capture change: */
+    emit sigVideoCaptureChange();
 }
 
@@ -806,4 +816,7 @@
     connect(gConsoleEvents, SIGNAL(sigVRDEChange()),
             this, SLOT(sltVRDEChange()));
+
+    connect(gConsoleEvents, SIGNAL(sigVideoCaptureChange()),
+            this, SLOT(sltVideoCaptureChange()));
 
     connect(gConsoleEvents, SIGNAL(sigNetworkAdapterChange(CNetworkAdapter)),
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 46541)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 46542)
@@ -182,4 +182,5 @@
     void sigMediumChange(const CMediumAttachment &mediumAttachment);
     void sigVRDEChange();
+    void sigVideoCaptureChange();
     void sigUSBControllerChange();
     void sigUSBDeviceStateChange(const CUSBDevice &device, bool bIsAttached, const CVirtualBoxErrorInfo &error);
@@ -214,4 +215,5 @@
     void sltAdditionsChange();
     void sltVRDEChange();
+    void sltVideoCaptureChange();
     void sltGuestMonitorChange(KGuestMonitorChangedEventType changeType, ulong uScreenId, QRect screenGeo);
 
