OMAP3530下bc-cat 编程

OMAP3530下bc-cat 编程

 

        bc-cat 设计的主要目的是优化OPenGL ES(1.1 和2.0)纹理流的。目前版本0.2 , 不支持RGB8888的格式,有点杯具了。RGB只支持565,而且还没测试过,  有点小小的心痛。不过也有意外收获,支持NV12,YUV422的格式。很显然,这玩意是专门为视频准备的。。。

 

       Bc-cat基本思路是这样的:将纹理缓冲直接映射到进程空间中,程序直接写缓冲以更新纹理,然后正常调用OpenGL ES 的绘图和Shader完成渲染。

     

       看了一下Demo,基本编程过程小结如下:

 

  • 首先打开 /dev/bccatX 设备。
  • ioctl BCIOREQ_BUFFERS 申请内存。 申请信息主要是 宽、高、格式、缓冲数量。
  • 使用 BCIOGET_BUFFERCOUNT 返回实际可用的缓冲数量。
  • 初始化EGL,调用EGL扩展函数 ,传入/dev/bccatX设备序号X,获取缓冲数量,宽高,格式等。 这里主要用于确认。
  • 根据缓冲数目创建对应的数目的纹理句柄。
  • 激活纹理 glActiveTexture(GL_TEXTURE0); 然后对每个纹理ptex_objs调用glBindTexture (GL_TEXTURE_STREAM_IMG, ptex_objs[idx]); 绑定到GL_TEXTURE0。
  • 缓冲绑定 glTexBindStreamIMG(bcdev_id, idx); 将/dev/bccatX的缓冲序号idx绑定纹理ptex_objs[idx] , 其中bcdev_id就是/dev/bccatX中的X序号,0~9。


OK,剩下的工作就比较简单了。

  • 使用BCIOGET_BUFFERPHYADDR 获取一个idx序号对应的缓冲物理地址。
  • 对物理地址调用 mmap 映射到进程中的虚拟地址空间。也就是得到一个缓冲区了。


到此, GLES中的纹理与进程中的一个缓冲区通过序号idx一一对应了。


OK,当需要更新显示纹理的时候,直接对缓冲区写就行了。

写完了然后去调用OPenGL ES 2.0 的绘图。 在调用glDrawArrays这类接口之前,必须绑定当前缓冲idx对应的纹理句柄:

glActiveTexture(GL_TEXTURE0);

glBindTexture(GL_TEXTURE_STREAM_IMG, ptex_objs[idx]);//如果更新了第idx对应的缓冲,

使用bc-cat 的主要目的就是不必再使用glTexSubImage2D 或者 glTexImage2D 这种低效率的接口去更新纹理内容。避免了内存的二次拷贝,其性能提高相当显著了。

 

对于OpenGL ES2.0 ,必须使用Shader控制绘制管线。在Fragment Shader中,使用texture stream 扩展的纹理与使用标准纹理不一样。 首先是定义类型不同: "uniform samplerStreamIMG streamtexture;/n" ,标准纹理定义是"uniform sampler2D s_texture;                        /n"   ; 其次是纹理引用不同:gl_FragColor = textureStreamIMG(streamtexture, texcoord); 标准纹理引用是gl_FragColor= texture2D( s_texture, v_texCoord ); 

最后就是在Fragment shader 一开始要声明使用texturestream2扩展:

 "#ifdef GL_IMG_texture_stream2/n"
 "#extension GL_IMG_texture_stream2 : enable/n"
 "#endif/n"

 

对于OpenGL ES1.1 ,要调用 glEnable(GL_TEXTURE_STREAM_IMG);来使能GL_TEXTURE_STREAM_IMG扩展。

 

参照网址: http://software-dl.ti.com/dsps/dsps_public_sw/apps_processors/OMAP35x_AM35x_Video_Texture_Streaming/1_0/index_FDS.html

 

beelike@126.com

     

                                          

 

标题基于Spring Boot的音乐播放网站设计与实现研究AI更换标题第1章引言介绍音乐播放网站的研究背景、意义、国内外现状及论文方法与创新点。1.1研究背景与意义阐述音乐播放网站在当今数字化时代的重要性与市场需求。1.2国内外研究现状分析国内外音乐播放网站的发展现状及技术特点。1.3研究方法以及创新点概述论文采用的研究方法及在设计与实现上的创新点。第2章相关理论与技术基础总结音乐播放网站设计与实现所需的相关理论和技术。2.1Spring Boot框架介绍介绍Spring Boot框架的基本原理、特点及其在Web开发中的应用。2.2音乐播放技术概述概述音乐播放的基本原理、流媒体技术及音频处理技术。2.3数据库技术选型分析适合音乐播放网站的数据库技术,如MySQL、MongoDB等。第3章系统设计详细介绍音乐播放网站的整体设计方案。3.1系统架构设计阐述系统的层次结构、模块划分及各模块的功能。3.2数据库设计介绍数据库表结构、关系及数据存储方式。3.3界面设计用户界面的设计原则、布局及交互方式。第4章系统实现详细介绍音乐播放网站的具体实现过程。4.1开发环境与工具介绍开发所需的软件、硬件环境及开发工具。4.2核心功能实现阐述音乐播放、搜索、推荐等核心功能的实现细节。4.3系统测试与优化介绍系统测试的方法、过程及性能优化策略。第5章研究结果与分析呈现音乐播放网站设计与实现的研究结果。5.1系统功能测试结果展示系统各项功能的测试结果,包括功能完整性、稳定性等。5.2用户反馈与评价收集并分析用户对音乐播放网站的使用反馈与评价。5.3对比方法分析将本设计与实现与其他类似系统进行对比分析,突出优势与不足。第6章结论与展望总结音乐播放网站设计与实现的研究成果,并展望未来发展方向。6.1研究结论概括音乐播放网站设计与实现的主要成果及创新点。6.2展望指出当前研究的不足,提出未来改进方向及可
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值