simaaiencoder ============= The ``simaaiencoder`` GStreamer plugin provides video encoding capabilities using the SiMa.ai hardware accelerator. This plugin allows you to integrate SiMa.ai’s encoding functionality seamlessly into your GStreamer pipelines. Properties ---------- The plugin exposes several properties to configure the encoding process: +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property Name | Type | Default Value | Description | +======================+===========+==================+================================================================================================================================================================+ | enc-width | int | 1920 | Input resolution width. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enc-height | int | 1080 | Input resolution height. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enc-frame-rate | int | 30 | Frame rate for encoding. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ip-queue-max-buffers | int | 30 | High watermark for the input queue (works only in ASYNC mode). If the queue size exceeds this value, it will block. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enc-bitrate | int | -1 | Bitrate in kbps. Choose a value appropriate for your resolution (e.g., 1000-2000 kbps for 640x480, 2500-4000 kbps for 1280x720, 5000-7000 kbps for 1920x1080). | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ip-queue-min-buffers | int | 15 | Low watermark for the input queue (works only in ASYNC mode). | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enc-profile | string | main | H.264 (baseline, main, high) & H.265 (main) profile. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enc-level | string | 4.0 | H.264/H.265 level (e.g., 4.0, 4.1, 4.2, 5.0, 5.1, 5.2). The encoder may adjust the level automatically in ASYNC mode if the provided level is insufficient. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enc-type | string | h264 | Encoder type: h264 or h265. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enc-ip-mode | string | async | Encoder input mode: async or sync. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enc-fmt | string | NV12 | Input encoder format: NV12 or YUV420P. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dump-cnt | int | 0 | Number of encoded frames to dump to file (for debugging). | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dump-path | string | /tmp | Path to dump encoded frames. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ignore-caps-event | boolean | FALSE | Ignore caps negotiation if the previous plugin sends incorrect caps. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ip-cache-inval | boolean | FALSE | Invalidate the input buffer cache before reading (if mapped as cached). Requires custom meta with sima-mem-ptr. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ip-rate-ctrl | boolean | FALSE | Enable input buffer rate control. Only use if your source is not rate-controlled (e.g., YUV filesrc). | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | name | string | “simaaiencoder0” | The name of the object. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | parent | GstObject | - | The parent of the object. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | transmit | boolean | FALSE | Transmit KPI messages. | +----------------------+-----------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ Usage ----- The ``simaaiencoder`` plugin integrates into a GStreamer pipeline like this: .. code:: bash gst-launch-1.0 filesrc location=/path/to/your/video.mp4 ! qtdemux name=demux demux.video_0 ! queue ! h264parse ! simaaidecoder ! simaaiencoder enc-width=1280 enc-height=720 enc-bitrate=3000 ! h264parse ! filesink location=/path/to/output.mp4 Replace ``/path/to/your/video.mp4`` and ``/path/to/output.mp4`` with the actual paths. Adjust other properties as needed. Remember that the input video needs to be in a format that the ``decodebin`` can handle. For Async mode: .. code:: bash gst-launch-1.0 videotestsrc ! videoconvert ! simaaiencoder enc-ip-mode=async enc-width=640 enc-height=480 enc-bitrate=1000 ! h264parse ! fakesink Installation ------------ To install the ``simaaiencoder`` plugin, copy the plugin file from ``/usr/local/simaai/plugin_zoo/gst-simaai-plugins-base/gst/`` into your project’s ``plugins/`` directory. Ensure the necessary SiMa.ai libraries are installed and configured on your system.