pub struct BaySignalDetails {
pub frame_rate: f64,
pub tmds_clock: u32,
pub status: BayStatus,
pub scaling: MxrSignalType,
pub clock_rate: u32,
pub audio: Option<BayAudioDetails>,
}Expand description
What a bay signal status report carries beyond the signal-detected flag and the human-readable signal type.
On a decoder’s output bay the signal description is a snapshot of the
routed source, taken when that stream last started. Nothing refreshes it
while the route holds, so a source that changes format in place leaves
frame_rate, tmds_clock,
audio and the bay’s signal description all reading the
format from before the change. Re-routing the bay does resample them, unless
the newly selected source’s record has not arrived yet - which leaves the
previous values standing rather than clearing them.
status and scaling are re-stamped on
every scaling change too, so they can be newer than the description beside
them. clock_rate is computed from the snapshot and
carries its age despite sitting with them.
For a decoder’s current input format, read the input bay it is routed to. That record is refreshed by the source’s own reports, and it is the reason a decoder’s own output bay can disagree with the picture on the cable.
Fields§
§frame_rate: f64Frame rate in Hz, already corrected for a 1000/1001 clock.
tmds_clock: u32TMDS clock rate in Hz.
status: BayStatusThe bay status word from the report’s bay block.
scaling: MxrSignalTypeThe format the bay is scaling to, not MxrSignalType::is_set while it
is not scaling.
clock_rate: u32Video clock rate in Hz, computed rather than measured: the pixel clock of
scaling while the bay scales, and otherwise the
signal description’s own, halved for 4:2:0 and scaled by colour depth.
audio: Option<BayAudioDetails>The audio alongside the video, absent when the report carried no audio block.