Back to Developers

< Flutter UIKit />

UTD Video Effects Kit

Real-time beauty filters, LUT color grading, and face effects.

Version 0.5.0On pub.dev
Android (minSdk 24)iOS
video_effects_kit.dart
import 'package:utd_video_effects_kit/utd_video_effects_kit.dart';

final fx = VideoEffectsProcessor.create();
final track = await LocalVideoTrack.createCameraTrack(
  CameraCaptureOptions(processor: fx),
);

await fx.setSmoothing(0.6);
await fx.setFilter('teal_orange', intensity: 0.8);
await fx.setBackgroundBlur(0.4);
await fx.setEyeColor('#3366CC', opacity: 0.6);
await fx.setLipstick('#CC2244');

// Or use the built-in UI:
VideoEffectsSheet.show(context, processor: fx);

46+

LUT filters

9

Accessories

6

Makeup looks

GPU

Real-time

< utd_video_effects_kit />

Key features

Real-time video effects and beauty filters for LiveKit-based Flutter apps. Effects run through a TrackProcessor on native GPU pipelines (Android/iOS), bundling 46+ LUT color filters, skin smoothing/whitening, background blur, and MediaPipe-powered face effects (eye color, makeup, accessories). Includes a built-in VideoEffectsSheet UI with Beauty/Filters/Makeup/Accessories tabs.

46+ LUT color filters (curated + in-house looks)

Beauty effects: skin smoothing (frequency separation), whitening, background blur

Face effects via MediaPipe: eye color, makeup (lipstick/eyeshadow/blush), 9 accessories

Color post-processing: glow/bloom (Orton), film grain, vignette

Skin retouch: texture detail, clarity, selective brightening

Face reshape: landmark-driven warp (eye enlarge, face slim, nose narrow, …)

Drop-in VideoEffectsSheet UI (Beauty/Filters/Makeup/Accessories tabs)

Curated makeup looks and skin-tone presets

Adaptive frame-budget management with device performance tiers

Zero-glue LiveKit TrackProcessor attachment to LocalVideoTrack

< utd_video_effects_kit />

Get started

1

Install

pubspec.yaml
dependencies:
  utd_video_effects_kit: ^0.5.0
2

View on pub.dev

Real-time beauty filters, LUT color grading, and face effects.

< utd_video_effects_kit />

API reference

Main processor

The single public entry point: a LiveKit TrackProcessor that applies GPU beauty/filter effects natively.

VideoEffectsProcessorclass
abstract class VideoEffectsProcessor extends TrackProcessor<VideoProcessorOptions>

LiveKit-compatible video processor that applies GPU beauty/filter effects natively and exposes the result via processedTrack. Has no per-frame process() hook; pixel work runs natively.

VideoEffectsProcessor.createconstructor
factory VideoEffectsProcessor.create({EffectsState initial = const EffectsState()})

Builds the default native-backed implementation. The only way to construct a processor.

Parameters

  • initialEffectsStateDefault = const EffectsState()

    Initial effect settings the processor starts with.

Returns: VideoEffectsProcessorA native-backed processor instance.

stategetter
ValueListenable<EffectsState> get state

Live, read-only snapshot of current effect settings. Bind UI to this.

Returns: ValueListenable<EffectsState>Listenable of the current immutable EffectsState.

isSupportedgetter
bool get isSupported

Whether this device/platform can actually process pixels. False means processedTrack is a passthrough (original camera frames flow unmodified).

Returns: boolTrue if native pixel processing is available.

disposemethod
void dispose()

Final teardown: releases the effect-state listenable. Call when the live session ends. Distinct from LiveKit's per-capture destroy().

Returns: voidNothing.

Adaptive performance & telemetry

Frame-budget signals and on-device measurement/parity harness.

budgetExceededgetter
ValueListenable<bool> get budgetExceeded

True while the native pipeline sheds work to hold the frame budget (degrade level > 0). Emits only on change. Always false on unsupported platforms.

Returns: ValueListenable<bool>Listenable performance-mode flag.

degradeLevelgetter
ValueListenable<int> get degradeLevel

