Hi,

I have an app using DirectShow. There I connect to ffdshow by this code
Code:
    HRESULT hr = S_OK;

    CComPtr<IBaseFilter>    pH264 = NULL;
    CComPtr<IUnknown> pIUnknown;
    hr = CoCreateInstance(CLSID_FFDShow_Decoder, NULL, CLSCTX_INPROC_SERVER, IID_IUnknown, (void**)&pIUnknown);
    RIF(hr);
    hr = pIUnknown->QueryInterface(IID_IBaseFilter, (void**)&pH264);
    RIF(hr);
it worked well, but this week I have tried to updated the ffdshow files to the last version. After it I get the error on pIUnknown->QueryInterface()

Code:
E_NOINTERFACE No such interface supported.

Why? Did not the last ffdshow support IBaseFilter?

PS. The new filter registration:

Code:
regsvr32 /u ffdshow.ax
regsvr32 ffdshow.ax
and new codes modification:

Code:
	HRESULT hr = S_OK;

	CComPtr<IBaseFilter>	pH264 = NULL;
	CComPtr<IBaseFilter> pAudioDecoder = NULL;


	CComPtr<ICreateDevEnum> pSysDevEnum = NULL;
	hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
		IID_ICreateDevEnum, (void **)&pSysDevEnum);
	RIF(hr);

	// Obtain a class enumerator for the video compressor category.
	CComPtr<IEnumMoniker> pEnumCat = NULL;
	hr = pSysDevEnum->CreateClassEnumerator(CLSID_LegacyAmFilterCategory, &pEnumCat, 0);

	int nCountComplect = 0;
	if (hr == S_OK) 
	{
		// Enumerate the monikers.
		CComPtr<IMoniker> pMoniker = NULL;
		ULONG cFetched;
		while(pEnumCat->Next(1, &pMoniker, &cFetched) == S_OK)
		{
			CComPtr<IPropertyBag> pPropBag;
			hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, 
				(void **)&pPropBag);
			if (SUCCEEDED(hr))
			{
				// To retrieve the filter's friendly name, do the following:
				VARIANT varName;
				VariantInit(&varName);
				hr = pPropBag->Read(L"FriendlyName", &varName, 0);
				if (SUCCEEDED(hr))
				{
					// Display the name in your UI somehow.
					if (_tcscmp(varName.bstrVal, L"ffdshow Video Decoder") == 0)
					{
						nCountComplect ++;
						hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter,
							(void**)&pH264);
						VariantClear(&varName);
						RIF(hr);
						hr = m_pGraph->AddFilter(pH264, L"FFDShowVideoDecoder");
						RIF(hr);
						if (nCountComplect == 2)
						{
							break;
						}
						else
						{
							pMoniker.Release();
							continue;
						}
					}
					else if (_tcscmp(varName.bstrVal, L"ffdshow Audio Decoder") == 0)
					{
						nCountComplect ++;
						hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter,
							(void**)&pAudioDecoder);
						VariantClear(&varName);
						RIF(hr);
						hr = m_pGraph->AddFilter(pAudioDecoder, L"FFDShowAudioDecoder");
						RIF(hr);
						if (nCountComplect == 2)
						{
							break;
						}
						else
						{
							pMoniker.Release();
							continue;
						}
					}
				}
				VariantClear(&varName);
				pMoniker.Release();
			}
		}
	}
did not help.

Please any ideas.