utd_video_effects_kit library
utd_video_effects_kit — real-time video filters & beauty effects for UTD-media-based Flutter apps.
The public surface is a single VideoEffectsProcessor that implements
utd_media_client's TrackProcessor<VideoProcessorOptions>. Attach it to a
LocalVideoTrack (directly, or via utd_live_room_kit's
UTDLiveRoomConfig.buildVideoProcessor factory) and toggle effects through
its setters.
final fx = VideoEffectsProcessor.create();
final track = await LocalVideoTrack.createCameraTrack(
CameraCaptureOptions(processor: fx),
);
await fx.setSmoothing(0.6);
await fx.setFilter('golden_hour', intensity: 0.8);
For a ready-made UI, open VideoEffectsSheet — a built-in beauty & filters
bottom sheet (Beauty / Filters / Makeup / Accessories tabs) that drives the
processor: VideoEffectsSheet.show(context, processor: fx).
See NATIVE.md for the native pipeline architecture (in-place frame editing
on both platforms). On web / unsupported devices — or when the effects
entitlement is off — the processor runs as a safe passthrough (the
original camera frames flow unmodified).
Classes
- EffectsPerfStats
- An immutable snapshot of the native frame-budget telemetry (Phase 5.1).
- EffectsState
- Immutable snapshot of the active video-effect settings.
- EffectsTestFrame
- Result of VideoEffectsProcessor.renderTestFrame (Phase 4.2): an RGBA8888 image (row-major, 4 bytes/pixel, no padding) produced by running a known input frame through the native COLOR grade with the session's current effect settings.
- FilterPreset
- FrameDiff
- A per-channel difference summary between two RGBA8888 buffers (Phase 4.2). Pure Dart, so the comparison itself is unit-testable offline; only producing the two EffectsTestFrames needs a device.
- MakeupLook
-
A full makeup look bundling coordinated shades across regions. Apply it in
one call with
VideoEffectsProcessor.setMakeupLook. - MakeupShade
-
A curated makeup shade — a hex color plus a recommended opacity for one
region (lipstick / eyeshadow / blush / eye color). Feed hex + opacity
straight into the matching
VideoEffectsProcessorsetter. - PoseFrame
- (WS3.2) One pulled body-pose sample from the native PoseLandmarker — 33 MediaPipe pose landmarks, already Kalman-gated, One-Euro-smoothed and extrapolated to the pull time by the native provider.
- VideoEffectAccessory
- A landmark-positioned PNG accessory overlay (glasses / crown / cat-ears), drawn by the native FaceLandmarker pass. asset is a Flutter asset key.
- VideoEffectFilter
- A bundled LUT color filter.
- VideoEffectsAccessories
-
Catalog of the bundled PNG accessories (
assets/accessories/<key>.png). - VideoEffectsFilters
- Catalog of the LUT color filters bundled with this package (sourced from a third-party beauty-effects ColorfulStyle + FaceWhitening resource set, which are plain square LUTs).
- VideoEffectSkinTone
- A skin-tone preset (dual-LUT grade: a skin LUT applied over skin regions, a background LUT elsewhere; from a third-party beauty-effects SkinColorResources set). Both LUTs are 512² square LUTs.
- VideoEffectsMakeup
- Curated, realistic makeup shades + full looks. Pure data — the live effect is still the native landmark blend; these just supply flattering, coordinated values instead of raw hex.
- VideoEffectsPresets
- Curated FULL-look catalog. Ordering = display order (broad-appeal first, characterful later). Keys are stable API; labels are display-only.
- VideoEffectsProcessor
-
A media-engine-compatible video processor that applies GPU beauty/filter effects
natively and exposes the result via
processedTrack. - VideoEffectsSheet
-
Beauty & filters bottom sheet for
utd_video_effects_kit. - VideoEffectsSkinTones
-
Catalog of bundled skin-tone presets (
assets/skin/<key>/).
Enums
- NoPersonPolicy
- (F.5) What background blur does when the segmentation mask is empty or unavailable (user leaned out of frame, segmenter still warming up, or its init failed on this device).
- PresetAudience
-
Who a look is authored for.
unisexkeeps the existing portrait.