2,543
社区成员
发帖
与我相关
我的任务
分享
HRESULT WMVCapture::BuildGraph()
{
HRESULT hr = S_OK;
hr = AddFilter(&VideoSourceFilter,CLSID_VideoInputDeviceCategory,L"FaceTime HD Camera (Built-in)");
if(FAILED(hr))
{
return hr;
}
hr = AddFilter(&AsfWriter,CLSID_LegacyAmFilterCategory,L"WM ASF Writer");
if(FAILED(hr))
{
return hr;
}
IConfigAsfWriter *pAsf = NULL;
hr = AsfWriter->QueryInterface( IID_IConfigAsfWriter, (void**)&pAsf );
if(pAsf != NULL)
{
hr = pAsf->ConfigureFilterUsingProfileGuid(WMProfile_V80_BESTVBRVideo);
pAsf->Release();
pAsf = NULL;
}
hr = AsfWriter->QueryInterface(IID_IFileSinkFilter, (void**) &FileSink);
if(FAILED(hr))
{
return hr;
}
hr = CaptureGraph->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video,
VideoSourceFilter, NULL,AsfWriter);
if(FAILED(hr))
{
return hr;
}
this->CaptureState = READY;
return hr;
}
HRESULT WMVCapture::StartCapture(FileName)
{
//HRESULT hr = FileSink->SetMode(1); //AM_FILE_OVERRITE
// if(FAILED(hr))
// return hr;
HRESULT hr;
if(FAILED(hr = FileSink->SetFileName(FileName,NULL)))
return hr;
hr = MediaControl->Run();
if(SUCCEEDED(hr))
this->CaptureState = RUNNING;
return hr;
}