【发布时间】:2015-12-31 00:56:41
【问题描述】:
我正在继续我引用 here 的工作,但遇到了一些障碍。我有一个VirtualDisplay,它有一个写入帧的Surface,然后我使用相同的表面作为MediaCodec 的输入,以便对来自VirtualDisplay 的帧进行编码。这一切都发生在一些Threads 在Android Service NOT 在Activity 中运行。
我现在想在链中添加一个中介 Surface,以便进度将继续 VirtualDisplay -> 写入 SurfaceA -> 一些逻辑/功能 -> 写入 SurfaceB -> 编码 @987654334 @
经过一番努力,我创建了 SurfaceA,只使用直接的 OpenGL 和 EGL 调用,而不是使用 GLSurfaceView. 我使用 this 作为示例,说明我应该如何从 SurfaceA 写入 @987654338 @。据我了解,我只需要在一个 EGLContext 中包含两个 EGLSurfaces。
据我了解,GL 上下文可能随时丢失,我可能需要重新创建 OpenGL 纹理(也许还需要重新创建 EGLSurfaces?)。这通常通过GLSurfaceView 处理,但由于我没有使用它,有没有一种简单的方法可以知道上下文何时丢失?即使我的工作都不涉及View 或者对用户可见,我是否应该只使用GLSurfaceView?如果没有Activity,如何调用onPause 和onResume 获得GLSurfaceView?
感谢您的帮助。
【问题讨论】:
标签: android opengl-es android-mediacodec egl