Current adaptive frame-budget degrade level: 0 (full quality) .. 4 (max shedding). 0 on unsupported platforms.

Returns: ValueListenable<int>Listenable degrade level 0..4.

deviceTiergetter
ValueListenable<int> get deviceTier

Static device performance tier classified natively at attach: 0 Budget, 1 Low, 2 Mid, 3 Flagship. 3 on unsupported platforms or before first attach.

Returns: ValueListenable<int>Listenable device tier 0..3.

perfStatsmethodasync
Future<EffectsPerfStats?> perfStats({bool reset = false})

Pulls a snapshot of native frame-budget telemetry (over-budget rate + frame-time distribution). Returns null on web/unsupported or with no native session.

Parameters

  • resetboolDefault = false

    Clear counters after reading so the next call measures a fresh window.

Returns: Future<EffectsPerfStats?>Telemetry snapshot, or null if unavailable.

renderTestFramemethodasync
Future<EffectsTestFrame?> renderTestFrame(Uint8List rgba, {required int width, required int height})

Runs an RGBA8888 image through the native COLOR grade with current settings and returns the processed RGBA8888 (CPU-vs-GPU parity harness). Call with effects disabled. Returns null if unavailable.

Parameters

  • rgbaUint8Listrequired

    RGBA8888 row-major input, width*height*4 bytes.

  • widthintrequired

    Input image width in pixels.

  • heightintrequired

    Input image height in pixels.

Returns: Future<EffectsTestFrame?>Graded output frame, or null if unavailable.

Beauty & color setters

Skin smoothing, whitening, LUT filters, and the color-post (glow/grain/vignette) tail.

setEnabledmethodasync
Future<void> setEnabled(bool enabled)

Master on/off switch. When off the native pipeline is a 1:1 passthrough.

Parameters

  • enabledboolrequired

    Whether effects are applied.

Returns: Future<void>Completes when applied.

setSmoothingmethodasync
Future<void> setSmoothing(double amount)

Skin-smoothing strength, 0.0..1.0 (frequency-separation / bilateral).

Parameters

  • amountdoublerequired

    Smoothing strength, 0.0..1.0 (0 = off).

Returns: Future<void>Completes when applied.

setWhiteningmethodasync
Future<void> setWhitening(double amount)

Whitening / brightness strength, 0.0..1.0.

Parameters

  • amountdoublerequired

    Whitening strength, 0.0..1.0 (0 = off).

Returns: Future<void>Completes when applied.

setFiltermethodasync
Future<void> setFilter(String? lutAssetKey, {double intensity = 1.0})

Apply a LUT color filter by key (null clears it). See VideoEffectsFilters.

Parameters

  • lutAssetKeyString?required

    Filter key (e.g. 'warm'), or null to clear.

  • intensitydoubleDefault = 1.0

    Blend amount, 0.0..1.0.

Returns: Future<void>Completes when applied.

setBackgroundBlurmethodasync
Future<void> setBackgroundBlur(double amount)

Background-blur strength, 0.0..1.0 (selfie segmentation + blur).

Parameters

  • amountdoublerequired

    Blur strength, 0.0..1.0 (0 = off).

Returns: Future<void>Completes when applied.

setGlowmethodasync
Future<void> setGlow(double amount)

Soft glow / bloom (Orton) strength, 0.0..1.0. The highest-impact beauty color post effect.

Parameters

  • amountdoublerequired

    Glow strength, 0.0..1.0 (0 = off).

Returns: Future<void>Completes when applied.

setGrainmethodasync
Future<void> setGrain(double amount)

Film-grain amount, 0.0..1.0 (animated per frame).

Parameters

  • amountdoublerequired

    Grain amount, 0.0..1.0 (0 = off).

Returns: Future<void>Completes when applied.

setVignettemethodasync
Future<void> setVignette(double amount)

Vignette strength, 0.0..1.0 (darkens frame corners).

Parameters

  • amountdoublerequired

    Vignette strength, 0.0..1.0 (0 = off).

Returns: Future<void>Completes when applied.

setTextureDetailmethodasync
Future<void> setTextureDetail(double amount)

