一、 YUV 跨距 ( Stride ) 對(duì)齊
1、YUV 跨距 概念
Stride 跨距 , 指的是 在 內(nèi)存中 每行像素 占用的空間 , 由于 系統(tǒng) 對(duì) 圖像有 跨距對(duì)齊 的要求 , 這個(gè) Stride 跨距 可能 大于等于 實(shí)際的 圖像像素 所占用的 寬度 ;
分辨率為 638 x 480 的 RGB24 格式的圖片 , 內(nèi)存處理時(shí) 以 16 字節(jié)對(duì)齊 ;
RGB24 格式中 R ( 紅 ) / G ( 綠 ) / B ( 藍(lán) ) 每個(gè)分量占用 8 位 ( 1 字節(jié) ) , 一個(gè)像素總共占用 24 位 ( 3 字節(jié) ) ;
每一行的 實(shí)際像素 所占用的內(nèi)存是 638 * 3 = 1914 字節(jié) ;
需要以 16 字節(jié)對(duì)齊 , 最后一個(gè)字節(jié)占用的實(shí)際 內(nèi)存大小 是 1914 % 16 = 10 字節(jié) ,
因此 還需要 額外補(bǔ)充 16 - 10 = 6 字節(jié)的填充字節(jié) ,
最終達(dá)到 638 * 3 + 6 = 1920 字節(jié) ;
2、YUV 跨距對(duì)齊 概念
YUV 跨距 ( Stride ) 對(duì)齊 是 圖像處理 過程中 內(nèi)存對(duì)齊 概念 ;
在 處理 YUV 格式的 圖像 時(shí) , 系統(tǒng) 或 硬件設(shè)備 要求 , YUV 圖像的 每一行 像素 , 在 內(nèi)存空間 中 需要 進(jìn)行對(duì)齊操作 ;
Stride 跨距對(duì)齊 是 為了滿足 特定 的 內(nèi)存訪問模式 的要求 , 有些系統(tǒng)要求 進(jìn)行 跨距對(duì)齊 ,
- 要求 YUV 圖像 的 每行內(nèi)存寬度 必須是 " 內(nèi)存對(duì)齊長度 " 的整數(shù)倍 ,
- 如果 YUV 圖像 的 每行內(nèi)存寬度 不是 " 內(nèi)存對(duì)齊長度 " 的整數(shù)倍 , 就需要在 每行 的末尾添加 填充字節(jié) , 以達(dá)到 跨距對(duì)齊 要求 ;
- 被填充的字節(jié) , 沒有實(shí)際意義 , 不包含圖像數(shù)據(jù) ;
- 這個(gè) " 內(nèi)存對(duì)齊長度 " 可能是 16 字節(jié) / 32 字節(jié) / 64 字節(jié) 等 ;
二、 YUV 跨距 ( Stride ) 對(duì)齊示例
要求 內(nèi)存處理 YUV 圖像時(shí) , 以 16 字節(jié)對(duì)齊 , 現(xiàn)在有一張圖片 638 x 480 像素的 YUV420P 圖片 ;
1、YUV420P 數(shù)據(jù)存儲(chǔ)
YUV420P 數(shù)據(jù)存儲(chǔ) 格式如下圖所示 , 不同類型的分量放在不同的數(shù)組中 ,
- Y 灰度值 分量 , 存儲(chǔ)在 最上面的數(shù)組中 , 在下圖的 Y0 ~ Y7 的 灰度值 就是存放在一個(gè)數(shù)組中 ;
- U 色度值 分量 , 存儲(chǔ)在 中間數(shù)組中 , 在下圖的 U0 ~ U3 的 色度值 就是存放在一個(gè)數(shù)組中 , U 的個(gè)數(shù)只有 4 個(gè) , 是 Y 分量個(gè)數(shù)的一半 ;
- V 色度值 分量 , 存儲(chǔ)在 最下面的數(shù)組中 , 在下圖的 V0 ~ V3 的 色度值 就是存放在一個(gè)數(shù)組中 , V 分量 的個(gè)數(shù)只有 4 個(gè) , 是 Y 分量 個(gè)數(shù)的一半 ;
上面的 YUV 圖像 內(nèi)存數(shù)據(jù) 中 ,
- Y0 , Y1 , Y4 , Y5 灰度值 使用 U0V0 色度值 , 4 個(gè)像素用了 6 字節(jié) , 一個(gè)像素 1.5 字節(jié) ;
- Y2 , Y3 , Y6 , Y7 灰度值 使用 U1V1 色度值 , 4 個(gè)像素用了 6 字節(jié) , 一個(gè)像素 1.5 字節(jié) ;
- Y8 , Y9 , Y12 , Y13 灰度值 使用 U2V2 色度值 , 4 個(gè)像素用了 6 字節(jié) , 一個(gè)像素 1.5 字節(jié) ;
- Y10 , Y11 , Y14 , Y15 灰度值 使用 U3V3 色度值 , 4 個(gè)像素用了 6 字節(jié) , 一個(gè)像素 1.5 字節(jié) ;
該圖像是一個(gè) 4 x 4 大小的圖片 , 每一行 占 4 字節(jié) ;
2、跨距對(duì)齊分析
圖片的像素格式是 638 x 480 像素 ;
在上面 YUV420P 格式的圖像中 , 每一行 每個(gè)像素 只占 1 字節(jié) , 那么 該圖像 在內(nèi)存中 , 每行的長度 是 638 字節(jié) ;
每一行的 實(shí)際像素 所占用的內(nèi)存是 638 字節(jié) ;
需要以 16 字節(jié)對(duì)齊 , 最后一個(gè)字節(jié)占用的實(shí)際 內(nèi)存大小 是 638 % 16 = 14 字節(jié) ,
因此 每行 還需要 額外補(bǔ)充 16 - 14 = 2 字節(jié)的填充字節(jié) ,
最終達(dá)到 638 + 2 = 640 字節(jié) ;文章來源:http://www.zghlxwxcb.cn/news/detail-826787.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-826787.html
到了這里,關(guān)于【音視頻原理】圖像相關(guān)概念 ⑦ ( YUV 跨距 Stride 對(duì)齊 | YUV 跨距 概念 | YUV 跨距對(duì)齊 概念 | YUV 跨距 Stride 對(duì)齊示例 )的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!