2011-03-07 36 views
0

我有4個獨立的視頻設備連接到它們各自的視頻渲染器,我想在4個獨立的窗口/面板中顯示視頻渲染器。在directshow.net中獲取多個視頻渲染器在c#

隨着

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? 謝謝。

回答

1

你的代碼只是返回第一個找到的視頻渲染器。不要從while循環中返回,而是要創建一個IVideoWindows列表並向其中添加找到的渲染器。然後,當循環結束時,返回整個列表。

+0

使它成爲每個相機的不同方法,因爲這更容易,但是當我想要做更有趣的事情時,這樣做會很好。謝謝 – 2011-03-16 12:05:19