< Flutter UIKit />
UTD Video Effects Kit
实时美颜滤镜、LUT 调色与人脸特效。
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 滤镜
9
饰品
6
妆容风格
GPU
实时
< utd_video_effects_kit />
核心功能
面向基于 LiveKit 的 Flutter 应用的实时视频特效与美颜滤镜。特效通过 TrackProcessor 在原生 GPU 管线(Android/iOS)上运行,集成 46+ 款 LUT 调色滤镜、磨皮/美白、背景虚化,以及由 MediaPipe 驱动的人脸特效(瞳色、妆容、饰品)。内置带 Beauty/Filters/Makeup/Accessories 标签页的 VideoEffectsSheet UI。
46+ 款 LUT 调色滤镜(精选 + 自研风格)
美颜特效:磨皮(频率分离)、美白、背景虚化
通过 MediaPipe 的人脸特效:瞳色、妆容(口红/眼影/腮红)、9 款饰品
色彩后期处理:辉光/泛光(Orton)、胶片颗粒、暗角
皮肤精修:纹理细节、清晰度、局部提亮
人脸重塑:基于关键点的形变(放大眼睛、瘦脸、收窄鼻子……)
开箱即用的 VideoEffectsSheet UI(Beauty/Filters/Makeup/Accessories 标签页)
精选妆容风格与肤色预设
依据设备性能等级的自适应帧预算管理
零胶水代码将 LiveKit TrackProcessor 挂载到 LocalVideoTrack
< utd_video_effects_kit />
开始使用
安装
dependencies:
utd_video_effects_kit: ^0.5.0< utd_video_effects_kit />
API 参考
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.
参数
initialEffectsState默认值 = const EffectsState()Initial effect settings the processor starts with.
返回值: VideoEffectsProcessor — A native-backed processor instance.
stategetterValueListenable<EffectsState> get stateLive, read-only snapshot of current effect settings. Bind UI to this.
返回值: 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).
返回值: 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().
返回值: 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.
返回值: 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.
返回值: 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.
返回值: 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.
参数
resetbool默认值 = falseClear counters after reading so the next call measures a fresh window.
返回值: 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.
参数
rgbaUint8List必填RGBA8888 row-major input, width*height*4 bytes.
widthint必填Input image width in pixels.
heightint必填Input image height in pixels.
返回值: 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.
参数
enabledbool必填Whether effects are applied.
返回值: Future<void> — Completes when applied.
setSmoothingmethodasyncFuture<void> setSmoothing(double amount)Skin-smoothing strength, 0.0..1.0 (frequency-separation / bilateral).
参数
amountdouble必填Smoothing strength, 0.0..1.0 (0 = off).
返回值: Future<void> — Completes when applied.
setWhiteningmethodasyncFuture<void> setWhitening(double amount)Whitening / brightness strength, 0.0..1.0.
参数
amountdouble必填Whitening strength, 0.0..1.0 (0 = off).
返回值: 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.
参数
lutAssetKeyString?必填Filter key (e.g. 'warm'), or null to clear.
intensitydouble默认值 = 1.0Blend amount, 0.0..1.0.
返回值: Future<void> — Completes when applied.
setBackgroundBlurmethodasyncFuture<void> setBackgroundBlur(double amount)Background-blur strength, 0.0..1.0 (selfie segmentation + blur).
参数
amountdouble必填Blur strength, 0.0..1.0 (0 = off).
返回值: 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.
参数
amountdouble必填Glow strength, 0.0..1.0 (0 = off).
返回值: Future<void> — Completes when applied.
setGrainmethodasyncFuture<void> setGrain(double amount)Film-grain amount, 0.0..1.0 (animated per frame).
参数
amountdouble必填Grain amount, 0.0..1.0 (0 = off).
返回值: Future<void> — Completes when applied.
setVignettemethodasyncFuture<void> setVignette(double amount)Vignette strength, 0.0..1.0 (darkens frame corners).
参数
amountdouble必填Vignette strength, 0.0..1.0 (0 = off).
返回值: 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.
参数
amountdouble必填Texture retention, 0.0..1.0.
返回值: 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.
参数
amountdouble必填Signed clarity, -1.0..1.0.
返回值: 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).
参数
amountdouble必填Teeth-whitening strength, 0.0..1.0.
返回值: Future<void> — Completes when applied.
setEyeBrighteningmethodasyncFuture<void> setEyeBrightening(double amount)Eye-white (sclera) brightening, 0.0..1.0 (0 = off).
参数
amountdouble必填Eye-white brightening strength, 0.0..1.0.
返回值: Future<void> — Completes when applied.
setUnderEyeBrighteningmethodasyncFuture<void> setUnderEyeBrightening(double amount)Under-eye (tear-trough) brightening, 0.0..1.0 (0 = off).
参数
amountdouble必填Under-eye brightening strength, 0.0..1.0.
返回值: Future<void> — Completes when applied.
setSkinColormethodasyncFuture<void> setSkinColor(String? presetKey)Apply a skin-tone preset by key (null clears it). See VideoEffectsSkinTones.
参数
presetKeyString?必填Skin-tone preset key (e.g. 'nuanbai'), or null to clear.
返回值: 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.
参数
amountdouble必填Signed skin-tone shift, -1.0..1.0.
返回值: 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.
参数
enabledbool必填Whether segmentation-refined skin masking is on.
返回值: 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).
参数
hexString?必填Iris color hex, or null to clear.
opacitydouble默认值 = 0.5Recolor strength, 0.0..1.0.
返回值: 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.
参数
hexString?必填Lipstick color hex, or null to clear.
opacitydouble默认值 = 0.6Strength, 0.0..1.0.
finishString默认值 = 'satin'matte, satin, or gloss.
styleString默认值 = 'full'full, ombre, or blurred.
返回值: 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.
参数
hexString?必填Eyeshadow color hex, or null to clear.
opacitydouble默认值 = 0.45Strength, 0.0..1.0.
color2String?默认值 = nullSecond hex for a two-tone (darker lash-line) gradient.
shimmerdouble默认值 = 0Sparkle amount, 0.0..1.0.
返回值: Future<void> — Completes when applied.
setBlushmethodasyncFuture<void> setBlush(String? hex, {double opacity = 0.4})Apply blush in hex (null clears it).
参数
hexString?必填Blush color hex, or null to clear.
opacitydouble默认值 = 0.4Strength, 0.0..1.0.
返回值: 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).
参数
hexString?必填Eyeliner color hex, or null to clear.
opacitydouble默认值 = 0.7Strength, 0.0..1.0.
styleString默认值 = 'classic'classic or wing.
返回值: 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.
参数
lookMakeupLook?必填The look to apply, or null to clear all makeup.
返回值: Future<void> — Completes when applied.
setContourmethodasyncFuture<void> setContour(double amount)Contour (cool-gray cheek/nose burn) strength, 0.0..1.0 (0 = off).
参数
amountdouble必填Contour strength, 0.0..1.0.
返回值: Future<void> — Completes when applied.
setHighlightmethodasyncFuture<void> setHighlight(double amount)Highlight (warm-white dodge on high points) strength, 0.0..1.0 (0 = off).
参数
amountdouble必填Highlight strength, 0.0..1.0.
返回值: Future<void> — Completes when applied.
setEyeEnlargemethodasyncFuture<void> setEyeEnlarge(double amount)Eye-enlarge reshape strength, 0.0..1.0 (0 = off).
参数
amountdouble必填Eye-enlarge strength, 0.0..1.0.
返回值: Future<void> — Completes when applied.
setFaceSlimmethodasyncFuture<void> setFaceSlim(double amount)Face-slim reshape strength, 0.0..1.0 (0 = off).
参数
amountdouble必填Face-slim strength, 0.0..1.0.
返回值: Future<void> — Completes when applied.
setNoseNarrowmethodasyncFuture<void> setNoseNarrow(double amount)Nose-narrow reshape strength, 0.0..1.0 (0 = off).
参数
amountdouble必填Nose-narrow strength, 0.0..1.0.
返回值: Future<void> — Completes when applied.
setLipPlumpmethodasyncFuture<void> setLipPlump(double amount)Lip-plump reshape strength, 0.0..1.0 (0 = off).
参数
amountdouble必填Lip-plump strength, 0.0..1.0.
返回值: Future<void> — Completes when applied.
setChinShortenmethodasyncFuture<void> setChinShorten(double amount)Chin-shorten reshape strength, 0.0..1.0 (0 = off).
参数
amountdouble必填Chin-shorten strength, 0.0..1.0.
返回值: 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.
参数
enabledbool必填Whether the glasses overlay is shown.
返回值: Future<void> — Completes when applied.
setSunglassesmethodasyncFuture<void> setSunglasses(bool enabled)Toggle the sunglasses accessory overlay.
参数
enabledbool必填Whether the sunglasses overlay is shown.
返回值: Future<void> — Completes when applied.
setCrownmethodasyncFuture<void> setCrown(bool enabled)Toggle the crown accessory overlay.
参数
enabledbool必填Whether the crown overlay is shown.
返回值: Future<void> — Completes when applied.
setCatEarsmethodasyncFuture<void> setCatEars(bool enabled)Toggle the cat-ears accessory overlay.
参数
enabledbool必填Whether the cat-ears overlay is shown.
返回值: Future<void> — Completes when applied.
setFlowerCrownmethodasyncFuture<void> setFlowerCrown(bool enabled)Toggle the flower-crown accessory overlay.
参数
enabledbool必填Whether the flower-crown overlay is shown.
返回值: Future<void> — Completes when applied.
setPartyHatmethodasyncFuture<void> setPartyHat(bool enabled)Toggle the party-hat accessory overlay.
参数
enabledbool必填Whether the party-hat overlay is shown.
返回值: Future<void> — Completes when applied.
setBunnyEarsmethodasyncFuture<void> setBunnyEars(bool enabled)Toggle the bunny-ears accessory overlay.
参数
enabledbool必填Whether the bunny-ears overlay is shown.
返回值: Future<void> — Completes when applied.
setMustachemethodasyncFuture<void> setMustache(bool enabled)Toggle the mustache accessory overlay.
参数
enabledbool必填Whether the mustache overlay is shown.
返回值: Future<void> — Completes when applied.
setHalomethodasyncFuture<void> setHalo(bool enabled)Toggle the halo accessory overlay.
参数
enabledbool必填Whether the halo overlay is shown.
返回值: 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.
参数
contextBuildContext必填Build context to show the modal in.
processorVideoEffectsProcessor必填The processor the sheet controls.
heightFactordouble默认值 = defaultHeightFactor (0.25)Sheet height as a fraction of screen height.
返回值: 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).
返回值: 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.).
返回值: 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.
参数
keyString?必填Filter key to resolve.
返回值: 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.
参数
keyString?必填Filter key, or null for the 'none' preview.
返回值: String — Preview asset path.
VideoEffectsFilters.skinPreviewFormethodstatic String skinPreviewFor(String? key)Preview thumbnail asset path for a skin-tone preset (same portrait, skin LUT grade).
参数
keyString?必填Skin-tone key, or null for the 'none' preview.
返回值: 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.
参数
keyString必填Stable key passed to setFilter, e.g. 'fresh'.
labelString必填Human-readable label, e.g. 'Fresh'.
assetString必填Packaged 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.
参数
keyString?必填Skin-tone preset key.
返回值: 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.
返回值: List<VideoEffectAccessory> — Accessory catalog.
VideoEffectsAccessories.assetFormethodstatic String? assetFor(String? key)The PNG asset path for an accessory key, or null for an unknown key.
参数
keyString?必填Accessory key to resolve.
返回值: 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.
返回值: List<MakeupLook> — Curated full looks.
VideoEffectsMakeup.lookByKeymethodstatic MakeupLook? lookByKey(String? key)Look up a coordinated MakeupLook by key, or null for unknown/null.
参数
keyString?必填Look key.
返回值: 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.
参数
enabledbool默认值 = falseMaster switch.
smoothingdouble默认值 = 0Skin-smoothing strength.
filterKeyString?默认值 = nullActive LUT filter key, or null.
filterIntensitydouble默认值 = 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).
参数
……Any subset of EffectsState fields to override.
返回值: EffectsState — A new modified state.
toMapmethodMap<String, dynamic> toMap()Serialized form sent to the native pipeline over the method channel.
返回值: 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.
参数
keyString必填Stable preset key, e.g. 'nuanbai'.
labelString必填Human label, e.g. 'Warm'.
skinAssetString必填Skin-region LUT asset path.
bgAssetString必填Background LUT asset path.
VideoEffectAccessoryclassconst VideoEffectAccessory(this.key, this.label, this.asset)A landmark-positioned PNG accessory overlay.
参数
keyString必填Stable key matching the EffectsState toggle, e.g. 'glasses'.
labelString必填Human-readable label.
assetString必填Packaged 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.
参数
keyString必填Stable key, e.g. 'classic_red'.
labelString必填Human label, e.g. 'Classic Red'.
hexString必填#RRGGBB color.
opacitydouble必填Recommended 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.
参数
keyString必填Stable look key.
labelString必填Human label.
lipstickString?默认值 = nullLipstick hex.
lipFinishString默认值 = 'satin'matte, satin, or gloss.
eyeshadowString?默认值 = 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.
参数
framesint必填Total frames timed since last reset.
overBudgetint必填Frames 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.
返回值: double — Over-budget fraction.
overFrameRategetterdouble get overFrameRateFraction of frames slower than frameMs — i.e. frames that actually dropped.
返回值: 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.
参数
mMap<String, dynamic>?必填Native telemetry map.
返回值: 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.
参数
rgbaUint8List必填Graded pixels, RGBA8888 row-major, alpha opaque.
widthint必填Image width in pixels.
heightint必填Image 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().
参数
maxDeltaint必填Largest absolute per-channel delta (0..255).
meanDeltadouble必填Mean absolute per-channel delta over RGB.
pixelsint必填Total pixels compared.
diffPixelsint必填Pixels differing by more than threshold.
thresholdint必填Per-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.
参数
aUint8List必填First RGBA8888 buffer.
bUint8List必填Second RGBA8888 buffer.
thresholdint默认值 = 2Per-channel delta above which a pixel counts as different.
返回值: FrameDiff — The difference summary.