我需要在Android原生C ++代码中将解码后的视频帧绘制到android.view.Surface
对象中。
我知道执行此操作的常用方法是实现GLSurfaceView.Renderer
接口并从onDrawFrame()
调用本机方法。但我无法使用它,我需要将Surface对象传递给本机方法并从那里开始处理它。
我打算使用OpenGL ES API来完成所有渲染工作,因为它是跨平台的。但我不知道Surface对象在哪里。
我见过几个使用ANativeWindow_fromSurface()
的例子。如果我没有被迫使用OpenGL,我想我可以这样做。
那么我在哪里“设置”我的Surface对象在本机代码中,所以我很好地去渲染我的场景帧?
编辑:好的,我想我只是不知道EGL standard,这似乎是我在本案例中所需要的。
但是,我仍在寻找一种方法将android.view.Surface
对象“映射”或“转换”为由EGL上下文处理的任何结构,我假设它是EGLNativeWindowType
,而无需访问任何特定于Android的API。
提前致谢。