使用neon实现RGB888转RGB565
RGB888转RGB565使用C代码来实现是非常简单的,但就是比较耗时,使用NEON很容易实现这个功能,而且速度还能有很大的提升,以下是将16个RGB888像素点转为RGB565的代码
uint8x16x3_t v = vld3q_u8(rgb);uint8x16_t r5 = vshrq_n_u8(v.val[0], 3);uint8x16_t g6 = vshrq_n_u8(v.val[1], 2);uint8x16_t b5 = vshrq_n_u8(v.val[2], 3);uint16x8_t temp = vshll_n_u8(vget_low_u8(r5), 8);uint16x8_t r5_l = vqshlq_n_u16(temp, 3);uint16x8_t g6_l = vshll_n_u8(vget_low_u8(g6), 5);uint16x8_t b5_l = vmovl_u8(vget_low_u8(b5));uint16x8_t rg56_l = vorrq_u16(r5_l, g6_l);uint16x8_t rgb565_l = vorrq_u16(rg56_l, b5_l);vst1q_u16(rgb565, rgb565_l);temp = vshll_n_u8(vget_high_u8(r5), 8);uint16x8_t r5_h = vqshlq_n_u16(temp, 3);uint16x8_t g6_h = vshll_n_u8(vget_high_u8(g6), 5);uint16x8_t b5_h = vmovl_u8(vget_high_u8(b5));uint16x8_t rg56_h = vorrq_u16(r5_h, g6_h);uint16x8_t rgb565_h = vorrq_u16(rg56_h, b5_h);vst1q_u16(rgb565 + 8, rgb565_h);
在实现了这段代码后,编译的时候遇到了如下的报错:
error:constant 11 out of range 0 - 8
编译器并没有能正确的指出错误的是哪一行代码,后来发现是将R右移11位的操作
vshll_n_u8(vget_low_u8(r5), 11);
以上写法会导致这个error,即右移的最大范围是8,而这里要右移11。
所以这里拆成了两次移位来实现右移11位。
NEON的右移位数是由限制的
使用neon实现RGB888转RGB565相关推荐
- RGB888转RGB565
今天在REVIEW代码的时候,发现了这样一个宏定义: #define COLOR_TO_MTK_COLOR_SIMUL(color) ((((color) >> 19) & 0x1 ...
- RGB888 和 RGB565
今天作练习,是一个将RGB888的图像转换成RGB565在ARM 的 LCD上显示的小程序.里面的移位来移位去的完全不了.先是不管三七二是一,把程序运行了一下.图像是一行一行刷出来的,点是一个一个一行 ...
- RGB888和RGB565屏幕显示效果区别
很想测试一下RGB888和RGB565屏幕的显示区别 用image2lcd把图片转换一下, 屏幕分辨率为800x480 1 以下是对比: 左边RGB888 右边RGB565
- RGB888与RGB565颜色
颜色名称 RGB888原色 RGB565还原色 英 RGB888[Hex] RGB888_R[Hex] RGB888_G[Hex] RGB888_B[Hex] RGB565[Hex] RGB565_R ...
- RGB565颜色表,附RGB888转RGB565工具,RGB24转RGB565工具
下载链接 http://download.csdn.net/detail/liquanfeng9227/9893117 工具可以将RGB888颜色值转换成TFT屏用的RGB565颜色值. #def ...
- matlab读取RGB888或RGB565像素文件并绘图
1.matlab下,通过读取txt文件中的RGB888格式的像素文件绘图,并将其转换为RGB565格式后再绘图.代码如下: clear all; close all; a=textread('E:\m ...
- RGB565 与 RGB888的相互转换
本文内容不是完全原创,参考了网上部分精华,做了整理. RGB色彩模式(也翻译为"红绿蓝",比较少用)是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B) 三个颜色通道的变化 ...
- RGB565,RGB555, RGB888,RGB32转换
关于RGB565,RGB555, RGB888,RGB32的转换,在我的前一篇博文中我已经介绍过了关于RGB565->RGB888的步骤和思想. 今天上午又研究了一个上午,就谢了下来,希望 ...
- 转: RGB565、RGB888互相转换原理和代码
转:http://www.xuebuyuan.com/935987.html 背景:在我们的计算机中图像是以RGB888格式显示图像的,24位图每个像素保存了32bit的数据,即RGB888+Alph ...
最新文章
- python爬虫高考成绩
- 基于 Laravel Route 的 ThinkSNS+ Component
- 【Web后端笔记】SQL Server与java数据类型对应
- 初识vue之axios的封装
- Machine Learning学习计划
- IDC机房对接阿里云
- 【Ian Goodfellow 强推】GAN 进展跟踪 10 大论文(附下载)
- HTML Text Editor
- C语言获取当前的工作路径
- 云南农职《JavaScript交互式网页设计》 综合机试试卷④——蔚蓝网导航栏
- 计算机仿真塞曼效应实验报告,塞曼效应实验报告[完整版].doc
- Java集合类ArrayList线程不安全验证和解决
- 107 THREE.JS 使用StereoEffect实现模拟VR双屏
- AI不思议|除了猜用户手绘图案,还能猜什么?
- 【转贴】龙芯生态产品和解决方案巡展(第四篇)——存储
- matlab外推法求区间
- android 点赞手型,在朋友圈,你是哪种点赞型人格?
- 计算机网络具备哪些要素,一个计算机网络必须具备以下3个基本要素
- 每个初学JAVA者都应该搞懂的问题
- SAP HR Schema 详解(三)工资核算基础
热门文章
- 虚幻引擎5 C++编程学习
- 08 Cesium—影像服务-1
- jeesite集群和负载均衡配置
- 推箱子android课程设计,推箱子游戏课程设计精选.doc
- ffmpeg源码简析(九)av_log(),AVClass,AVOption
- TCP/IP协议族之运输层协议 ( UDP, TCP)
- 计算机串行总线控制器,通用串行总线控制器出现叹号是什么情况?怎么解决?...
- 3Com Network Supervisor与IBM Tivoli NetView两款网管软件操作视频
- 看盘做短线的10种方法(转)
- Spring Cloud 2.x系列之Feign整合断路器监控Hystrix Dashboard