Linux differences
Create the engine:
ProcessI420InPlace, TRTC Buffer, Agora IVideoFrameObserver, LiveKit custom video source).
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Wire Facebetter beauty into TRTC, Agora, LiveKit, and other Linux video pipelines
Third-party SDK (preprocess callback)
I420 planes
↓
BeautyEffectEngine (external_context = false)
CreateWithI420 → ProcessImage → write back
| Item | Notes |
|---|---|
| Library | libfacebetter.so + facebetter/*.h |
| Link | See Implement Beauty; watch LD_LIBRARY_PATH / rpath at runtime |
| GL | System GL with a display; headless via OSMesa / EGL (Best Practices). Buffer path still uses external_context = false in most cases |
resource_path | Must point at the resource.fbd file |
| Dashboard binding | Package / executable / process name — Subscription |
EngineConfig cfg;
cfg.app_id = "your_app_id";
cfg.app_key = "your_app_key";
cfg.resource_path = "/opt/yourapp/resource/resource.fbd";
cfg.external_context = false;
auto engine = BeautyEffectEngine::Create(cfg);
ProcessI420InPlace, TRTC Buffer, Agora IVideoFrameObserver, LiveKit custom video source).
| Vendor | Linux notes |
|---|---|
| TRTC | PC is Buffer / I420 only — do not use the Android Texture path |
| Agora | C++ registerVideoFrameObserver, ReadWrite + in-place I420 |
| LiveKit | Custom video source; confirm capture + GL/software path for headless hosts |
| Symptom | Check |
|---|---|
Missing .so | LD_LIBRARY_PATH, rpath, matching architecture |
Create fails | .fbd path, auth, headless GL / OSMesa |
| Everything else | Same as Windows troubleshooting |
