DirectShow系統初級指南

2021-08-25 10:45:39 字數 881 閱讀 2308

if (succeeded(hr))

}pfilter->release();

}而對於dmo的直接使用,以下幾點是要特別注意的。

1. 在處理資料之前,必須為每條輸入輸出stream設定media type(optional stream除外);

2. 從dmo從獲取的media type未必包含format塊,但是在給dmo設定media type時,務必帶上這部分資訊(midi除外);

3. 應用程式必須自己負責分配資料快取。快取的大小可以通過呼叫dmo的imediaobject::getinputsizeinfo或imediaobject::getoutputsizeinfo得到。dmo使用的資料快取也是乙個com物件,支援imediabuffer介面,與directshow filter的media sample類似。

4. 一般的dmo依次呼叫imediaobject::processinput和imediaobject::processoutput處理資料,in-place的dmo呼叫imediaobjectinplace::process處理資料。兩套方法不能混用。

5. 在呼叫processoutput時,如果返回的標記是dmo_output_data_bufferf_incomplete,說明資料的資料還沒有完全取出,需要再次呼叫processoutput。

6. 所有輸入資料都已輸入完成,應該呼叫dmo的imediaobject::discontinuity方法。

7. 如果你想中斷資料處理流程,呼叫dmo的imediaobject::flush。

8. 區別兩種不同的可丟棄stream,標記分別為dmo_output_streamf_optional和dmo_output_streamf_discardable。注意,後者是要設定media type的。

DirectShow系統初級指南

if succeeded hr pfilter release 而對於dmo的直接使用,以下幾點是要特別注意的。1.在處理資料之前,必須為每條輸入輸出stream設定media type optional stream除外 2.從dmo從獲取的media type未必包含format塊,但是在給dm...

DirectShow系統概述

1.關於directshow 1.2 vc開發環境的配置 假設directx sdk8.1安裝在c dxsdk目錄下。1.編譯基類源 至少生成兩個靜態庫檔案 開啟c dxsdk samples directshow baseclasses baseclasses.dsw,debug版本生成strmb...

系統裝置的列舉(DirectShow)

directshow 對系統中不可預知性硬體提供了良好的支援,其方法是使用系統列舉,系統列舉的一般過程如下所示 1 使用cocreateinstance函式建立系統列舉器組建物件 clsid為clsid systemdeviceenum 並獲得icreatedevenum介面 2 使用介面方法icr...