DirectShow (C#):奇怪的黑屏问题

DirectShow (C#): Weird black screen issue

我是 COM 和 C# 的新手。

我有一个非常基本的过滤器图,经过修改后可以在 winforms 应用程序的图片框中显示图像。

一切正常,与普通 PC 的预期一样。 但是我在目标 PC 上的图片框上得到黑色图像(就好像图像出现之前的相同黑暗状态从未继续显示流数据),这是非常弱的。

如果我使用完整的原始 videorenderer 过滤器,该图在同一台 PC 上呈现良好。 当我用 picturebox 替换最后一个渲染器时出现问题。

由于没有错误,而且似乎与平台规范有关,我需要有经验的 COM 开发人员的帮助。

//pUSB = video capture device
//pMJPEGDecompressor = decompressor
//pColorSpaceConverter = color space
//pNullrenderer2 = null renderer`

//add MJPEG Decompressor
IBaseFilter pMJPEGDecompressor = (IBaseFilter)new MjpegDec();
hr = pGraph.AddFilter(pMJPEGDecompressor, "MJPEG Decompressor");

//connect USB ビデオ デバイス and MJPEG Decompressor 
//hr = pGraph.ConnectDirect(GetPin(pUSB, getCatName(pUSB)), GetPin(pMJPEGDecompressor, "XForm In"), null);
//hr = pGraphBuilder.RenderStream(null, MediaType.Video, pUSB, null, pMJPEGDecompressor);

//add Color Space Converter 
IBaseFilter pColorSpaceConverter = (IBaseFilter)new Colour();
hr = pGraph.AddFilter(pColorSpaceConverter, "Color Space Converter");

//connect MJPEG Decompressor and Color Space Converter
//hr = pGraph.ConnectDirect(GetPin(pMJPEGDecompressor, "XForm Out"), GetPin(pColorSpaceConverter, "Input"), null);
//hr = pGraphBuilder.RenderStream(null, MediaType.Video, pMJPEGDecompressor, null, pColorSpaceConverter);

//Add the NULL Renderer
IBaseFilter pNullrenderer2 = (IBaseFilter)new NullRenderer();
hr = pGraph.AddFilter(pNullrenderer2, "Null Renderer");
//hr = pGraphBuilder.RenderStream(null, MediaType.Video, pColorSpaceConverter, null, pNullrenderer2);

hr = pGraphBuilder.RenderStream(null, MediaType.Video, pUSB, null, null); 

Marshal.ReleaseComObject(pUSB);

`

没有收到错误消息

我发现了问题。 顺便说一句,它在 GrapheditPlus.

的自动生成代码中

奇怪的问题是由于在每个 AddFilter 之后调用 RenderStream。在最后一个 "filter"(在我的例子中是 picturebox)之后的一个调用就足够了。 可能是 PC 的低规格特性使整个事情半途而废。系统假设之前的调用是正确的,但显然不是。

我正在注释掉问题中多余的行。其余代码不需要修改。