GStreamer 1.0 Codec Engine Plugin
|
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.
For direct inquiries, please refer to the contact information available on our Contact page. Alternatively, you may complete and submit the form provided at the same link. We will respond to your request at our earliest opportunity.
Links to RidgeRun Resources and RidgeRun Artificial Intelligence Solutions can be found in the footer below.