Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The purpose of this document is to simplify some of the terms, descriptions, and mechanisms of the GStreamer core. It will, initially, serve as a foundation to help model and test the GStreamer implementation in the RDK/HAL system.

draw.io Diagram
diagramNameGstreamer.drawio
revision
Gliffy Diagram
macroId23fea3dd-042f-4440-87c9-69303bc42ed2
nameGstreamer
pagePin1

This document describe the details of the following,

...

  • Adheres to GObject (Glib 2.0)
  • Uses signals and object properties

Architecture

Gliffy Diagramdrawio
diagramName
macroIdd33e0f18-7df2-4f19-b961-ec37c1fb994c
displayNameGStreamer Architecture.drawio
nameGStreamer Architecture
pagePin2
revision1

GST-Element

  • Has one specific function (read, decode, ...)
  • Has two Pads:
    1. source (output)
    2. sink (input)
  • GStreamer core views elements as blocks of bytes
  • Linked or chained elements create a pipeline that performs a specific task

Gliffy Diagramdrawio
diagramName
macroId04a0e411-e99f-4ab9-9dbc-92f3087872c8
nameGST Element Link.drawio
pagePinrevision1

GST-Element Pad

Is defined by two properties:

...

  1. Downstream : src element to sink element
  2. Upstream: sink element to src element

Gliffy Diagramdrawio
displayNamediagramNameCommunication Control Flow.drawio
nameCommunication Control Flow
revision1pagePin4

Buffer

Actual media data.

A simple buffer consists of:

  • Pointers to memory objects.
  • Timestamp
  • Reference count
  • Flags

Events

Control information.

Messages

Information on elements or pipeline.

A message consist of:

  • Source
  • Type
  • Timestamp

Queries

Request for a specific stream property related to progress tracking.

...

These 3 types of elements create a simple GST-Pipeline.

Gliffy Diagramdrawio
diagramNamepipeline.drawio
revision1
macroId7da0c9ac-20d0-41c5-881c-30a8f83dda32
displayNamepipeline
namepipeline
pagePin2

Pipelining is an implementation technique whereby multiple instructions are overlapped in execution; it takes advantage of parallelism that exists among the actions needed to execute an instruction. 

...