Rockchip RGA 用法 - housekeeper-software/tech GitHub Wiki
rockchip RGA
可以做2D图像处理,不占用CPU资源,速度较快。
用法
android上提供的 RgaConvertor实际上对 librga.so的C接口的封装。目前,只提供一个接口:
public boolean blit(byte[] data,
int src_x,
int src_y,
int src_w,
int src_h,
int src_sw,//这个是原图的宽度,跟剪裁宽度没有关系
int src_sh,//这是原图的高度,跟剪裁高度没有关系
int src_format,
int transform,
int dst_w,
int dst_h,
int dst_sw,
int dst_sh,
int dst_format,
ByteBuffer out_buffer);
public boolean blit(ByteBuffer data,
int src_x,
int src_y,
int src_w,
int src_h,
int src_sw,
int src_sh,
int src_format,
int transform,
int dst_w,
int dst_h,
int dst_sw,
int dst_sh,
int dst_format,
ByteBuffer out_buffer);
输入数据如果是 byte[],使用第一个方法,输入数据是ByteBuffer,使用第二个重载的方法
注意
上面的ByteBuffer,必须是 DirectByteBuffer, 通过 ByteBuffer.allocateDirect()创建。 DirectByteBuffer 构建系统代价比较高,因而,可以使用DirectByteBufferPool来创建。
参数说明
byte[] data: 原始图像数据,可以是NV21,NV12,YUV420等,具体参考SDK说明
int src_x: 剪裁区域的x
int src_y: 剪裁区域的y
int src_w: 剪裁区域的宽
int src_h: 剪裁区域的高
int src_sw: 这个是原图的宽度,跟剪裁宽度没有关系,一般称为行距
int src_sh: 这是原图的高度,跟剪裁高度没有关系
int src_format:原图的格式,具体参考SDK中的定义
int tranform: 图像变换,旋转,镜像等,不做任何变换就直接给0
int dst_w: 目标图像的宽度
int dst_h: 图标图像的高度
int dst_sw: 目标图像的虚宽,一般等于目标图像的宽度
int dst_sh: 目标图像的虚高,一般等于目标图像的高度
int dst_format:目标图像的格式
ByteBuffer out_buffer: 目标图像的接收buffer
对图像的尺寸要求
图像的宽度必须是16的倍数,高度似乎不能为奇数。