混合 Gstreamer SurfaceView 和 GLSurfaceView
Mixing Gstreamer SurfaceView and GLSurfaceView
我有一个 Android 应用程序可以使用 gstreamer 显示视频。它类似于此处提到的教程:
http://docs.gstreamer.com/display/GstSDK/Android+tutorial+3%3A+Video
特别是,它使用了扩展 SurfaceView 的 GStreamerSurfaceView。
我现在想用另一个使用 GLSurfaceView 的库对视频进行一些处理:
class DemoGLSurfaceView extends GLSurfaceView {
public DemoGLSurfaceView(Context context) {
super(context);
setEGLContextClientVersion(2);
mRenderer = new DemoRenderer(context);
setRenderer(mRenderer);
}
DemoRenderer mRenderer;
}
class DemoRenderer implements GLSurfaceView.Renderer {
Context act;
public DemoRenderer(Context context) {
act = context;
}
@Override
public void onDrawFrame(GL10 arg0) {
nativeRender();
}
@Override
public void onSurfaceChanged(GL10 arg0, int arg1, int arg2) {
}
@Override
public void onSurfaceCreated(GL10 arg0, EGLConfig arg1) {
}
}
private static native void nativeRender();
如何将 GLSurfaceView nativeRender 进程 "insert" 加载到 GstreamerSurfaceView 上?
一个解决方案是开发一个Gstreamer app video sink,它可以获取内存中的每一帧并将其复制到GLSurfaceView的OnDraw。
我有一个 Android 应用程序可以使用 gstreamer 显示视频。它类似于此处提到的教程:
http://docs.gstreamer.com/display/GstSDK/Android+tutorial+3%3A+Video
特别是,它使用了扩展 SurfaceView 的 GStreamerSurfaceView。
我现在想用另一个使用 GLSurfaceView 的库对视频进行一些处理:
class DemoGLSurfaceView extends GLSurfaceView {
public DemoGLSurfaceView(Context context) {
super(context);
setEGLContextClientVersion(2);
mRenderer = new DemoRenderer(context);
setRenderer(mRenderer);
}
DemoRenderer mRenderer;
}
class DemoRenderer implements GLSurfaceView.Renderer {
Context act;
public DemoRenderer(Context context) {
act = context;
}
@Override
public void onDrawFrame(GL10 arg0) {
nativeRender();
}
@Override
public void onSurfaceChanged(GL10 arg0, int arg1, int arg2) {
}
@Override
public void onSurfaceCreated(GL10 arg0, EGLConfig arg1) {
}
}
private static native void nativeRender();
如何将 GLSurfaceView nativeRender 进程 "insert" 加载到 GstreamerSurfaceView 上?
一个解决方案是开发一个Gstreamer app video sink,它可以获取内存中的每一帧并将其复制到GLSurfaceView的OnDraw。