Pore/texture retained by frequency-separation smoothing, 0.0..1.0 (0 = plastic, 1 = full texture). Only affects skin when smoothing > 0.

Parameters

  • amountdoublerequired

    Texture retention, 0.0..1.0.

Returns: Future<void>Completes when applied.

setClaritymethodasync
Future<void> setClarity(double amount)

Local-contrast clarity, signed -1.0..1.0. Positive = punchy/pop, negative = soft dreamy skin. 0 = off.

Parameters

  • amountdoublerequired

    Signed clarity, -1.0..1.0.

Returns: Future<void>Completes when applied.

Skin retouch & tone

Selective brightening (teeth/eye/under-eye) and skin-tone presets/shift.

setTeethWhiteningmethodasync
Future<void> setTeethWhitening(double amount)

Teeth-whitening strength, 0.0..1.0 (0 = off).

Parameters

  • amountdoublerequired

    Teeth-whitening strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

setEyeBrighteningmethodasync
Future<void> setEyeBrightening(double amount)

Eye-white (sclera) brightening, 0.0..1.0 (0 = off).

Parameters

  • amountdoublerequired

    Eye-white brightening strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

setUnderEyeBrighteningmethodasync
Future<void> setUnderEyeBrightening(double amount)

Under-eye (tear-trough) brightening, 0.0..1.0 (0 = off).

Parameters

  • amountdoublerequired

    Under-eye brightening strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

setSkinColormethodasync
Future<void> setSkinColor(String? presetKey)

Apply a skin-tone preset by key (null clears it). See VideoEffectsSkinTones.

Parameters

  • presetKeyString?required

    Skin-tone preset key (e.g. 'nuanbai'), or null to clear.

Returns: Future<void>Completes when applied.

setSkinToneShiftmethodasync
Future<void> setSkinToneShift(double amount)

Skin-tone shift, signed -1.0..1.0: warms (+) or cools (-) skin via hue rotation gated by the adaptive skin mask. 0 = off.

Parameters

  • amountdoublerequired

    Signed skin-tone shift, -1.0..1.0.

Returns: Future<void>Completes when applied.

setSegmentationSkinmethodasync
Future<void> setSegmentationSkin(bool enabled)

Use multiclass segmentation to refine the skin region so skin effects apply to actual skin. Loads a larger/slower model. Default off.

Parameters

  • enabledboolrequired

    Whether segmentation-refined skin masking is on.

Returns: Future<void>Completes when applied.

Makeup, sculpt & reshape setters

Landmark-driven makeup recolor, dodge/burn sculpt, and liquify reshape.

setEyeColormethodasync
Future<void> setEyeColor(String? hex, {double opacity = 0.5})

Recolor the iris with hex (e.g. '#3366CC', null clears it).

Parameters

  • hexString?required

    Iris color hex, or null to clear.

  • opacitydoubleDefault = 0.5

    Recolor strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

setLipstickmethodasync
Future<void> setLipstick(String? hex, {double opacity = 0.6, String finish = 'satin', String style = 'full'})

Apply lipstick in hex (null clears it). finish: matte/satin/gloss. style: full/ombre/blurred.

Parameters

  • hexString?required

    Lipstick color hex, or null to clear.

  • opacitydoubleDefault = 0.6

    Strength, 0.0..1.0.

  • finishStringDefault = 'satin'

    matte, satin, or gloss.

  • styleStringDefault = 'full'

    full, ombre, or blurred.

Returns: Future<void>Completes when applied.

setEyeshadowmethodasync
Future<void> setEyeshadow(String? hex, {double opacity = 0.45, String? color2, double shimmer = 0})

Apply eyeshadow in hex (null clears it). color2 gives a two-tone gradient; shimmer adds sparkle.

Parameters

  • hexString?required

    Eyeshadow color hex, or null to clear.

  • opacitydoubleDefault = 0.45

    Strength, 0.0..1.0.

  • color2String?Default = null

    Second hex for a two-tone (darker lash-line) gradient.

  • shimmerdoubleDefault = 0

    Sparkle amount, 0.0..1.0.

Returns: Future<void>Completes when applied.

setBlushmethodasync
Future<void> setBlush(String? hex, {double opacity = 0.4})

