Ich habe einen benutzerdefinierten Filter in DirectShow namens Entschlüsselung erstellt, aber bei der Verwendung von GraphStudioNext gibt mir eine "VFW_E_NO_ACCEPTABLE_TYPES (0x80040207)" beim Versuch, die Ausgabe von einem MP4 in die Eingabe meines benutzerdefinierten Filters zu verbinden.Benutzerdefinierter Filter ist nicht kompatibel?
// 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;
}
ich gedebuggt durch GraphStudioNext und
- Quelle des Ausgangs-Pin "connection" PIN_CONNECTION_TYPE_STREAM ist
- Benutzerdefinierte Filtereingang Stecknadel "connection" ist
PIN_CONNECTION_TYPE_OTHER
Immobilien Source Filter und Benutzerdefinierte Filter
Jeder Hinweis auf, warum meine Filter nicht verbinden? Vielen Dank!
Danke nochmal Roman R. Also meine Entschlüsselung Filterklasse würde als "Klasse DecryptionFilter: öffentliche CTransformFilter, öffentliche IAsyncReader" deklariert werden? –
Nicht nur erklärt. Sie müssen die Schnittstelle korrekt implementieren und nicht den Filter, sondern dessen Pin. Die Idee ist, dass Ihr Filter genau so aussieht wie der Quellenfilter der Bestandsdatei, mit der gleichen Schnittstelle. Damit der Demultiplexer bequem mit Ihrem Filter arbeiten kann, anstatt mit dem Standardfilter. –