图像格式YUY2的步幅计算

时间:2014-04-10 05:58:27

标签: android

我正在研究Android的YuvImage.java代码,http://androidxref.com/4.2.2_r1/xref/frameworks/base/graphics/java/android/graphics/YuvImage.java#199

为什么YUY2的步幅是宽度* 2,但NV21的步幅是宽度?

以下是代码:

199    private int[] calculateStrides(int width, int format) {
200        int[] strides = null;
201        if (format == ImageFormat.NV21) {
202            strides = new int[] {width, width};
203            return strides;
204        }
205
206        if (format == ImageFormat.YUY2) {
207            strides = new int[] {width * 2};
208            return strides;
209        }
210
211        return strides;
212    }

1 个答案:

答案 0 :(得分:1)

NV21格式有两个平面,一个用于亮度,另一个用于颜色值。第一个的步幅是 width (在数组的第一个元素中找到)和第二个平面的 width (在数组的第二个元素中找到)。所以它的宽度加上宽度

在YUY2格式中,亮度和颜色信息是交错的,步幅(单个像素行的数据长度)是宽度的两倍(存储在唯一的元素中)生成的数组)。