D3D处理2D图像: NV12格式及其转换(1)
生活随笔
收集整理的這篇文章主要介紹了
D3D处理2D图像: NV12格式及其转换(1)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. NV12格式介紹
YUV 4:2:0是視頻和圖片編碼和解碼最常用的輸入和輸出格式。而在D3D中NV12是支持最廣泛的YUV 4:2:0格式,主要因為它在GPU中處理的效率最高,只有兩個plane, 而且UVplane和Luminance(Y) plane的pitch(stride)相等,高度為前者一半,所以在很多場景都是可以一起處理,而不需要分為兩個或者三個plane來分別進行操作,不管是渲染,拷貝,還是在graphic pipeline中通過映射成其他格式,都非常方便和高效。
反觀其他的YUV格式,I420/IYUV, YV12/等,雖然在編碼的時候是首選格式,但是在D3D中不支持,或者有很多限制,比如不能映射到CPU中進行操作。
2. NV12在GPU中的布局
GPU為了處理數據的高效率,往往每次操作的內存可能需要對齊,比如2KB/16KB/32KB或者64KB等,這樣數據傳輸和拷貝的速度更快,所以實際NV12格式的圖像在顯存中存放的布局和實際的大小可能不一樣,比如一個HD視頻解出來一幀圖像,分辨率為1920x1080, Y和UV plane每行1920個byte,Y plane高為1080,而UV plane高為540,但是在不同的GPU中,實際存放布局可能完全不同,比如在AMD的GPU中,Y/UV plane的寬一般存為2048 byte(2K
總結
以上是生活随笔為你收集整理的D3D处理2D图像: NV12格式及其转换(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批量将RGBA图片转换成RGB格式
- 下一篇: 对股票进行可视化分析