Table of Contents

Class BridgeAudioSinkSettings

Namespace
VisioForge.Core.Types.X.Bridge
Assembly
VisioForge.Core.dll

Bridge audio sink settings.

public class BridgeAudioSinkSettings

Inheritance

Inherited Members

Constructors

BridgeAudioSinkSettings(string, AudioInfoX)

Initializes a new instance of the VisioForge.Core.Types.X.Bridge.BridgeAudioSinkSettings class.

public BridgeAudioSinkSettings(string channel, AudioInfoX audioInfo)

Parameters

channel string

The channel.

audioInfo AudioInfoX

The audio information.

Properties

AudioInfo

Gets the optional audio information.

public AudioInfoX AudioInfo { get; set; }

Property Value

AudioInfoX

Channel

Gets the channel name to match bridge source and sink elements.

public string Channel { get; }

Property Value

string

CustomSyncFlag

Gets or sets an explicit value for the sync property of the interaudiosink element. null ⇒ leave the element default (GstBaseSink::sync == true); same null⇒element-default convention as VisioForge.Core.Types.X.Bridge.BridgeVideoSinkSettings.CustomSyncFlag.

public bool? CustomSyncFlag { get; set; }

Property Value

bool?

Remarks

Set this to false only for live-output / low-latency-monitoring topologies where the interaudiosink sits behind a leaky tee branch fed by a realtime producer (e.g. a Decklink-output bridge, a confidence monitor). In that case the GStreamer default sync == true makes the sink clock-wait per buffer, which collapses its consume rate so the leaky branch queue drops the bulk of the audio (observed: ~95 % loss → the inter-pipeline output is mostly silence). For a bridge fed by a non-realtime source whose only consumer is this sink, leave it null — there, sink-side sync is the thing pacing that source to realtime, and forcing it off would over-fill the inter-surface. Use the dedicated call site (your own code) to set this; do not change the SDK default.

RenderDelay

Gets or sets the render delay reported by interaudiosink.

public TimeSpan RenderDelay { get; set; }

Property Value

TimeSpan

Remarks

Maps directly to GstBaseSink::render-delay: a non-negative hint that the receiving end will hold buffers for this long after they arrive. The audio clock and downstream sync are shifted by this amount, which is how the live-output side compensates for renderer-side latency without introducing perceivable A/V drift.

Default is 50 ms (the historical hard-coded value before this property was added). Lower values (e.g. 10 ms) reduce end-to-end latency in low-latency live monitoring paths but raise the risk of underruns when the consumer side is briefly slow. Use 0 only if the receiving sink does its own latency compensation.

Negative values are clamped to Zero in the setter — the underlying render-delay property is a guint64, so a negative TimeSpan would cast- wrap to ~1.8e19 ns and break downstream sync forever.

This value MUST match the paired VisioForge.Core.Types.X.Bridge.BridgeAudioSourceSettings.LatencyTime on the other side of the channel: interaudiosrc propagates its latency-time to the inter-surface and interaudiosink.start() overwrites its own render-delay with that surface value. When the sink side starts before the source side (the typical case with separate input/output pipelines), interaudiosink reads the surface default (~100 ms) at start time; the SDK therefore re-applies this VisioForge.Core.Types.X.Bridge.BridgeAudioSinkSettings.RenderDelay once the owning MediaBlocksPipeline reaches PAUSED (see BridgeAudioSinkBlock.ReapplyRenderDelay), so set both ends to the same value.