diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2014-03-26 19:21:20 +0000 |
---|---|---|
committer | <> | 2014-05-08 15:03:54 +0000 |
commit | fb123f93f9f5ce42c8e5785d2f8e0edaf951740e (patch) | |
tree | c2103d76aec5f1f10892cd1d3a38e24f665ae5db /src/VBox/Main/include/ConsoleVRDPServer.h | |
parent | 58ed4748338f9466599adfc8a9171280ed99e23f (diff) | |
download | VirtualBox-master.tar.gz |
Imported from /home/lorry/working-area/delta_VirtualBox/VirtualBox-4.3.10.tar.bz2.HEADVirtualBox-4.3.10master
Diffstat (limited to 'src/VBox/Main/include/ConsoleVRDPServer.h')
-rw-r--r-- | src/VBox/Main/include/ConsoleVRDPServer.h | 72 |
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; }; |