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...
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

AIDL学习总结--扩展ICameraService.aidl接口实现跨进程向CameraService传递几兆级别数据的实现方案

可以通过Parcel的readBlob和writeBlob来跨进程传递大数据(实际上用的ashmem来传递)以后完善
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

Android GraphicBuffer是系统什么buffer及其分配过程

先贴上几篇我学习的好文章SurfaceFlinger中Buffer的创建与显示Android P 图像显示系统(二)GraphicBuffer和Gralloc分析Android P 图形显示系统Android P 图形显示系统(一)硬件合成HWC2...
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

Android GraphicBuffer神奇之处---direct texture

研究了Android GraphicBuffer一段时间了,那么Android GraphicBuffer到底有什么优点呢?我在网上搜了下,转载一篇比较好的文章了介绍下这个问题。
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

Android Native层调用JAVA层方法以生成带文字纹理的方法

很多时候,如果我们想在Native层使用opengles 渲染绘制时,希望渲染绘制一些文字。但是opengl es 其实是不支持直接绘制文字的,但是Android JAVA层却是有整套的绘制文字方法,如采用bitmap,在bitmap上绘制文字代码如下: //create the canvas Bitmap originBmp = Bitmap.createBit...
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

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...
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

GraphicBuffer使用:直接通过GraphicBuffer handle创建GraphicBuffer和直接渲染到GraphicBuffer的方法

在跨进程传递GraphicBuffer时,并不是直接传递GraphicBuffer对象,而是传递的GraphicBuffer的类型为native_handle的handle成员。在跨进程传递完成之后,如果期望再将native_handle型handle转换为GraphicBuffer,可以这样采用如下代码: sp<GraphicBuffer> spGraphicBuffer...
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

OpenglES Framebuffer Object学习总结及读取其ColorAttachment的方法

Framebuffer Object 其自身并没有实际的内存,它可以理解为内存管理者(manager)。其管理的内存是和Framebuffer Object绑定的附件(color attachments,depth attachment,stencil attachment),如纹理(texture,renderbufer object),其绑定附件才拥有实际的内存。OpenGL ES 的默认...
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

unity获取RenderTexture内容并保存的方法

private void Save() { var eye = eyes[0]; RenderTexture.active = (RenderTexture)eye.TexturePtr; Texture2D png = new Texture2D(RenderTexture.active.width, RenderTe...
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

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
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

Android Camera学习总结

为了更全面的理解Camera API2,决定梳理一遍APP到HAL层,Android Camera的工作流程。kernel层没有研究过,以后找时间再研究下。应用层主要流程应用层主要流程如下应用主要流程有Surface资源准备,比如预览显示为目标的surfaceview,拍摄照片接受为目的的ImageReaderopenCamera流程首先通过getSystemService(Context.CAMERA_SERVICE)获取CameraManager服务,然后通过CameraManag
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

Android Native层开发Camera应用的方法

现在大部分Android Camera 应用都是基于Android标准API1/API2进行开发的,但是其实Android Camera应用也是可以直接在Android Native层进行开发,而且存在两种方法:直接和CameraSerive通信进行开发直接和CameraProvider通信进行开发直接在Android Native 层开发Camera应用的好处主要有:摒弃了Java层调用,能在性能方面存在一定的优化由于高性能的算法大部分都是基于c/c++开发的,在Native层开发相机应用
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

Android JNI子线程中通过Env.findClass()查找自定义Java类失败的解决方法

问题:在Native层子线程中尝试获取自定义的Java类,发现总是提示找不到!!代码如下: if (gJavaVM->AttachCurrentThread(&pThreadJEnv, NULL) != JNI_OK) { LOGE("AttachCurrentThread failed."); return; } jclass myTestClass= pThreadJEnv->FindClass("com/mytes
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

Android中的GraphicBuffer同步机制-Fence

Fence是一种同步机制,在Android里主要用于图形系统中GraphicBuffer的同步。那它和已有同步机制相比有什么特点呢?它主要被用来处理跨硬件的情况,尤其是CPU,GPU和HWC之间的同步,另外它还可以用于多个时间点之间的同步。GPU编程和纯CPU编程一个很大的不同是它是异步的,也就是说当我们调用GL command返回时这条命令并不一定完成了,只是把这个命令放在本地的command buffer里。具体什么时...
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

HWComposer合成显示流程分析

在研究HWComposer::createWorkList前,需要先了解下DisplayData结构体 //HWComposer_hwc1.h struct DisplayData { DisplayData(); ~DisplayData(); Vector<DisplayConfig> configs; size_t currentConfig; uint32_t format; // pi
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

如何通过Android NDK间接使用GraphicBuffer

GraphicBuffer是Android设计的一种高性能buffer,其具备一些比较优越的特性,如:可以在多个进程中传递可以在多个硬件设备中共享使用,如CPU、GPU、HWC可以生成EglImage然后绑定到Texture或者renderBuffer上这几个特性可以实现的功能有:跨进程传递渲染结果在使用GraphicBuffer绑定纹理时,可以减少CPU和GPU间的数据拷贝但在GraphicBuffer在使用是存在一个严重的限制,需要在Android源码环境下使用。从Android
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

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...
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

Android Camera在使用SurfaceTexture获取帧数据时,SurfaceTexture是如何获取帧数据并将帧数据绑定到GL_TEXTURE_EXTERNAL_OES纹理上的

1. SurfaceTexture是如何创建的2. SurfaceTexture如何获取相机预览数据3. SurfaceTexture如何将预览数据绑定到GL_TEXTURE_EXTERNAL_OES`纹理上
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

Android Camera帧数据是如何显示到Surfaceview上的

Android Camera如何通过SurfaceView中Surface归还承载帧数据的graphicbuffer到SurfaceFlinger并最终合成显示的
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0

Android Activity ViewRootImpl和SurfaceView中Surface创建流程及获取方法介绍

Android Activity在启动的时候都会向SurfaceFlinger申请创建一个Surface(SurfaceFlinger中称为Layer),作为其显示窗口。如果在Activity显示窗口的视图结构中,还存在一个SurfaceView,那么Activity还会为该SurfaceView向SurfaceFlinger再申请一个Surface,作为该SurfaceView独立的绘图表面。
分类: 其他 发布时间: 09-25 14:37 阅读次数: 0