i8320 用NEON做RGB565转RGBA
来源:互联网 发布:虚拟展示软件 编辑:程序博客网 时间:2024/06/08 08:27
用NEON做RGB565转RGBA
做GBA模拟器,因为后端要用glTexImage2D加载视频buffer的内容,
不幸的是opengles库做格式转换奇慢。如果让glTexImage2D加载RGB565格式的视频,
游戏帧数一下掉到只有10来帧。用NEON加速后,上升到45帧左右。
void neon_convert (uint8_t * dest, uint8_t * src, int n)
{
n/=8;
int i;
for(i=0;i<n;i++) {
uint16x8_t rgb=vld1q_u16((uint16_t*)src);
uint16x8_t gb, b;
uint8x8x4_t res;
res.val[3] = vdup_n_u8 (255);
gb = vshrq_n_u16 (rgb, 5);
b = vshrq_n_u16 (rgb, 5 + 6);
res.val[2] = vmovn_u16 (rgb); /* get low 5 bits */
res.val[1] = vmovn_u16 (gb); /* get mid 6 bits */
res.val[0] = vmovn_u16 (b); /* get top 5 bits */
res.val[0] = vshl_n_u8 (res.val[0], 3); /* shift to top */
res.val[1] = vshl_n_u8 (res.val[1], 2); /* shift to top */
res.val[2] = vshl_n_u8 (res.val[2], 3); /* shift to top */
res.val[0] = vsri_n_u8 (res.val[0], res.val[0], 5);
res.val[1] = vsri_n_u8 (res.val[1], res.val[1], 6);
res.val[2] = vsri_n_u8 (res.val[2], res.val[2], 5);
vst4_u8 (dest, res);
src += 8*2;
dest += 8*4;
}
}
- i8320 用NEON做RGB565转RGBA
- 转rgb565
- RGB32转RGB565
- RGB888转RGB565
- jpg转RGB565
- RGB888转RGB565
- RGB888转RGB565
- RGB888转RGB565
- RGB888转RGB565
- RGB565转RGB888
- RGB888转RGB565
- RGBA 转 RGB
- RGBA(转)
- RGBA 转 RGB
- YUV420转RGBA
- bgra转rgba 工具
- RGBA
- RGBA
- jQuery事件之传递参数
- IT咨询行业
- 关于js操作word和excel,js导出word和excel的若干方法汇总[转]
- hudson用于自动发提醒邮件在代码提交到仓库之后
- C#事件解析
- i8320 用NEON做RGB565转RGBA
- C#委托之个人理解
- 来Csdn博客安家啦
- linux中的模块
- new life!
- QTP---Recovery Scenario没有被触发的原因汇总
- 中国IT动力,最大的中文电脑技术教程基地
- 搬家到gamemaffia.com,欢迎来逛逛~
- android 中TextToSpeech的用法