2017-03-25 28 views
1

我使用Windows Media Foundation創建視頻文件。我有一些基於Using the Sink Writer to Encode Video教程的代碼。如何確定Windows Media Foundation接收器作家是否需要自下而上或自上而下的圖像?

當輸入類型爲MFVideoFormat_RGB32,輸出類型爲MFVideoFormat_WMV3,並且接收器寫入器正在寫入WMV文件,並且我爲接收器寫入器提供自上而下的RGB32數據時,我得到了我想要的視頻期望。

另一方面,當輸出類型爲MFVideoFormat_H264 - 其他所有內容相同時 - 位圖會顛倒。

如何在運行時找出需要哪種位圖數據?

+0

我想它最終都是關於使用'MF_MT_DEFAULT_STRIDE'屬性正確指示行順序的。也就是說,確保您的原始視頻RGB幀伴隨有媒體類型,其中定義了跨度並指示了行順序。 –

+0

@RomanR。是的,看起來就是這樣。如果你將你的評論加入到答案中,那麼我會將其標記爲正確答案,否則我會在一兩天內添加我自己的答案,如果不是的話。 –

回答

1

RGB視頻媒體類型可能會得到一個可選MF_MT_DEFAULT_STRIDE attribute指定行順序:

默認表面步幅,對於未壓縮的視頻媒體類型。步幅是從一行像素到下一行所需的字節數。 [...]

步幅對自上而下的圖像爲正,對自下而上的圖像爲負。

該屬性是可選的,省略時可能會導致混淆,因爲數據使用者可能會應用不同的默認值。一般來說,由於歷史原因,RGB數據通常以相反的行順序出現,但是最近的API往往會修復它,並且數據按正常的行順序排列。