What's wrong with this way of enumerating filters?
-
I've looked at the MSDN example, but the pEnum->Next function returns S_FALSE which means that the number of filters that were requested to be enumerated, wasn't enumerated.
IGraphBuilder *pGraph = NULL;
IEnumFilters *pEnum = NULL;
IBaseFilter *pFilter = NULL;
ULONG cFetched;
HRESULT err;CoInitialize(NULL);
err = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder,(void**)&pGraph);
pGraph->EnumFilters(&pEnum);while((err = pEnum->Next(1, &pFilter, &cFetched)) == S_OK)
{
FILTER_INFO fiFilterInfo;
char szFilterName[256];pFilter->QueryFilterInfo(&fiFilterInfo); WideCharToMultiByte(CP\_ACP, 0, fiFilterInfo.achName, -1, szFilterName, 256, 0, 0); SendMessage(GetDlgItem(ghWnd, IDC\_FILTERS), LB\_INSERTSTRING, -1, (LPARAM)szFilterName); fiFilterInfo.pGraph->Release(); pFilter->Release();
}
pEnum->Release();
pGraph->Release();
CoUninitialize();
}All help is apprecaited! Thanks all :) -Rune Svendsen
-
I've looked at the MSDN example, but the pEnum->Next function returns S_FALSE which means that the number of filters that were requested to be enumerated, wasn't enumerated.
IGraphBuilder *pGraph = NULL;
IEnumFilters *pEnum = NULL;
IBaseFilter *pFilter = NULL;
ULONG cFetched;
HRESULT err;CoInitialize(NULL);
err = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder,(void**)&pGraph);
pGraph->EnumFilters(&pEnum);while((err = pEnum->Next(1, &pFilter, &cFetched)) == S_OK)
{
FILTER_INFO fiFilterInfo;
char szFilterName[256];pFilter->QueryFilterInfo(&fiFilterInfo); WideCharToMultiByte(CP\_ACP, 0, fiFilterInfo.achName, -1, szFilterName, 256, 0, 0); SendMessage(GetDlgItem(ghWnd, IDC\_FILTERS), LB\_INSERTSTRING, -1, (LPARAM)szFilterName); fiFilterInfo.pGraph->Release(); pFilter->Release();
}
pEnum->Release();
pGraph->Release();
CoUninitialize();
}All help is apprecaited! Thanks all :) -Rune Svendsen
Try calling
pEnum->Reset();
before enumerating. Joaquín M López Muñoz Telefónica, Investigación y Desarrollo -
Try calling
pEnum->Reset();
before enumerating. Joaquín M López Muñoz Telefónica, Investigación y DesarrolloDidn't work :( thanks anyway man. -Rune SVendsen
-
Didn't work :( thanks anyway man. -Rune SVendsen
Wait... Seems you're constructing an
IGraphBuilder
and then enumerating its filters, but an emptyIGraphBuilder
won't have any. Try using for instanceIGraphBuilder::RenderFile
on some.avi
prior to enumeration. Joaquín M López Muñoz Telefónica, Investigación y Desarrollo -
Wait... Seems you're constructing an
IGraphBuilder
and then enumerating its filters, but an emptyIGraphBuilder
won't have any. Try using for instanceIGraphBuilder::RenderFile
on some.avi
prior to enumeration. Joaquín M López Muñoz Telefónica, Investigación y DesarrolloThankyou i'll try that. But do you know if there's a way to enumerate all the available filters on the current machine? -Rune Svendsen