Discussion:
How to discover is dshow filter can be used in graph?
(too old to reply)
mike
2010-02-26 06:13:31 UTC
Permalink
I have a Samsung Omni 2 that has an H264 decoder that shipped with the
phone (one of the reasons I thought I wanted it). However, after much
trying and no real support from Samsung, I'm beginning to think they
have this filter locked down (if possible) to their own internal use.
I have a test application that captures video input and encodes using
an H264 encoder. The last step in my POC was to hook up the H264
decoder from Samsung (S264dDsf.dll) and then to a renderer to preview
on the phone. I have an H264 decoder (wrapped by a DMO) that I can
hook up to the graph that I compiled and it all wires up and plays (as
best as all this can happen on a single proc, sub 1ghz phone).
However, if I try to hook up the Samsung filter (dshow filter), I
keep getting a 0x80040207. The code I'm using is:

AM_MEDIA_TYPE _type = {};
_type.majortype = MEDIATYPE_Video;
_type.subtype = MEDIASUBTYPE_S264d; //{34363248-...}

hr = pGraph->ConnectDirect(
this->GetPin(
pVideoCompressor
, L"out0"
)
, this->GetPin(
pVideoDecompressor
, L"XForm In"
)
, &_type
);

If I use this code to connect my dmo with the encoder, it works (I
have the same 4cc as in the registry for the S264d filter's subtype).

Is there a way to determine (for sure other than the 207), if the
filter is lock somehow and not usable by 3rd parties (or something I'm
doing wrong)? It's my understanding that the Samsung filter is on top
of a hardware decoder; not sure if this would make a difference.

Thanks!
Alessandro Angeli
2010-02-26 21:24:45 UTC
Permalink
From: "mike"
Post by mike
Is there a way to determine (for sure other than the
207), if the filter is lock somehow and not usable by 3rd
parties (or something I'm doing wrong)? It's my
No there isn't. Only the filter knows whether it can accept
to work in a specific situation so the only way to know is
to try it in that situation. The info in the registry are
just hints and, even if the filter doesn't lie, those hints
are not enough to make a decision.

However you error simply means VFW_E_NO_ACCEPTABLE_TYPES. If
the filter isn't lying about the reason why it doesn't want
to work, the most likely cause is that you are filling in
the media type incorrectly.
--
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
Loading...