Apply blush in hex (null clears it).

Parameters

  • hexString?required

    Blush color hex, or null to clear.

  • opacitydoubleDefault = 0.4

    Strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

setEyelinermethodasync
Future<void> setEyeliner(String? hex, {double opacity = 0.7, String style = 'classic'})

Apply eyeliner in hex (null clears it). style: classic or wing (adds an outer flick).

Parameters

  • hexString?required

    Eyeliner color hex, or null to clear.

  • opacitydoubleDefault = 0.7

    Strength, 0.0..1.0.

  • styleStringDefault = 'classic'

    classic or wing.

Returns: Future<void>Completes when applied.

setMakeupLookmethodasync
Future<void> setMakeupLook(MakeupLook? look)

Apply a coordinated MakeupLook in one call (lipstick + finish, eyeshadow, blush, eye color). Null clears all makeup regions. See VideoEffectsMakeup.looks.

Parameters

  • lookMakeupLook?required

    The look to apply, or null to clear all makeup.

Returns: Future<void>Completes when applied.

setContourmethodasync
Future<void> setContour(double amount)

Contour (cool-gray cheek/nose burn) strength, 0.0..1.0 (0 = off).

Parameters

  • amountdoublerequired

    Contour strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

setHighlightmethodasync
Future<void> setHighlight(double amount)

Highlight (warm-white dodge on high points) strength, 0.0..1.0 (0 = off).

Parameters

  • amountdoublerequired

    Highlight strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

setEyeEnlargemethodasync
Future<void> setEyeEnlarge(double amount)

Eye-enlarge reshape strength, 0.0..1.0 (0 = off).

Parameters

  • amountdoublerequired

    Eye-enlarge strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

setFaceSlimmethodasync
Future<void> setFaceSlim(double amount)

Face-slim reshape strength, 0.0..1.0 (0 = off).

Parameters

  • amountdoublerequired

    Face-slim strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

setNoseNarrowmethodasync
Future<void> setNoseNarrow(double amount)

Nose-narrow reshape strength, 0.0..1.0 (0 = off).

Parameters

  • amountdoublerequired

    Nose-narrow strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

setLipPlumpmethodasync
Future<void> setLipPlump(double amount)

Lip-plump reshape strength, 0.0..1.0 (0 = off).

Parameters

  • amountdoublerequired

    Lip-plump strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

setChinShortenmethodasync
Future<void> setChinShorten(double amount)

Chin-shorten reshape strength, 0.0..1.0 (0 = off).

Parameters

  • amountdoublerequired

    Chin-shorten strength, 0.0..1.0.

Returns: Future<void>Completes when applied.

Accessories setters

Toggle landmark-positioned PNG overlays. One toggle per accessory.

setGlassesmethodasync
Future<void> setGlasses(bool enabled)

Toggle the glasses accessory overlay.

Parameters

  • enabledboolrequired

    Whether the glasses overlay is shown.

Returns: Future<void>Completes when applied.

setSunglassesmethodasync
Future<void> setSunglasses(bool enabled)

Toggle the sunglasses accessory overlay.

Parameters

  • enabledboolrequired

    Whether the sunglasses overlay is shown.

Returns: Future<void>Completes when applied.

setCrownmethodasync
Future<void> setCrown(bool enabled)

Toggle the crown accessory overlay.

Parameters

  • enabledboolrequired

    Whether the crown overlay is shown.

Returns: Future<void>Completes when applied.

setCatEarsmethodasync
Future<void> setCatEars(bool enabled)

Toggle the cat-ears accessory overlay.

Parameters

  • enabledboolrequired

    Whether the cat-ears overlay is shown.

Returns: Future<void>Completes when applied.

setFlowerCrownmethodasync
Future<void> setFlowerCrown(bool enabled)

Toggle the flower-crown accessory overlay.

Parameters

  • enabledboolrequired

    Whether the flower-crown overlay is shown.

Returns: Future<void>Completes when applied.

setPartyHatmethodasync
Future<void> setPartyHat(bool enabled)

Toggle the party-hat accessory overlay.

