Vp8CumulativeStats class

Lifetime-cumulative encoder telemetry. Updated after every non-dropped frame (with droppedFrames bumped on drops). Cleared by Vp8Encoder.reset. Read-only from outside the encoder.

Constructors

Vp8CumulativeStats({int rollingWindowFrames = 0})

Properties

altrefRefMbs → int
no setter
altrefRefMbsPercent → double
altrefRefMbs as a percentage of totalMbs (0.0 .. 100.0).
no setter
bytesEmitted → int
no setter
denoisedMbs → int
Lifetime total of Vp8FrameStats.denoisedMbCount across all encoded frames (MBs whose source was replaced by the spatio-temporal denoiser before being fed to the encoder).
no setter
denoisedMbsPercent → double
denoisedMbs as a percentage of totalMbs (0.0 .. 100.0).
no setter
droppedFrames → int
no setter
dropRatePercent → double
Fraction of all attempted frames that were dropped by the rate controller, expressed as a percent (0.0 .. 100.0). The denominator is framesEncoded + droppedFrames. 0.0 when no frames have been attempted yet.
no setter
framesEncoded → int
Number of non-dropped frames encoded since construction / last reset.
no setter
goldenRefMbs → int
no setter
goldenRefMbsPercent → double
goldenRefMbs as a percentage of totalMbs (0.0 .. 100.0).
no setter
hashCode → int
The hash code for this object.
no setterinherited
interframeBytes → int
Sum of Vp8FrameStats.bytesEmitted across all non-keyframe frames (= bytesEmitted - keyframeBytes).
no setter
interframeBytesPercent → double
interframeBytes as a percentage of bytesEmitted (0.0 .. 100.0). 0.0 when no bytes have been emitted yet.
no setter
interframes → int
Lifetime count of non-dropped non-keyframe frames (= framesEncoded - keyframes).
no setter
interMbs → int
Lifetime count of inter-coded MBs (= totalMbs - intraMbs).
no setter
interMbsPercent → double
interMbs as a percentage of totalMbs (0.0 .. 100.0). Always equals 100.0 - intraMbsPercent once any frame has been encoded.
no setter
intraMbs → int
no setter
intraMbsPercent → double
intraMbs as a percentage of totalMbs (0.0 .. 100.0). 0.0 when no frames have been encoded.
no setter
keyframeBytes → int
Sum of Vp8FrameStats.bytesEmitted across all keyframes.
no setter
keyframeBytesPercent → double
keyframeBytes as a percentage of bytesEmitted (0.0 .. 100.0). 0.0 when no bytes have been emitted yet.
no setter
keyframeRatePercent → double
Keyframes as a percentage of all non-dropped encoded frames (0.0 .. 100.0). 0.0 when no frames have been encoded.
no setter
keyframes → int
no setter
lifetimeMaxAbsMvQuarterPel → int
Largest Vp8FrameStats.maxAbsMvQuarterPel seen since the last reset, or 0 with no frames yet. Quarter-pel units.
no setter
maxEncodeMicros → int
Largest single-frame encode time in microseconds seen since the last reset, or 0 with no frames yet.
no setter
maxFrameBytes → int
Largest single-frame encoded size in bytes seen since the last reset, or 0 with no frames yet.
no setter
maxFrameFilterLevel → int
Largest Vp8FrameStats.filterLevel seen since the last reset, or 0 with no frames yet.
no setter
maxFrameQi → int
Largest Vp8FrameStats.qi seen since the last reset, or 0 with no frames yet.
no setter
maxPsnrY → double
Largest Vp8FrameStats.psnrY seen since the last reset, or 0.0 with no frames yet.
no setter
meanEncodeMicros → double
Mean per-frame encode time in microseconds, or 0.0 when no frames have been encoded yet.
no setter
meanFrameBytes → double
Mean encoded bytes per non-dropped frame, or 0.0 when no frames have been encoded yet.
no setter
meanFrameFilterLevel → double
Arithmetic mean of Vp8FrameStats.filterLevel across all encoded frames (0.0 when no frames have been encoded yet).
no setter
meanFrameMeanAbsMvQuarterPel → double
Arithmetic mean of Vp8FrameStats.meanAbsMvQuarterPel across all encoded frames (0.0 with no frames yet). Quarter-pel units.
no setter
meanFrameQi → double
Arithmetic mean of Vp8FrameStats.qi across all encoded frames (0.0 when no frames have been encoded yet). Reflects the per-frame QI actually used (after clamps / rate controller).
no setter
meanInterframeBytes → double
Mean interframe byte size (0.0 if no interframes have been emitted).
no setter
meanKeyframeBytes → double
Mean keyframe byte size (0.0 if no keyframes have been emitted).
no setter
meanPsnrY → double
Arithmetic mean of Vp8FrameStats.psnrY across all encoded frames, or 0.0 when no frames have been encoded yet. Capped values (99.0 for an exact match) are included verbatim.
no setter
minFrameBytes → int
Smallest single-frame encoded size in bytes seen since the last reset, or 0 with no frames yet.
no setter
minFrameFilterLevel → int
Smallest Vp8FrameStats.filterLevel seen since the last reset, or 0 with no frames yet.
no setter
minFrameQi → int
Smallest Vp8FrameStats.qi seen since the last reset, or 0 with no frames yet.
no setter
minPsnrY → double
Smallest Vp8FrameStats.psnrY seen since the last reset, or 0.0 with no frames yet.
no setter
nearestMvMbs → int
no setter
nearestMvMbsPercent → double
nearestMvMbs as a percentage of totalMbs (0.0 .. 100.0).
no setter
nearMvMbs → int
no setter
nearMvMbsPercent → double
nearMvMbs as a percentage of totalMbs (0.0 .. 100.0).
no setter
newMvAltrefMbs → int
no setter
newMvAltrefMbsPercent → double
newMvAltrefMbs as a percentage of totalMbs (0.0 .. 100.0).
no setter
newMvGoldenMbs → int
no setter
newMvGoldenMbsPercent → double
newMvGoldenMbs as a percentage of totalMbs (0.0 .. 100.0).
no setter
newMvLastMbs → int
Lifetime totals of Vp8FrameStats.newMvLastMbCount / newMvGoldenMbCount / newMvAltrefMbCount across all encoded frames. Their sum equals the lifetime NEWMV-MB total.
no setter
newMvLastMbsPercent → double
newMvLastMbs as a percentage of totalMbs (0.0 .. 100.0).
no setter
rollingEncodeFps → double
Throughput (frames/sec) computed over the rolling window: rollingWindowFill * 1e6 / sum(encodeMicros over the window). 0.0 when rolling stats are disabled, the window is empty, or every recorded micros value in the window is zero.
no setter
rollingMeanEncodeMicros → double
Mean of Vp8FrameStats.encodeDurationMicros across the most recent up to rollingWindowFrames non-dropped frames. 0.0 when rolling stats are disabled or no frames have been encoded yet.
no setter
rollingMeanFrameBytes → double
Mean of Vp8FrameStats.bytesEmitted across the most recent up to rollingWindowFrames non-dropped frames. 0.0 when rolling stats are disabled or no frames have been encoded yet.
no setter
rollingMeanPsnrY → double
Mean of Vp8FrameStats.psnrY across the most recent up to rollingWindowFrames non-dropped frames. 0.0 when rolling stats are disabled or no frames have been encoded yet.
no setter
rollingWindowFill → int
Number of frames currently held in the rolling-stats ring buffer (min(framesEncoded, rollingWindowFrames)). 0 when rolling stats are disabled (rollingWindowFrames == 0).
no setter
rollingWindowFrames → int
Size of the rolling-stats ring buffer (0 = rolling stats disabled; all rolling* getters return 0.0). Configured via Vp8Encoder.rollingWindowFrames.
final
runningEncodeFps → double
Effective long-running encoder throughput in frames per second (= framesEncoded * 1e6 / totalEncodeMicros). 0.0 when no frames have been encoded or every recorded frame ran in zero microseconds (Stopwatch granularity floor).
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
staticShortCircuitMbs → int
no setter
staticShortCircuitMbsPercent → double
staticShortCircuitMbs as a percentage of totalMbs (0.0 .. 100.0).
no setter
totalEncodeMicros → int
Cumulative wall-clock microseconds spent encoding (sum of Vp8FrameStats.encodeDurationMicros). Useful to derive a long-running average encode FPS = framesEncoded * 1e6 / totalEncodeMicros.
no setter
totalMbs → int
Lifetime total of Vp8FrameStats.totalMbCount across all non-dropped frames. Acts as the denominator for all the *MbsPercent getters; equals framesEncoded * mbsPerFrame for a fixed-resolution stream.
no setter
zeroMvMbs → int
Lifetime totals of Vp8FrameStats.zeroMvMbCount / nearestMvMbCount / nearMvMbCount across all encoded frames.
no setter
zeroMvMbsPercent → double
zeroMvMbs as a percentage of totalMbs (0.0 .. 100.0).
no setter

