_MFT_INPUT_STREAM_INFO_FLAGS列舉 (mftransform.h)
描述媒體基礎轉換上的輸入資料流程, (MFT) 。
Syntax
typedef enum _MFT_INPUT_STREAM_INFO_FLAGS {
MFT_INPUT_STREAM_WHOLE_SAMPLES = 0x1,
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 0x2,
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 0x4,
MFT_INPUT_STREAM_HOLDS_BUFFERS = 0x8,
MFT_INPUT_STREAM_DOES_NOT_ADDREF = 0x100,
MFT_INPUT_STREAM_REMOVABLE = 0x200,
MFT_INPUT_STREAM_OPTIONAL = 0x400,
MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 0x800
} ;
常數
MFT_INPUT_STREAM_WHOLE_SAMPLES 值: 0x1 每個媒體範例 (IMFSample 介面) 必須包含完整、未中斷的資料單位。 資料單位的定義取決於媒體類型:針對未壓縮的視訊,視訊框架;針對壓縮的資料,為壓縮封包;針對未壓縮的音訊,為單一音訊畫面。 對於未壓縮的音訊格式,一律會隱含此旗標。 (設定旗標是有效的,但並非必要。) 未壓縮的音訊畫面絕對不能跨越多個媒體範例。 |
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER 值: 0x2 用戶端提供做為輸入的每個媒體範例都必須只包含一個資料單位,如MFT_INPUT_STREAM_WHOLE_SAMPLES旗標所定義。 如果此旗標存在,則MFT_INPUT_STREAM_WHOLE_SAMPLES旗標也必須存在。 處理未壓縮音訊的 MFT 不應設定此旗標。 MFT 應該接受包含多個單一音訊畫面的緩衝區,以提升效率。 |
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE 值: 0x4 所有輸入樣本的大小都必須相同。 大小會以MFT_INPUT_STREAM_INFO結構的cbSize成員來指定。 MFT 必須提供此值。 在處理期間,MFT 應該驗證輸入樣本的大小,而且可能會卸載大小不正確的樣本。 |
MFT_INPUT_STREAM_HOLDS_BUFFERS 值: 0x8 呼叫 IMFTransform::P rocessOutput 之後,MFT 可能會保存一或多個輸入範例。 如果存在此旗標,則MFT_INPUT_STREAM_INFO結構的hnsMaxLatency成員會提供最大延遲,而cbMaxLoтhead成員會提供 lookahead 的最大位元組數。 |
MFT_INPUT_STREAM_DOES_NOT_ADDREF 值: 0x100 MFT 不會在 IMFTransform::P rocessInput 方法傳回之後保存輸入樣本。 它會在 ProcessInput 方法傳回之前釋放範例。 如果這個旗標不存在,MFT 可能會保留傳遞至 ProcessInput 方法之樣本的參考計數。 除非 MFT 釋放範例的 IMFSample 指標,否則用戶端不得重複使用或刪除緩衝區記憶體。 如果此旗標不存在,則不保證 MFT 會保留輸入樣本的參考計數。 即使 MFT 未設定此旗標,MFT 也能在 ProcessInput 中釋放輸入範例。 不過,設定此旗標可能會讓用戶端優化其重複使用緩衝區的方式。 如果 MFT 在 從 ProcessInput傳回之後保留到輸入範例上,則不應該設定此旗標。 |
MFT_INPUT_STREAM_REMOVABLE 值: 0x200 呼叫 IMFTransform::D eleteInputStream即可移除此輸入資料流程。 |
MFT_INPUT_STREAM_OPTIONAL 值: 0x400 此輸入資料流程是選擇性的。 轉換可以產生輸出,而不需要從這個資料流程接收輸入。 呼叫端可以取消選取資料流程,方法是不設定媒體類型或設定 Null 媒體類型。 轉換上的每個輸入資料流程都可以是選擇性的,但至少必須選取一個輸入,才能產生輸出。 |
MFT_INPUT_STREAM_PROCESSES_IN_PLACE 值: 0x800 MFT 可以就地處理。 在此模式中,MFT 會直接修改輸入緩衝區。 當用戶端呼叫 ProcessOutput時,在輸出資料流程中會傳回傳遞至此資料流程的相同範例,該資料流程具有相符的資料流程識別碼。 此旗標表示 MFT 會保存至輸入緩衝區,因此此旗標無法與MFT_INPUT_STREAM_DOES_NOT_ADDREF旗標結合。 如果此旗標存在,MFT 必須為對應至此輸入資料流程的輸出資料流程設定MFT_OUTPUT_STREAM_PROVIDES_SAMPLES或MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES旗標。 (請參閱 IMFTransform::GetOutputStreamInfo) 。 |
備註
在用戶端在轉換上設定媒體類型之前,保證正確的唯一旗標是MFT_INPUT_STREAM_REMOVABLE和MFT_INPUT_STREAM_OPTIONAL旗標。 對於所有其他旗標,用戶端應該先在每個非選擇性資料流程上設定媒體類型。
在預設處理模型中,MFT 會保留它在 ProcessInput中所接收之樣本的參考計數。 它不會立即在 ProcessInput內處理範例。 呼叫 ProcessOutput 時,MFT 會產生輸出資料,然後捨棄輸入範例。 此模型上定義了下列變化:
- 如果 MFT 永遠不會保留至 ProcessInput 與 ProcessOutput之間的輸入範例,它可以設定MFT_INPUT_STREAM_DOES_NOT_ADDREF。
- 如果 MFT 在下一次呼叫 ProcessOutput之後保留一些輸入範例,它可以設定MFT_INPUT_STREAM_HOLDS_BUFFERS。
需求
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
標頭 | mftransform.h |