void BuildAudioCaptureGraph(void) // Warning! No error checking here. { IBaseFilter *pSrc = NULL, *pWaveDest = NULL, *pWriter = NULL; IFileSinkFilter *pSink= NULL; IGraphBuilder *pGraph; // Create the Filter Graph Manager. CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGraph); // Add the audio capture filter. FindAudioCapture(&pSrc); // Assume that this function enumerates // audio capture devices and picks one. pGraph->AddFilter(pSrc, L"Capture"); // Add the WavDest and the File Writer. AddFilterByClsid(pGraph, L"WavDest", CLSID_WavDest, &pWavDest); AddFilterByClsid(pGraph, L"File Writer", CLSID_FileWriter, &pWriter); // Set the file name. pWriter->QueryInterface(IID_IFileSinkFilter, (void**)&pSink); pSink->SetFileName(L"C:\\MyWackyWav.wav", NULL); // Hook everything up. ConnectTwoFilters(pGraph, pSrc, pWavDest); ConnectTwoFilters(pGraph, pWavDest, pWriter); } |