VirtualBox

Changeset 45926 in vbox


Ignore:
Timestamp:
May 6, 2013 8:26:43 PM (12 years ago)
Author:
vboxsync
Message:

IMachine::VideoCaptureFps

Location:
trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/settings.h

    r45838 r45926  
    823823    uint32_t            ulVideoCaptureVertRes;  // requires settings version 1.12 (VirtualBox 4.3)
    824824    uint32_t            ulVideoCaptureRate;     // requires settings version 1.12 (VirtualBox 4.3)
     825    uint32_t            ulVideoCaptureFps;      // requires settings version 1.12 (VirtualBox 4.3)
    825826    bool                fVideoCaptureEnabled;   // requires settings version 1.12 (VirtualBox 4.3)
    826827    com::Utf8Str        strVideoCaptureFile;    // requires settings version 1.12 (VirtualBox 4.3)
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r45838 r45926  
    374374                     "                            [--vcpheight <height>]\n"
    375375                     "                            [--vcprate <rate>]\n"
     376                     "                            [--vcpfps <fps>]\n"
    376377#endif
    377378                     "                            [--defaultfrontend default|<name]\n"
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp

    r45838 r45926  
    23102310        ULONG Rate;
    23112311        CHECK_ERROR_RET(machine, COMGETTER(VideoCaptureRate)(&Rate), rc);
     2312        ULONG Fps;
     2313        CHECK_ERROR_RET(machine, COMGETTER(VideoCaptureFps)(&Fps), rc);
    23122314        Bstr File;
    23132315        CHECK_ERROR_RET(machine, COMGETTER(VideoCaptureFile)(File.asOutParam()), rc);
     
    23192321            RTPrintf("VideoCaptureHeight=%u\n", (unsigned)Height);
    23202322            RTPrintf("VideoCaptureRate=%u\n", (unsigned)Rate);
     2323            RTPrintf("VideoCaptureFps=%u\n", (unsigned)Fps);
    23212324        }
    23222325        else
     
    23262329            RTPrintf("Capture dimensions: %ux%u\n", Width, Height);
    23272330            RTPrintf("Capture rate:       %ukbps\n", Rate);
     2331            RTPrintf("Capture FPS:        %u\n", Fps);
    23282332            RTPrintf("\n");
    23292333        }
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r45838 r45926  
    198198    MODIFYVM_VCP_HEIGHT,
    199199    MODIFYVM_VCP_RATE,
     200    MODIFYVM_VCP_FPS,
    200201#endif
    201202    MODIFYVM_CHIPSET,
     
    343344    { "--vcpheight",                MODIFYVM_VCP_HEIGHT,                RTGETOPT_REQ_UINT32 },
    344345    { "--vcprate",                  MODIFYVM_VCP_RATE,                  RTGETOPT_REQ_UINT32 },
     346    { "--vcpfps",                   MODIFYVM_VCP_FPS,                   RTGETOPT_REQ_UINT32 },
    345347#endif
    346348    { "--autostart-enabled",        MODIFYVM_AUTOSTART_ENABLED,         RTGETOPT_REQ_BOOL_ONOFF },
     
    24522454                break;
    24532455            }
     2456            case MODIFYVM_VCP_FPS:
     2457            {
     2458                CHECK_ERROR(machine, COMSETTER(VideoCaptureFps)(ValueUnion.u32));
     2459                break;
     2460            }
    24542461#endif
    24552462            case MODIFYVM_AUTOSTART_ENABLED:
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r45840 r45926  
    39753975  <interface
    39763976    name="IMachine" extends="$unknown"
    3977     uuid="d8b9ebbe-3f76-4844-af2c-accb462e64b0"
     3977    uuid="55bf39d3-ac8f-4a77-90d8-1e2c726170ce"
    39783978    wsmap="managed"
    39793979    >
     
    42554255    <attribute name="VideoCaptureRate" type="unsigned long" default="512">
    42564256      <desc>
    4257         This setting determines the bitrate in kilobits per second
     4257        This setting determines the bitrate in kilobits per second.
     4258        Increasing this value makes the video look better for the
     4259        cost of an increased file size.
     4260      </desc>
     4261    </attribute>
     4262
     4263    <attribute name="VideoCaptureFps" type="unsigned long" default="25">
     4264      <desc>
     4265        This setting determines the maximum number of frames per second.
     4266        Frames with a higher frequency will be skipped. Reducing this
     4267        value increses the number of skipped frames but reduces the
     4268        file size.
    42584269      </desc>
    42594270    </attribute>
  • trunk/src/VBox/Main/include/MachineImpl.h

    r45838 r45926  
    260260        ULONG               mVideoCaptureHeight;
    261261        ULONG               mVideoCaptureRate;
     262        ULONG               mVideoCaptureFps;
    262263        Bstr                mVideoCaptureFile;
    263264        BOOL                mVideoCaptureEnabled;
     
    441442    STDMETHOD(COMGETTER(VideoCaptureRate))(ULONG *aRate);
    442443    STDMETHOD(COMSETTER(VideoCaptureRate))(ULONG aRate);
     444    STDMETHOD(COMGETTER(VideoCaptureFps))(ULONG *aFps);
     445    STDMETHOD(COMSETTER(VideoCaptureFps))(ULONG aFps);
    443446    STDMETHOD(COMGETTER(BIOSSettings))(IBIOSSettings **biosSettings);
    444447    STDMETHOD(COMGETTER(SnapshotFolder))(BSTR *aSavedStateFolder);
  • trunk/src/VBox/Main/src-client/DisplayImpl.cpp

    r45914 r45926  
    496496        ULONG ulRate;
    497497        mParent->machine()->COMGETTER(VideoCaptureRate)(&ulRate);
     498        ULONG ulFps;
     499        mParent->machine()->COMGETTER(VideoCaptureFps)(&ulFps);
    498500        BSTR strFile;
    499501        mParent->machine()->COMGETTER(VideoCaptureFile)(&strFile);
    500         if (VideoRecContextInit(mpVideoRecCtx, strFile, ulWidth, ulHeight, ulRate))
     502        if (VideoRecContextInit(mpVideoRecCtx, strFile, ulWidth, ulHeight, ulRate, ulFps))
    501503        {
    502504            LogFlow(("Failed to initialize video recording context!\n"));
  • trunk/src/VBox/Main/src-client/VideoRec.cpp

    r45922 r45926  
    9797    /* pixel format of the current frame */
    9898    uint32_t            u32PixelFormat;
     99    /* maximum number of frames per second */
     100    uint32_t            uDelay;
     101    uint64_t            u64LastTimeStamp;
    99102    /* time stamp of the current frame */
    100103    uint64_t            u64TimeStamp;
     
    426429 */
    427430int VideoRecContextInit(PVIDEORECCONTEXT pVideoRecCtx, com::Bstr strFile,
    428                         uint32_t uWidth, uint32_t uHeight, uint32_t uRate)
     431                        uint32_t uWidth, uint32_t uHeight, uint32_t uRate, uint32_t uFps)
    429432{
    430433    pVideoRecCtx->uTargetWidth  = uWidth;
     
    460463    /* disable multithreading */
    461464    pVideoRecCtx->VpxConfig.g_threads = 0;
     465    pVideoRecCtx->uDelay = 1000 / uFps;
    462466
    463467    struct vpx_rational arg_framerate = {30, 1};
     
    643647 * @param   uSourceHeight      Height of the source image (framebuffer).
    644648 * @param   pu8BufAddr         Pointer to source image(framebuffer).
    645  * @param   u64TimeStamp       Time stamp.
     649 * @param   u64TimeStamp       Time stamp (milliseconds).
    646650 */
    647651int VideoRecCopyToIntBuf(PVIDEORECCONTEXT pVideoRecCtx, uint32_t x, uint32_t y,
     
    653657    AssertReturn(uSourceWidth, VERR_INVALID_PARAMETER);
    654658    AssertReturn(uSourceHeight, VERR_INVALID_PARAMETER);
     659
     660    if (u64TimeStamp < pVideoRecCtx->u64LastTimeStamp + pVideoRecCtx->uDelay)
     661        return VINF_TRY_AGAIN;
     662    pVideoRecCtx->u64LastTimeStamp = u64TimeStamp;
    655663
    656664    if (ASMAtomicReadBool(&pVideoRecCtx->fRgbFilled))
  • trunk/src/VBox/Main/src-client/VideoRec.h

    r45878 r45926  
    2424int  VideoRecContextCreate(PVIDEORECCONTEXT *ppVideoRecContext);
    2525int  VideoRecContextInit(PVIDEORECCONTEXT pVideoRecContext, com::Bstr mFileName,
    26                          uint32_t uWidth, uint32_t uHeight, uint32_t uRate);
     26                         uint32_t uWidth, uint32_t uHeight, uint32_t uRate, uint32_t uFps);
    2727void VideoRecContextClose(PVIDEORECCONTEXT pVideoRecContext);
    2828bool VideoRecIsEnabled(PVIDEORECCONTEXT pVideoRecContext);
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r45909 r45926  
    171171    mVideoCaptureHeight = 768;
    172172    mVideoCaptureRate = 512;
     173    mVideoCaptureFps = 25;
    173174    mVideoCaptureEnabled = false;
    174175
     
    18081809    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    18091810    mHWData->mVideoCaptureRate = aRate;
     1811    return S_OK;
     1812}
     1813
     1814STDMETHODIMP Machine::COMGETTER(VideoCaptureFps)(ULONG *aFps)
     1815{
     1816    AutoCaller autoCaller(this);
     1817    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     1818
     1819    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     1820     *aFps = mHWData->mVideoCaptureFps;
     1821    return S_OK;
     1822}
     1823
     1824STDMETHODIMP Machine::COMSETTER(VideoCaptureFps)(ULONG aFps)
     1825{
     1826    AutoCaller autoCaller(this);
     1827    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     1828
     1829    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     1830    mHWData->mVideoCaptureFps = aFps;
    18101831    return S_OK;
    18111832}
     
    87908811        mHWData->mVideoCaptureEnabled = data.fVideoCaptureEnabled;
    87918812        mHWData->mVideoCaptureRate = data.ulVideoCaptureRate;
     8813        mHWData->mVideoCaptureFps = data.ulVideoCaptureFps;
    87928814        mHWData->mVideoCaptureFile = data.strVideoCaptureFile;
    87938815        mHWData->mFirmwareType = data.firmwareType;
     
    1000710029        data.ulVideoCaptureVertRes = mHWData->mVideoCaptureHeight;
    1000810030        data.ulVideoCaptureRate = mHWData->mVideoCaptureRate;
     10031        data.ulVideoCaptureFps = mHWData->mVideoCaptureFps;
    1000910032        data.fVideoCaptureEnabled  = !!mHWData->mVideoCaptureEnabled;
    1001010033        data.strVideoCaptureFile = mHWData->mVideoCaptureFile;
  • trunk/src/VBox/Main/xml/Settings.cpp

    r45838 r45926  
    17501750          ulVideoCaptureVertRes(768),
    17511751          ulVideoCaptureRate(512),
     1752          ulVideoCaptureFps(25),
    17521753          fVideoCaptureEnabled(false),
    17531754          strVideoCaptureFile("Test.webm"),
     
    18241825                  && (ulVideoCaptureVertRes     == h.ulVideoCaptureVertRes)
    18251826                  && (ulVideoCaptureRate        == h.ulVideoCaptureRate)
     1827                  && (ulVideoCaptureFps         == h.ulVideoCaptureFps)
    18261828                  && (firmwareType              == h.firmwareType)
    18271829                  && (pointingHIDType           == h.pointingHIDType)
     
    27232725            pelmHwChild->getAttributeValue("vertRes", hw.ulVideoCaptureVertRes);
    27242726            pelmHwChild->getAttributeValue("rate",    hw.ulVideoCaptureRate);
     2727            pelmHwChild->getAttributeValue("fps",     hw.ulVideoCaptureFps);
    27252728        }
    27262729        else if (pelmHwChild->nameEquals("RemoteDisplay"))
     
    39083911        pelmVideoCapture->setAttribute("vertRes", hw.ulVideoCaptureVertRes);
    39093912        pelmVideoCapture->setAttribute("rate",    hw.ulVideoCaptureRate);
     3913        pelmVideoCapture->setAttribute("fps",     hw.ulVideoCaptureFps);
    39103914    }
    39113915
Note: See TracChangeset for help on using the changeset viewer.

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