A/V Sync Receiver
A/V Sync Receiver operator properties for Script Engine. Measures how far apart audio and video are, in frames, on a layer fed by an A/V Sync Sender somewhere upstream. Put it on the layer whose input carries the test signal - after a round trip through a target and back in, or straight off the sender for a local baseline - and read MeasuredOffsetFrames. Positive means the picture is ahead of the sound. The operator only measures; the picture passes through untouched. Each frame carries a state number on both media, so a single frame is already a complete measurement. The window of readings exists only to shrug off the occasional frame that a codec mangles: check Locked before believing MeasuredOffsetFrames, because a receiver that is decoding nothing at all reports an unlocked zero rather than a confident one.
| Property | Type | Access | Description |
|---|---|---|---|
ShowAdvancedOptions |
bool |
get/set |
Show or hide the operator's advanced settings in the editor UI. [default=false]. The tolerances only need touching when a lossy transport starts refusing to decode, so they are out of the way until asked for. |
AvStatus |
AvSyncStatus |
get |
The headline verdict: in sync, out of sync, or no usable signal (read-only). Three states rather than two on purpose. NoSignal covers everything the receiver cannot draw a conclusion from - nothing arriving, a frozen feed, a stopped sender, or simply not enough frames yet - and is deliberately distinct from OutOfSync, which is a real fault in a signal that is genuinely being measured. Equivalent to reading Locked and then MeasuredOffsetFrames, in one value. |
MeasuredOffsetFrames |
int |
get |
Measured offset between picture and sound, in frames (read-only). Positive means video is ahead of audio, negative means audio is ahead. Only meaningful while Locked is true. The nine-state cycle can express -4 to +4 frames; a larger error wraps around and cannot be told from a smaller one of the opposite sign. |
MeasuredOffsetMs |
int |
get |
The same offset expressed in milliseconds (read-only). Derived from the frame's own audio length, so it follows the project frame rate without having to be told what it is. |
Locked |
bool |
get |
Whether the reading can be believed (read-only). True once enough of the window has decoded, enough of it agrees, and the signal was moving while it did so. Always test this before acting on MeasuredOffsetFrames - an unlocked reading of 0 means "no idea", not "in sync". A frozen picture, a stopped sender or a lost input all decode perfectly well and all keep yielding the same offset, so movement is checked separately: see Signal moving. |
Confidence |
int |
get |
How much of the window agreed with the reported offset, as a percentage (read-only). |
VideoDecodeRate |
int |
get |
Percentage of recent frames whose picture could be identified (read-only). A low figure over an otherwise healthy link usually means frames are being dropped or repeated, or that something is composited over the test picture. |
AudioDecodeRate |
int |
get |
Percentage of recent frames whose sound could be identified (read-only). |
SignalMoving |
bool |
get |
Whether the test signal is actually moving (read-only). False when the picture and the sound have stopped changing - a frozen feed, a lost input, or a sender that has been stopped. Such a signal still decodes, and still agrees with itself, so this is what stops it being reported as a confident measurement. |
StateAdvanceRate |
int |
get |
Percentage of recent frames on which the signal moved on (read-only). |
DecodedVideoState |
int |
get |
State number read from the current frame's picture, or -1 if it could not be identified (read-only). |
DecodedAudioState |
int |
get |
State number read from the current frame's sound, or -1 if it could not be identified (read-only). |
Status |
FormattedMessage |
get |
Status message describing what the receiver is currently able to see (read-only). |
AnalysisRegionPercent |
int |
get/set |
Size of the measured region, as a percentage of the frame, centred. [min=10, max=100, default=50]. Measuring the middle rather than the whole frame keeps letterbox bars, overlays and safe-area furniture out of the average - they would drag every reading towards black and shift all nine states together. |
ColorTolerance |
int |
get/set |
How far a measured colour may sit from a known state and still match. [min=4, max=160, default=48]. Distance is in RGB units, where the closest two states are about 220 apart, so there is a lot of room. Raise it for a heavily compressed or level-shifted path. |
MatchMarginPercent |
int |
get/set |
How much closer the best colour match must be than the next best, as a percentage. [min=100, max=400, default=150]. Guards against frames caught mid-transition, which can sit plausibly near a state while being near another too. Such frames are refused rather than guessed at. |
ToneDominancePercent |
int |
get/set |
How much stronger the winning tone must be than the other, as a percentage. [min=110, max=1000, default=300]. |
SilenceThresholdDb |
int |
get/set |
Level below which a channel counts as silent, in dBFS. [min=-80, max=-10, default=-34]. |
WindowFrames |
int |
get/set |
How many recent frames the reading is drawn from. [min=9, max=300, default=60]. Longer is steadier but slower to notice a change. Below one full nine-state cycle the level reference has nothing to calibrate against, so nine is the floor. |
RequiredAgreementPercent |
int |
get/set |
How much of the window must agree before the reading counts as locked. [min=50, max=100, default=80]. |
Inherits from: AbstractOperator, AbstractAudioMetering, NamedModel.
See also: A/V Sync Receiver in Operators — user-facing introduction, screenshots, and section summaries.