混合 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。