Share via


_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 永遠不會保留至 ProcessInputProcessOutput之間的輸入範例,它可以設定MFT_INPUT_STREAM_DOES_NOT_ADDREF。
  • 如果 MFT 在下一次呼叫 ProcessOutput之後保留一些輸入範例,它可以設定MFT_INPUT_STREAM_HOLDS_BUFFERS。

需求

   
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
標頭 mftransform.h

另請參閱

MFT_INPUT_STREAM_INFO

媒體基礎列舉

媒體基礎轉換