summaryrefslogtreecommitdiff
path: root/src/VBox/Main/include/ConsoleVRDPServer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Main/include/ConsoleVRDPServer.h')
-rw-r--r--src/VBox/Main/include/ConsoleVRDPServer.h72
1 files changed, 64 insertions, 8 deletions
diff --git a/src/VBox/Main/include/ConsoleVRDPServer.h b/src/VBox/Main/include/ConsoleVRDPServer.h
index e8e774ef..ee87367c 100644
--- a/src/VBox/Main/include/ConsoleVRDPServer.h
+++ b/src/VBox/Main/include/ConsoleVRDPServer.h
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2006-2010 Oracle Corporation
+ * Copyright (C) 2006-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -27,6 +27,9 @@
#include <VBox/RemoteDesktop/VRDEMousePtr.h>
#include <VBox/RemoteDesktop/VRDESCard.h>
#include <VBox/RemoteDesktop/VRDETSMF.h>
+#define VRDE_VIDEOIN_WITH_VRDEINTERFACE /* Get the VRDE interface definitions. */
+#include <VBox/RemoteDesktop/VRDEVideoIn.h>
+#include <VBox/RemoteDesktop/VRDEInput.h>
#include <VBox/HostServices/VBoxClipboardExt.h>
#include <VBox/HostServices/VBoxHostChannel.h>
@@ -36,6 +39,8 @@
// ConsoleVRDPServer
///////////////////////////////////////////////////////////////////////////////
+class EmWebcam;
+
typedef struct _VRDPInputSynch
{
int cGuestNumLockAdaptions;
@@ -123,7 +128,7 @@ public:
* Forwarders to VRDP server library.
*/
void SendUpdate (unsigned uScreenId, void *pvUpdate, uint32_t cbUpdate) const;
- void SendResize (void) const;
+ void SendResize (void);
void SendUpdateBitmap (unsigned uScreenId, uint32_t x, uint32_t y, uint32_t w, uint32_t h) const;
void SendAudioSamples (void *pvSamples, uint32_t cSamples, VRDEAUDIOFORMAT format) const;
@@ -140,13 +145,17 @@ public:
uint32_t cBits);
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);
+ int VideoInDeviceAttach(const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle, void *pvDeviceCtx);
+ int VideoInDeviceDetach(const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle);
+ int VideoInGetDeviceDesc(void *pvUser, const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle);
+ int VideoInControl(void *pvUser, const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle,
+ const VRDEVIDEOINCTRLHDR *pReq, uint32_t cbReq);
+
+ Console *getConsole(void) { return mConsole; }
+
private:
/* Note: This is not a ComObjPtr here, because the ConsoleVRDPServer object
* is actually just a part of the Console.
@@ -156,6 +165,8 @@ private:
HVRDESERVER mhServer;
int mServerInterfaceVersion;
+ int32_t volatile mcInResize; /* Do not Stop the server if this is not 0. */
+
static int loadVRDPLibrary (const char *pszLibraryName);
/** Static because will never load this more than once! */
@@ -237,19 +248,21 @@ private:
uint32_t volatile mu32AudioInputClientId;
+ int32_t volatile mcClients;
+
static DECLCALLBACK(void) H3DORBegin(const void *pvContext, void **ppvInstance,
const char *pszFormat);
static DECLCALLBACK(void) H3DORGeometry(void *pvInstance,
int32_t x, int32_t y, uint32_t w, uint32_t h);
static DECLCALLBACK(void) H3DORVisibleRegion(void *pvInstance,
- uint32_t cRects, RTRECT *paRects);
+ uint32_t cRects, const RTRECT *paRects);
static DECLCALLBACK(void) H3DORFrame(void *pvInstance,
void *pvData, uint32_t cbData);
static DECLCALLBACK(void) H3DOREnd(void *pvInstance);
static DECLCALLBACK(int) H3DORContextProperty(const void *pvContext, uint32_t index,
void *pvBuffer, uint32_t cbBuffer, uint32_t *pcbOut);
- void remote3DRedirect(void);
+ void remote3DRedirect(bool fEnable);
/*
* VRDE server optional interfaces.
@@ -301,6 +314,49 @@ private:
static DECLCALLBACK(int) tsmfHostChannelControl(void *pvInstance, uint32_t u32Code,
const void *pvParm, uint32_t cbParm,
const void *pvData, uint32_t cbData, uint32_t *pcbDataReturned);
+ int tsmfLock(void);
+ void tsmfUnlock(void);
+ RTCRITSECT mTSMFLock;
+
+ /* Video input interface. */
+ VRDEVIDEOININTERFACE m_interfaceVideoIn;
+ VRDEVIDEOINCALLBACKS m_interfaceCallbacksVideoIn;
+ static DECLCALLBACK(void) VRDECallbackVideoInNotify(void *pvCallback,
+ uint32_t u32Id,
+ const void *pvData,
+ uint32_t cbData);
+ static DECLCALLBACK(void) VRDECallbackVideoInDeviceDesc(void *pvCallback,
+ int rcRequest,
+ void *pDeviceCtx,
+ void *pvUser,
+ const VRDEVIDEOINDEVICEDESC *pDeviceDesc,
+ uint32_t cbDevice);
+ static DECLCALLBACK(void) VRDECallbackVideoInControl(void *pvCallback,
+ int rcRequest,
+ void *pDeviceCtx,
+ void *pvUser,
+ const VRDEVIDEOINCTRLHDR *pControl,
+ uint32_t cbControl);
+ static DECLCALLBACK(void) VRDECallbackVideoInFrame(void *pvCallback,
+ int rcRequest,
+ void *pDeviceCtx,
+ const VRDEVIDEOINPAYLOADHDR *pFrame,
+ uint32_t cbFrame);
+ EmWebcam *mEmWebcam;
+
+ /* Input interface. */
+ VRDEINPUTINTERFACE m_interfaceInput;
+ VRDEINPUTCALLBACKS m_interfaceCallbacksInput;
+ static DECLCALLBACK(void) VRDECallbackInputSetup(void *pvCallback,
+ int rcRequest,
+ uint32_t u32Method,
+ const void *pvResult,
+ uint32_t cbResult);
+ static DECLCALLBACK(void) VRDECallbackInputEvent(void *pvCallback,
+ uint32_t u32Method,
+ const void *pvEvent,
+ uint32_t cbEvent);
+ uint64_t mu64TouchInputTimestampMCS;
};