android GpuImage色彩空间转换耗时操作


//GPUImageNativeLibrary.YUVtoRBGA(data, mWidth, mHeight, mGLRgbBuffer.array()); 

这个耗时有 15-20ms 
//long start = System.currentTimeMillis();
LibYuv.NV21ToARGB(data, mWidth, mHeight, mGLRgbBuffer.array());
//Log.e("200", "NV21ToARGB cost: " + (System.currentTimeMillis() - start));
这个耗时有 1-3ms
前提是这个要LibYuv编译要打开 neon指令集才可以 
jint LibYuv_NV21ToARGB(JNIEnv * env, jobject obj, jbyteArray yuv420sp, jint width, jint height, jintArray rgbOut)
{
    
 
uint8_t *rgbData = (uint8_t *)((*env)->GetPrimitiveArrayCritical(env, rgbOut, 0));    
jbyte* yuv = (jbyte*) (*env)->GetPrimitiveArrayCritical(env, yuv420sp, 0); 
   
const uint8* src_y = yuv;    
int src_stride_y = width;    
const uint8* src_vu = src_y + width * height;    
int src_stride_vu = (width + 1) / 2 * 2;;    
int dst_stride_argb = width * 4;  
  
 
NV12ToARGB(src_y, src_stride_y, 
           src_vu, src_stride_vu,
           rgbData,dst_stride_argb, 
           width, height); //不知道为什么用NV21toARGB不行,有空再研究 
   
(*env)->ReleasePrimitiveArrayCritical(env, rgbOut, rgbData, 0);   
(*env)->ReleasePrimitiveArrayCritical(env, yuv420sp, yuv, 0);
 
 
}
libyuv: Android.mk

common_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=neon



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值