GStreamer 1.0 Codec Engine Plugin: Difference between revisions
mNo edit summary |
|||
(16 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
= | <seo title="GStreamer 1.0 Codec Engine Plugin | GStreamer 1.0 Codec | RidgeRun" titlemode="replace" keywords="GStreamer, Linux SDK, Embedded Linux, Device Drivers, NVIDIA, Xilinx, TI, NXP, GStreamer Multimedia Framework, GStreamer, GStreamer 1.0,GStreamer 1.0 Codec, GStreamer 1.0 Codec Engine, GStreamer 1.0 Codec Engine Plugin, TI DM368, DM36x, DVSDK, TI Codec Engine." description="Learn about GStreamer 1.0 Codec Engine Plugin in this RidgeRun developer wiki page."></seo> | ||
= Documentation = | <table> | ||
<tr> | |||
<td><div class="clear; float:right">__TOC__</div></td> | |||
<td valign=top> | |||
{{ContactUs Button}} | |||
</td> | |||
</table> | |||
== Overview of GStreamer 1.0 Codec Engine Plugin== | |||
=== Previous plugin === | |||
== Documentation == | |||
The Doxygen documentation can be found at GStreamer 1.0 Codec Engine Plugin Design Documentation. | The Doxygen documentation can be found at GStreamer 1.0 Codec Engine Plugin Design Documentation. | ||
= Supported hardware = | == gst-inspect output == | ||
<pre> | |||
~ # gst-inspect-1.0 ce_h264enc | |||
Factory Details: | |||
Rank primary (256) | |||
Long-name CE H.264 video encoder | |||
Klass Codec/Encoder/Video | |||
Description Encode video in H.264 format | |||
Author Melissa Montero <melissa.montero@ridgerun.com> | |||
Plugin Details: | |||
Name ceplugin | |||
Description GStreamer Plugin for codecs based on CodecEngine API for Texas Instruments SoC | |||
Filename /usr/lib/gstreamer-1.0/libgstce.so | |||
Version 0.0 | |||
Source module gst-ce-plugins | |||
Binary package gst-ce-plugin | |||
Origin URL RidgeRun | |||
GObject | |||
+----GInitiallyUnowned | |||
+----GstObject | |||
+----GstElement | |||
+----GstVideoEncoder | |||
+----GstCeVidEnc | |||
+----GstCeH264Enc | |||
Implemented Interfaces: | |||
GstPreset | |||
Pad Templates: | |||
SRC template: 'src' | |||
Availability: Always | |||
Capabilities: | |||
video/x-h264 | |||
framerate: [ 0/1, 120/1 ] | |||
width: [ 128, 4080 ] | |||
height: [ 96, 4096 ] | |||
stream-format: { (string)avc, (string)byte-stream } | |||
SINK template: 'sink' | |||
Availability: Always | |||
Capabilities: | |||
video/x-raw | |||
format: NV12 | |||
framerate: [ 0/1, 120/1 ] | |||
width: [ 128, 4080 ] | |||
height: [ 96, 4096 ] | |||
Element Flags: | |||
no flags set | |||
Element Implementation: | |||
Has change_state() function: gst_video_encoder_change_state | |||
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: "ceh264enc0" | |||
parent : The parent of the object | |||
flags: readable, writable | |||
Object of type "GstObject" | |||
rate-control : Encoding rate control | |||
flags: readable, writable | |||
Enum "GstCeVidEncRate" Default: 1, "CBR" | |||
(1): CBR - Constant Bit Rate, for video conferencing | |||
(2): VBR - Variable Bit Rate, for storage | |||
(3): Two Pass - Two pass rate, for non real-time applications | |||
(4): None - No Rate Control is used | |||
(5): User - User defined on algorithm specific properties | |||
encoding-preset : Encoding preset | |||
flags: readable, writable | |||
Enum "GstCeVidEncPreset" Default: 2, "speed" | |||
(1): quality - High quality | |||
(2): speed - High speed, for storage | |||
(3): user - User defined on algorithm specific properties | |||
max-bitrate : Maximum bit rate to be supported in bits per second | |||
flags: readable, writable | |||
Integer. Range: 1000 - 50000000 Default: 6000000 | |||
target-bitrate : Target bit rate in bits per second, should be <= than the maxbitrate | |||
flags: readable, writable | |||
Integer. Range: 1000 - 20000000 Default: 6000000 | |||
intraframe-interval : Interval between two consecutive intra frames | |||
flags: readable, writable | |||
Integer. Range: 0 - 2147483647 Default: 30 | |||
force-frame : Force next frame to be encoded as a specific type | |||
flags: readable, writable | |||
Enum "GstCeVidEncForce" Default: -1, "na" | |||
(-1): na - No forcing of any specific frame type for the frame | |||
(0): i-frame - Force the frame to be encoded as I frame | |||
(3): idr-frame - Force the frame to be encoded as an IDR frame | |||
num-out-buffers : Number of buffers to be used in the output buffer pool | |||
flags: readable, writable | |||
Integer. Range: 3 - 2147483647 Default: 3 | |||
min-size-percentage : Define the minimum size acceptable for an output buffer,as a percentage of the input buffer size recomended by the encoder.The encoder will use the defined smaller buffer when there is not enough free memory. Only set this property to less than 100 if you can ensure the encoder will compress the data enough to fit in the smaller buffer and you don't want to drop buffers | |||
flags: readable, writable | |||
Integer. Range: 10 - 100 Default: 100 | |||
fix-timestamp : Set if the buffers timestamp should be changed | |||
to follow pipeline framerate. This property ignores input buffer timestamp | |||
flags: readable, writable | |||
Boolean. Default: false | |||
bytestream : Generate h264 NAL unit stream instead of 'packetized' stream (no codec_data is generated) | |||
flags: readable, writable | |||
Boolean. Default: false | |||
headers : Include on the stream the SPS/PPS headers | |||
flags: readable, writable | |||
Boolean. Default: false | |||
single-nalu : Buffers contains a single NALU | |||
flags: readable, writable | |||
Boolean. Default: false | |||
profile : Profile identification for the encoder | |||
flags: readable, writable | |||
Enum "GstCeH264EncProfile" Default: 100, "high" | |||
(66): base - Base line | |||
(77): main - Main profile | |||
(100): high - High profile | |||
level : Level identification for the encoder | |||
flags: readable, writable | |||
Enum "GstCeH264EncLevel" Default: 40, "4.0" | |||
(10): 1.0 - Level 1.0 | |||
(9): 1.b - Level 1.b | |||
(11): 1.1 - Level 1.1 | |||
(12): 1.2 - Level 1.2 | |||
(13): 1.3 - Level 1.3 | |||
(20): 2.0 - Level 2.0 | |||
(21): 2.1 - Level 2.1 | |||
(22): 2.2 - Level 2.2 | |||
(30): 3.0 - Level 3.0 | |||
(31): 3.1 - Level 3.1 | |||
(32): 3.2 - Level 3.2 | |||
(40): 4.0 - Level 4.0 | |||
(41): 4.1 - Level 4.1 | |||
(42): 4.2 - Level 4.2 | |||
(50): 5.0 - Level 5.0 | |||
(51): 5.1 - Level 5.1 | |||
entropy : Flag for Entropy Coding Mode | |||
flags: readable, writable | |||
Enum "GstCeH264EncEntropy" Default: 1, "cabac" | |||
(0): cavlc - CAVLC | |||
(1): cabac - CABAC | |||
t8x8intra : Enable 8x8 Transform for I Frame (only for High Profile) | |||
flags: readable, writable | |||
Boolean. Default: true | |||
t8x8inter : Enable 8x8 Transform for P Frame (only for High Profile) | |||
flags: readable, writable | |||
Boolean. Default: false | |||
encquality : Encoder quality setting | |||
flags: readable, writable | |||
Enum "GstCeVidEncQuality" Default: 2, "speed" | |||
(0): backward - version 1.1, backward compatible mode | |||
(1): quality - High quality mode | |||
(2): speed - High speed mode | |||
enabletcm : When encquality is 0, this flag controls if TCM memory should be used (otherwise is ignored and default to yes) | |||
flags: readable, writable | |||
Boolean. Default: false | |||
ddrbuf : Use DDR buffers instead of IMCOP buffers | |||
flags: readable, writable | |||
Boolean. Default: false | |||
ntemplayers : Number of temporal Layers for SVC | |||
flags: readable, writable | |||
Enum "GstCeH264EncLayers" Default: 0, "one" | |||
(0): one - One layer (Stream with frame rate: F) | |||
(1): two - Two layers (Stream with frame rate: F, F/2) | |||
(2): three - Three layers (Stream with frame rate: F, F/2, F/8) | |||
(255): three - all P refer to previous I or IDR frame (Stream with frame rate: F) | |||
svcsyntaxen : Control for SVC syntax and DPB management | |||
flags: readable, writable | |||
Enum "GstCeH264EncSeqSvcSyntax" Default: 0, "sw" | |||
(0): sw - SVC disabled sliding window enabled | |||
(1): svc-sw - SVC enabled sliding window enabled | |||
(2): mmco - SVC disabled MMCO enabled | |||
(3): svc-mmco - SVC enabled MMCO enabled | |||
seqscaling : Use of sequence scaling matrix | |||
flags: readable, writable | |||
Enum "GstCeH264EncSeqScaling" Default: 1, "auto" | |||
(0): disable - Disable | |||
(1): auto - Auto | |||
(2): low - Low | |||
(3): moderate - Moderate | |||
qpintra : Quantization Parameter (QP) for I frames (only valid when rate control is disabled or is fixed QP) | |||
flags: readable, writable | |||
Integer. Range: 1 - 51 Default: 28 | |||
qpinter : Quantization Parameter (QP) for P frame (only valid when rate control is disabled or is fixed QP) | |||
flags: readable, writable | |||
Integer. Range: 1 - 41 Default: 28 | |||
rcalgo : Rate Control Algorithm (requires ratecontrol set to 5) | |||
flags: readable, writable | |||
Enum "GstCeH264EncRCAlgo" Default: 1, "vbr" | |||
(0): cbr - CBR | |||
(1): vbr - VBR | |||
(2): fixedqp - Fixed QP | |||
(3): cvbr - CVBR | |||
(4): rc1 - RC1 | |||
(5): cbr1 - CBR1 | |||
(6): vbr1 - VBR1 | |||
airrate : Adaptive intra refresh. This indicates the maximum number of MBs(per frame) that can be refreshed using AIR. | |||
flags: readable, writable | |||
Integer. Range: 0 - 2147483647 Default: 0 | |||
idrinterval : Interval between two consecutive IDR frames | |||
flags: readable, writable | |||
Integer. Range: 0 - 2147483647 Default: 0 | |||
interlace : Enable/Disable interlace encoding | |||
flags: readable, writable | |||
Boolean. Default: false | |||
interlace-mode : Control the reference picture selection in case of interlaced encoding | |||
flags: readable, writable | |||
Enum "GstCeH264EncInterlaceMode" Default: 0, "arf" | |||
(0): arf - Adaptive reference field | |||
(1): spf - Same parity field | |||
(2): mrcf - Most recent coded field | |||
</pre> | |||
== Supported hardware == | |||
Texas Instruments processors that support the Codec Engine API are of interesting. | Texas Instruments processors that support the Codec Engine API are of interesting. | ||
Line 29: | Line 263: | ||
|} | |} | ||
= Plugin status = | == Plugin status == | ||
{| border=2 | {| border=2 | ||
Line 40: | Line 274: | ||
| MPEG4 encode || ce_mpeg4enc || Melissa || Done | | MPEG4 encode || ce_mpeg4enc || Melissa || Done | ||
|- | |- | ||
| MJPEG/JPEG encode || ce_jpegenc || | | MJPEG/JPEG encode || ce_jpegenc || Carlos || Done | ||
|- | |- | ||
| MP3 encode || ce_mp3enc || | | MP3 encode || ce_mp3enc || Community || Not started | ||
|- | |- | ||
| Resizer || ??? || | | Resizer || ??? || Community || Not started | ||
|- | |- | ||
| Dual encoder || ??? || | | Dual encoder || ??? || RidgeRun || SDK add-on | ||
|- | |- | ||
| Dual resizer || dualresizer || Carlos || | | Dual resizer || dualresizer || Carlos || SDK add-on | ||
|- | |- | ||
| H264 decode || ce_h264dec || Community || Not assigned | | H264 decode || ce_h264dec || Community || Not assigned | ||
Line 59: | Line 293: | ||
|} | |} | ||
== Community == | |||
== Building == | |||
The GStreamer 1.0 Codec Engine plugin has build dependencies on several GStreamer packages and on TI Codec Engine which is part of the DVSDK. In addition, the processor is an ARM, so the plugin is built using a cross compiler. For all of these reasons, it is easiest to build the plugin using the RidgeRun evaluation SDK. | |||
= | === GStreamer core compatibility === | ||
== GStreamer core compatibility == | |||
Currently, the GStreamer 1.0 Codec Engine plugin is being build with the following GStreamer and related packages: | Currently, the GStreamer 1.0 Codec Engine plugin is being build with the following GStreamer and related packages: | ||
Line 74: | Line 306: | ||
! Package !! Version | ! Package !! Version | ||
|- | |- | ||
| GStreamer || | | GStreamer || 1.0.5 | ||
|- | |- | ||
| Base plugin || | | Base plugin || 1.0.5 | ||
|- | |- | ||
| Good plugin || | | Good plugin || 1.0.5 | ||
|- | |- | ||
| Bad plugin || | | Bad plugin || 1.0.5 | ||
|- | |- | ||
| av lib || | | av lib || 1.0.5 | ||
|} | |} | ||
= Example pipelines = | == Example pipelines == | ||
There are a lot of tested [[DM36x GStreamer-1.0 pipelines| example pipelines]] available. | |||
{{ContactUs}} | |||
[[Category: GStreamer]] | [[Category: GStreamer]] |
Latest revision as of 19:33, 3 December 2020
Overview of GStreamer 1.0 Codec Engine Plugin
Previous plugin
Documentation
The Doxygen documentation can be found at GStreamer 1.0 Codec Engine Plugin Design Documentation.
gst-inspect output
~ # gst-inspect-1.0 ce_h264enc Factory Details: Rank primary (256) Long-name CE H.264 video encoder Klass Codec/Encoder/Video Description Encode video in H.264 format Author Melissa Montero <melissa.montero@ridgerun.com> Plugin Details: Name ceplugin Description GStreamer Plugin for codecs based on CodecEngine API for Texas Instruments SoC Filename /usr/lib/gstreamer-1.0/libgstce.so Version 0.0 Source module gst-ce-plugins Binary package gst-ce-plugin Origin URL RidgeRun GObject +----GInitiallyUnowned +----GstObject +----GstElement +----GstVideoEncoder +----GstCeVidEnc +----GstCeH264Enc Implemented Interfaces: GstPreset Pad Templates: SRC template: 'src' Availability: Always Capabilities: video/x-h264 framerate: [ 0/1, 120/1 ] width: [ 128, 4080 ] height: [ 96, 4096 ] stream-format: { (string)avc, (string)byte-stream } SINK template: 'sink' Availability: Always Capabilities: video/x-raw format: NV12 framerate: [ 0/1, 120/1 ] width: [ 128, 4080 ] height: [ 96, 4096 ] Element Flags: no flags set Element Implementation: Has change_state() function: gst_video_encoder_change_state 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: "ceh264enc0" parent : The parent of the object flags: readable, writable Object of type "GstObject" rate-control : Encoding rate control flags: readable, writable Enum "GstCeVidEncRate" Default: 1, "CBR" (1): CBR - Constant Bit Rate, for video conferencing (2): VBR - Variable Bit Rate, for storage (3): Two Pass - Two pass rate, for non real-time applications (4): None - No Rate Control is used (5): User - User defined on algorithm specific properties encoding-preset : Encoding preset flags: readable, writable Enum "GstCeVidEncPreset" Default: 2, "speed" (1): quality - High quality (2): speed - High speed, for storage (3): user - User defined on algorithm specific properties max-bitrate : Maximum bit rate to be supported in bits per second flags: readable, writable Integer. Range: 1000 - 50000000 Default: 6000000 target-bitrate : Target bit rate in bits per second, should be <= than the maxbitrate flags: readable, writable Integer. Range: 1000 - 20000000 Default: 6000000 intraframe-interval : Interval between two consecutive intra frames flags: readable, writable Integer. Range: 0 - 2147483647 Default: 30 force-frame : Force next frame to be encoded as a specific type flags: readable, writable Enum "GstCeVidEncForce" Default: -1, "na" (-1): na - No forcing of any specific frame type for the frame (0): i-frame - Force the frame to be encoded as I frame (3): idr-frame - Force the frame to be encoded as an IDR frame num-out-buffers : Number of buffers to be used in the output buffer pool flags: readable, writable Integer. Range: 3 - 2147483647 Default: 3 min-size-percentage : Define the minimum size acceptable for an output buffer,as a percentage of the input buffer size recomended by the encoder.The encoder will use the defined smaller buffer when there is not enough free memory. Only set this property to less than 100 if you can ensure the encoder will compress the data enough to fit in the smaller buffer and you don't want to drop buffers flags: readable, writable Integer. Range: 10 - 100 Default: 100 fix-timestamp : Set if the buffers timestamp should be changed to follow pipeline framerate. This property ignores input buffer timestamp flags: readable, writable Boolean. Default: false bytestream : Generate h264 NAL unit stream instead of 'packetized' stream (no codec_data is generated) flags: readable, writable Boolean. Default: false headers : Include on the stream the SPS/PPS headers flags: readable, writable Boolean. Default: false single-nalu : Buffers contains a single NALU flags: readable, writable Boolean. Default: false profile : Profile identification for the encoder flags: readable, writable Enum "GstCeH264EncProfile" Default: 100, "high" (66): base - Base line (77): main - Main profile (100): high - High profile level : Level identification for the encoder flags: readable, writable Enum "GstCeH264EncLevel" Default: 40, "4.0" (10): 1.0 - Level 1.0 (9): 1.b - Level 1.b (11): 1.1 - Level 1.1 (12): 1.2 - Level 1.2 (13): 1.3 - Level 1.3 (20): 2.0 - Level 2.0 (21): 2.1 - Level 2.1 (22): 2.2 - Level 2.2 (30): 3.0 - Level 3.0 (31): 3.1 - Level 3.1 (32): 3.2 - Level 3.2 (40): 4.0 - Level 4.0 (41): 4.1 - Level 4.1 (42): 4.2 - Level 4.2 (50): 5.0 - Level 5.0 (51): 5.1 - Level 5.1 entropy : Flag for Entropy Coding Mode flags: readable, writable Enum "GstCeH264EncEntropy" Default: 1, "cabac" (0): cavlc - CAVLC (1): cabac - CABAC t8x8intra : Enable 8x8 Transform for I Frame (only for High Profile) flags: readable, writable Boolean. Default: true t8x8inter : Enable 8x8 Transform for P Frame (only for High Profile) flags: readable, writable Boolean. Default: false encquality : Encoder quality setting flags: readable, writable Enum "GstCeVidEncQuality" Default: 2, "speed" (0): backward - version 1.1, backward compatible mode (1): quality - High quality mode (2): speed - High speed mode enabletcm : When encquality is 0, this flag controls if TCM memory should be used (otherwise is ignored and default to yes) flags: readable, writable Boolean. Default: false ddrbuf : Use DDR buffers instead of IMCOP buffers flags: readable, writable Boolean. Default: false ntemplayers : Number of temporal Layers for SVC flags: readable, writable Enum "GstCeH264EncLayers" Default: 0, "one" (0): one - One layer (Stream with frame rate: F) (1): two - Two layers (Stream with frame rate: F, F/2) (2): three - Three layers (Stream with frame rate: F, F/2, F/8) (255): three - all P refer to previous I or IDR frame (Stream with frame rate: F) svcsyntaxen : Control for SVC syntax and DPB management flags: readable, writable Enum "GstCeH264EncSeqSvcSyntax" Default: 0, "sw" (0): sw - SVC disabled sliding window enabled (1): svc-sw - SVC enabled sliding window enabled (2): mmco - SVC disabled MMCO enabled (3): svc-mmco - SVC enabled MMCO enabled seqscaling : Use of sequence scaling matrix flags: readable, writable Enum "GstCeH264EncSeqScaling" Default: 1, "auto" (0): disable - Disable (1): auto - Auto (2): low - Low (3): moderate - Moderate qpintra : Quantization Parameter (QP) for I frames (only valid when rate control is disabled or is fixed QP) flags: readable, writable Integer. Range: 1 - 51 Default: 28 qpinter : Quantization Parameter (QP) for P frame (only valid when rate control is disabled or is fixed QP) flags: readable, writable Integer. Range: 1 - 41 Default: 28 rcalgo : Rate Control Algorithm (requires ratecontrol set to 5) flags: readable, writable Enum "GstCeH264EncRCAlgo" Default: 1, "vbr" (0): cbr - CBR (1): vbr - VBR (2): fixedqp - Fixed QP (3): cvbr - CVBR (4): rc1 - RC1 (5): cbr1 - CBR1 (6): vbr1 - VBR1 airrate : Adaptive intra refresh. This indicates the maximum number of MBs(per frame) that can be refreshed using AIR. flags: readable, writable Integer. Range: 0 - 2147483647 Default: 0 idrinterval : Interval between two consecutive IDR frames flags: readable, writable Integer. Range: 0 - 2147483647 Default: 0 interlace : Enable/Disable interlace encoding flags: readable, writable Boolean. Default: false interlace-mode : Control the reference picture selection in case of interlaced encoding flags: readable, writable Enum "GstCeH264EncInterlaceMode" Default: 0, "arf" (0): arf - Adaptive reference field (1): spf - Same parity field (2): mrcf - Most recent coded field
Supported hardware
Texas Instruments processors that support the Codec Engine API are of interesting.
Processor | Status |
---|---|
DM365 | Supported |
DM368 | Supported |
DMVA1 | Supported |
DMVA2 | Supported |
DM3730 | Not started |
OMAP3 | Not started |
DM6446 | Not started |
Plugin status
Functionality | Element name | Owner | Status |
---|---|---|---|
H.264 encode | ce_h264enc | Melissa | Done |
AAC encode | ce_aacenc | Melissa | Done |
MPEG4 encode | ce_mpeg4enc | Melissa | Done |
MJPEG/JPEG encode | ce_jpegenc | Carlos | Done |
MP3 encode | ce_mp3enc | Community | Not started |
Resizer | ??? | Community | Not started |
Dual encoder | ??? | RidgeRun | SDK add-on |
Dual resizer | dualresizer | Carlos | SDK add-on |
H264 decode | ce_h264dec | Community | Not assigned |
JPEG decode | ce_jpegdec | Community | Not assigned |
MPEG4 decode | ce_mpeg4dec | Community | Not assigned |
AAC decode | ce_aacdec | Community | Not assigned |
Community
Building
The GStreamer 1.0 Codec Engine plugin has build dependencies on several GStreamer packages and on TI Codec Engine which is part of the DVSDK. In addition, the processor is an ARM, so the plugin is built using a cross compiler. For all of these reasons, it is easiest to build the plugin using the RidgeRun evaluation SDK.
GStreamer core compatibility
Currently, the GStreamer 1.0 Codec Engine plugin is being build with the following GStreamer and related packages:
Package | Version |
---|---|
GStreamer | 1.0.5 |
Base plugin | 1.0.5 |
Good plugin | 1.0.5 |
Bad plugin | 1.0.5 |
av lib | 1.0.5 |
Example pipelines
There are a lot of tested example pipelines available.
RidgeRun Resources | |||||
Contact Us
|