1. 程式人生 > >Image Stride(記憶體影象行跨度)

Image Stride(記憶體影象行跨度)

當視訊影象儲存在記憶體時,影象的每一行末尾也許包含一些擴充套件的內容,這些擴充套件的內容隻影響影象如何儲存在記憶體中,但是不影響影象如何顯示出來;Stride 就是這些擴充套件內容的名稱,Stride 也被稱作 Pitch,如果影象的每一行畫素末尾擁有擴充套件內容,Stride 的值一定大於影象的寬度值,就像下圖所示:

兩個緩衝區包含同樣大小(寬度和高度)的視訊幀,卻不一定擁有同樣的 Stride 值,如果處理一個視訊幀,必須在計算的時候把 Stride 考慮進去;

另外,一張影象在記憶體中有兩種不同的儲存序列(arranged),對於一個從上而下儲存(Top-Down) 的影象,最頂行的畫素儲存在記憶體中最開頭的部分,對於一張從下而上儲存(Bottom-Up)的影象,最後一行的畫素儲存在記憶體中最開頭的部分,下面圖示展示了這兩種情況:

一張從下而上的影象擁有一個負的 Stride 值,因為 Stride 被定義為[從一行畫素移動到下一行畫素時需要跨過多少個畫素],僅相對於被顯示出來的影象而言;而 YUV 影象永遠都是從上而下表示的,以及任何包含在 Direct3D Surface 中的影象必須是從上而下,RGB 影象儲存在系統記憶體時通常是從下而上;尤其是視訊變換,特別需要處理不同 Stride 值的影象,因為輸入緩衝也許與輸出緩衝不匹配,舉個例子,假設你想要將源影象轉換並且將結果寫入到目標影象,假設兩個影象擁有相同的寬度和高度,但是其畫素格式與 Stride 值也許不同;