Methods

estimatedBitrateBps({required double framerate}) → double
Derived estimate of the steady-state output bitrate in bits/sec, assuming the supplied framerate (since dropped frames are excluded from bytesEmitted / framesEncoded, pass the source framerate -- not the post-drop output rate). Returns 0.0 when no frames have been encoded yet. framerate must be > 0.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
percentileEncodeMicros(double q) → double
Linear-interpolation percentile (q in [0, 100]) of Vp8FrameStats.encodeDurationMicros over the most recent rolling window. Returns 0.0 when rolling stats are disabled or the window is empty.
percentileFrameBytes(double q) → double
Linear-interpolation percentile (q in [0, 100]) of Vp8FrameStats.bytesEmitted over the most recent up to rollingWindowFrames non-dropped frames. Returns 0.0 when rolling stats are disabled or the window is empty. Uses the standard "linear interpolation between closest ranks" definition: rank = q/100 * (n-1).
percentilePsnrY(double q) → double
Linear-interpolation percentile (q in [0, 100]) of Vp8FrameStats.psnrY over the most recent rolling window. Returns 0.0 when rolling stats are disabled or the window is empty.
resetStats() → void
Zero every counter, byte total, MB tally, distribution bound, and rolling-window sample in this snapshot. Does NOT touch the owning Vp8Encoder's reference buffers or rate controller -- use Vp8Encoder.reset for that. Useful for ABR drivers that want a fresh per-segment telemetry view without forcing a keyframe.
rollingEstimatedBitrateBps({required double framerate}) → double
Derived rolling-window bitrate estimate (bits/sec) using the supplied framerate, analogous to estimatedBitrateBps but computed only over the most recent rollingWindowFrames non-dropped frames. 0.0 when rolling stats are disabled or the window is empty. framerate must be > 0.
toMap() → Map<String, num>
JSON-friendly snapshot of every public counter / derived value. Useful for log lines, metrics exporters, and golden tests. All numeric values are plain nums.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited