textureId가 아니라 **CPU 버퍼(I420 / YUV)**를 제공합니다. 벤더의 커스텀 전처리 콜백에 Facebetter를 걸고, ImageFrame::CreateWithI420(또는 NV12) → ProcessImage를 실행한 뒤 평면을 다시 씁니다.
Linux와 동일한 C++ API를 공유합니다. 기본: 뷰티 효과 적용. 방 입장 / 게시는 벤더 문서에 따릅니다.
공통 계약
공유: I420을 처리하고 평면을 다시 쓰기
TRTC (Tencent)
Windows / 데스크톱 C++: 커스텀 전처리는 Texture가 아니라 Buffer를 사용합니다. 최신 SDK는enableLocalVideoCustomProcess + setLocalVideoCustomProcessCallback을 사용합니다(구 setLocalVideoProcessCallback은 폐기됨 — 버전을 확인하세요).
픽셀 형식 I420과 버퍼 유형 Buffer를 사용하세요. onProcessVideoFrame에서 srcFrame을 처리하고 dstFrame을 채웁니다.
Tencent 문서: 모바일은 Texture를 사용할 수 있습니다. PC는 Buffer만 지원합니다. Windows에서 Android
Texture_2D 경로를 따르지 마세요.Agora
훅:IRtcEngine::registerVideoFrameObserver(C++ Video SDK 4.x). Windows는 보통 YUV420 / I420을 제공합니다.
getVideoFrameProcessMode에서PROCESS_MODE_READ_WRITE를 반환onCaptureVideoFrame에서yBuffer/uBuffer/vBuffer에ProcessI420InPlace실행- SDK가 프레임을 유지하도록
true를 반환
IRtcEngine를 파괴하기 전에 등록을 해제하고 engine.reset()을 호출하세요.
LiveKit
데스크톱의 일반적인 패턴은 커스텀 비디오 소스입니다. 직접 캡처 / 처리한 뒤 프레임을 LiveKit(C++ 클라이언트 또는 브리지)에 푸시합니다. 모바일VideoProcessor 텍스처 콜백이 아닙니다.
권장 파이프라인:
- 프레임 캡처(카메라 / DXGI / 등)
CreateWithI420/CreateWithRGBA→ProcessImage- 출력을 LiveKit / WebRTC 프레임으로 감싸
VideoSource/RTCVideoSource에 푸시

