最近发现media codec 解码后 yuv 的拷贝时间很大,进一步分析后发现底层会一个像素一个像素拷贝,非常花时间。用过调整解码后图像的Stride(步幅)后直接进行内存块拷贝,可以大幅缩短拷贝时间
在YUV图像格式中,stride和pix stride是两个重要的概念,通常与图像的存储和处理有关。下面是这两个术语的详细解释:
1. Stride(步幅)
Stride指的是在内存中每一行图像数据的字节数。它不仅包括当前行的数据,还可能包括用于对齐的填充字节。具体来说:
- Y分量:在YUV格式中,Y分量通常是亮度信息,可能会有较高的分辨率。Y分量的stride指的是每一行Y数据的字节数。
- U和V分量:U和V分量通常是色度信息,可能会有较低的分辨率。它们的stride也会被定义,通常与Y分量不同。
示例
假设Y分量的分辨率为1920x1080,stride为1920(每行1920个字节),而U和V分量的分辨率为960x540,stride可能为960(每行960个字节)。
2. Pix Stride(像素步幅)
Pix Stride是指在图像中每个像素占用的字节数。这个值通常与图像的色彩深度有关。例如:
- 在YUV 4:4:4格式中,每个Y、U和V分量的stride可能都是相同的,因为每个像素都有完整的Y、U、V信息。
- 在YUV 4:2:0格式中,U和V分量的分辨率会降低,因此它们的pix stride可能会小于Y分量的pix stride。
示例
如果在YUV 4:2:0格式中,每个Y分量占用1字节,而U和V分量各占用0.5字节(因为它们的分辨率降低),那么Y的pix stride为1字节,而U和V的pix stride则可能为0.5字节。
总结
- Stride:每行图像数据在内存中占用的字节数,可能包括填充。
- Pix Stride:每个像素在内存中占用的字节数,通常与色彩深度相关。