Surface显示参照源码
frameworks\av\media\libstagefright\colorconversion
frameworks\av\services\camera\libcameraservice
frameworks\native\services\surfaceflinger
frameworks\native\libs\gui
1、setBufferCount failure
native_window_set_buffer_count调用失败,该mNativeWindow已无法使用,确认是否已被销毁
E/BufferQueue( 2188): [SurfaceView] setBufferCount: BufferQueue has been abandoned!
E/Surface (11666): IGraphicBufferProducer::setBufferCount(10) returned No such device
native_window_set_buffer_count调用失败,该mNativeWindow包含一些DEQUEUED Buffer,需确保所有Buffer是QUEUED或Canceld
E/BufferQueue( 2174): [SurfaceView] setBufferCount: client owns some buffers
E/Surface (17172): IGraphicBufferProducer::setBufferCount(10) returned Invalid argument
E/BufferQueue(2170): [SurfaceView] setBufferCount: client owns some buffers
E/Surface(3176): IGraphicBufferProducer::setBufferCount(10) returned Invalid argument
2、queueBuffer failure
queueBuffer调用失败,需确认该Buffer当前的状态,state=2 即QUEUED
E/BufferQueue( 2174): [SurfaceView] queueBuffer: slot 4 is not owned by the client (state=2)
E/Surface (17172): queueBuffer: error queuing buffer to SurfaceTexture, -22
queueBuffer调用失败,需确认该Buffer当前的状态,state=3 即ACQUIRED
E/BufferQueue(2190): [SurfaceView] queueBuffer: slot 0 is not owned by the client (state=3)
E/Surface(7246): queueBuffer: error queuing buffer to SurfaceTexture, -22
3、dequeueBuffer failure
native_window_dequeue_buffer_and_wait调用失败,需提前配置Surface,配置方式native_window_set_buffer_count
E/BufferQueue( 2444): [ScreenshotClient] dequeueBuffer: can't dequeue multiple buffers without setting the buffer count
4、cancelBuffer failure
02-01 08:11:52.635: E/Surface(3176): getSlotFromBufferLocked: unknown buffer: 0x63a4f9e0
相关概念
Producer 生产者 应用程序 客户端
Consumer 消费者 BufferQueue 服务端
State | Value | Description |
BufferSlot::FREE | 0 | Buffer当前可用,也就是说可以被dequeued。此时Buffer的owner可认为是BufferQueue |
BufferSlot::DEQUEUED | 1 | Buffer已经被dequeued,还未被queued或canceld。此时Buffer的owner可认为是producer(应用程序),这意味着server端(BufferQueue)不可以对这块缓冲区进行操作 |
BufferSlot::QUEUED | 2 | Buffer已经被客户端queued,除特别情况外此时还不能对它进行dequeue,而可以acquired。此时的owner是BufferQueue |
BufferSlot::ACQUIRED | 3 | Buffer的owner改为consumer,可以released,然后状态又返回FREE |
过程:FREE->DEQUEUED->QUEUED->ACQUIRED->FREE
frameworks\native\libs\FramebufferNativeWindow.cpp
typedef struct ANativeWindowBuffer
{
#ifdef __cplusplus
ANativeWindowBuffer() {
common.magic = ANDROID_NATIVE_BUFFER_MAGIC;
common.version = sizeof(ANativeWindowBuffer);
memset(common.reserved, 0, sizeof(common.reserved));
}
// Implement the methods that sp<ANativeWindowBuffer> expects so that it
// can be used to automatically refcount ANativeWindowBuffer's.
void incStrong(const void* id) const {
common.incRef(const_cast<android_native_base_t*>(&common));
}
void decStrong(const void* id) const {
common.decRef(const_cast<android_native_base_t*>(&common));
}
#endif
struct android_native_base_t common;
int width;
int height;
int stride;
int format;
int usage;
void* reserved[2];
buffer_handle_t handle;
void* reserved_proc[8];
} ANativeWindowBuffer_t;
分享到:
相关推荐
Android下使用OpenGL渲染yuv420p图像并显示。例子中提供了两种类型,一种使用GLSurfaceView在onDrawframe中调用native方法绘制,另外一种使用EGL,直接在native层完成渲染和显示功能。
android 通过surfacetexture绘制Bitmap,使用ISurfaceComposerClient创建新图层
Android平台 将 GL_TEXTURE_2D纹理 渲染到 Surface 上 案例实现文章介绍: https://xiaxl.blog.csdn.net/article/details/131682521 技术实现流程大致如下: 1、OpenGLES3中加载GL_TEXTURE_2D纹理,生成纹理ID; 2...
完整工程 Android使用Surface绘图的小游戏,非常具有参考意义
android-magic-surface-view 这是一个 android 动画特效库, 可以实现各种炫酷动画。 1. 安装 gradle: dependencies { compile 'com.gplibs:magic-surface-view:1.1.1' } 2. 一些示例效果 此文档只做一些简单说明...
android surface 背景透明,图片拖拉,在工作中,要用到编辑地图,这个可以作为简单的开始,可以拖动背景,里面的位图会跟着改变相应位置。
1.Android中使用4.0新特性SurfaceTexture自定义相机预览 2.在PictureCallback回调中保存图片
Android Surface 介绍,学习资料介绍,供参考学习
android Native C++ 底层surface显示输出源码 适用于FFMPeg输出视频到surface
Android_Surface系统的实现
android glsurface source code example
android socket surface mediacodec h264
Android Surface
将Camera数据显示到OpenGL ES渲染的图像中,并通过MediaCodeC 将 OpenGL ES 缓冲数据...5、在 EGL 线程完成渲染后,通过eglSwapBuffers交换缓冲,将EGL渲染内容交换到MediaCodeC给定的Surface中,从而完成mp4视频录制。
很容易搜索到android和ios的相关资料,但是大部分资料不够详细,尤其是jni渲染部分基本都略过了,对于使用flutter但不熟悉安卓的情况下,是比较难搞清楚通过texure拿到surface之后该怎么渲染。所以本文将说明整体的...
Android Surface系统的实现.pdf
微软Surface系列壁纸(共19张)超高清壁纸 Surface Book - Blue 3500 ✖ 2333 Surface Book - Rainbow 3000 ✖ 2000 Surface Book - Red 2500 ✖ 1667 Surface Book - Yellow 2500 ✖ 1666 Surface Family 2050 ✖ ...
实时预览摄像头的内容,并且对此图像进行高斯模糊处理. 博客地址:http://blog.csdn.net/huweigoodboy/article/details/48373805
用C代码调用surface实现画图功能。开机就调用,先创一个线程!自己看吧!!
除SurfacePro5外,还有其它的SurfacePro系统,不定时的更新现在有(surface pro5 win 10 1809,surface pro7 win 10 家庭,surface pro4 win 10专业,SurfaceBook_BMR_45_3.526.0,SurfaceGo_BMR_41_1.011.2,...