avsyncvideotestsrc

avsyncvideotestsrc is one half of a phase-locked audio/video test pair for measuring end-to-end A/V synchronisation. It renders a white vertical bar on black that crosses screen centre exactly on every pip instant and sweeps fully across in one pip interval, so the bar-centre crossing lines up with the tone pip from avsyncaudiotestsrc.

Each frame also carries its frame index and a phase-locked CEA-708 caption (alternating "TICK"/"TOCK") as ancillary data, so an st2038extractor can split the ANC into its own flow and a downstream analyser can check that video, audio and caption alignment survive the round trip.

Example

Eyeball-and-ear check — the bar crosses centre exactly on the beep:

 gst-launch-1.0 \
   avsyncvideotestsrc is-live=true ! videoconvert ! autovideosink \
   avsyncaudiotestsrc is-live=true ! audioconvert ! autoaudiosink

Phase locking

The content is derived purely from each buffer's running time and the shared pip-interval, so the two sources are aligned by construction and any skew seen downstream was introduced by the pipeline under test. pip-interval must be set to the same value on both elements. Set is-live=true to pace output against the pipeline clock for live capture or transmit pipelines.

Hierarchy

GObject
    ╰──GInitiallyUnowned
        ╰──GstObject
            ╰──GstElement
                ╰──GstBaseSrc
                    ╰──GstPushSrc
                        ╰──avsyncvideotestsrc

Factory details

Authors: – NVIDIA Corporation

Classification:Source/Video

Rank – none

Plugin – avsynctest

Package – gst-avsynctest-rs

Pad Templates

src

video/x-raw:
         format: { v210, UYVP }
          width: [ 1, 2147483647 ]
         height: [ 1, 2147483647 ]
      framerate: { (fraction)24000/1001, (fraction)24/1, (fraction)25/1, (fraction)30000/1001, (fraction)30/1, (fraction)50/1, (fraction)60000/1001, (fraction)60/1 }

Presencealways

Directionsrc

Object type – GstPad


Properties

framerate

“framerate” GstFraction*

Default output framerate when downstream leaves it open

Flags : Read / Write

Default value : 30000/1001


height

“height” gint

Default output height when downstream leaves it open

Flags : Read / Write

Default value : 720


is-live

“is-live” gboolean

Whether to pace output against the pipeline clock

Flags : Read / Write

Default value : false


pip-interval

“pip-interval” guint64

Nanoseconds between bar-centre crossings (must match the audio source)

Flags : Read / Write

Default value : 1000000000


width

“width” gint

Default output width when downstream leaves it open

Flags : Read / Write

Default value : 1280


The results of the search are