3
我在DirectShow中創建了一個名爲解密的自定義過濾器,但是當使用GraphStudioNext給我一個「VFW_E_NO_ACCEPTABLE_TYPES(0x80040207)」試圖將MP4的輸出連接到我的自定義過濾器的輸入時。自定義過濾器不兼容?
// Media Types
const AMOVIESETUP_MEDIATYPE sudPinTypes =
{
&MEDIATYPE_Stream,
&MEDIASUBTYPE_NULL
};
// Pins
const AMOVIESETUP_PIN psudPins[] =
{
{ L"Input", FALSE, FALSE, FALSE, FALSE, &CLSID_NULL, L"Output", 1, &sudPinTypes },
{ L"Output", FALSE, TRUE, FALSE, FALSE, &CLSID_NULL, L"Input", 1, &sudPinTypes }
};
// Filters
const AMOVIESETUP_FILTER sudAudioVolume =
{
&CLSID_Decryption,
L"Decryption",
MERIT_NORMAL,
2,
psudPins
};
HRESULT DecryptionFilter::CheckInputType(const CMediaType *mtIn)
{
//Streaming
if (mtIn->majortype != MEDIATYPE_Stream) return E_FAIL;
if (mtIn->subtype != MEDIATYPE_NULL) return E_FAIL;
return S_OK;
}
HRESULT DecryptionFilter::CheckTransform(const CMediaType *mtIn, const CMediaType *mtOut)
{
HRESULT hr = CheckInputType(mtIn);
if (FAILED(hr)) return hr;
if (mtIn->majortype != MEDIATYPE_Stream) return E_FAIL;
if (mtIn->subtype != MEDIATYPE_NULL) return E_FAIL;
return S_OK;
}
我通過GraphStudioNext調試和
- 源輸出引腳的 「connectionType」 是PIN_CONNECTION_TYPE_STREAM
- 自定義過濾器輸入引腳的 「connectionType」 是
PIN_CONNECTION_TYPE_OTHER
爲什麼我的過濾器將無法連接任何線索?謝謝!
再次感謝羅馬R.所以我的解密過濾器類將被宣佈爲「類DecryptionFilter:公共CTransformFilter,公共IAsyncReader」? –
不只是宣佈。您需要正確實現接口,而不是在過濾器上,但在其引腳上。這個想法是,你的過濾器看起來與庫存文件源過濾器完全一樣,具有相同的接口集。因此,解複用器可以使用您的過濾器而不是標準過濾器。 –