I tried adding a Sleep after all filter created. I tried creating filter by name... I tried different DirectShowLib versions, I tried RenderStream only...
No LUCK, getting out of resources, how come the graph works, but C# code fails ??
Here's the code generated for the graph.
I have version 1.4.
The error I get is
Can't connect AverMedia 7231 Analog TV Tuner and AverMedia 7231 Analog TV Audio.
static void BuildGraph(IGraphBuilder pGraph)
{
int hr = 0;
//graph builder
ICaptureGraphBuilder2 pBuilder = (ICaptureGraphBuilder2)new CaptureGraphBuilder2();
hr = pBuilder.SetFiltergraph(pGraph);
checkHR(hr, "Can't SetFiltergraph");
Guid CLSID_AVerMedia7231AnalogTVTuner = new Guid("{266EEE40-6C63-11CF-8A03-00AA006ECB65}"); //kstvtune.ax
Guid CLSID_AVerMedia7231AnalogTVAudio = new Guid("{71F96462-78F3-11D0-A18C-00A0C9118956}"); //ksxbar.ax
Guid CLSID_AVerMedia7231AnalogXbar = new Guid("{71F96460-78F3-11D0-A18C-00A0C9118956}"); //ksxbar.ax
Guid CLSID_AVerMedia7231AnalogCapture = new Guid("{17CCA71B-ECD7-11D0-B908-00A0C9223196}"); //ksproxy.ax
Guid CLSID_VBICodec = new Guid("{370A1D5D-DDEB-418C-81CD-189E0D4FA443}"); //VBICodec.ax
Guid CLSID_ffdshowVideoDecoder = new Guid("{04FE9017-F873-410E-871E-AB91661A4EF7}"); //ffdshow.ax
//add AVerMedia 7231 Analog TV Tuner
IBaseFilter pAVerMedia7231AnalogTVTuner = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_AVerMedia7231AnalogTVTuner));
hr = pGraph.AddFilter(pAVerMedia7231AnalogTVTuner, "AVerMedia 7231 Analog TV Tuner");
checkHR(hr, "Can't add AVerMedia 7231 Analog TV Tuner to graph");
//add AVerMedia 7231 Analog TV Audio
IBaseFilter pAVerMedia7231AnalogTVAudio = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_AVerMedia7231AnalogTVAudio));
hr = pGraph.AddFilter(pAVerMedia7231AnalogTVAudio, "AVerMedia 7231 Analog TV Audio");
checkHR(hr, "Can't add AVerMedia 7231 Analog TV Audio to graph");
//connect AVerMedia 7231 Analog TV Tuner and AVerMedia 7231 Analog TV Audio
hr = pBuilder.RenderStream(null, MediaType.AnalogAudio, pAVerMedia7231AnalogTVTuner, null, pAVerMedia7231AnalogTVAudio);
checkHR(hr, "Can't connect AVerMedia 7231 Analog TV Tuner and AVerMedia 7231 Analog TV Audio");
//add AVerMedia 7231 Analog Xbar
IBaseFilter pAVerMedia7231AnalogXbar = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_AVerMedia7231AnalogXbar));
hr = pGraph.AddFilter(pAVerMedia7231AnalogXbar, "AVerMedia 7231 Analog Xbar");
checkHR(hr, "Can't add AVerMedia 7231 Analog Xbar to graph");
//connect AVerMedia 7231 Analog TV Tuner and AVerMedia 7231 Analog Xbar
hr = pBuilder.RenderStream(null, MediaType.AnalogVideo, pAVerMedia7231AnalogTVTuner, null, pAVerMedia7231AnalogXbar);
checkHR(hr, "Can't connect AVerMedia 7231 Analog TV Tuner and AVerMedia 7231 Analog Xbar");
//connect AVerMedia 7231 Analog TV Audio and AVerMedia 7231 Analog Xbar
hr = pBuilder.RenderStream(null, MediaType.AnalogAudio, pAVerMedia7231AnalogTVAudio, null, pAVerMedia7231AnalogXbar);
checkHR(hr, "Can't connect AVerMedia 7231 Analog TV Audio and AVerMedia 7231 Analog Xbar");
//add AVerMedia 7231 Analog Capture
IBaseFilter pAVerMedia7231AnalogCapture = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_AVerMedia7231AnalogCapture));
hr = pGraph.AddFilter(pAVerMedia7231AnalogCapture, "AVerMedia 7231 Analog Capture");
checkHR(hr, "Can't add AVerMedia 7231 Analog Capture to graph");
//connect AVerMedia 7231 Analog Xbar and AVerMedia 7231 Analog Capture
hr = pBuilder.RenderStream(null, MediaType.AnalogVideo, pAVerMedia7231AnalogXbar, null, pAVerMedia7231AnalogCapture);
checkHR(hr, "Can't connect AVerMedia 7231 Analog Xbar and AVerMedia 7231 Analog Capture");
//connect AVerMedia 7231 Analog Xbar and AVerMedia 7231 Analog Capture
hr = pBuilder.RenderStream(null, MediaType.AnalogAudio, pAVerMedia7231AnalogXbar, null, pAVerMedia7231AnalogCapture);
checkHR(hr, "Can't connect AVerMedia 7231 Analog Xbar and AVerMedia 7231 Analog Capture");
//add Default DirectSound Device
IBaseFilter pDefaultDirectSoundDevice = (IBaseFilter) new DSoundRender();
hr = pGraph.AddFilter(pDefaultDirectSoundDevice, "Default DirectSound Device");
checkHR(hr, "Can't add Default DirectSound Device to graph");
//add VBI Codec
IBaseFilter pVBICodec = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_VBICodec));
hr = pGraph.AddFilter(pVBICodec, "VBI Codec");
checkHR(hr, "Can't add VBI Codec to graph");
//add Smart Tee
IBaseFilter pSmartTee = (IBaseFilter) new SmartTee();
hr = pGraph.AddFilter(pSmartTee, "Smart Tee");
checkHR(hr, "Can't add Smart Tee to graph");
//connect AVerMedia 7231 Analog Capture and Smart Tee
hr = pBuilder.RenderStream(null, MediaType.Video, pAVerMedia7231AnalogCapture, null, pSmartTee);
checkHR(hr, "Can't connect AVerMedia 7231 Analog Capture and Smart Tee");
//connect AVerMedia 7231 Analog Capture and VBI Codec
hr = pBuilder.RenderStream(null, MediaType.VBI, pAVerMedia7231AnalogCapture, null, pVBICodec);
checkHR(hr, "Can't connect AVerMedia 7231 Analog Capture and VBI Codec");
//connect AVerMedia 7231 Analog Capture and Default DirectSound Device
hr = pBuilder.RenderStream(null, MediaType.Audio, pAVerMedia7231AnalogCapture, null, pDefaultDirectSoundDevice);
checkHR(hr, "Can't connect AVerMedia 7231 Analog Capture and Default DirectSound Device");
//add ffdshow Video Decoder
IBaseFilter pffdshowVideoDecoder = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_ffdshowVideoDecoder));
hr = pGraph.AddFilter(pffdshowVideoDecoder, "ffdshow Video Decoder");
checkHR(hr, "Can't add ffdshow Video Decoder to graph");
//add Line 21 Decoder
IBaseFilter pLine21Decoder = (IBaseFilter) new Line21Decoder();
hr = pGraph.AddFilter(pLine21Decoder, "Line 21 Decoder");
checkHR(hr, "Can't add Line 21 Decoder to graph");
//connect Smart Tee and ffdshow Video Decoder
hr = pBuilder.RenderStream(null, MediaType.Video, pSmartTee, null, pffdshowVideoDecoder);
checkHR(hr, "Can't connect Smart Tee and ffdshow Video Decoder");
//connect VBI Codec and Line 21 Decoder
hr = pBuilder.RenderStream(null, MediaType.AuxLine21Data, pVBICodec, null, pLine21Decoder);
checkHR(hr, "Can't connect VBI Codec and Line 21 Decoder");
//add Overlay Mixer
IBaseFilter pOverlayMixer = (IBaseFilter) new OverlayMixer();
hr = pGraph.AddFilter(pOverlayMixer, "Overlay Mixer");
checkHR(hr, "Can't add Overlay Mixer to graph");
//connect ffdshow Video Decoder and Overlay Mixer
hr = pBuilder.RenderStream(null, MediaType.Video, pffdshowVideoDecoder, null, pOverlayMixer);
checkHR(hr, "Can't connect ffdshow Video Decoder and Overlay Mixer");
//connect Line 21 Decoder and Overlay Mixer
hr = pBuilder.RenderStream(null, MediaType.Video, pLine21Decoder, null, pOverlayMixer);
checkHR(hr, "Can't connect Line 21 Decoder and Overlay Mixer");
//add Video Renderer
IBaseFilter pVideoRenderer = (IBaseFilter) new VideoRenderer();
hr = pGraph.AddFilter(pVideoRenderer, "Video Renderer");
checkHR(hr, "Can't add Video Renderer to graph");
//connect Overlay Mixer and Video Renderer
hr = pBuilder.RenderStream(null, MediaType.Video, pOverlayMixer, null, pVideoRenderer);
checkHR(hr, "Can't connect Overlay Mixer and Video Renderer");
}
For the sake of you been able to help me I have also included the 'Pin' version generated Code as well).
static void BuildGraph(IGraphBuilder pGraph)
{
int hr = 0;
//graph builder
ICaptureGraphBuilder2 pBuilder = (ICaptureGraphBuilder2)new CaptureGraphBuilder2();
hr = pBuilder.SetFiltergraph(pGraph);
checkHR(hr, "Can't SetFiltergraph");
Guid CLSID_AVerMedia7231AnalogTVTuner = new Guid("{266EEE40-6C63-11CF-8A03-00AA006ECB65}"); //kstvtune.ax
Guid CLSID_AVerMedia7231AnalogTVAudio = new Guid("{71F96462-78F3-11D0-A18C-00A0C9118956}"); //ksxbar.ax
Guid CLSID_AVerMedia7231AnalogXbar = new Guid("{71F96460-78F3-11D0-A18C-00A0C9118956}"); //ksxbar.ax
Guid CLSID_AVerMedia7231AnalogCapture = new Guid("{17CCA71B-ECD7-11D0-B908-00A0C9223196}"); //ksproxy.ax
Guid CLSID_VBICodec = new Guid("{370A1D5D-DDEB-418C-81CD-189E0D4FA443}"); //VBICodec.ax
Guid CLSID_ffdshowVideoDecoder = new Guid("{04FE9017-F873-410E-871E-AB91661A4EF7}"); //ffdshow.ax
//add AVerMedia 7231 Analog TV Tuner
IBaseFilter pAVerMedia7231AnalogTVTuner = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_AVerMedia7231AnalogTVTuner));
hr = pGraph.AddFilter(pAVerMedia7231AnalogTVTuner, "AVerMedia 7231 Analog TV Tuner");
checkHR(hr, "Can't add AVerMedia 7231 Analog TV Tuner to graph");
//add AVerMedia 7231 Analog TV Audio
IBaseFilter pAVerMedia7231AnalogTVAudio = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_AVerMedia7231AnalogTVAudio));
hr = pGraph.AddFilter(pAVerMedia7231AnalogTVAudio, "AVerMedia 7231 Analog TV Audio");
checkHR(hr, "Can't add AVerMedia 7231 Analog TV Audio to graph");
//connect AVerMedia 7231 Analog TV Tuner and AVerMedia 7231 Analog TV Audio
hr = pGraph.ConnectDirect(GetPin(pAVerMedia7231AnalogTVTuner, "Analog Audio"), GetPin(pAVerMedia7231AnalogTVAudio, "TVAudio In"), null);
checkHR(hr, "Can't connect AVerMedia 7231 Analog TV Tuner and AVerMedia 7231 Analog TV Audio");
//add AVerMedia 7231 Analog Xbar
IBaseFilter pAVerMedia7231AnalogXbar = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_AVerMedia7231AnalogXbar));
hr = pGraph.AddFilter(pAVerMedia7231AnalogXbar, "AVerMedia 7231 Analog Xbar");
checkHR(hr, "Can't add AVerMedia 7231 Analog Xbar to graph");
//connect AVerMedia 7231 Analog TV Tuner and AVerMedia 7231 Analog Xbar
hr = pGraph.ConnectDirect(GetPin(pAVerMedia7231AnalogTVTuner, "Analog Video"), GetPin(pAVerMedia7231AnalogXbar, "0: Video Tuner In"), null);
checkHR(hr, "Can't connect AVerMedia 7231 Analog TV Tuner and AVerMedia 7231 Analog Xbar");
//connect AVerMedia 7231 Analog TV Audio and AVerMedia 7231 Analog Xbar
hr = pGraph.ConnectDirect(GetPin(pAVerMedia7231AnalogTVAudio, "TVAudio Out"), GetPin(pAVerMedia7231AnalogXbar, "1: Audio Tuner In"), null);
checkHR(hr, "Can't connect AVerMedia 7231 Analog TV Audio and AVerMedia 7231 Analog Xbar");
//add AVerMedia 7231 Analog Capture
IBaseFilter pAVerMedia7231AnalogCapture = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_AVerMedia7231AnalogCapture));
hr = pGraph.AddFilter(pAVerMedia7231AnalogCapture, "AVerMedia 7231 Analog Capture");
checkHR(hr, "Can't add AVerMedia 7231 Analog Capture to graph");
//connect AVerMedia 7231 Analog Xbar and AVerMedia 7231 Analog Capture
hr = pGraph.ConnectDirect(GetPin(pAVerMedia7231AnalogXbar, "0: Video Decoder Out"), GetPin(pAVerMedia7231AnalogCapture, "Analog Video In"), null);
checkHR(hr, "Can't connect AVerMedia 7231 Analog Xbar and AVerMedia 7231 Analog Capture");
//connect AVerMedia 7231 Analog Xbar and AVerMedia 7231 Analog Capture
hr = pGraph.ConnectDirect(GetPin(pAVerMedia7231AnalogXbar, "1: Audio Decoder Out"), GetPin(pAVerMedia7231AnalogCapture, "Analog Audio Input"), null);
checkHR(hr, "Can't connect AVerMedia 7231 Analog Xbar and AVerMedia 7231 Analog Capture");
//add Default DirectSound Device
IBaseFilter pDefaultDirectSoundDevice = (IBaseFilter) new DSoundRender();
hr = pGraph.AddFilter(pDefaultDirectSoundDevice, "Default DirectSound Device");
checkHR(hr, "Can't add Default DirectSound Device to graph");
//add VBI Codec
IBaseFilter pVBICodec = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_VBICodec));
hr = pGraph.AddFilter(pVBICodec, "VBI Codec");
checkHR(hr, "Can't add VBI Codec to graph");
//add Smart Tee
IBaseFilter pSmartTee = (IBaseFilter) new SmartTee();
hr = pGraph.AddFilter(pSmartTee, "Smart Tee");
checkHR(hr, "Can't add Smart Tee to graph");
//connect AVerMedia 7231 Analog Capture and Smart Tee
hr = pGraph.ConnectDirect(GetPin(pAVerMedia7231AnalogCapture, "Capture"), GetPin(pSmartTee, "Input"), null);
checkHR(hr, "Can't connect AVerMedia 7231 Analog Capture and Smart Tee");
//connect AVerMedia 7231 Analog Capture and VBI Codec
hr = pGraph.ConnectDirect(GetPin(pAVerMedia7231AnalogCapture, "VBI"), GetPin(pVBICodec, "Input"), null);
checkHR(hr, "Can't connect AVerMedia 7231 Analog Capture and VBI Codec");
//connect AVerMedia 7231 Analog Capture and Default DirectSound Device
hr = pGraph.ConnectDirect(GetPin(pAVerMedia7231AnalogCapture, "Audio"), GetPin(pDefaultDirectSoundDevice, "Audio Input pin (rendered)"), null);
checkHR(hr, "Can't connect AVerMedia 7231 Analog Capture and Default DirectSound Device");
//add ffdshow Video Decoder
IBaseFilter pffdshowVideoDecoder = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_ffdshowVideoDecoder));
hr = pGraph.AddFilter(pffdshowVideoDecoder, "ffdshow Video Decoder");
checkHR(hr, "Can't add ffdshow Video Decoder to graph");
//add Line 21 Decoder
IBaseFilter pLine21Decoder = (IBaseFilter) new Line21Decoder();
hr = pGraph.AddFilter(pLine21Decoder, "Line 21 Decoder");
checkHR(hr, "Can't add Line 21 Decoder to graph");
//connect Smart Tee and ffdshow Video Decoder
hr = pGraph.ConnectDirect(GetPin(pSmartTee, "Capture"), GetPin(pffdshowVideoDecoder, "In"), null);
checkHR(hr, "Can't connect Smart Tee and ffdshow Video Decoder");
//connect VBI Codec and Line 21 Decoder
hr = pGraph.ConnectDirect(GetPin(pVBICodec, "CC"), GetPin(pLine21Decoder, "XForm In"), null);
checkHR(hr, "Can't connect VBI Codec and Line 21 Decoder");
//add Overlay Mixer
IBaseFilter pOverlayMixer = (IBaseFilter) new OverlayMixer();
hr = pGraph.AddFilter(pOverlayMixer, "Overlay Mixer");
checkHR(hr, "Can't add Overlay Mixer to graph");
//connect ffdshow Video Decoder and Overlay Mixer
hr = pGraph.ConnectDirect(GetPin(pffdshowVideoDecoder, "Out"), GetPin(pOverlayMixer, "Input0"), null);
checkHR(hr, "Can't connect ffdshow Video Decoder and Overlay Mixer");
//connect Line 21 Decoder and Overlay Mixer
hr = pGraph.ConnectDirect(GetPin(pLine21Decoder, "XForm Out"), GetPin(pOverlayMixer, "Input2"), null);
checkHR(hr, "Can't connect Line 21 Decoder and Overlay Mixer");
//add Video Renderer
IBaseFilter pVideoRenderer = (IBaseFilter) new VideoRenderer();
hr = pGraph.AddFilter(pVideoRenderer, "Video Renderer");
checkHR(hr, "Can't add Video Renderer to graph");
//connect Overlay Mixer and Video Renderer
hr = pGraph.ConnectDirect(GetPin(pOverlayMixer, "Output"), GetPin(pVideoRenderer, "Input"), null);
checkHR(hr, "Can't connect Overlay Mixer and Video Renderer");
}_
The above code crashes on the following line :
hr = pGraph.ConnectDirect(GetPin(pAVerMedia7231AnalogTVTuner, "Analog Audio"), GetPin(pAVerMedia7231AnalogTVAudio, "TVAudio In"), Can't enumerate pins on 'Analog Audio', and the graph works when I run it... Please help

Thanks.