Как заставить webrtc работать в общем контексте моего приложения? - PullRequest
0 голосов
/ 19 апреля 2019

Под Android мое приложение (приложение Delphi) работает в своем собственном контексте OpenGL, полученном с помощью eglCreateContext .Итак, у меня есть дескриптор (буквально указатель, хранящийся в 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 - это не просто дескриптор (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 является частным, поэтому мы не можем создать этот объект.(Я начинаю щедрость на вопрос ( Как создать объект с частным создателем в PIE? ), спрашивающий, есть ли способ его создать, но нет никакого шва)

Итак, вот я, как я могу заставить webrtc работать с общим контекстом OpenGL, который я получаю через eglCreateContext ?

...