Android CameraService CameraMetadata与CameraPovider CameraMetadata的定义、IPC传递数据能力及相互转换
framework CameraMetadata 定义如下://frameworks\av\camera\include\camera\CameraMetadata.h/** * A convenience wrapper around the C-based camera_metadata_t library. */class CameraMetadata: public Parcel...
AIDL学习总结--扩展ICameraService.aidl接口实现跨进程向CameraService传递几兆级别数据的实现方案
可以通过Parcel的readBlob和writeBlob来跨进程传递大数据(实际上用的ashmem来传递)以后完善
Android GraphicBuffer是系统什么buffer及其分配过程
先贴上几篇我学习的好文章SurfaceFlinger中Buffer的创建与显示Android P 图像显示系统(二)GraphicBuffer和Gralloc分析Android P 图形显示系统Android P 图形显示系统(一)硬件合成HWC2...
Android GraphicBuffer神奇之处---direct texture
研究了Android GraphicBuffer一段时间了,那么Android GraphicBuffer到底有什么优点呢?我在网上搜了下,转载一篇比较好的文章了介绍下这个问题。
Android Native层调用JAVA层方法以生成带文字纹理的方法
很多时候,如果我们想在Native层使用opengles 渲染绘制时,希望渲染绘制一些文字。但是opengl es 其实是不支持直接绘制文字的,但是Android JAVA层却是有整套的绘制文字方法,如采用bitmap,在bitmap上绘制文字代码如下: //create the canvas Bitmap originBmp = Bitmap.createBit...
opengles GL_OVR_multiview2 使用介绍
最近在研究GL_OVR_multiview2需求是对 unity 渲染完成的GL_TEXTURE_2D_ARRAY做二次渲染首先介绍下GL_OVR_multiview,在OpenGL ES SDK for Android上详细介绍了GL_OVR_multiview基本使用方法。可以理解为GL_OVR_multiview是通过一次draw call 实现将帧缓冲对象(framebuffer O...
GraphicBuffer使用:直接通过GraphicBuffer handle创建GraphicBuffer和直接渲染到GraphicBuffer的方法
在跨进程传递GraphicBuffer时,并不是直接传递GraphicBuffer对象,而是传递的GraphicBuffer的类型为native_handle的handle成员。在跨进程传递完成之后,如果期望再将native_handle型handle转换为GraphicBuffer,可以这样采用如下代码: sp<GraphicBuffer> spGraphicBuffer...
OpenglES Framebuffer Object学习总结及读取其ColorAttachment的方法
Framebuffer Object 其自身并没有实际的内存,它可以理解为内存管理者(manager)。其管理的内存是和Framebuffer Object绑定的附件(color attachments,depth attachment,stencil attachment),如纹理(texture,renderbufer object),其绑定附件才拥有实际的内存。OpenGL ES 的默认...
unity获取RenderTexture内容并保存的方法
private void Save() { var eye = eyes[0]; RenderTexture.active = (RenderTexture)eye.TexturePtr; Texture2D png = new Texture2D(RenderTexture.active.width, RenderTe...
OpenXR学习总结
最新在学习OpenXR标准并研究在Android上实现,现在基本功能已经实现,简单总结下。## 1. OpenXR是什么:官方网址介绍的挺好的,就不赘余了。[https://www.khronos.org/OpenXR](https://www.khronos.org/OpenXR/)官方spec地址如下:[https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html](https://www.khronos.org/reg
Android Camera学习总结
为了更全面的理解Camera API2,决定梳理一遍APP到HAL层,Android Camera的工作流程。kernel层没有研究过,以后找时间再研究下。应用层主要流程应用层主要流程如下应用主要流程有Surface资源准备,比如预览显示为目标的surfaceview,拍摄照片接受为目的的ImageReaderopenCamera流程首先通过getSystemService(Context.CAMERA_SERVICE)获取CameraManager服务,然后通过CameraManag
Android Native层开发Camera应用的方法
现在大部分Android Camera 应用都是基于Android标准API1/API2进行开发的,但是其实Android Camera应用也是可以直接在Android Native层进行开发,而且存在两种方法:直接和CameraSerive通信进行开发直接和CameraProvider通信进行开发直接在Android Native 层开发Camera应用的好处主要有:摒弃了Java层调用,能在性能方面存在一定的优化由于高性能的算法大部分都是基于c/c++开发的,在Native层开发相机应用
Android JNI子线程中通过Env.findClass()查找自定义Java类失败的解决方法
问题:在Native层子线程中尝试获取自定义的Java类,发现总是提示找不到!!代码如下: if (gJavaVM->AttachCurrentThread(&pThreadJEnv, NULL) != JNI_OK) { LOGE("AttachCurrentThread failed."); return; } jclass myTestClass= pThreadJEnv->FindClass("com/mytes
Android中的GraphicBuffer同步机制-Fence
Fence是一种同步机制,在Android里主要用于图形系统中GraphicBuffer的同步。那它和已有同步机制相比有什么特点呢?它主要被用来处理跨硬件的情况,尤其是CPU,GPU和HWC之间的同步,另外它还可以用于多个时间点之间的同步。GPU编程和纯CPU编程一个很大的不同是它是异步的,也就是说当我们调用GL command返回时这条命令并不一定完成了,只是把这个命令放在本地的command buffer里。具体什么时...
HWComposer合成显示流程分析
在研究HWComposer::createWorkList前,需要先了解下DisplayData结构体 //HWComposer_hwc1.h struct DisplayData { DisplayData(); ~DisplayData(); Vector<DisplayConfig> configs; size_t currentConfig; uint32_t format; // pi
如何通过Android NDK间接使用GraphicBuffer
GraphicBuffer是Android设计的一种高性能buffer,其具备一些比较优越的特性,如:可以在多个进程中传递可以在多个硬件设备中共享使用,如CPU、GPU、HWC可以生成EglImage然后绑定到Texture或者renderBuffer上这几个特性可以实现的功能有:跨进程传递渲染结果在使用GraphicBuffer绑定纹理时,可以减少CPU和GPU间的数据拷贝但在GraphicBuffer在使用是存在一个严重的限制,需要在Android源码环境下使用。从Android
glClientWaitSync学习
GLAPI/glClientWaitSync From OpenGL Wiki < GLAPI Jump to: navigation, search glClientWaitSync Core in version 4.6 Core since version 3.2 Core ARB extension ARB_syncglC...
Android Camera在使用SurfaceTexture获取帧数据时,SurfaceTexture是如何获取帧数据并将帧数据绑定到GL_TEXTURE_EXTERNAL_OES纹理上的
1. SurfaceTexture是如何创建的2. SurfaceTexture如何获取相机预览数据3. SurfaceTexture如何将预览数据绑定到GL_TEXTURE_EXTERNAL_OES`纹理上
Android Camera帧数据是如何显示到Surfaceview上的
Android Camera如何通过SurfaceView中Surface归还承载帧数据的graphicbuffer到SurfaceFlinger并最终合成显示的
Android Activity ViewRootImpl和SurfaceView中Surface创建流程及获取方法介绍
Android Activity在启动的时候都会向SurfaceFlinger申请创建一个Surface(SurfaceFlinger中称为Layer),作为其显示窗口。如果在Activity显示窗口的视图结构中,还存在一个SurfaceView,那么Activity还会为该SurfaceView向SurfaceFlinger再申请一个Surface,作为该SurfaceView独立的绘图表面。
今日推荐
周排行