Parameters

  • enabledboolrequired

    Whether the party-hat overlay is shown.

Returns: Future<void>Completes when applied.

setBunnyEarsmethodasync
Future<void> setBunnyEars(bool enabled)

Toggle the bunny-ears accessory overlay.

Parameters

  • enabledboolrequired

    Whether the bunny-ears overlay is shown.

Returns: Future<void>Completes when applied.

setMustachemethodasync
Future<void> setMustache(bool enabled)

Toggle the mustache accessory overlay.

Parameters

  • enabledboolrequired

    Whether the mustache overlay is shown.

Returns: Future<void>Completes when applied.

setHalomethodasync
Future<void> setHalo(bool enabled)

Toggle the halo accessory overlay.

Parameters

  • enabledboolrequired

    Whether the halo overlay is shown.

Returns: Future<void>Completes when applied.

Built-in UI

Drop-in bottom sheet that drives a processor with Beauty/Filters/Makeup/Accessories tabs.

VideoEffectsSheetclass
class VideoEffectsSheet

Self-contained beauty & filters bottom sheet (Beauty / Filters / Makeup / Accessories tabs) that drives a VideoEffectsProcessor. Dark over-video styling; accent from theme primary; auto Arabic labels.

VideoEffectsSheet.showmethodasync
static Future<void> show(BuildContext context, {required VideoEffectsProcessor processor, double heightFactor = defaultHeightFactor})

Opens the beauty & filters sheet for processor. Turns the master switch on (idempotent), then shows a modal bottom sheet. Returns when dismissed.

Parameters

  • contextBuildContextrequired

    Build context to show the modal in.

  • processorVideoEffectsProcessorrequired

    The processor the sheet controls.

  • heightFactordoubleDefault = defaultHeightFactor (0.25)

    Sheet height as a fraction of screen height.

Returns: Future<void>Completes when the sheet is dismissed.

defaultHeightFactorproperty
static const double defaultHeightFactor = 0.25

Default sheet height as a fraction of the screen height (1/4).

Returns: double0.25

Catalogs (filters, skin tones, accessories, makeup)

Pure-data catalogs of bundled LUT filters, skin-tone presets, accessories, and makeup shades/looks.

VideoEffectsFiltersclass
class VideoEffectsFilters

Catalog of bundled LUT color filters (45+ entries). Static-only (private constructor).

VideoEffectsFilters.allproperty
static const List<VideoEffectFilter> all

All bundled LUT filters, in display order (fresh, night, autumn, clean_girl, teal_orange, etc.).

Returns: List<VideoEffectFilter>Bundled filter catalog.

VideoEffectsFilters.assetFormethod
static String? assetFor(String? key)

The LUT asset path for a filter key, or null for an unknown/cleared key.

Parameters

  • keyString?required

    Filter key to resolve.

Returns: String?Asset path or null.

VideoEffectsFilters.previewFormethod
static String previewFor(String? key)

Preview thumbnail asset path for a filter key (portrait with filter applied). Null gives the unfiltered 'none' preview.

Parameters

  • keyString?required

    Filter key, or null for the 'none' preview.

Returns: StringPreview asset path.

VideoEffectsFilters.skinPreviewFormethod
static String skinPreviewFor(String? key)

Preview thumbnail asset path for a skin-tone preset (same portrait, skin LUT grade).

Parameters

  • keyString?required

    Skin-tone key, or null for the 'none' preview.

Returns: StringPreview asset path.

VideoEffectFilterclass
class VideoEffectFilter { const VideoEffectFilter(this.key, this.label, this.asset); }

A bundled LUT color filter: stable key, human label, and 512x512 LUT PNG asset path.

Parameters

  • keyStringrequired

    Stable key passed to setFilter, e.g. 'fresh'.

  • labelStringrequired

    Human-readable label, e.g. 'Fresh'.

  • assetStringrequired

    Packaged asset path of the LUT PNG.

VideoEffectsSkinTonesclass
class VideoEffectsSkinTones

Catalog of bundled skin-tone presets (Warm/Cool/Pink/Wheat/Tan). Static-only. Has all (List<VideoEffectSkinTone>) and byKey(String?).

