Versions Compared

Key

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

Table of Contents

Introduction

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