bool HDevice::CreateGraph() { if (initialized) { Warning(L"Graph already created"); return false; } if (!CreateFilterGraph(&graph, &builder, &control)) return false; initialized = true; return true; }
HRESULT CConvert::StartConversionDirect() { StopConversion(); printf("Initialising conversion...\n"); m_tStartTime = timeGetTime(); HRESULT hr = MakeNotificationWindow(); if (FAILED(hr)) return hr; hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void **)&m_pBuilder); if (FAILED(hr)) { StopConversion(); ThrowError(hr, "GraphBuilder could not be created"); return hr; } if (wcscmp(m_pSettings->strOutputFile, m_pSettings->strOutputFile) == 0) { StopConversion(); ThrowError(E_FAIL, "The source and target files are the same."); return E_FAIL; } hr |= CreateFilterGraph(&m_pGraph); if(FAILED(hr)) { StopConversion(); ThrowError(hr, "Couldn't create filter graph! Please check that DirectX 8 (or higher) is installed"); return hr; } hr = m_pBuilder->SetFiltergraph(m_pGraph); if(FAILED(hr)) { StopConversion(); ThrowError(hr, "Couldn't create filter graph! Please check that DirectX 8 (or higher) is installed"); return hr; } m_pCallback->ConversionConnecting(); CComPtr<IBaseFilter> pSourceFilter = NULL; hr = m_pGraph->AddSourceFilter(m_pSettings->strInputFile, NULL, &pSourceFilter); if (FAILED(hr)) { StopConversion(); ThrowError(hr, "Failed to render source UROL!"); return hr; } if (m_pCallback) m_pCallback->ConversionStreaming(); hr = RenderOutput(m_pBuilder, m_pGraph, NULL, NULL, NULL, NULL, pSourceFilter); // PromptForGraph(m_pGraph, "stream"); if (m_pCallback) m_pCallback->ConversionAboutToRun(); hr = Run(); if(FAILED(hr)) { StopConversion(); ThrowError(hr, "Could not start streaming!"); return hr; } return hr; }
HVideoEncoder::HVideoEncoder() { initialized = CreateFilterGraph(&graph, &builder, &control); }