我有4个独立的视频设备连接到各自的视频渲染器,我想在4个独立的窗口/面板中显示视频渲染器。
使用
IVideoWindow GetSecondRenderer()
{
IEnumFilters enumFilters;
ArrayList filtersArray = new ArrayList();
IFilterGraph filterGraph = (IFilterGraph)m_FilterGraph;
filterGraph.EnumFilters(out enumFilters);
IBaseFilter[] filters = new IBaseFilter[1];
IntPtr fetched = new IntPtr();
while (enumFilters.Next(1, filters,fetched) == 0)
{
IVideoWindow ivw = filters[0] as IVideoWindow;
if (ivw != null)
{
IntPtr outPtr = new IntPtr();
ivw.get_Owner(out outPtr);
if (outPtr == IntPtr.Zero)
return ivw;
}
}
return null;
}
然后使用videoWindow2 = GetSecondRenderer();代码我设法得到2个视频,但由于我还是很新,我似乎无法枚举其他2个视频渲染。有人可以帮助显示如何修改它以获得其他2? 谢谢。
答案 0 :(得分:1)
您的代码只返回第一个找到的视频渲染器。而不是从while循环返回,创建一个IVideoWindows列表并添加找到的渲染器。然后,当循环结束时,返回整个列表。