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 |
---|
diagramName | Gstreamer.drawio |
---|
revision | 1 |
---|
|
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 |
---|
diagramName | GStreamer Architecture.drawio |
---|
revision | 1 |
---|
|
Image RemovedGST-Element
- Has one specific function (read, decode, ...)
- Has two Pads:
- source (output)
- 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 |
---|
diagramName | GST Element Link.drawio |
---|
revision | 1 |
---|
|
Image RemovedGST-Element Pad
Is defined by two properties:
...
- Downstream : src element to sink element
- Upstream: sink element to src element
draw.io Diagram |
---|
diagramName | Communication Control Flow.drawio |
---|
revision | 1 |
---|
|
Image RemovedBuffer 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: | Queries Request for a specific stream property related to progress tracking. |
---|
GST-Element Types
- Source: generates data
- Filter: performs task on input data to send proper output data (convertors, demuxers, muxers, codecs etc)
- Sink: receives data
These 3 types of elements create a simple GST-Pipeline.
draw.io Diagram |
---|
diagramName | pipeline.drawio |
---|
revision |
---|
|
Image RemovedPipelining 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.
...
- GST_STATE_NULL: default state; no resources are allocated in this state
- GST_STATE_READY: an element has allocated all of its global resources within the stream, but the stream is NOT open yet.
- GST_STATE_PAUSED: an element has opened the stream, but no actively processing it. (clock does NOT run)
- 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
- aesdecyrpt
- aesencrypt
- dtcpdecrypt
- dtcpencrypt
- httpsink
- rbifilter