GstObuMetadata User Guide

From RidgeRun Developer Wiki
Revision as of 12:36, 20 February 2024 by Spalli (talk | contribs)



Previous: Getting Started/Building GstObuMetadata Index Next: Examples





Adding metadata support to your application involves two main tasks: on the sending side injecting metadata on the pipeline and for the receiving side extracting the metadata. RidgeRun's Gstreamer GstObuMetadata plugin provides elements for both tasks to apply in an AV1 video stream.

ObuInject element

ObuInject element allows to inject metadata to the AV1 buffer. You can set the desire metadata using the element insertion properties or insert a buffer with a GstMeta property.

Below you will find an overview of the capabilities and properties of the obuinject element.

The full output of the command gst-inspect-1.0 obuinject is the following:

Factory Details:
  Rank                     none (0)
  Long-name                OBU inject metadata
  Klass                    Generic
  Description              adds metadata as Open Bitstream Units (OBU)
  Author                   <kimberly.carvajal@ridgerun.com>

Plugin Details:
  Name                     obu
  Description              Gstreamer plugin to add metadata as Open Bitstream Units (OBU)
  Filename                 /home/kcarvajal/work/devdirs/gstObuMetadata/install/lib/x86_64-linux-gnu/gstreamer-1.0/libobu.so
  Version                  0.1.0
  License                  Proprietary
  Source module            gst-obu
  Binary package           gst-obu
  Origin URL               https://www.ridgerun.com/

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseTransform
                         +----GstObuInject

Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-av1
          stream-format: obu-stream
  
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-av1
          stream-format: obu-stream

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SINK: 'sink'
    Pad Template: 'sink'
  SRC: 'src'
    Pad Template: 'src'

Element Properties:

  metadata            : A metadata string to be pushed.
                        flags: readable, writable
                        String. Default: null
  
  metadata-binary     : A binary to be pushed as metadata.
                        flags: readable, writable
                        Boxed pointer of type "GByteArray"
  
  name                : The name of the object
                        flags: readable, writable
                        String. Default: "obuinject0"
  
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"
  
  qos                 : Handle Quality-of-Service events
                        flags: readable, writable
                        Boolean. Default: false

Properties

  • metadata: With this property it is possible to insert a string message. Note that it only add the message to the first buffer. Check the Gstreamer pipelines section for use case examples.
  • metadata-binary: With this property it is possible to insert a binary metadata to the video stream. Check the C Application Example section for an use case example.


ObuMetaTester: element

Obumetatester is a test element to add a GstMeta message to the video stream buffers followed by the obuinject which will insert the message to the AV1 buffer.

Below you will find an overview of the capabilities and properties of the obumetatester element.

The full output of the command gst-inspect-1.0 obumetatester is the following:

Factory Details:
  Rank                     none (0)
  Long-name                Helper element to insert a test GstObuMeta to buffers.
  Klass                    Generic
  Description              Helper element to insert a test GstObuMeta to buffers.
  Author                   Kimberly Carvajal <kimberly.carvajal@ridgerun.com>

Plugin Details:
  Name                     obu
  Description              Gstreamer plugin to add metadata as Open Bitstream Units (OBU)
  Filename                 /home/kcarvajal/work/devdirs/gstObuMetadata/install/lib/x86_64-linux-gnu/gstreamer-1.0/libobu.so
  Version                  0.1.0
  License                  Proprietary
  Source module            gst-obu
  Binary package           gst-obu
  Origin URL               https://www.ridgerun.com/

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseTransform
                         +----GstObuMetaTester

Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-av1
          stream-format: obu-stream
  
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-av1
          stream-format: obu-stream

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SINK: 'sink'
    Pad Template: 'sink'
  SRC: 'src'
    Pad Template: 'src'

Element Properties:

  name                : The name of the object
                        flags: readable, writable
                        String. Default: "obumetatester0"
  
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"
  
  qos                 : Handle Quality-of-Service events
                        flags: readable, writable
                        Boolean. Default: false

ObuExtract element

ObuExtract element allows to extract metadata inserted in an AV1 buffer. The element will extract the metadata form the AV1 buffer and add it as a GstObuMeta to the output buffer. The obuextract element also includes a signal property to emit a signal and handle the extracted metadata.

Below you will find an overview of the capabilities and properties of the obuextract element.

The full output of the command gst-inspect-1.0 obuextract is the following:

Factory Details:
  Rank                     none (0)
  Long-name                OBU extract metadata
  Klass                    Generic
  Description              extracts metadata from Open Bitstream Units (OBU)
  Author                   <kimberly.carvajal@ridgerun.com>

Plugin Details:
  Name                     obu
  Description              Gstreamer plugin to add metadata as Open Bitstream Units (OBU)
  Filename                 /home/kcarvajal/work/devdirs/gstObuMetadata/install/lib/x86_64-linux-gnu/gstreamer-1.0/libobu.so
  Version                  0.1.0
  License                  Proprietary
  Source module            gst-obu
  Binary package           gst-obu
  Origin URL               https://www.ridgerun.com/

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseTransform
                         +----GstObuExtract

Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-av1
  
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-av1

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SINK: 'sink'
    Pad Template: 'sink'
  SRC: 'src'
    Pad Template: 'src'

Element Properties:

  name                : The name of the object
                        flags: readable, writable
                        String. Default: "obuextract0"
  
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"
  
  qos                 : Handle Quality-of-Service events
                        flags: readable, writable
                        Boolean. Default: false
  
  signal-new-metadata : Send a signal on metadata
                        flags: readable, writable
                        Boolean. Default: false
  

Element Signals:

  "new-metadata" :  void user_function (GstElement * object,
                                        guint arg0,
                                        gpointer arg1,
                                        gpointer user_data);

Properties

  • signal-new-metadata: Boolean property to enable or disable the new-metadata signal. Setting this property to TRUE will send a signal when the metadata is received.

Signals

  • new-metadata: Signal send when metadata is received, with this signal is possible to handle the inserted metadata.



Previous: Getting Started/Building GstObuMetadata Index Next: Examples