В webRTC, в SurfaceTextureHelper
surfaceTexture
(с ручкой создания / обновления текстуры openGL) создается внутри фонового потока:
final HandlerThread thread = new HandlerThread(threadName);
thread.start();
внутри этого вновь созданного потока мы делаем
oesTextureId = GlUtil.generateTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES);
surfaceTexture = new SurfaceTexture(oesTextureId);
Проблема в том, что OnFrameAvailableListener
из surfacetexture
будет вызываться в потоке, в котором был создан surfacetexture
(логический шов).Моя проблема в том, что все рисование моего приложения выполняется в основном потоке пользовательского интерфейса (и я не могу это изменить), поэтому здесь я получаю нечто, где текстура будет обновляться в фоновом потоке (текстураиз GL_TEXTURE_EXTERNAL_OES
), но будет напечатан в главном потоке.
Возможно ли, что это сработает?textureID никогда не меняется, только содержимое текстуры обновляется в потоке bakcground