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

android高效读图方式——Hardwarebuffer读图

安卓上有许许多多使用OpenGL来渲染的原因,比方说做特效/动画/硬解/人脸识别等等。渲染完成后如何从gpu中把数据快速读取出来也是高效图像处理中的重要的一环。

相对于glReadPixel的同步读取方式,安卓GLES3.0提供了更高效快速的Hardwarebuffer读图方式,Hardwarebuffer读图其原理与常用的GraphicBuffer比较类似,其实现的都是cpu数据与textureId之间的数据映射。(GraphicBuffer常用于SurfaceTexture中,例如相机使用SurfaceTexture预览数据,此时底层相机数据就是使用GraphicBuffer上传到opengl)

此处就不赘述hardwarebuffer的具体使用,主要是从安卓源码角度分析一下hardwarebuffer过程中同步参数如何使用。

  • AHardwareBuffer_lock方法可用于将textureId图像映射到具体的outVirtualAddress地址上,其中该方法的第三个参数,fence用于cpu和gpu之间的数据同步,通常为使用eglDupNativeFenceFDANDROID方法将EGLSyncKHR转换为文件描述符来得到。

  • 文件描述符通常需要在使用完成后调用close来关闭,跟踪系统代码后发现AHardwareBuffer_lock方法内部有过针对该描述符的close,所以调用该方法后无需再close
http://www.lryc.cn/news/361681.html

相关文章:

  • 悉数六大设计原则
  • hdfs复习
  • css-Ant-Menu 导航菜单更改为左侧列表行选中
  • 02-CSS3基本样式
  • USART串口外设
  • 大模型应用之基于Langchain的测试用例生成
  • C++之map
  • 【量算分析工具-方位角】GeoServer改造Springboot番外系列六
  • 【机器学习】机器学习与大模型在人工智能领域的融合应用与性能优化新探索
  • 上传图片并显示#Vue3#后端接口数据
  • 音视频开发14 FFmpeg 视频 相关格式分析 -- H264 NALU格式分析
  • Qt学习记录(15)数据库
  • c++常用设计模式
  • 【动手学深度学习】softmax回归从零开始实现的研究详情
  • MySQL:MySQL执行一条SQL查询语句的执行过程
  • 解决Python导入第三方模块报错“TypeError: the first argument must be callable”
  • 在python中连接了数据库后想要在python中通过图形化界面显示数据库的查询结果,请问怎么实现比较好? /ttk库的treeview的使用
  • OZON的选品工具,OZON选品工具推荐
  • 营销方案撰写秘籍:包含内容全解析,让你的方案脱颖而出
  • 如何制作一本温馨的电子相册呢?
  • 485通讯网关
  • Anaconda中的常用科学计算工具
  • Java 中BigDecimal传到前端后精度丢失问题
  • 在Linux/Ubuntu/Debian上安装TensorFlow 2.14.0
  • 多语言for循环遍历总结
  • python API自动化(Jsonpath断言、接口关联及加密处理)
  • C++入门5——C/C++动态内存管理(new与delete)
  • leetcode 743.网络延时时间
  • MATLAB导入导出Excel的方法|读与写Excel的命令|附例程的github下载链接
  • 【第4章】SpringBoot实战篇之登录优化(含redis使用)