processImage sobre una textura externa y luego devuelve la textura de salida.
Reglas completas de textura: Implementar belleza · Textura externa. Unirse a la sala, publicar y los permisos pertenecen a la documentación del vendor: esta página solo cubre el enganche de Facebetter.
Contrato compartido
Facebetter no acepta
GL_TEXTURE_EXTERNAL_OES para createWithTexture. Si el vendor usa OES por defecto, cambia a Texture2D / RGB según su documentación, o haz blit a GL_TEXTURE_2D primero.
Función auxiliar compartida
Reutiliza esto en cada callback GL del vendor (debe ejecutarse en el hilo GL):TRTC (Tencent)
Enganche:TRTCCloud.setLocalVideoProcessListener. Usa formato de píxel Texture_2D y tipo de buffer TEXTURE.
Crea Facebetter en onGLContextCreated, procesa en onProcessVideoFrame y configura dstFrame.texture.textureId; release() en onGLContextDestory.
FacebetterPlugin.processTexture, no esta API Java).
Agora
Enganche:RtcEngine.registerVideoFrameObserver (Video SDK 4.x). Debes:
- Devuelve
PROCESS_MODE_READ_WRITEdesdegetVideoFrameProcessMode() - Prefiere un TextureBuffer de tipo RGB (
GL_TEXTURE_2D) - Ejecuta Facebetter en
onCaptureVideoFrame(o la posición de observación que elijas) y luego escribe la textura procesada de vuelta en elVideoFrame
beautyEngine.release() antes de destruir RtcEngine.
LiveKit
Enganche: pasa unorg.webrtc.VideoProcessor (o un procesador de track equivalente) al crear el track de vídeo local. Procesa las texturas en onFrameCaptured y entrega el resultado con sink.onFrame(...).
VideoCapturer personalizado, ejecutar processTexture tras la captura y luego llamar a capturerObserver.onFrameCaptured. Los procesadores oficiales (por ejemplo fondo virtual) están en el módulo livekit-android-track-processors de LiveKit.

