android 直播有意思的事- 420SP到420P

android Camera 出来的数据一般是NV21 也就是YUV420SP
我个人理解S 是 staggered 交错的意思 P就是plane 平面

YYYYYYYY VUVU 这种分布


420SP

H264呢 里面用的一般是I420(420P), YUV三个分量在三个平面上


420P

所以一般获取到图片 想用H264传出去,就得转换

像我这种懒蛋,一般找个模版代码一抄就行

图呢是我从网上找的,主要理解下转换过程

所以看图就能理解为啥 420计算的时候 都是宽1.5 因为2组Y对应一个UV
复制数据的时候呢 Y就按照顺序完整复制,U需要从 Y的所有数据后 隔着一个复制一个,V同理

   //挪动Y分量
    memcpy(picture->img.plane[0], data, y_len);
   
    for (int i = 0; i < uv_len; ++i) {
        //挪动U分量
        *(picture->img.plane[1] + i) = *(data + y_len + i * 2 + 1);

        //挪动V分量
        *(picture->img.plane[2] + i) = *(data + y_len + i * 2);

    }

是不是看这段模版代码 越发有感觉了,能理解了吧

你可能感兴趣的:(android 直播有意思的事- 420SP到420P)