iqa

IQA will perform full reference image quality assessment, with the first added pad being the reference.

It will perform comparisons on video streams with the same geometry.

The image output will be the heat map of differences, between the two pads with the highest measured difference.

For each reference frame, IQA will post a message containing a structure named IQA.

The only metric supported for now is "dssim", which will be available if https://github.com/pornel/dssim was installed on the system at the time that plugin was compiled.

For each metric activated, this structure will contain another structure, named after the metric.

The message will also contain a "time" field.

For example, if do-dssim is set to true, and there are two compared streams, the emitted structure will look like this:

IQA, dssim=(structure)"dssim,\ sink_1=(double)0.053621271267184856,
sink_2=(double)0.0082939683976297474;", time=(guint64)0;

Example launch line

 gst-launch-1.0 -m uridecodebin uri=file:///test/file/1 ! iqa name=iqa do-dssim=true \
 ! videoconvert ! autovideosink uridecodebin uri=file:///test/file/2 ! iqa.

This pipeline will output messages to the console for each set of compared frames.

Hierarchy

GObject
    ╰──GInitiallyUnowned
        ╰──GstObject
            ╰──GstElement
                ╰──GstAggregator
                    ╰──GstVideoAggregator
                        ╰──iqa

Factory details

Authors: – Mathieu Duponchelle

Classification:Filter/Analyzer/Video

Rank – primary

Plugin – gstiqa

Package – GStreamer Bad Plug-ins git

Pad Templates

sink_%u

video/x-raw:
         format: { AYUV, BGRA, ARGB, RGBA, ABGR, Y444, Y42B, YUY2, UYVY, YVYU, I420, YV12, NV12, NV21, Y41B, RGB, BGR, xRGB, xBGR, RGBx, BGRx }
          width: [ 1, 2147483647 ]
         height: [ 1, 2147483647 ]
      framerate: [ 0/1, 2147483647/1 ]

Presencerequest

Directionsink

Object typeGstVideoAggregatorConvertPad


src

video/x-raw:
         format: { RGBA }
          width: [ 1, 2147483647 ]
         height: [ 1, 2147483647 ]
      framerate: [ 0/1, 2147483647/1 ]

Presencealways

Directionsrc

Object typeGstAggregatorPad


Properties

do-dssim

“do-dssim” gboolean

Run structural similarity checks

Flags : Read / Write

Default value : false


dssim-error-threshold

“dssim-error-threshold” gdouble

dssim value over which the element will post an error message on the bus. A value < 0.0 means 'disabled'.

Flags : Read / Write

Default value : 0


latency

“latency” guint64

Additional latency in live mode to allow upstream to take longer to produce buffers for the current position (in nanoseconds)

Flags : Read / Write

Default value : 0


min-upstream-latency

“min-upstream-latency” guint64

When sources with a higher latency are expected to be plugged in dynamically after the aggregator has started playing, this allows overriding the minimum latency reported by the initial source(s). This is only taken into account when larger than the actually reported minimum latency. (nanoseconds)

Flags : Read / Write

Default value : 0


start-time

“start-time” guint64

Start time to use if start-time-selection=set

Flags : Read / Write

Default value : 18446744073709551615


start-time-selection

“start-time-selection” GstAggregatorStartTimeSelection *

Decides which start time is output

Flags : Read / Write

Default value : zero (0)


The results of the search are