processImage em uma textura externa e, em seguida, devolva a textura de saída.
Regras completas de textura: Implementar beleza · Textura externa. Entrar na sala, publicar e permissões ficam na documentação do fornecedor — esta página cobre apenas o encaixe do Facebetter.
Contrato compartilhado
O Facebetter não aceita
GL_TEXTURE_EXTERNAL_OES em createWithTexture. Se o fornecedor usar OES por padrão, mude para Texture2D / RGB conforme a documentação dele, ou faça blit para GL_TEXTURE_2D primeiro.
Helper compartilhado
Reutilize isto em cada callback GL do fornecedor (precisa rodar no thread GL):TRTC (Tencent)
Hook:TRTCCloud.setLocalVideoProcessListener. Use o formato de pixel Texture_2D e o tipo de buffer TEXTURE.
Crie o Facebetter em onGLContextCreated, processe em onProcessVideoFrame e defina dstFrame.texture.textureId, chame release() em onGLContextDestory.
FacebetterPlugin.processTexture, não esta API Java).
Agora
Hook:RtcEngine.registerVideoFrameObserver (Video SDK 4.x). Você precisa:
- Retornar
PROCESS_MODE_READ_WRITEdegetVideoFrameProcessMode() - Preferir um TextureBuffer com tipo RGB (
GL_TEXTURE_2D) - Executar o Facebetter em
onCaptureVideoFrame(ou na posição de observação escolhida) e, em seguida, escrever a textura processada de volta noVideoFrame
beautyEngine.release() antes de destruir o RtcEngine.
LiveKit
Hook: passe umorg.webrtc.VideoProcessor (ou processador de track equivalente) ao criar a track de vídeo local. Processe texturas em onFrameCaptured e, em seguida, entregue via sink.onFrame(...).
VideoCapturer personalizado, executar processTexture após a captura e, em seguida, chamar capturerObserver.onFrameCaptured. Processadores oficiais (por exemplo fundo virtual) ficam no módulo livekit-android-track-processors do LiveKit.

