当前位置: 首页 > news >正文

【Rockchip系列】importbuffer_T 接口

RGA 图像缓冲区预处理

importbuffer_T 接口

对于需要RGA处理的外部内存,可以使用importbuffer_T接口将缓冲区对应的物理地址信息映射到RGA驱动内部,并获取缓冲区相应的地址信息,方便后续稳定、快速地调用RGA完成工作。

参数说明

参数类型(T)数据类型描述
virtual addressvoid *图像缓冲区虚拟地址
physical addressuint64_t图像缓冲区连续的物理地址
fdint图像缓冲区DMA的文件描述符
GraphicBuffer handlebuffer_handle_t图像缓冲区handle, 包含缓冲区地址,文件描述符,分辨率及格式等信息
GraphicBufferGraphicBufferAndroid graphic buffer
AHardwareBufferAHardwareBuffer系统中可被各种硬件组件访问的内存块

注意: 不同的buffer类型调用RGA的性能是不同的,性能排序如下:

physical address > fd > virtual address

一般推荐使用fd作为buffer类型。

接口定义

基于内存大小的导入
IM_API rga_buffer_handle_t importbuffer_fd(int fd, int size);
IM_API rga_buffer_handle_t importbuffer_virtualaddr(void *va, int size);
IM_API rga_buffer_handle_t importbuffer_physicaladdr(uint64_t pa, int size);

参数说明:

  • fd/va/pa: [必需] 外部缓冲区
  • size: [必需] 内存大小
基于图像参数的导入
IM_API rga_buffer_handle_t importbuffer_fd(int fd, int width, int height, int format);
IM_API rga_buffer_handle_t importbuffer_virtualaddr(void *va, int width, int height, int format);
IM_API rga_buffer_handle_t importbuffer_physicaladdr(uint64_t pa, int width, int height, int format);

参数说明:

  • fd/va/pa: [必需] 外部缓冲区
  • width: [必需] 图像缓冲区的像素宽度步长
  • height: [必需] 图像缓冲区的像素高度步长
  • format: [必需] 图像缓冲区的像素格式
基于自定义参数的导入
IM_API rga_buffer_handle_t importbuffer_fd(int fd, im_handle_param_t *param);
IM_API rga_buffer_handle_t importbuffer_virtualaddr(void *va, im_handle_param_t *param);
IM_API rga_buffer_handle_t importbuffer_physicaladdr(uint64_t pa, im_handle_param_t *param);

参数说明:

  • fd/va/pa: [必需] 外部缓冲区
  • param: [必需] 配置缓冲区参数
特定buffer类型的导入
IM_API rga_buffer_handle_t importbuffer_GraphicBuffer_handle(buffer_handle_t hnd);
IM_API rga_buffer_handle_t importbuffer_GraphicBuffer(sp<GraphicBuffer> buf);
IM_API rga_buffer_handle_t importbuffer_AHardwareBuffer(AHardwareBuffer *buf);

参数说明:

  • hnd/buf: [必需] 外部缓冲区

返回值

所有importbuffer_T函数返回rga_buffer_handle_t类型的值,用于描述内存句柄。

使用建议

  1. 选择合适的buffer类型可以显著影响性能。建议优先考虑使用physical address,其次是fd,最后是virtual address。

  2. 在实际应用中,通常推荐使用fd作为buffer类型,因为它在性能和易用性之间取得了良好的平衡。

  3. 根据您的具体需求选择合适的importbuffer_T函数。如果您只知道内存大小,使用第一组函数;如果您有完整的图像参数,使用第二组函数;如果您需要更灵活的参数控制,使用第三组函数。

  4. 对于特定的buffer类型(如GraphicBuffer或AHardwareBuffer),使用专门的导入函数可以简化操作并提高效率。

  5. 请确保在使用完毕后正确释放导入的buffer,以避免内存泄漏。

相关文章:

  • Tomcat服务与运用
  • kafka测试
  • SpringAOP学习
  • 企业微信群发工具:精准营销与高效沟通的新篇章
  • [云服务器15] 全网最全!手把手搭建discourse论坛,100%完成
  • Oracle Data Guard备库清理归档脚本
  • Linux递归找出目录下最近被修改文件(最近一段时间内被修改过的最新文件)(最近修改文件、最新文件、查找文件)(监控目录、监控mysql文件)
  • 完美无敌Oracle RMAN备份脚本
  • VBA解除Excel工作表保护
  • spring装配笔记
  • Matplotlib 使用 LaTeX 渲染图表中的文本、标题和数学公式
  • 【经验分享】自动化测试框架实战
  • 什么是IPv6
  • 解决pycharm中matplotlab画图不能显示中文的错误
  • SpirngBoot核心思想之一IOC
  • Google 是如何开发 Web 框架的
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 3.7、@ResponseBody 和 @RestController
  • android图片蒙层
  • Angular2开发踩坑系列-生产环境编译
  • Java应用性能调优
  • Logstash 参考指南(目录)
  • Promise初体验
  • Python socket服务器端、客户端传送信息
  • Python_网络编程
  • Python利用正则抓取网页内容保存到本地
  • uni-app项目数字滚动
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 浮动相关
  • - 概述 - 《设计模式(极简c++版)》
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 配置 PM2 实现代码自动发布
  • 悄悄地说一个bug
  • 译自由幺半群
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​字​节​一​面​
  • ‌Excel VBA进行间比法设计
  • #Java第九次作业--输入输出流和文件操作
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (接口自动化)Python3操作MySQL数据库
  • (转)jQuery 基础
  • (转)Unity3DUnity3D在android下调试
  • (转)winform之ListView
  • (转)程序员技术练级攻略
  • (转)树状数组
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .a文件和.so文件
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?