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
revision1

This document describe the details of the following,

  • API for multimedia applications
  • Plugin architecture
  • Pipeline architecture
  • Mechanism for media type handling, negotiation, synchronization

...

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

Architecture

draw.io Diagram
diagramNameGStreamer Architecture.drawio
revision1
Image Removed

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

draw.io Diagram
diagramNameGST Element Link.drawio
revision1
Image Removed

GST-Element Pad

Is defined by two properties:

...

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

draw.io Diagram
diagramNameCommunication Control Flow.drawio
revision1
Image Removed

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.

draw.io Diagram
diagramNamepipeline.drawio
revision
Image Removed
1

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. 

...

  1. GST_STATE_NULL: default state; no resources are allocated in this state
  2. GST_STATE_READY: an element has allocated all of its global resources within the stream, but the stream is NOT open yet.
  3. GST_STATE_PAUSED: an element has opened the stream, but no actively processing it. (clock does NOT run)
  4. GST_STATE_PLAYING: an element maintains the open stream while processing it. (clock starts)

Porting

The following is a list of components that might be needed to properly test implementation of the HAL GST components

  1. aesdecyrpt
  2. aesencrypt
  3. dtcpdecrypt
  4. dtcpencrypt
  5. httpsink
  6. rbifilter