VideoEffectsSkinTones.byKeymethod
static VideoEffectSkinTone? byKey(String? key)

Look up a skin-tone preset by key, or null for unknown/null.

Parameters

  • keyString?required

    Skin-tone preset key.

Returns: VideoEffectSkinTone?Preset or null.

VideoEffectsAccessoriesclass
class VideoEffectsAccessories

Catalog of bundled PNG accessories (glasses, crown, catEars, sunglasses, flowerCrown, partyHat, bunnyEars, mustache, halo). Static-only.

VideoEffectsAccessories.allproperty
static const List<VideoEffectAccessory> all

All bundled accessories, each with a key matching the EffectsState toggle.

Returns: List<VideoEffectAccessory>Accessory catalog.

VideoEffectsAccessories.assetFormethod
static String? assetFor(String? key)

The PNG asset path for an accessory key, or null for an unknown key.

Parameters

  • keyString?required

    Accessory key to resolve.

Returns: String?Asset path or null.

VideoEffectsMakeupclass
class VideoEffectsMakeup

Curated makeup shades + full looks. Static-only. Exposes lipstick, eyeshadow, blush, eyeColor (List<MakeupShade>) and looks (List<MakeupLook>).

VideoEffectsMakeup.looksproperty
static const List<MakeupLook> looks

Coordinated full looks (lip + eyeshadow + blush [+ eye color]): natural, glam, soft_rose, bold_berry, sunkissed, smoky_night.

Returns: List<MakeupLook>Curated full looks.

VideoEffectsMakeup.lookByKeymethod
static MakeupLook? lookByKey(String? key)

Look up a coordinated MakeupLook by key, or null for unknown/null.

Parameters

  • keyString?required

    Look key.

Returns: MakeupLook?Look or null.

Models & data types

Immutable state snapshot, catalog item types, and telemetry/parity result types.

EffectsStateclass
class EffectsState { const EffectsState({bool enabled = false, double smoothing = 0, ... bool halo = false}); }

Immutable snapshot of active video-effect settings (~50 fields: enabled, smoothing, whitening, filterKey/filterIntensity, makeup hex+opacity, sculpt/reshape scalars, accessory bools). All intensities normalized 0.0..1.0.

Parameters

  • enabledboolDefault = false

    Master switch.

  • smoothingdoubleDefault = 0

    Skin-smoothing strength.

  • filterKeyString?Default = null

    Active LUT filter key, or null.

  • filterIntensitydoubleDefault = 1.0

    Blend amount for filterKey.

  • Plus whitening, glow, grain, vignette, clarity, makeup hex/opacity fields, reshape/sculpt scalars, and accessory bools.

copyWithmethod
EffectsState copyWith({bool? enabled, double? smoothing, Object? filterKey = _unset, ...})

Returns a copy with the given fields changed. Nullable fields use an _unset sentinel so passing null clears (vs leaving unchanged).

Parameters

  • Any subset of EffectsState fields to override.

Returns: EffectsStateA new modified state.

toMapmethod
Map<String, dynamic> toMap()

Serialized form sent to the native pipeline over the method channel.

Returns: Map<String, dynamic>All effect fields as a map.

VideoEffectSkinToneclass
const VideoEffectSkinTone(this.key, this.label, this.skinAsset, this.bgAsset)

A skin-tone preset (dual-LUT grade): a skin LUT over skin regions plus a background LUT elsewhere.

Parameters

  • keyStringrequired

    Stable preset key, e.g. 'nuanbai'.

  • labelStringrequired

    Human label, e.g. 'Warm'.

  • skinAssetStringrequired

    Skin-region LUT asset path.

  • bgAssetStringrequired

    Background LUT asset path.

VideoEffectAccessoryclass
const VideoEffectAccessory(this.key, this.label, this.asset)

A landmark-positioned PNG accessory overlay.

Parameters

  • keyStringrequired

    Stable key matching the EffectsState toggle, e.g. 'glasses'.

  • labelStringrequired

    Human-readable label.

  • assetStringrequired

    Packaged transparent PNG asset path.

