如何使webrtc在我的应用程序的共享上下文中工作?

时间:2019-04-19 08:19:55

标签: android opengl-es webrtc

在Android下,我的应用程序(Delphi应用程序)在通过eglCreateContext检索的自己的OpenGL上下文中工作。因此,我具有上下文的句柄(实际上是将指针存储在int64中)。

现在要使webRTC也可以在此共享上下文上工作,我必须将其交给webrtc,而我发现的唯一方法是创建一个EGLBase:

  /**
   * Explicitly create a root EGl 1.4 context with the specified config attributes
   * and shared context.
   */
  public static EglBase createEgl14(
      android.opengl.EGLContext sharedContext, int[] configAttributes) {
    return new EglBase14(new EglBase14.Context(sharedContext), configAttributes);
  }

问题在于android.opengl.EGLContext不仅是一个Handle(int64),而且是我们无法创建的Java对象:

public abstract class EGLObjectHandle {
    private final long mHandle;

    protected EGLObjectHandle(long handle) {
        mHandle = handle;
    }


    public long getNativeHandle() {
        return mHandle;
    }

}

public class EGLContext extends EGLObjectHandle {
    private EGLContext(long handle) {
        super(handle);
    }

} 

您可以看到EGLContext的创建者是私有的,因此我们无法创建此对象。 (我开始悬赏一个问题(How to create an Object with private creator under PIE?),询问是否可以创建它,但是接缝没有办法)

所以我在这里,如何使webrtc在通过eglCreateContext检索的共享OpenGL上下文中工作?

0 个答案:

没有答案