< Flutter UIKit />
UTD Video Effects Kit
Echtzeit-Beauty-Filter, LUT-Farbkorrektur und Gesichtseffekte.
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-Filter
9
Accessoires
6
Make-up-Looks
GPU
Echtzeit
< utd_video_effects_kit />
Wichtigste Funktionen
Echtzeit-Videoeffekte und Beauty-Filter für LiveKit-basierte Flutter-Apps. Die Effekte laufen über einen TrackProcessor auf nativen GPU-Pipelines (Android/iOS) und bündeln 46+ LUT-Farbfilter, Hautglättung/-aufhellung, Hintergrundunschärfe sowie MediaPipe-gestützte Gesichtseffekte (Augenfarbe, Make-up, Accessoires). Inklusive integrierter VideoEffectsSheet-UI mit den Tabs Beauty/Filters/Makeup/Accessories.
46+ LUT-Farbfilter (kuratierte + eigene Looks)
Beauty-Effekte: Hautglättung (Frequenztrennung), Aufhellung, Hintergrundunschärfe
Gesichtseffekte via MediaPipe: Augenfarbe, Make-up (Lippenstift/Lidschatten/Rouge), 9 Accessoires
Farb-Nachbearbeitung: Glow/Bloom (Orton), Filmkorn, Vignette
Haut-Retusche: Texturdetails, Klarheit, selektives Aufhellen
Gesichts-Reshaping: Landmark-gesteuerte Verzerrung (Augen vergrößern, Gesicht schmaler, Nase schmaler, …)
Sofort einsatzbereite VideoEffectsSheet-UI (Tabs Beauty/Filters/Makeup/Accessories)
Kuratierte Make-up-Looks und Hautton-Presets
Adaptives Frame-Budget-Management mit Geräte-Performance-Stufen
Glue-freie Anbindung des LiveKit TrackProcessor an LocalVideoTrack
< utd_video_effects_kit />
Erste Schritte
Installieren
dependencies:
utd_video_effects_kit: ^0.5.0Auf pub.dev ansehen
Echtzeit-Beauty-Filter, LUT-Farbkorrektur und Gesichtseffekte.
< utd_video_effects_kit />
API-Referenz
Main processor
The single public entry point: a LiveKit TrackProcessor that applies GPU beauty/filter effects natively.
VideoEffectsProcessorclassabstract 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.createconstructorfactory VideoEffectsProcessor.create({EffectsState initial = const EffectsState()})Builds the default native-backed implementation. The only way to construct a processor.
Parameter
initialEffectsStateStandard = const EffectsState()Initial effect settings the processor starts with.
Rückgabewert: VideoEffectsProcessor — A native-backed processor instance.
stategetterValueListenable<EffectsState> get stateLive, read-only snapshot of current effect settings. Bind UI to this.
Rückgabewert: ValueListenable<EffectsState> — Listenable of the current immutable EffectsState.
isSupportedgetterbool get isSupportedWhether this device/platform can actually process pixels. False means processedTrack is a passthrough (original camera frames flow unmodified).
Rückgabewert: bool — True if native pixel processing is available.
disposemethodvoid dispose()Final teardown: releases the effect-state listenable. Call when the live session ends. Distinct from LiveKit's per-capture destroy().
Rückgabewert: void — Nothing.
Adaptive performance & telemetry
Frame-budget signals and on-device measurement/parity harness.
budgetExceededgetterValueListenable<bool> get budgetExceededTrue while the native pipeline sheds work to hold the frame budget (degrade level > 0). Emits only on change. Always false on unsupported platforms.
Rückgabewert: ValueListenable<bool> — Listenable performance-mode flag.
degradeLevelgetterValueListenable<int> get degradeLevelCurrent adaptive frame-budget degrade level: 0 (full quality) .. 4 (max shedding). 0 on unsupported platforms.
Rückgabewert: ValueListenable<int> — Listenable degrade level 0..4.
deviceTiergetterValueListenable<int> get deviceTierStatic device performance tier classified natively at attach: 0 Budget, 1 Low, 2 Mid, 3 Flagship. 3 on unsupported platforms or before first attach.
Rückgabewert: ValueListenable<int> — Listenable device tier 0..3.
perfStatsmethodasyncFuture<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.
Parameter
resetboolStandard = falseClear counters after reading so the next call measures a fresh window.
Rückgabewert: Future<EffectsPerfStats?> — Telemetry snapshot, or null if unavailable.
renderTestFramemethodasyncFuture<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.
Parameter
rgbaUint8ListerforderlichRGBA8888 row-major input, width*height*4 bytes.
widthinterforderlichInput image width in pixels.
heightinterforderlichInput image height in pixels.
Rückgabewert: 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.
setEnabledmethodasyncFuture<void> setEnabled(bool enabled)Master on/off switch. When off the native pipeline is a 1:1 passthrough.
Parameter
enabledboolerforderlichWhether effects are applied.
Rückgabewert: Future<void> — Completes when applied.
setSmoothingmethodasyncFuture<void> setSmoothing(double amount)Skin-smoothing strength, 0.0..1.0 (frequency-separation / bilateral).
Parameter
amountdoubleerforderlichSmoothing strength, 0.0..1.0 (0 = off).
Rückgabewert: Future<void> — Completes when applied.
setWhiteningmethodasyncFuture<void> setWhitening(double amount)Whitening / brightness strength, 0.0..1.0.
Parameter
amountdoubleerforderlichWhitening strength, 0.0..1.0 (0 = off).
Rückgabewert: Future<void> — Completes when applied.
setFiltermethodasyncFuture<void> setFilter(String? lutAssetKey, {double intensity = 1.0})Apply a LUT color filter by key (null clears it). See VideoEffectsFilters.
Parameter
lutAssetKeyString?erforderlichFilter key (e.g. 'warm'), or null to clear.
intensitydoubleStandard = 1.0Blend amount, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setBackgroundBlurmethodasyncFuture<void> setBackgroundBlur(double amount)Background-blur strength, 0.0..1.0 (selfie segmentation + blur).
Parameter
amountdoubleerforderlichBlur strength, 0.0..1.0 (0 = off).
Rückgabewert: Future<void> — Completes when applied.
setGlowmethodasyncFuture<void> setGlow(double amount)Soft glow / bloom (Orton) strength, 0.0..1.0. The highest-impact beauty color post effect.
Parameter
amountdoubleerforderlichGlow strength, 0.0..1.0 (0 = off).
Rückgabewert: Future<void> — Completes when applied.
setGrainmethodasyncFuture<void> setGrain(double amount)Film-grain amount, 0.0..1.0 (animated per frame).
Parameter
amountdoubleerforderlichGrain amount, 0.0..1.0 (0 = off).
Rückgabewert: Future<void> — Completes when applied.
setVignettemethodasyncFuture<void> setVignette(double amount)Vignette strength, 0.0..1.0 (darkens frame corners).
Parameter
amountdoubleerforderlichVignette strength, 0.0..1.0 (0 = off).
Rückgabewert: Future<void> — Completes when applied.
setTextureDetailmethodasyncFuture<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.
Parameter
amountdoubleerforderlichTexture retention, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setClaritymethodasyncFuture<void> setClarity(double amount)Local-contrast clarity, signed -1.0..1.0. Positive = punchy/pop, negative = soft dreamy skin. 0 = off.
Parameter
amountdoubleerforderlichSigned clarity, -1.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
Skin retouch & tone
Selective brightening (teeth/eye/under-eye) and skin-tone presets/shift.
setTeethWhiteningmethodasyncFuture<void> setTeethWhitening(double amount)Teeth-whitening strength, 0.0..1.0 (0 = off).
Parameter
amountdoubleerforderlichTeeth-whitening strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setEyeBrighteningmethodasyncFuture<void> setEyeBrightening(double amount)Eye-white (sclera) brightening, 0.0..1.0 (0 = off).
Parameter
amountdoubleerforderlichEye-white brightening strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setUnderEyeBrighteningmethodasyncFuture<void> setUnderEyeBrightening(double amount)Under-eye (tear-trough) brightening, 0.0..1.0 (0 = off).
Parameter
amountdoubleerforderlichUnder-eye brightening strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setSkinColormethodasyncFuture<void> setSkinColor(String? presetKey)Apply a skin-tone preset by key (null clears it). See VideoEffectsSkinTones.
Parameter
presetKeyString?erforderlichSkin-tone preset key (e.g. 'nuanbai'), or null to clear.
Rückgabewert: Future<void> — Completes when applied.
setSkinToneShiftmethodasyncFuture<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.
Parameter
amountdoubleerforderlichSigned skin-tone shift, -1.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setSegmentationSkinmethodasyncFuture<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.
Parameter
enabledboolerforderlichWhether segmentation-refined skin masking is on.
Rückgabewert: Future<void> — Completes when applied.
Makeup, sculpt & reshape setters
Landmark-driven makeup recolor, dodge/burn sculpt, and liquify reshape.
setEyeColormethodasyncFuture<void> setEyeColor(String? hex, {double opacity = 0.5})Recolor the iris with hex (e.g. '#3366CC', null clears it).
Parameter
hexString?erforderlichIris color hex, or null to clear.
opacitydoubleStandard = 0.5Recolor strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setLipstickmethodasyncFuture<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.
Parameter
hexString?erforderlichLipstick color hex, or null to clear.
opacitydoubleStandard = 0.6Strength, 0.0..1.0.
finishStringStandard = 'satin'matte, satin, or gloss.
styleStringStandard = 'full'full, ombre, or blurred.
Rückgabewert: Future<void> — Completes when applied.
setEyeshadowmethodasyncFuture<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.
Parameter
hexString?erforderlichEyeshadow color hex, or null to clear.
opacitydoubleStandard = 0.45Strength, 0.0..1.0.
color2String?Standard = nullSecond hex for a two-tone (darker lash-line) gradient.
shimmerdoubleStandard = 0Sparkle amount, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setBlushmethodasyncFuture<void> setBlush(String? hex, {double opacity = 0.4})Apply blush in hex (null clears it).
Parameter
hexString?erforderlichBlush color hex, or null to clear.
opacitydoubleStandard = 0.4Strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setEyelinermethodasyncFuture<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).
Parameter
hexString?erforderlichEyeliner color hex, or null to clear.
opacitydoubleStandard = 0.7Strength, 0.0..1.0.
styleStringStandard = 'classic'classic or wing.
Rückgabewert: Future<void> — Completes when applied.
setMakeupLookmethodasyncFuture<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.
Parameter
lookMakeupLook?erforderlichThe look to apply, or null to clear all makeup.
Rückgabewert: Future<void> — Completes when applied.
setContourmethodasyncFuture<void> setContour(double amount)Contour (cool-gray cheek/nose burn) strength, 0.0..1.0 (0 = off).
Parameter
amountdoubleerforderlichContour strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setHighlightmethodasyncFuture<void> setHighlight(double amount)Highlight (warm-white dodge on high points) strength, 0.0..1.0 (0 = off).
Parameter
amountdoubleerforderlichHighlight strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setEyeEnlargemethodasyncFuture<void> setEyeEnlarge(double amount)Eye-enlarge reshape strength, 0.0..1.0 (0 = off).
Parameter
amountdoubleerforderlichEye-enlarge strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setFaceSlimmethodasyncFuture<void> setFaceSlim(double amount)Face-slim reshape strength, 0.0..1.0 (0 = off).
Parameter
amountdoubleerforderlichFace-slim strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setNoseNarrowmethodasyncFuture<void> setNoseNarrow(double amount)Nose-narrow reshape strength, 0.0..1.0 (0 = off).
Parameter
amountdoubleerforderlichNose-narrow strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setLipPlumpmethodasyncFuture<void> setLipPlump(double amount)Lip-plump reshape strength, 0.0..1.0 (0 = off).
Parameter
amountdoubleerforderlichLip-plump strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
setChinShortenmethodasyncFuture<void> setChinShorten(double amount)Chin-shorten reshape strength, 0.0..1.0 (0 = off).
Parameter
amountdoubleerforderlichChin-shorten strength, 0.0..1.0.
Rückgabewert: Future<void> — Completes when applied.
Accessories setters
Toggle landmark-positioned PNG overlays. One toggle per accessory.
setGlassesmethodasyncFuture<void> setGlasses(bool enabled)Toggle the glasses accessory overlay.
Parameter
enabledboolerforderlichWhether the glasses overlay is shown.
Rückgabewert: Future<void> — Completes when applied.
setSunglassesmethodasyncFuture<void> setSunglasses(bool enabled)Toggle the sunglasses accessory overlay.
Parameter
enabledboolerforderlichWhether the sunglasses overlay is shown.
Rückgabewert: Future<void> — Completes when applied.
setCrownmethodasyncFuture<void> setCrown(bool enabled)Toggle the crown accessory overlay.
Parameter
enabledboolerforderlichWhether the crown overlay is shown.
Rückgabewert: Future<void> — Completes when applied.
setCatEarsmethodasyncFuture<void> setCatEars(bool enabled)Toggle the cat-ears accessory overlay.
Parameter
enabledboolerforderlichWhether the cat-ears overlay is shown.
Rückgabewert: Future<void> — Completes when applied.
setFlowerCrownmethodasyncFuture<void> setFlowerCrown(bool enabled)Toggle the flower-crown accessory overlay.
Parameter
enabledboolerforderlichWhether the flower-crown overlay is shown.
Rückgabewert: Future<void> — Completes when applied.
setPartyHatmethodasyncFuture<void> setPartyHat(bool enabled)Toggle the party-hat accessory overlay.
Parameter
enabledboolerforderlichWhether the party-hat overlay is shown.
Rückgabewert: Future<void> — Completes when applied.
setBunnyEarsmethodasyncFuture<void> setBunnyEars(bool enabled)Toggle the bunny-ears accessory overlay.
Parameter
enabledboolerforderlichWhether the bunny-ears overlay is shown.
Rückgabewert: Future<void> — Completes when applied.
setMustachemethodasyncFuture<void> setMustache(bool enabled)Toggle the mustache accessory overlay.
Parameter
enabledboolerforderlichWhether the mustache overlay is shown.
Rückgabewert: Future<void> — Completes when applied.
setHalomethodasyncFuture<void> setHalo(bool enabled)Toggle the halo accessory overlay.
Parameter
enabledboolerforderlichWhether the halo overlay is shown.
Rückgabewert: Future<void> — Completes when applied.
Built-in UI
Drop-in bottom sheet that drives a processor with Beauty/Filters/Makeup/Accessories tabs.
VideoEffectsSheetclassclass VideoEffectsSheetSelf-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.showmethodasyncstatic 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.
Parameter
contextBuildContexterforderlichBuild context to show the modal in.
processorVideoEffectsProcessorerforderlichThe processor the sheet controls.
heightFactordoubleStandard = defaultHeightFactor (0.25)Sheet height as a fraction of screen height.
Rückgabewert: Future<void> — Completes when the sheet is dismissed.
defaultHeightFactorpropertystatic const double defaultHeightFactor = 0.25Default sheet height as a fraction of the screen height (1/4).
Rückgabewert: double — 0.25
Catalogs (filters, skin tones, accessories, makeup)
Pure-data catalogs of bundled LUT filters, skin-tone presets, accessories, and makeup shades/looks.
VideoEffectsFiltersclassclass VideoEffectsFiltersCatalog of bundled LUT color filters (45+ entries). Static-only (private constructor).
VideoEffectsFilters.allpropertystatic const List<VideoEffectFilter> allAll bundled LUT filters, in display order (fresh, night, autumn, clean_girl, teal_orange, etc.).
Rückgabewert: List<VideoEffectFilter> — Bundled filter catalog.
VideoEffectsFilters.assetFormethodstatic String? assetFor(String? key)The LUT asset path for a filter key, or null for an unknown/cleared key.
Parameter
keyString?erforderlichFilter key to resolve.
Rückgabewert: String? — Asset path or null.
VideoEffectsFilters.previewFormethodstatic String previewFor(String? key)Preview thumbnail asset path for a filter key (portrait with filter applied). Null gives the unfiltered 'none' preview.
Parameter
keyString?erforderlichFilter key, or null for the 'none' preview.
Rückgabewert: String — Preview asset path.
VideoEffectsFilters.skinPreviewFormethodstatic String skinPreviewFor(String? key)Preview thumbnail asset path for a skin-tone preset (same portrait, skin LUT grade).
Parameter
keyString?erforderlichSkin-tone key, or null for the 'none' preview.
Rückgabewert: String — Preview asset path.
VideoEffectFilterclassclass VideoEffectFilter { const VideoEffectFilter(this.key, this.label, this.asset); }A bundled LUT color filter: stable key, human label, and 512x512 LUT PNG asset path.
Parameter
keyStringerforderlichStable key passed to setFilter, e.g. 'fresh'.
labelStringerforderlichHuman-readable label, e.g. 'Fresh'.
assetStringerforderlichPackaged asset path of the LUT PNG.
VideoEffectsSkinTonesclassclass VideoEffectsSkinTonesCatalog of bundled skin-tone presets (Warm/Cool/Pink/Wheat/Tan). Static-only. Has all (List<VideoEffectSkinTone>) and byKey(String?).
VideoEffectsSkinTones.byKeymethodstatic VideoEffectSkinTone? byKey(String? key)Look up a skin-tone preset by key, or null for unknown/null.
Parameter
keyString?erforderlichSkin-tone preset key.
Rückgabewert: VideoEffectSkinTone? — Preset or null.
VideoEffectsAccessoriesclassclass VideoEffectsAccessoriesCatalog of bundled PNG accessories (glasses, crown, catEars, sunglasses, flowerCrown, partyHat, bunnyEars, mustache, halo). Static-only.
VideoEffectsAccessories.allpropertystatic const List<VideoEffectAccessory> allAll bundled accessories, each with a key matching the EffectsState toggle.
Rückgabewert: List<VideoEffectAccessory> — Accessory catalog.
VideoEffectsAccessories.assetFormethodstatic String? assetFor(String? key)The PNG asset path for an accessory key, or null for an unknown key.
Parameter
keyString?erforderlichAccessory key to resolve.
Rückgabewert: String? — Asset path or null.
VideoEffectsMakeupclassclass VideoEffectsMakeupCurated makeup shades + full looks. Static-only. Exposes lipstick, eyeshadow, blush, eyeColor (List<MakeupShade>) and looks (List<MakeupLook>).
VideoEffectsMakeup.lookspropertystatic const List<MakeupLook> looksCoordinated full looks (lip + eyeshadow + blush [+ eye color]): natural, glam, soft_rose, bold_berry, sunkissed, smoky_night.
Rückgabewert: List<MakeupLook> — Curated full looks.
VideoEffectsMakeup.lookByKeymethodstatic MakeupLook? lookByKey(String? key)Look up a coordinated MakeupLook by key, or null for unknown/null.
Parameter
keyString?erforderlichLook key.
Rückgabewert: MakeupLook? — Look or null.
Models & data types
Immutable state snapshot, catalog item types, and telemetry/parity result types.
EffectsStateclassclass 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.
Parameter
enabledboolStandard = falseMaster switch.
smoothingdoubleStandard = 0Skin-smoothing strength.
filterKeyString?Standard = nullActive LUT filter key, or null.
filterIntensitydoubleStandard = 1.0Blend amount for filterKey.
……Plus whitening, glow, grain, vignette, clarity, makeup hex/opacity fields, reshape/sculpt scalars, and accessory bools.
copyWithmethodEffectsState 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).
Parameter
……Any subset of EffectsState fields to override.
Rückgabewert: EffectsState — A new modified state.
toMapmethodMap<String, dynamic> toMap()Serialized form sent to the native pipeline over the method channel.
Rückgabewert: Map<String, dynamic> — All effect fields as a map.
VideoEffectSkinToneclassconst 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.
Parameter
keyStringerforderlichStable preset key, e.g. 'nuanbai'.
labelStringerforderlichHuman label, e.g. 'Warm'.
skinAssetStringerforderlichSkin-region LUT asset path.
bgAssetStringerforderlichBackground LUT asset path.
VideoEffectAccessoryclassconst VideoEffectAccessory(this.key, this.label, this.asset)A landmark-positioned PNG accessory overlay.
Parameter
keyStringerforderlichStable key matching the EffectsState toggle, e.g. 'glasses'.
labelStringerforderlichHuman-readable label.
assetStringerforderlichPackaged transparent PNG asset path.
MakeupShadeclassconst 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.
Parameter
keyStringerforderlichStable key, e.g. 'classic_red'.
labelStringerforderlichHuman label, e.g. 'Classic Red'.
hexStringerforderlich#RRGGBB color.
opacitydoubleerforderlichRecommended strength, 0.0..1.0.
MakeupLookclassconst 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.
Parameter
keyStringerforderlichStable look key.
labelStringerforderlichHuman label.
lipstickString?Standard = nullLipstick hex.
lipFinishStringStandard = 'satin'matte, satin, or gloss.
eyeshadowString?Standard = nullEyeshadow hex (plus blush, eyeColor, and per-region opacities).
EffectsPerfStatsclassclass 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.
Parameter
framesinterforderlichTotal frames timed since last reset.
overBudgetinterforderlichFrames slower than budgetMs.
……Plus overFrame, raiseEvents, lowerEvents, levelFrames, meanMs, maxMs, p50/p95/p99Ms, binMs, bins, tier, budgetMs, frameMs.
overBudgetRategetterdouble get overBudgetRateFraction of frames slower than budgetMs (0.0..1.0). The primary perf signal.
Rückgabewert: double — Over-budget fraction.
overFrameRategetterdouble get overFrameRateFraction of frames slower than frameMs — i.e. frames that actually dropped.
Rückgabewert: double — Dropped-frame fraction.
EffectsPerfStats.fromMapmethodstatic EffectsPerfStats? fromMap(Map<String, dynamic>? m)Builds a snapshot from the native channel map; null for a null/empty map.
Parameter
mMap<String, dynamic>?erforderlichNative telemetry map.
Rückgabewert: EffectsPerfStats? — Snapshot or null.
EffectsTestFrameclassconst 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.
Parameter
rgbaUint8ListerforderlichGraded pixels, RGBA8888 row-major, alpha opaque.
widthinterforderlichImage width in pixels.
heightinterforderlichImage height in pixels.
FrameDiffclassclass 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().
Parameter
maxDeltainterforderlichLargest absolute per-channel delta (0..255).
meanDeltadoubleerforderlichMean absolute per-channel delta over RGB.
pixelsinterforderlichTotal pixels compared.
diffPixelsinterforderlichPixels differing by more than threshold.
thresholdinterforderlichPer-channel delta counted as different.
FrameDiff.comparemethodstatic 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.
Parameter
aUint8ListerforderlichFirst RGBA8888 buffer.
bUint8ListerforderlichSecond RGBA8888 buffer.
thresholdintStandard = 2Per-channel delta above which a pixel counts as different.
Rückgabewert: FrameDiff — The difference summary.
Bereit, mit UTD zu entwickeln?
Erstellen Sie Ihr Konto, laden Sie Ihre Master-Wallet auf und aktivieren Sie die Dienste, die Sie brauchen.