VirtualBox

vbox的更動 45926 路徑 trunk/src/VBox/Main/src-client


忽略:
時間撮記:
2013-5-6 下午08:26:43 (12 年 以前)
作者:
vboxsync
訊息:

IMachine::VideoCaptureFps

位置:
trunk/src/VBox/Main/src-client
檔案:
修改 3 筆資料

圖例:

未更動
新增
刪除
  • 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);
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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