does anybody know why if I define a filter like this:
class CMyMXFParser : public CTransInPlaceFilter
{
public:
DECLARE_IUNKNOWN;
static CUnknown * WINAPI CreateInstance(LPUNKNOWN punk, HRESULT
*phr);
// Reveals IMyMXFParser and ISpecifyPropertyPages
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **
ppv);
//these are the only two overriden methods
HRESULT CheckInputType(const CMediaType *mtIn);
HRESULT Transform(IMediaSample *pSample);
etc...
the checkInputType is like this:
HRESULT CMyMXFParser::CheckInputType(const CMediaType *mtIn)
{
return S_OK;
}
and the setup information is like this:
const AMOVIESETUP_MEDIATYPE sudPinTypes =
{
&MEDIATYPE_NULL, // Major type
&MEDIASUBTYPE_NULL// Minor type
};
Then, when I try to connect an mxf file (using a File Source Async) to
my filter, I get the frustrating message:
"No combination of intermediate filters could be found to make the
connection"
??
Thanks in advance
> class CMyMXFParser : public CTransInPlaceFilter
[...]
> Then, when I try to connect an mxf file (using a File
> Source Async) to my filter, I get the frustrating message:
> "No combination of intermediate filters could be found to
> make the connection"
Because CTransInPlaceFilter expects a push-mode input
(IMemInputPin) while AsyncReader provides a pull-mode
transport (IAsyncReader). You can not write a parser using
CTransInPlaceFilter. You can not write a parser using
CTransformFilter either (unless it's a streaming parser that
never has to seek the input byte stream and that only
contains one essence stream, but that's not the case with
MXF).
These are your options:
http://groups.google.com/group/microsoft.public.win32.programmer.directx.video/msg/fa89314ea0cf8684
--
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm