android - SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS 是什么意思?

标签 android camera

我正在尝试使用 onPreviewFrame() 回调显示经过过滤的相机预览。

问题是当我删除这一行时: mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

为了隐藏预览,应用程序崩溃了。日志内容如下: 08-19 15:57:51.042: 错误/CameraService(59): registerBuffers 失败,状态为 -38

这是什么意思?这在任何地方都有记录吗?

我正在使用来自 SDK APIDemos 的 CameraPreview:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html

最佳答案

SURFACE_TYPE_PUSH_BUFFERS 为 SurfaceView 生成多个缓冲区。组件在操作系统代码深处锁定(填充数据)和推送(显示数据)这些缓冲区。特别是 OpenMax(相机硬件设备接口(interface))正在使用“图形缓冲区”=“推送缓冲区”来填充数据和显示数据。具体来说,相机硬件可以直接填充推送缓冲区,图形硬件可以直接显示推送缓冲区(它们共享这些缓冲区)。结论:操作系统强制您创建带有推送缓冲区的 SurfaceView。然后它可以使用相机设备的缓冲区。

关于android - SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3525287/

相关文章:

android - 如何以编程方式更改设备 : font style and font size? 的字体设置

android - 如何在 Android 中创建 'read more' 布局?

android - 我应该如何将元素添加到自定义相机 android 应用程序?

sdk - 适用于 Alpha 和 NEX 的 Sony Playmemories SDK

ios - 焦点兴趣点和曝光兴趣点是互斥的

java - Intent 为空

java - 改造 2.0 : Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

java - 在 ListView 中删除标题的背景

java - 可以使用静态 "database helper"类吗?

android - 为实时计算机视觉处理获得高 FPS 的方法