VirtualBox

Changeset 44191 in vbox for trunk


Ignore:
Timestamp:
Dec 20, 2012 5:36:56 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
82916
Message:

include,ExtPacks\Puel\UsbWebcam,Main,VRDP,VBoxManage: emulated USB webcam.

Location:
trunk
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/RemoteDesktop/VRDEVideoIn.h

    r43946 r44191  
    880880                                                   void *pvUser,
    881881                                                   const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle,
    882                                                    VRDEVIDEOINCTRLHDR *pReq,
     882                                                   const VRDEVIDEOINCTRLHDR *pReq,
    883883                                                   uint32_t cbReq));
    884884
     
    926926     * @param pvUser     The pvUser parameter of VRDEVideoInGetDeviceDesc.
    927927     * @param pDeviceDesc The device description.
    928      * @param cbDevice  The size of buffer pointed by pDevice.
     928     * @param cbDeviceDesc The size of buffer pointed by pDevice.
    929929     */
    930930    DECLR3CALLBACKMEMBER(void, VRDECallbackVideoInDeviceDesc,(void *pvCallback,
     
    933933                                                              void *pvUser,
    934934                                                              const VRDEVIDEOINDEVICEDESC *pDeviceDesc,
    935                                                               uint32_t cbDevice));
     935                                                              uint32_t cbDeviceDesc));
    936936
    937937    /* Control response or notification.
  • trunk/include/VBox/settings.h

    r43041 r44191  
    789789    ChipsetType_T       chipsetType;            // requires settings version 1.11 (VirtualBox 4.0)
    790790
     791    bool                fEmulatedUSBWebcam;     // 1.13 (VirtualBox 4.2)
    791792    bool                fEmulatedUSBCardReader; // 1.12 (VirtualBox 4.1)
    792793
  • trunk/src/VBox/Frontends/VBoxManage/Makefile.kmk

    r42838 r44191  
    7575        $(if $(VBOX_WITH_VIDEOHWACCEL), VBOX_WITH_VIDEOHWACCEL) \
    7676        $(if $(VBOX_WITH_VIRTIO),VBOX_WITH_VIRTIO) \
     77        $(if $(VBOX_WITH_USB_VIDEO),VBOX_WITH_USB_VIDEO) \
    7778        $(if $(VBOX_WITH_USB_CARDREADER),VBOX_WITH_USB_CARDREADER) \
    7879        $(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH) \
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r44131 r44191  
    355355                     "                            [--faulttolerancesyncinterval <msec>]\n"
    356356                     "                            [--faulttolerancepassword <password>]\n"
     357#endif
     358#ifdef VBOX_WITH_USB_VIDEO
     359                     "                            [--usbwebcam on|off]\n"
    357360#endif
    358361#ifdef VBOX_WITH_USB_CARDREADER
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r44028 r44191  
    184184    MODIFYVM_ATTACH_PCI,
    185185    MODIFYVM_DETACH_PCI,
     186#endif
     187#ifdef VBOX_WITH_USB_WEBCAM
     188    MODIFYVM_USBWEBCAM,
    186189#endif
    187190#ifdef VBOX_WITH_USB_CARDREADER
     
    343346    { "--pcidetach",                MODIFYVM_DETACH_PCI,                RTGETOPT_REQ_STRING },
    344347#endif
     348#ifdef VBOX_WITH_USB_WEBCAM
     349    { "--usbwebcam",                MODIFYVM_USBWEBCAM,                 RTGETOPT_REQ_BOOL_ONOFF },
     350#endif
    345351#ifdef VBOX_WITH_USB_CARDREADER
    346352    { "--usbcardreader",            MODIFYVM_USBCARDREADER,             RTGETOPT_REQ_BOOL_ONOFF },
     
    24912497            }
    24922498#endif
     2499
     2500#ifdef VBOX_WITH_USB_WEBCAM
     2501            case MODIFYVM_USBWEBCAM:
     2502            {
     2503                CHECK_ERROR(machine, COMSETTER(EmulatedUSBWebcameraEnabled)(ValueUnion.f));
     2504                break;
     2505            }
     2506#endif /* VBOX_WITH_USB_WEBCAM */
     2507
    24932508#ifdef VBOX_WITH_USB_CARDREADER
    24942509            case MODIFYVM_USBCARDREADER:
  • trunk/src/VBox/Main/include/ConsoleImpl.h

    r44151 r44191  
    3636class Nvram;
    3737#ifdef VBOX_WITH_USB_VIDEO
    38 class UsbWebcamInterface;
     38class EmWebcam;
    3939#endif
    4040#ifdef VBOX_WITH_USB_CARDREADER
     
    228228#ifdef VBOX_WITH_USB_CARDREADER
    229229    UsbCardReader *getUsbCardReader() { return mUsbCardReader; }
     230#endif
     231#ifdef VBOX_WITH_USB_VIDEO
     232    EmWebcam *getEmWebcam() { return mEmWebcam; }
    230233#endif
    231234
     
    776779    Nvram   * const mNvram;
    777780#ifdef VBOX_WITH_USB_VIDEO
    778     UsbWebcamInterface * const mUsbWebcamInterface;
     781    EmWebcam * const mEmWebcam;
    779782#endif
    780783#ifdef VBOX_WITH_USB_CARDREADER
  • trunk/src/VBox/Main/include/ConsoleVRDPServer.h

    r43929 r44191  
    154154    int VideoInGetDeviceDesc(void *pvUser, const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle);
    155155    int VideoInControl(void *pvUser, const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle,
    156                        VRDEVIDEOINCTRLHDR *pReq, uint32_t cbReq);
     156                       const VRDEVIDEOINCTRLHDR *pReq, uint32_t cbReq);
    157157
    158158private:
  • trunk/src/VBox/Main/include/MachineImpl.h

    r44167 r44191  
    297297        PointingHIDType_T    mPointingHIDType;
    298298        ChipsetType_T        mChipsetType;
     299        BOOL                 mEmulatedUSBWebcamEnabled;
    299300        BOOL                 mEmulatedUSBCardReaderEnabled;
    300301
  • trunk/src/VBox/Main/src-client/ConsoleImpl.cpp

    r44167 r44191  
    380380    , mNvram(NULL)
    381381#ifdef VBOX_WITH_USB_VIDEO
    382     , mUsbWebcamInterface(NULL)
     382    , mEmWebcam(NULL)
    383383#endif
    384384#ifdef VBOX_WITH_USB_CARDREADER
     
    550550
    551551#ifdef VBOX_WITH_USB_VIDEO
    552         unconst(mUsbWebcamInterface) = new UsbWebcamInterface(this);
    553         AssertReturn(mUsbWebcamInterface, E_FAIL);
     552        unconst(mEmWebcam) = new EmWebcam(this);
     553        AssertReturn(mEmWebcam, E_FAIL);
    554554#endif
    555555#ifdef VBOX_WITH_USB_CARDREADER
     
    651651
    652652#ifdef VBOX_WITH_USB_VIDEO
    653     if (mUsbWebcamInterface)
    654     {
    655         delete mUsbWebcamInterface;
    656         unconst(mUsbWebcamInterface) = NULL;
     653    if (mEmWebcam)
     654    {
     655        delete mEmWebcam;
     656        unconst(mEmWebcam) = NULL;
    657657    }
    658658#endif
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r44151 r44191  
    23962396
    23972397#ifdef VBOX_WITH_USB_VIDEO
    2398 
    2399                 InsertConfigNode(pUsbDevices, "Webcam", &pDev);
    2400                 InsertConfigNode(pDev,     "0", &pInst);
    2401                 InsertConfigNode(pInst,    "Config", &pCfg);
    2402 # if 0 /* Experiments with attaching */
    2403                 InsertConfigInteger(pCfg, "USBVER", RT_BIT(2));
     2398                BOOL aEmulatedUSBWebcamEnabled = FALSE;
     2399                hrc = pMachine->COMGETTER(EmulatedUSBWebcameraEnabled)(&aEmulatedUSBWebcamEnabled);    H();
     2400                if (aEmulatedUSBWebcamEnabled)
     2401                {
     2402                    InsertConfigNode(pUsbDevices, "Webcam", &pDev);
     2403                    InsertConfigNode(pDev,     "0", &pInst);
     2404                    InsertConfigNode(pInst,    "Config", &pCfg);
     2405                    InsertConfigNode(pInst,    "LUN#0", &pLunL0);
     2406# ifdef VBOX_WITH_USB_VIDEO_TEST
     2407                    InsertConfigString(pLunL0, "Driver", "WebcamFileFeeder");
     2408                    InsertConfigNode(pLunL0,   "Config", &pCfg);
     2409                    InsertConfigString(pCfg,   "DirToFeed", "out");
     2410# else
     2411                    InsertConfigString(pLunL0, "Driver", "EmWebcam");
     2412                    InsertConfigNode(pLunL0,   "Config", &pCfg);
     2413                    InsertConfigInteger(pCfg,  "Object", (uintptr_t)mEmWebcam);
    24042414# endif
    2405                 InsertConfigNode(pInst,    "LUN#0", &pLunL0);
    2406 # ifdef VBOX_WITH_USB_VIDEO_TEST
    2407                 InsertConfigString(pLunL0,    "Driver", "WebcamFileFeeder");
    2408                 InsertConfigNode(pLunL0,    "Config", &pCfg);
    2409                 InsertConfigString(pCfg,   "DirToFeed", "out");
    2410 # else
    2411                 InsertConfigString(pLunL0,    "Driver", "UsbWebcamInterface");
    2412                 InsertConfigNode(pLunL0,    "Config", &pCfg);
    2413                 InsertConfigInteger(pCfg,   "Object", mUsbWebcamInterface);
    2414 # endif
     2415                }
    24152416#endif
     2417
    24162418#ifdef VBOX_WITH_USB_CARDREADER
    24172419                BOOL aEmulatedUSBCardReaderEnabled = FALSE;
  • trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp

    r43929 r44191  
    2828#ifdef VBOX_WITH_USB_CARDREADER
    2929# include "UsbCardReader.h"
     30#endif
     31#ifdef VBOX_WITH_USB_VIDEO
     32# include "UsbWebcamInterface.h"
    3033#endif
    3134
     
    25762579#ifdef VBOX_WITH_USB_VIDEO
    25772580    ConsoleVRDPServer *pThis = static_cast<ConsoleVRDPServer*>(pvCallback);
    2578     UsbWebcamInterface *pWebCam = pThis->mConsole->getUsbWebcamInterface();
    2579     return pWebCam->WebCamNotify(u32Id, pvData, cbData);
     2581    EmWebcam *pWebcam = pThis->mConsole->getEmWebcam();
     2582    pWebcam->EmWebcamCbNotify(u32Id, pvData, cbData);
    25802583#else
    25812584    NOREF(pvCallback);
     
    25952598#ifdef VBOX_WITH_USB_VIDEO
    25962599    ConsoleVRDPServer *pThis = static_cast<ConsoleVRDPServer*>(pvCallback);
    2597     UsbWebcamInterface *pWebCam = pThis->mConsole->getUsbWebcamInterface();
    2598     return pWebCam->WebCamDeviceDesc(rcRequest, pDeviceCtx, pvUser, pDeviceDesc, cbDevice);
     2600    EmWebcam *pWebcam = pThis->mConsole->getEmWebcam();
     2601    pWebcam->EmWebcamCbDeviceDesc(rcRequest, pDeviceCtx, pvUser, pDeviceDesc, cbDevice);
    25992602#else
    26002603    NOREF(pvCallback);
     
    26162619#ifdef VBOX_WITH_USB_VIDEO
    26172620    ConsoleVRDPServer *pThis = static_cast<ConsoleVRDPServer*>(pvCallback);
    2618     UsbWebcamInterface *pWebCam = pThis->mConsole->getUsbWebcamInterface();
    2619     return pWebCam->WebCamControl(rcRequest, pDeviceCtx, pvUser, pControl, cbControl);
     2621    EmWebcam *pWebcam = pThis->mConsole->getEmWebcam();
     2622    pWebcam->EmWebcamCbControl(rcRequest, pDeviceCtx, pvUser, pControl, cbControl);
    26202623#else
    26212624    NOREF(pvCallback);
     
    26362639#ifdef VBOX_WITH_USB_VIDEO
    26372640    ConsoleVRDPServer *pThis = static_cast<ConsoleVRDPServer*>(pvCallback);
    2638     UsbWebcamInterface *pWebCam = pThis->mConsole->getUsbWebcamInterface();
    2639     return pWebCam->WebCamFrame(rcRequest, pDeviceCtx, pvUser, pFrame, cbFrame);
     2641    EmWebcam *pWebcam = pThis->mConsole->getEmWebcam();
     2642    pWebcam->EmWebcamCbFrame(rcRequest, pDeviceCtx, pFrame, cbFrame);
    26402643#else
    26412644    NOREF(pvCallback);
     
    26962699
    26972700int ConsoleVRDPServer::VideoInControl(void *pvUser, const VRDEVIDEOINDEVICEHANDLE *pDeviceHandle,
    2698                                       VRDEVIDEOINCTRLHDR *pReq, uint32_t cbReq)
     2701                                      const VRDEVIDEOINCTRLHDR *pReq, uint32_t cbReq)
    26992702{
    27002703    int rc;
  • trunk/src/VBox/Main/src-client/VBoxDriversRegister.cpp

    r43131 r44191  
    7979
    8080#ifdef VBOX_WITH_USB_VIDEO
    81     rc = pCallbacks->pfnRegister(pCallbacks, &UsbWebcamInterface::DrvReg);
     81    rc = pCallbacks->pfnRegister(pCallbacks, &EmWebcam::DrvReg);
    8282    if (RT_FAILURE(rc))
    8383        return rc;
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r44167 r44191  
    209209    mPointingHIDType = PointingHIDType_PS2Mouse;
    210210    mChipsetType = ChipsetType_PIIX3;
     211    mEmulatedUSBWebcamEnabled = FALSE;
    211212    mEmulatedUSBCardReaderEnabled = FALSE;
    212213
     
    16251626STDMETHODIMP Machine::COMGETTER(EmulatedUSBWebcameraEnabled)(BOOL *enabled)
    16261627{
     1628#ifdef VBOX_WITH_USB_VIDEO
     1629    CheckComArgOutPointerValid(enabled);
     1630
     1631    AutoCaller autoCaller(this);
     1632    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     1633
     1634    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     1635
     1636    *enabled = mHWData->mEmulatedUSBWebcamEnabled;
     1637
     1638    return S_OK;
     1639#else
    16271640    NOREF(enabled);
    16281641    return E_NOTIMPL;
     1642#endif
    16291643}
    16301644
    16311645STDMETHODIMP Machine::COMSETTER(EmulatedUSBWebcameraEnabled)(BOOL enabled)
    16321646{
     1647#ifdef VBOX_WITH_USB_VIDEO
     1648    AutoCaller autoCaller(this);
     1649    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     1650    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     1651
     1652    HRESULT rc = checkStateDependency(MutableStateDep);
     1653    if (FAILED(rc)) return rc;
     1654
     1655    setModified(IsModified_MachineData);
     1656    mHWData.backup();
     1657    mHWData->mEmulatedUSBWebcamEnabled = enabled;
     1658
     1659    return S_OK;
     1660#else
    16331661    NOREF(enabled);
    16341662    return E_NOTIMPL;
     1663#endif
    16351664}
    16361665
     
    85358564        mHWData->mKeyboardHIDType = data.keyboardHIDType;
    85368565        mHWData->mChipsetType = data.chipsetType;
     8566        mHWData->mEmulatedUSBWebcamEnabled = data.fEmulatedUSBWebcam;
    85378567        mHWData->mEmulatedUSBCardReaderEnabled = data.fEmulatedUSBCardReader;
    85388568        mHWData->mHPETEnabled = data.fHPETEnabled;
     
    97209750        data.chipsetType = mHWData->mChipsetType;
    97219751
     9752        data.fEmulatedUSBWebcam     = !!mHWData->mEmulatedUSBWebcamEnabled;
    97229753        data.fEmulatedUSBCardReader = !!mHWData->mEmulatedUSBCardReaderEnabled;
    97239754
  • trunk/src/VBox/Main/xml/Settings.cpp

    r44039 r44191  
    16171617          keyboardHIDType(KeyboardHIDType_PS2Keyboard),
    16181618          chipsetType(ChipsetType_PIIX3),
     1619          fEmulatedUSBWebcam(false),
    16191620          fEmulatedUSBCardReader(false),
    16201621          clipboardMode(ClipboardMode_Disabled),
     
    16851686                  && (keyboardHIDType           == h.keyboardHIDType)
    16861687                  && (chipsetType               == h.chipsetType)
     1688                  && (fEmulatedUSBWebcam        == h.fEmulatedUSBWebcam)
    16871689                  && (fEmulatedUSBCardReader    == h.fEmulatedUSBCardReader)
    16881690                  && (vrdeSettings              == h.vrdeSettings)
     
    28732875        else if (pelmHwChild->nameEquals("EmulatedUSB"))
    28742876        {
    2875             const xml::ElementNode *pelmCardReader;
     2877            const xml::ElementNode *pelmCardReader, *pelmWebcam;
    28762878
    28772879            if ((pelmCardReader = pelmHwChild->findChildElement("CardReader")))
    28782880            {
    28792881                pelmCardReader->getAttributeValue("enabled", hw.fEmulatedUSBCardReader);
     2882            }
     2883
     2884            if ((pelmWebcam = pelmHwChild->findChildElement("Webcam")))
     2885            {
     2886                pelmWebcam->getAttributeValue("enabled", hw.fEmulatedUSBWebcam);
    28802887            }
    28812888        }
     
    41884195    {
    41894196        xml::ElementNode *pelmEmulatedUSB = pelmHardware->createChild("EmulatedUSB");
     4197
    41904198        xml::ElementNode *pelmCardReader = pelmEmulatedUSB->createChild("CardReader");
    4191 
    41924199        pelmCardReader->setAttribute("enabled", hw.fEmulatedUSBCardReader);
     4200
     4201        if (m->sv >= SettingsVersion_v1_13)
     4202        {
     4203            xml::ElementNode *pelmWebcam = pelmEmulatedUSB->createChild("Webcam");
     4204            pelmWebcam->setAttribute("enabled", hw.fEmulatedUSBWebcam);
     4205        }
    41934206    }
    41944207
     
    48804893    }
    48814894
     4895    if (m->sv < SettingsVersion_v1_13)
     4896    {
     4897        /* 4.2: Emulated USB Webcam. */
     4898        if (hardwareMachine.fEmulatedUSBWebcam)
     4899            m->sv = SettingsVersion_v1_13;
     4900    }
     4901
    48824902    if (m->sv < SettingsVersion_v1_12)
    48834903    {
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette