VirtualBox

Changeset 42861 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Aug 17, 2012 12:06:25 PM (12 years ago)
Author:
vboxsync
Message:

main/VideoCaptureAndEncoding: Error checking, formatting. Still under testing and development

Location:
trunk/src/VBox
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r42844 r42861  
    333333    { "--chipset",                  MODIFYVM_CHIPSET,                   RTGETOPT_REQ_STRING },
    334334#ifdef VBOX_WITH_VPX
    335     { "--videocapture",             MODIFYVM_VCP    ,                   RTGETOPT_REQ_BOOL_ONOFF },
    336     { "--vcpfilename",              MODIFYVM_VCP_FILENAME,              RTGETOPT_REQ_STRING },
     335    { "--vcpenabled",               MODIFYVM_VCP,                       RTGETOPT_REQ_BOOL_ONOFF },
     336    { "--vcpfile",                  MODIFYVM_VCP_FILENAME,              RTGETOPT_REQ_STRING },
    337337    { "--vcpwidth",                 MODIFYVM_VCP_WIDTH,                 RTGETOPT_REQ_UINT32 },
    338338    { "--vcpheight",                MODIFYVM_VCP_HEIGHT,                RTGETOPT_REQ_UINT32 },
     
    24122412            case MODIFYVM_VCP_FILENAME:
    24132413            {
    2414                 //CHECK_ERROR(machine, COMSETTER(VideoRecFilename)(ValueUnion.psz));
     2414                Bstr bstr(ValueUnion.psz);
     2415                CHECK_ERROR(machine, COMSETTER(VideoCaptureFile)(bstr.raw()));
    24152416                break;
    24162417            }
  • trunk/src/VBox/Main/src-client/DisplayImpl.cpp

    r42844 r42861  
    430430HRESULT Display::init (Console *aParent)
    431431{
    432     LogRelFlowFunc(("this=%p: aParent=%p\n", this, aParent));
    433 
    434432    ComAssertRet(aParent, E_INVALIDARG);
    435 
     433    HRESULT res;
    436434    /* Enclose the state transition NotReady->InInit->Ready */
    437435    AutoInitSpan autoInitSpan(this);
     
    449447    ULONG ulVideoCaptureHorzRes;
    450448    ULONG ulVideoCaptureVertRes;
    451     char *pchVideoCaptureFile;
    452449    BSTR strVideoCaptureFile;
    453     bool Enabled;
    454     LogFlow(("Init And Create\n"));
    455     int res = VideoRecContextCreate(&pVideoRecContext);
     450    BOOL fEnabled = false;
     451    if (VideoRecContextCreate(&pVideoRecContext))
     452    {
     453        LogFlow(("Failed to create Video Recording Context \n"));
     454        return E_FAIL;
     455    }
    456456    res = RTCritSectInit(&pVideoRecContext->CritSect);
    457     AssertReturn(res == VINF_SUCCESS, E_UNEXPECTED);
     457    AssertReturn(res == S_OK, E_UNEXPECTED);
     458    pVideoRecContext->fEnabled = false;
    458459    mParent->machine()->COMGETTER(VideoCaptureWidth)(&ulVideoCaptureHorzRes);
    459460    mParent->machine()->COMGETTER(VideoCaptureHeight)(&ulVideoCaptureVertRes);
    460461    mParent->machine()->COMGETTER(VideoCaptureFile)(&strVideoCaptureFile);
    461     if(res == VINF_SUCCESS)
    462         res = VideoRecContextInit(pVideoRecContext,strVideoCaptureFile, ulVideoCaptureHorzRes, ulVideoCaptureVertRes);
     462    mParent->machine()->COMGETTER(VideoCaptureEnabled)(&fEnabled);
     463    if (fEnabled)
     464    {
     465        LogFlow(("VidoeRecording VPX enabled \n"));
     466        if (VideoRecContextInit(pVideoRecContext,strVideoCaptureFile,
     467                                  ulVideoCaptureHorzRes, ulVideoCaptureVertRes))
     468        {
     469            LogFlow(("Failed to initialize video recording context \n"));
     470            return E_FAIL;
     471        }
     472        pVideoRecContext->fEnabled = true;
     473    }
    463474#endif
    464475    mcMonitors = ul;
     
    549560    mpVMMDev = NULL;
    550561    mfVMMDevInited = true;
     562
     563#ifdef VBOX_WITH_VPX
     564    VideoRecContextClose(pVideoRecContext);
     565#endif
    551566}
    552567
     
    32603275        }
    32613276    }
     3277
    32623278#ifdef VBOX_WITH_VPX
    32633279    uint32_t u32VideoRecImgFormat = VPX_IMG_FMT_NONE;
     
    33023318                    break;
    33033319                case 24:
    3304                     u32VideoRecImgFormat  = VPX_IMG_FMT_RGB24;
     3320                    u32VideoRecImgFormat = VPX_IMG_FMT_RGB24;
    33053321                    Log2(("FFmpeg::RequestResize: setting ffmpeg pixel format to VPX_IMG_FMT_RGB24\n"));
    33063322                    break;
     
    33153331        }
    33163332
    3317         if (u32VideoRecImgFormat != VPX_IMG_FMT_NONE && address != NULL)
     3333        if (u32VideoRecImgFormat != VPX_IMG_FMT_NONE && address != NULL
     3334            && pVideoRecContext->fEnabled)
    33183335        {
    33193336            VideoRecCopyToIntBuffer(pVideoRecContext, pFBInfo->xOrigin, pFBInfo->yOrigin,
     
    33483365    LogRelFlowFunc (("\n"));
    33493366
    3350     /* Disable VBVA mode. */
     3367   /* Disable VBVA mode. */
    33513368    pDrv->pDisplay->VideoAccelEnable (false, NULL);
    33523369}
     
    35433560            if (uScreenId != VBOX_VIDEO_PRIMARY_SCREEN)
    35443561            {
    3545                 /* Primary screen resize is initiated by the VGA device. */
     3562                /* Primary screen resize is eeeeeeeee by the VGA device. */
    35463563                if (pFBInfo->fDisabled)
    35473564                {
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r42858 r42861  
    16961696STDMETHODIMP Machine::COMSETTER(VideoCaptureFile)(IN_BSTR aFile)
    16971697{
     1698    Utf8Str strFile(aFile);
    16981699    AutoCaller autoCaller(this);
    16991700    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    17001701
    17011702    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    1702     mHWData->mVideoCaptureFile = aFile;
     1703    if(strFile.isEmpty())
     1704       strFile = "VideoCap.webm";
     1705    mHWData->mVideoCaptureFile = strFile;
    17031706    return S_OK;
    17041707}
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