RockChip RGA与DRM大小端命名冲突解析

2023-11-22 14:50

本文主要是介绍RockChip RGA与DRM大小端命名冲突解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RockChip RGA与DRM大小端命名冲突解析

概述

使用Rockchip平台RGA处理RGB数据然后送显示时,一定要注意RGA与DRM命名大小端是反着来的,否则容易出现颜色不对情况。

大小端定义

1、内存大小端区分:

自然语言

0x11223344

小端机器:

int a = 0x11223344;
cha *b = (char *)&a;

*(b + 0) = 0x44
*(b + 1) = 0x33
*(b + 2) = 0x22
*(b + 3) = 0x11

// 对应像素
0xRRGGBBAA 对应自然语言(从左往右念)应当叫做RGBA。
小端的内存排布为(从左到右:低地址->高地址):
AABBGGRR 对应自然语言(从左往右念)ABGR
大端的内存排布为(从左到右:低地址->高地址):
RRGGBBAA 对应自然语言(从左往右念)RGBA

大端机器:

int a = 0x11223344;
cha *b = (char *)&a;

*(b + 0) = 0x11
*(b + 1) = 0x22
*(b + 2) = 0x33
*(b + 3) = 0x44

像素格式命名大小端

1、DRM中的定义(小端定义)

https://github.com/torvalds/linux/blob/master/include/uapi/drm/drm_fourcc.h

在这里插入图片描述

2、RGA中的定义(大端定义)

在这里插入图片描述

3、对比都使用RGBA888格式去解析 0x11223344(自然语言)

DRM:R=0x11, G=0x22, B=0x33, A=0x44 对应RGA的:ABGR。
RGA:R=0x44, G=0x33, B=0x22, A=0x11

4、区分总结:

如名称都叫RGBA,可以将RGBA理解为自然语言,在小端模式下R要放高位,大端模式下R要放低位。因此大端命名的RGBA要对应小端命名的ABGR。

这篇关于RockChip RGA与DRM大小端命名冲突解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/410916

相关文章

linux如何复制文件夹并重命名

《linux如何复制文件夹并重命名》在Linux系统中,复制文件夹并重命名可以通过使用“cp”和“mv”命令来实现,使用“cp-r”命令可以递归复制整个文件夹及其子文件夹和文件,而使用“mv”命令可以... 目录linux复制文件夹并重命名我们需要使用“cp”命令来复制文件夹我们还可以结合使用“mv”命令总

Python脚本实现图片文件批量命名

《Python脚本实现图片文件批量命名》这篇文章主要为大家详细介绍了一个用python第三方库pillow写的批量处理图片命名的脚本,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言源码批量处理图片尺寸脚本源码GUI界面源码打包成.exe可执行文件前言本文介绍一个用python第三方库pi

MySQL8.0设置redo缓存大小的实现

《MySQL8.0设置redo缓存大小的实现》本文主要在MySQL8.0.30及之后版本中使用innodb_redo_log_capacity参数在线更改redo缓存文件大小,下面就来介绍一下,具有一... mysql 8.0.30及之后版本可以使用innodb_redo_log_capacity参数来更改

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php