MakeupShadeclass
const MakeupShade(this.key, this.label, this.hex, this.opacity)

A curated makeup shade: a hex color plus recommended opacity for one region. Feed hex+opacity into the matching setter.

Parameters

  • keyStringrequired

    Stable key, e.g. 'classic_red'.

  • labelStringrequired

    Human label, e.g. 'Classic Red'.

  • hexStringrequired

    #RRGGBB color.

  • opacitydoublerequired

    Recommended strength, 0.0..1.0.

MakeupLookclass
const MakeupLook(this.key, this.label, {String? lipstick, double lipstickOpacity = 0.6, String lipFinish = 'satin', String? eyeshadow, ...})

A full makeup look bundling coordinated shades across regions. Apply with setMakeupLook. Has a preview getter for the thumbnail asset path.

Parameters

  • keyStringrequired

    Stable look key.

  • labelStringrequired

    Human label.

  • lipstickString?Default = null

    Lipstick hex.

  • lipFinishStringDefault = 'satin'

    matte, satin, or gloss.

  • eyeshadowString?Default = null

    Eyeshadow hex (plus blush, eyeColor, and per-region opacities).

EffectsPerfStatsclass
class EffectsPerfStats { const EffectsPerfStats({required int frames, ... required double frameMs}); }

Immutable snapshot of native frame-budget telemetry: frame counts, over-budget/over-frame counts, raise/lower events, per-level frames, mean/p50/p95/p99/max ms, histogram bins, device tier, and budget/frame thresholds.

Parameters

  • framesintrequired

    Total frames timed since last reset.

  • overBudgetintrequired

    Frames slower than budgetMs.

  • Plus overFrame, raiseEvents, lowerEvents, levelFrames, meanMs, maxMs, p50/p95/p99Ms, binMs, bins, tier, budgetMs, frameMs.

overBudgetRategetter
double get overBudgetRate

Fraction of frames slower than budgetMs (0.0..1.0). The primary perf signal.

Returns: doubleOver-budget fraction.

overFrameRategetter
double get overFrameRate

Fraction of frames slower than frameMs — i.e. frames that actually dropped.

Returns: doubleDropped-frame fraction.

EffectsPerfStats.fromMapmethod
static EffectsPerfStats? fromMap(Map<String, dynamic>? m)

Builds a snapshot from the native channel map; null for a null/empty map.

Parameters

  • mMap<String, dynamic>?required

    Native telemetry map.

Returns: EffectsPerfStats?Snapshot or null.

EffectsTestFrameclass
const EffectsTestFrame({required Uint8List rgba, required int width, required int height})

Result of renderTestFrame: an RGBA8888 image produced by running a known input through the native color grade with current settings.

Parameters

  • rgbaUint8Listrequired

    Graded pixels, RGBA8888 row-major, alpha opaque.

  • widthintrequired

    Image width in pixels.

  • heightintrequired

    Image height in pixels.

FrameDiffclass
class FrameDiff { const FrameDiff({required int maxDelta, required double meanDelta, required int pixels, required int diffPixels, required int threshold}); }

A per-channel difference summary between two RGBA8888 buffers (pure Dart, offline-testable). Has diffFraction getter and a static compare().

Parameters

  • maxDeltaintrequired

    Largest absolute per-channel delta (0..255).

  • meanDeltadoublerequired

    Mean absolute per-channel delta over RGB.

  • pixelsintrequired

    Total pixels compared.

  • diffPixelsintrequired

    Pixels differing by more than threshold.

  • thresholdintrequired

    Per-channel delta counted as different.

FrameDiff.comparemethod
static FrameDiff compare(Uint8List a, Uint8List b, {int threshold = 2})

Compares two RGBA8888 buffers on RGB channels (alpha ignored). Returns a zeroed diff when sizes mismatch or are empty.

Parameters

  • aUint8Listrequired

    First RGBA8888 buffer.

  • bUint8Listrequired

    Second RGBA8888 buffer.

  • thresholdintDefault = 2

    Per-channel delta above which a pixel counts as different.

Returns: FrameDiffThe difference summary.

Ready to build with UTD?

Create your account, fund your master wallet, and turn on the services you need.