Difference between revisions of "JetsonTX2/GStreamer/Encoding"

From RidgeRun Developer Connection
Jump to: navigation, search
(Dual H264 Encoding from Camera)
Line 6: Line 6:
 
=H.264=
 
=H.264=
  
== OMX ==
+
=== videotestsrc ===
  
=== H264 Encoding from camera ===
+
ARM load: 157% but only videotestsrc consumes 100%. According to the NVIDIA forum when using videotestsrc the system is also doing memory copies to feed the encoder with NVMM memory buffers so that loads more the ARM.
  
<syntaxhighlight lang=bash>
+
<pre>
FILE=filename.mp4
+
gst-launch-1.0 videotestsrc num-buffers=150 ! 'video/x-raw, format=(string)I420,width=(int)640, height=(int)480' ! omxh264enc ! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=test.h264 -e
gst-launch-1.0 -e nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' \
+
</pre>
! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxh264enc bitrate=8000000 ! 'video/x-h264, stream-format=(string)byte-stream' \
 
! h264parse ! qtmux ! filesink location=$FILE -e
 
</syntaxhighlight>
 
  
=== Dual H264 Encoding from Camera ===
+
VLC can play the file correctly at 30fps and reports as codec: H264-MPEG-4 AVC (part 10) (h264). The fan on top of the SoC didn't turn on.
  
<syntaxhighlight lang=bash>
+
=== nvcamerasrc ===
FILE_A=filenameA.mp4
 
FILE_B=filenameB.mp4
 
gst-launch-1.0 -e nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' \
 
! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420' ! tee name=streams \
 
streams. ! omxh264enc bitrate=8000000 ! 'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink location=$FILE_A \
 
streams. ! omxh264enc bitrate=8000000 ! 'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink location=$FILE_B
 
</syntaxhighlight>
 
  
'''Performance:'''
+
<pre>
{| class="wikitable"
+
gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
|-
+
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxh264enc bitrate=8000000 \
! CPU 0 !! CPU 1 !! CPU 2 !! CPU 3 !! Average CPU !! GPU
+
! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=test.h264 -e
|-
+
</pre>
| 15.44 || 11 || 15.22 || 11.5 || '''13.28''' || 2.8
 
|}
 
  
==V4L2==
+
Codecvisa reports bitrate on 7.96Mbps when variable mode is selected on the encoder.
  
=== H264 Encoding from Camera ===
+
ARM consumption 45.4% of one core (4 cores available 400% - this means something like 16.75% of total). However, only the capture is 11.25% so the h264 consumes '''5.5%'''
  
<syntaxhighlight lang=bash>
+
<pre>
FILE=test.h264
+
RAM 1279/7853MB (lfb 1237x4MB) cpu [0%@1267,off,off,0%@1267,0%@1267,0%@1267]
gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' ! nvv4l2h264enc bitrate=8000000 ! h264parse ! qtmux ! filesink  location=$FILE -e
+
RAM 1280/7853MB (lfb 1237x4MB) cpu [8%@345,off,off,19%@345,10%@345,12%@345]
</syntaxhighlight>
+
RAM 1279/7853MB (lfb 1237x4MB) cpu [16%@345,off,off,16%@345,7%@345,13%@345]
 +
RAM 1279/7853MB (lfb 1237x4MB) cpu [18%@345,off,off,11%@345,10%@345,16%@345]
 +
RAM 1279/7853MB (lfb 1236x4MB) cpu [24%@345,off,off,12%@345,11%@345,13%@345]
 +
RAM 1280/7853MB (lfb 1236x4MB) cpu [15%@345,off,off,14%@345,10%@345,14%@345]
 +
RAM 1280/7853MB (lfb 1236x4MB) cpu [18%@345,off,off,14%@345,16%@345,11%@345]
 +
RAM 1280/7853MB (lfb 1236x4MB) cpu [15%@345,off,off,19%@345,13%@345,16%@345]
 +
RAM 1280/7853MB (lfb 1236x4MB) cpu [14%@345,off,off,18%@345,15%@345,11%@345]
 +
RAM 1280/7853MB (lfb 1236x4MB) cpu [20%@345,off,off,13%@345,13%@345,14%@345]
 +
RAM 1280/7853MB (lfb 1235x4MB) cpu [15%@345,off,off,14%@345,18%@345,12%@345]
 +
RAM 1280/7853MB (lfb 1235x4MB) cpu [15%@345,off,off,17%@345,10%@345,13%@345]
 +
RAM 1279/7853MB (lfb 1235x4MB) cpu [18%@345,off,off,19%@345,6%@345,13%@345]
 +
RAM 1280/7853MB (lfb 1235x4MB) cpu [15%@345,off,off,19%@345,13%@345,10%@345]
 +
RAM 1280/7853MB (lfb 1235x4MB) cpu [17%@345,off,off,18%@345,10%@345,14%@345]
 +
RAM 1235/7853MB (lfb 1235x4MB) cpu [11%@345,off,off,7%@345,7%@345,8%@345]
 +
RAM 1234/7853MB (lfb 1235x4MB) cpu [0%@345,off,off,1%@345,0%@345,0%@345]
 +
RAM 1234/7853MB (lfb 1235x4MB) cpu [0%@345,off,off,3%@345,0%@345,0%@345]
  
The nvv4l2h264enc plugin has a property to enable a maximum performance mode, though as expected, power consumption increases. The following performance results present both operation modes:
+
</pre>
  
'''Performance:'''
+
<pre>
{| class="wikitable" style="margin-right: 22em;"
+
1574 root      20  0  9.979g 214836  44684 S  45.4  2.7  7:10.27 nvcamera-daemon                                                         
|-
+
11614 nvidia    20  0  700192  12800  9236 S  8.6  0.2  0:00.88 gst-launch-1.0         
! Operation Mode
+
</pre>
! CPU%
 
! GPU%
 
! FPS
 
|-
 
| 0 (Default mode)
 
| 15.47
 
| 3.09
 
| 30
 
|-
 
| 1 (Maximum performance)
 
| 10.93
 
| 2.23
 
| 30
 
|}
 
  
=== Dual H264 Encoding from Camera ===
+
The encoder exposes the following parameters
  
<syntaxhighlight lang=bash>
+
<pre>
FILE_A=filenameA.mp4
+
  control-rate        : Bitrate control method
FILE_B=filenameB.mp4
+
                        flags: readable, writable, changeable only in NULL or READY state
gst-launch-1.0 -e nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' ! tee name=streams \
+
                        Enum "GstOMXVideoEncControlRate" Default: 1, "variable"
streams. ! nvv4l2h264enc bitrate=8000000 ! h264parse ! qtmux ! filesink location=$FILE_A \
+
                          (0): disable          - Disable
streams. ! nvv4l2h264enc bitrate=8000000 ! h264parse ! qtmux ! filesink location=$FILE_B
+
                          (1): variable        - Variable
</syntaxhighlight>
+
                          (2): constant        - Constant
'''Performance:'''
+
                          (3): variable-skip-frames - Variable Skip Frames
 +
                          (4): constant-skip-frames - Constant Skip Frames
 +
  bitrate            : Target bitrate
 +
                        flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4000000
 +
  quant-i-frames      : Quantization parameter for I-frames (0xffffffff=component default)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295
 +
  quant-p-frames      : Quantization parameter for P-frames (0xffffffff=component default)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295
 +
  quant-b-frames      : Quantization parameter for B-frames (0xffffffff=component default)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295
 +
  iframeinterval      : Encoding Intra Frame occurance frequency
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 0
 +
  SliceIntraRefreshEnable: Enable Slice Intra Refresh while encoding
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  SliceIntraRefreshInterval: Set SliceIntraRefreshInterval
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 60
 +
  bit-packetization  : Whether or not Packet size is based upon Number Of bits
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  vbv-size            : virtual buffer size = vbv-size * (bitrate/fps)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 30 Default: 10
 +
  temporal-tradeoff  : Temporal Tradeoff value for encoder
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Enum "GstOmxVideoEncTemporalTradeoffType" Default: 0, "Do not drop frames"
 +
                          (0): Do not drop frames - GST_OMX_VIDENC_DROP_NO_FRAMES
 +
                          (1): Drop 1 in 5 frames - GST_OMX_VIDENC_DROP_1_IN_5_FRAMES
 +
                          (2): Drop 1 in 3 frames - GST_OMX_VIDENC_DROP_1_IN_3_FRAMES
 +
                          (3): Drop 1 in 2 frames - GST_OMX_VIDENC_DROP_1_IN_2_FRAMES
 +
                          (4): Drop 2 in 3 frames - GST_OMX_VIDENC_DROP_2_IN_3_FRAMES
 +
  EnableMVBufferMeta  : Enable Motion Vector Meta data for encoding
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  qp-range            : Qunatization range for P and I frame,
 +
Use string with values of Qunatization Range
 +
in MinQpP-MaxQpP:MinQpI-MaxQpP:MinQpB-MaxQpB order, to set the property.
 +
                        flags: readable, writable
 +
                        String. Default: "-1,-1:-1,-1:-1,-1"
 +
  MeasureEncoderLatency: Enable Measure Encoder latency Per Frame
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  EnableTwopassCBR    : Enable two pass CBR while encoding
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  preset-level        : HW preset level for encoder
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Enum "GstOMXVideoEncHwPreset" Default: 0, "UltraFastPreset"
 +
                          (0): UltraFastPreset  - UltraFastPreset for high perf
 +
                          (1): FastPreset      - FastPreset
 +
                          (2): MediumPreset    - MediumPreset
 +
                          (3): SlowPreset      - SlowPreset
 +
  insert-sps-pps      : Insert H.264 SPS, PPS at every IDR frame
 +
                        flags: readable, writable
 +
                        Boolean. Default: false
 +
  num-B-Frames        : Number of B Frames between two reference frames (not recommended)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 2 Default: 0
 +
  slice-header-spacing: Slice Header Spacing number of macroblocks/bits in one packet
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Long. Range: 0 - 18446744073709551615 Default: 0
 +
  profile            : Set profile for encode
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Enum "GstOmxVideoEncProfileType" Default: 1, "baseline"
 +
                          (1): baseline        - GST_OMX_VIDENC_BASELINE_PROFILE
 +
                          (2): main            - GST_OMX_VIDENC_MAIN_PROFILE
 +
                          (8): high            - GST_OMX_VIDENC_HIGH_PROFILE
  
{| class="wikitable"
+
 
|-
+
</pre>
! CPU 0 !! CPU 1 !! CPU 2 !! CPU 3 !! Average CPU !! GPU
+
 
|-
+
== Dual H264 encoding ==
| 14.27 || 12 || 15.36 || 12.18 || '''13.45''' || 2.14
+
 
|}
+
<pre>
 +
gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
 +
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! tee name=streams \
 +
streams. ! omxh264enc bitrate=8000000 ! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=testA.h264 \
 +
streams. ! omxh264enc bitrate=8000000 ! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=testB.h264
 +
</pre>
 +
 
 +
 
 +
ARM consumption ~44.1% of one core (4 cores available 400% - this means something like 16.5% of total). However, only the capture is 11.25% so the dual h264 consumes '''5.25%'''
 +
 
 +
<pre>
 +
RAM 1320/7853MB (lfb 1221x4MB) cpu [0%@1420,off,off,0%@1420,0%@1420,0%@1420]
 +
RAM 1320/7853MB (lfb 1221x4MB) cpu [19%@345,off,off,16%@345,10%@345,9%@345]
 +
RAM 1320/7853MB (lfb 1221x4MB) cpu [18%@345,off,off,18%@345,16%@345,13%@345]
 +
RAM 1321/7853MB (lfb 1221x4MB) cpu [20%@345,off,off,16%@345,19%@345,13%@345]
 +
RAM 1321/7853MB (lfb 1221x4MB) cpu [19%@345,off,off,14%@345,12%@345,15%@345]
 +
RAM 1321/7853MB (lfb 1220x4MB) cpu [18%@345,off,off,17%@345,14%@345,13%@345]
 +
RAM 1321/7853MB (lfb 1219x4MB) cpu [19%@345,off,off,12%@345,18%@345,15%@345]
 +
RAM 1321/7853MB (lfb 1219x4MB) cpu [14%@345,off,off,13%@345,14%@345,20%@345]
 +
RAM 1321/7853MB (lfb 1218x4MB) cpu [14%@345,off,off,15%@345,21%@345,18%@345]
 +
RAM 1321/7853MB (lfb 1218x4MB) cpu [15%@345,off,off,20%@345,15%@345,16%@345]
 +
RAM 1321/7853MB (lfb 1217x4MB) cpu [14%@345,off,off,17%@345,11%@345,21%@345]
 +
RAM 1321/7853MB (lfb 1217x4MB) cpu [18%@345,off,off,22%@345,13%@345,18%@345]
 +
RAM 1321/7853MB (lfb 1217x4MB) cpu [15%@345,off,off,19%@345,20%@345,12%@345]
 +
RAM 1321/7853MB (lfb 1216x4MB) cpu [15%@345,off,off,21%@345,16%@345,13%@345]
 +
RAM 1321/7853MB (lfb 1216x4MB) cpu [16%@345,off,off,22%@345,18%@345,12%@345]
 +
RAM 1275/7853MB (lfb 1216x4MB) cpu [15%@345,off,off,11%@345,11%@345,13%@345]
 +
RAM 1275/7853MB (lfb 1216x4MB) cpu [1%@345,off,off,2%@345,0%@345,0%@345]
 +
RAM 1275/7853MB (lfb 1216x4MB) cpu [0%@345,off,off,2%@345,0%@345,0%@345]
 +
RAM 1275/7853MB (lfb 1216x4MB) cpu [0%@345,off,off,2%@345,0%@345,0%@345]
 +
RAM 1275/7853MB (lfb 1216x4MB) cpu [0%@345,off,off,1%@345,0%@345,0%@345]
 +
 
 +
</pre>
  
 
=H.265=
 
=H.265=
  
== OMX ==
+
=== VLC with H265 support ===
 +
 
 +
In order to support h265 you need VLC 2.2 in your computer to play the videos
 +
 
 +
<pre>
 +
sudo add-apt-repository ppa:mc3man/trusty-media
 +
sudo apt-get update
 +
sudo apt-get install vlc vlc-plugin-*
 +
</pre>
 +
 
 +
=== videotestsrc ===
 +
 
 +
ARM load: 156% but only videotestsrc consumes 100%. According to the NVIDIA forum when using videotestsrc the system is also doing memory copies to feed the encoder with NVMM memory buffers so that loads more the ARM.
 +
 
 +
<pre>
 +
gst-launch-1.0 videotestsrc num-buffers=150 ! 'video/x-raw, format=(string)I420,width=(int)640, height=(int)480' ! omxh265enc ! filesink location=test.h265 -e
 +
</pre>
 +
 
 +
VLC can play the file correctly at 30fps and reports as codec: MPEG-H Part2/HEVC (H.265)(hevc). The fan on top of the SoC didn't turn on.
 +
 
 +
=== nvcamerasrc ===
 +
 
 +
<pre>
 +
gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
 +
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxh265enc ! filesink location=test.h265 -e
 +
</pre>
 +
 
 +
Codecvisa reports bitrate on 7.96Mbps when variable mode is selected on the encoder.
 +
 
 +
ARM consumption ~55% of one core (4 cores available 400% - this means something like 13% of total). However, only the capture is 11.25% so the h264 consumes '''1.75%'''
 +
 
 +
<pre>
 +
RAM 1487/7853MB (lfb 993x4MB) cpu [0%@1267,off,off,0%@1267,0%@1267,0%@1267]
 +
RAM 1487/7853MB (lfb 993x4MB) cpu [12%@345,off,off,12%@345,10%@345,14%@345]
 +
RAM 1487/7853MB (lfb 993x4MB) cpu [9%@345,off,off,19%@345,14%@345,9%@345]
 +
RAM 1487/7853MB (lfb 993x4MB) cpu [16%@345,off,off,14%@345,12%@345,16%@345]
 +
RAM 1487/7853MB (lfb 993x4MB) cpu [16%@345,off,off,11%@345,18%@345,20%@345]
 +
RAM 1487/7853MB (lfb 992x4MB) cpu [14%@345,off,off,14%@345,12%@345,22%@345]
 +
RAM 1488/7853MB (lfb 992x4MB) cpu [16%@345,off,off,18%@345,15%@345,15%@345]
 +
RAM 1487/7853MB (lfb 992x4MB) cpu [22%@345,off,off,16%@345,8%@345,17%@345]
 +
RAM 1487/7853MB (lfb 992x4MB) cpu [24%@345,off,off,17%@345,7%@345,14%@345]
 +
RAM 1487/7853MB (lfb 992x4MB) cpu [13%@345,off,off,20%@345,20%@345,7%@345]
 +
RAM 1487/7853MB (lfb 992x4MB) cpu [17%@345,off,off,19%@345,14%@345,15%@345]
 +
RAM 1488/7853MB (lfb 992x4MB) cpu [15%@345,off,off,22%@345,12%@345,14%@345]
 +
RAM 1488/7853MB (lfb 992x4MB) cpu [16%@345,off,off,14%@345,21%@345,13%@345]
 +
RAM 1488/7853MB (lfb 992x4MB) cpu [15%@345,off,off,19%@345,13%@345,16%@345]
 +
RAM 1488/7853MB (lfb 992x4MB) cpu [11%@345,off,off,11%@345,16%@345,16%@345]
 +
RAM 1488/7853MB (lfb 991x4MB) cpu [22%@345,off,off,11%@345,15%@345,15%@345]
 +
RAM 1488/7853MB (lfb 991x4MB) cpu [18%@345,off,off,14%@345,12%@345,14%@345]
 +
RAM 1488/7853MB (lfb 991x4MB) cpu [8%@345,off,off,13%@345,20%@345,10%@345]
 +
RAM 1488/7853MB (lfb 991x4MB) cpu [11%@345,off,off,12%@345,11%@345,21%@345]
 +
 
 +
</pre>
 +
 
 +
<pre>
 +
1574 root      20  0  9.979g 266012  44612 S  47.7  3.3  17:54.85 nvcamera-daemon                                                         
 +
13273 nvidia    20  0  694396  12920  9156 S  8.6  0.2  0:01.32 gst-launch-1.0                       
 +
</pre>
 +
 
 +
The encoder exposes the following parameters
 +
 
 +
<pre>
 +
  control-rate        : Bitrate control method
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Enum "GstOMXVideoEncControlRate" Default: 1, "variable"
 +
                          (0): disable          - Disable
 +
                          (1): variable        - Variable
 +
                          (2): constant        - Constant
 +
                          (3): variable-skip-frames - Variable Skip Frames
 +
                          (4): constant-skip-frames - Constant Skip Frames
 +
  bitrate            : Target bitrate
 +
                        flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4000000
 +
  quant-i-frames      : Quantization parameter for I-frames (0xffffffff=component default)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295
 +
  quant-p-frames      : Quantization parameter for P-frames (0xffffffff=component default)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295
 +
  quant-b-frames      : Quantization parameter for B-frames (0xffffffff=component default)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295
 +
  iframeinterval      : Encoding Intra Frame occurance frequency
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 0
 +
  SliceIntraRefreshEnable: Enable Slice Intra Refresh while encoding
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  SliceIntraRefreshInterval: Set SliceIntraRefreshInterval
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 60
 +
  bit-packetization  : Whether or not Packet size is based upon Number Of bits
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  vbv-size            : virtual buffer size = vbv-size * (bitrate/fps)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 30 Default: 10
 +
  temporal-tradeoff  : Temporal Tradeoff value for encoder
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Enum "GstOmxVideoEncTemporalTradeoffType" Default: 0, "Do not drop frames"
 +
                          (0): Do not drop frames - GST_OMX_VIDENC_DROP_NO_FRAMES
 +
                          (1): Drop 1 in 5 frames - GST_OMX_VIDENC_DROP_1_IN_5_FRAMES
 +
                          (2): Drop 1 in 3 frames - GST_OMX_VIDENC_DROP_1_IN_3_FRAMES
 +
                          (3): Drop 1 in 2 frames - GST_OMX_VIDENC_DROP_1_IN_2_FRAMES
 +
                          (4): Drop 2 in 3 frames - GST_OMX_VIDENC_DROP_2_IN_3_FRAMES
 +
  EnableMVBufferMeta  : Enable Motion Vector Meta data for encoding
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  qp-range            : Qunatization range for P and I frame,
 +
Use string with values of Qunatization Range
 +
in MinQpP-MaxQpP:MinQpI-MaxQpP:MinQpB-MaxQpB order, to set the property.
 +
                        flags: readable, writable
 +
                        String. Default: "-1,-1:-1,-1:-1,-1"
 +
  MeasureEncoderLatency: Enable Measure Encoder latency Per Frame
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  EnableTwopassCBR    : Enable two pass CBR while encoding
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  preset-level        : HW preset level for encoder
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Enum "GstOMXVideoEncHwPreset" Default: 0, "UltraFastPreset"
 +
                          (0): UltraFastPreset  - UltraFastPreset for high perf
 +
                          (1): FastPreset      - FastPreset
 +
                          (2): MediumPreset    - MediumPreset
 +
                          (3): SlowPreset      - SlowPreset
 +
  slice-header-spacing: Slice Header Spacing number of macroblocks/bits in one packet
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Long. Range: 0 - 18446744073709551615 Default: 0
 +
 
 +
</pre>
 +
 
 +
== Dual H265 encoding ==
  
=== H265 Encoding from camera ===
+
<pre>
<syntaxhighlight lang=bash>
+
gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
FILE=filename.mp4
+
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! tee name=streams \
gst-launch-1.0 -e nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' \
+
streams. ! omxh264enc bitrate=8000000 ! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=testA.h264 \
! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxh265enc bitrate=8000000 ! 'video/x-h265, stream-format=(string)byte-stream' ! h265parse ! qtmux ! filesink location=$FILE -e
+
streams. ! omxh264enc bitrate=8000000 ! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=testB.h264
</syntaxhighlight>
+
</pre>
'''Performance:'''
 
  
{| class="wikitable"
+
<pre>
|-
+
gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
! CPU 0 !! CPU 1 !! CPU 2 !! CPU 3 !! Average CPU !! GPU
+
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! tee name=streams \
|-
+
streams. ! omxh265enc bitrate=8000000 ! 'video/x-h265, stream-format=(string)byte-stream' ! filesink location=testA.h265 \
| 15.22 || 11.5 || 13 || 14.38 || '''13.5''' || 1.6
+
streams. ! omxh265enc bitrate=8000000 ! 'video/x-h265, stream-format=(string)byte-stream' ! filesink location=testB.h265
|}
+
</pre>
  
 +
ARM consumption ~48.7% of one core (4 cores available 400% - this means something like 13.5% of total). However, only the capture is 11.25% so the dual h265 consumes '''2.25%'''
  
=== Dual H265 Encoding from Camera ===
+
<pre>
 +
RAM 1503/7853MB (lfb 965x4MB) cpu [0%@1420,off,off,0%@1420,0%@1420,0%@1420]
 +
RAM 1503/7853MB (lfb 965x4MB) cpu [19%@345,off,off,10%@345,13%@345,16%@345]
 +
RAM 1503/7853MB (lfb 965x4MB) cpu [17%@345,off,off,15%@345,9%@345,12%@345]
 +
RAM 1503/7853MB (lfb 964x4MB) cpu [13%@345,off,off,13%@345,14%@345,19%@345]
 +
RAM 1503/7853MB (lfb 964x4MB) cpu [18%@345,off,off,13%@345,10%@345,13%@345]
 +
RAM 1503/7853MB (lfb 963x4MB) cpu [12%@345,off,off,10%@345,14%@345,18%@345]
 +
RAM 1503/7853MB (lfb 962x4MB) cpu [19%@345,off,off,12%@345,19%@345,10%@345]
 +
RAM 1504/7853MB (lfb 962x4MB) cpu [10%@345,off,off,14%@345,16%@345,18%@345]
 +
RAM 1504/7853MB (lfb 961x4MB) cpu [24%@345,off,off,10%@345,13%@345,15%@345]
 +
RAM 1504/7853MB (lfb 961x4MB) cpu [14%@345,off,off,13%@345,12%@345,18%@345]
 +
RAM 1504/7853MB (lfb 961x4MB) cpu [16%@345,off,off,15%@345,9%@345,14%@345]
 +
RAM 1504/7853MB (lfb 957x4MB) cpu [17%@345,off,off,20%@345,18%@345,15%@345]
 +
RAM 1457/7853MB (lfb 957x4MB) cpu [14%@345,off,off,9%@345,10%@345,15%@345]
 +
RAM 1456/7853MB (lfb 957x4MB) cpu [0%@345,off,off,1%@345,0%@345,0%@345]
  
<syntaxhighlight lang=bash>
+
</pre>
FILE_A=filenameA.mp4
 
FILE_B=filenameB.mp4
 
gst-launch-1.0 -e nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' \
 
! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420' ! tee name=streams \
 
streams. ! omxh265enc bitrate=8000000 ! 'video/x-h265, stream-format=(string)byte-stream' ! h265parse ! qtmux ! filesink location=$FILE_A \
 
streams. ! omxh265enc bitrate=8000000 ! 'video/x-h265, stream-format=(string)byte-stream' ! h265parse ! qtmux ! filesink location=$FILE_B
 
</syntaxhighlight>
 
'''Performance:'''
 
  
{| class="wikitable"
+
=VP8=
|-
 
! CPU 0 !! CPU 1 !! CPU 2 !! CPU 3 !! Average CPU !! GPU
 
|-
 
| 16.62 || 14.47 || 15.33 || 15.28 || '''15.4''' || 1.66
 
|}
 
  
 +
=== videotestsrc ===
  
==V4L2==
+
ARM load: 156% but only videotestsrc consumes 100%. According to the NVIDIA forum when using videotestsrc the system is also doing memory copies to feed the encoder with NVMM memory buffers so that loads more the ARM.
  
=== H265 Encoding from Camera ===
+
<pre>
 +
gst-launch-1.0 videotestsrc num-buffers=150 ! 'video/x-raw, format=(string)I420,width=(int)640, height=(int)480' ! omxvp8enc ! qtmux ! filesink location=test.mp4 -e
 +
</pre>
  
<syntaxhighlight lang=bash>
+
VLC can play the file correctly at 30fps and reports as codec: Google/On2's VP8 Video (VP80). The fan on top of the SoC didn't turn on.
FILE=filename.mp4
 
gst-launch-1.0 -e nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' \
 
! nvv4l2h265enc bitrate=8000000 ! h265parse ! qtmux ! filesink location=$FILE -e
 
</syntaxhighlight>
 
'''Performance:'''
 
  
{| class="wikitable"
+
=== nvcamerasrc ===
|-
 
! CPU 0 !! CPU 1 !! CPU 2 !! CPU 3 !! Average CPU !! GPU
 
|-
 
| 13.77 || 12.68 || 9.97|| 9.3 || '''11.43''' || 1.28
 
|}
 
  
 +
<pre>
  
=== Dual H265 Encoding from Camera ===
+
gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
 +
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxvp8enc bitrate=8000000 ! qtmux ! filesink location=test.mp4 -e
  
<syntaxhighlight lang=bash>
+
</pre>
FILE_A=filenameA.mp4
 
FILE_B=filenameB.mp4
 
gst-launch-1.0 -e nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' ! tee name=streams \
 
streams. ! nvv4l2h265enc bitrate=8000000 ! h265parse ! qtmux ! filesink location=$FILE_A \
 
streams. ! nvv4l2h265enc bitrate=8000000 ! h265parse ! qtmux ! filesink location=$FILE_B
 
</syntaxhighlight>
 
'''Performance:'''
 
  
{| class="wikitable"
+
VLC reports bitrate on ~8Mbps.
|-
 
! CPU 0 !! CPU 1 !! CPU 2 !! CPU 3 !! Average CPU !! GPU
 
|-
 
| 19.2 || 16.55 || 15.9 || 17.45 || '''17.27''' || 2
 
|}
 
  
=VP9=
+
ARM consumption ~50% of one core (4 cores available 400% - this means something like 15.5% of total). However, only the capture is 11.25% so the VP8 consumes '''4.25%'''
  
==OMX==
+
<pre>
 +
RAM 1442/7853MB (lfb 1134x4MB) cpu [0%@1267,off,off,0%@1267,0%@1267,0%@1267]
 +
RAM 1442/7853MB (lfb 1134x4MB) cpu [16%@345,off,off,12%@345,15%@345,14%@345]
 +
RAM 1442/7853MB (lfb 1134x4MB) cpu [11%@345,off,off,17%@345,14%@345,17%@345]
 +
RAM 1442/7853MB (lfb 1134x4MB) cpu [17%@345,off,off,18%@345,13%@345,10%@345]
 +
RAM 1442/7853MB (lfb 1134x4MB) cpu [19%@345,off,off,18%@345,14%@345,9%@345]
 +
RAM 1442/7853MB (lfb 1134x4MB) cpu [13%@499,off,off,14%@499,15%@499,17%@499]
 +
RAM 1442/7853MB (lfb 1134x4MB) cpu [16%@345,off,off,15%@345,8%@345,11%@345]
 +
RAM 1443/7853MB (lfb 1134x4MB) cpu [14%@345,off,off,13%@345,9%@345,15%@345]
 +
RAM 1442/7853MB (lfb 1134x4MB) cpu [9%@345,off,off,16%@345,13%@345,9%@345]
 +
RAM 1443/7853MB (lfb 1134x4MB) cpu [10%@345,off,off,15%@345,8%@345,14%@345]
 +
RAM 1442/7853MB (lfb 1134x4MB) cpu [11%@345,off,off,19%@345,10%@345,15%@345]
 +
RAM 1443/7853MB (lfb 1134x4MB) cpu [14%@345,off,off,23%@345,10%@345,13%@345]
 +
RAM 1443/7853MB (lfb 1134x4MB) cpu [14%@345,off,off,20%@345,8%@345,12%@345]
 +
RAM 1443/7853MB (lfb 1134x4MB) cpu [15%@345,off,off,21%@345,6%@345,10%@345]
  
=== VP9 Encoding from Camera ===
+
</pre>
<syntaxhighlight lang=bash>
 
FILE=filename.mkv
 
gst-launch-1.0 -e nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' \
 
! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxvp9enc ! matroskamux ! filesink location=$FILE -e
 
</syntaxhighlight>
 
'''Performance:'''
 
  
{| class="wikitable"
+
<pre>
|-
+
1574 root      20  0 9.979g 264008  44716 S  45.7  3.3 14:43.58 nvcamera-daemon                                                                                                                                                   
! CPU 0 !! CPU 1 !! CPU 2 !! CPU 3 !! Average CPU !! GPU
+
13065 nvidia    20  0  719944  14140  9996 S  9.2  0.2  0:09.34 gst-launch-1.0         
|-
+
</pre>
| 15 || 13 || 11.93 || 13.43 || '''13.34''' || 3.12
 
|}
 
  
 +
The encoder exposes the following parameters
  
==V4L2==
+
<pre>
 +
bitrate            : Target bitrate
 +
                        flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4000000
 +
  quant-i-frames      : Quantization parameter for I-frames (0xffffffff=component default)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295
 +
  quant-p-frames      : Quantization parameter for P-frames (0xffffffff=component default)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295
 +
  quant-b-frames      : Quantization parameter for B-frames (0xffffffff=component default)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295
 +
  iframeinterval      : Encoding Intra Frame occurance frequency
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 0
 +
  SliceIntraRefreshEnable: Enable Slice Intra Refresh while encoding
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  SliceIntraRefreshInterval: Set SliceIntraRefreshInterval
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 60
 +
  bit-packetization  : Whether or not Packet size is based upon Number Of bits
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  vbv-size            : virtual buffer size = vbv-size * (bitrate/fps)
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Unsigned Integer. Range: 0 - 30 Default: 10
 +
  temporal-tradeoff  : Temporal Tradeoff value for encoder
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Enum "GstOmxVideoEncTemporalTradeoffType" Default: 0, "Do not drop frames"
 +
                          (0): Do not drop frames - GST_OMX_VIDENC_DROP_NO_FRAMES
 +
                          (1): Drop 1 in 5 frames - GST_OMX_VIDENC_DROP_1_IN_5_FRAMES
 +
                          (2): Drop 1 in 3 frames - GST_OMX_VIDENC_DROP_1_IN_3_FRAMES
 +
                          (3): Drop 1 in 2 frames - GST_OMX_VIDENC_DROP_1_IN_2_FRAMES
 +
                          (4): Drop 2 in 3 frames - GST_OMX_VIDENC_DROP_2_IN_3_FRAMES
 +
  EnableMVBufferMeta  : Enable Motion Vector Meta data for encoding
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  qp-range            : Qunatization range for P and I frame,
 +
Use string with values of Qunatization Range
 +
in MinQpP-MaxQpP:MinQpI-MaxQpP:MinQpB-MaxQpB order, to set the property.
 +
                        flags: readable, writable
 +
                        String. Default: "-1,-1:-1,-1:-1,-1"
 +
  MeasureEncoderLatency: Enable Measure Encoder latency Per Frame
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  EnableTwopassCBR    : Enable two pass CBR while encoding
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Boolean. Default: false
 +
  preset-level        : HW preset level for encoder
 +
                        flags: readable, writable, changeable only in NULL or READY state
 +
                        Enum "GstOMXVideoEncHwPreset" Default: 0, "UltraFastPreset"
 +
                          (0): UltraFastPreset  - UltraFastPreset for high perf
 +
                          (1): FastPreset      - FastPreset
 +
                          (2): MediumPreset    - MediumPreset
 +
                          (3): SlowPreset      - SlowPreset
  
=== VP9 Encoding from Camera ===
+
</pre>
<syntaxhighlight lang=bash>
 
FILE=filename.mkv
 
gst-launch-1.0 -e nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' \
 
! nvv4l2vp9enc bitrate=8000000 ! matroskamux ! filesink location=$FILE -e
 
</syntaxhighlight>
 
'''Performance:'''
 
  
{| class="wikitable"
 
|-
 
! CPU 0 !! CPU 1 !! CPU 2 !! CPU 3 !! Average CPU !! GPU
 
|-
 
| 16.37 || 13.27 || 11.86 || 14.86 || '''14.09''' || 1.31
 
|}
 
  
 
<noinclude>
 
<noinclude>
 
{{JetsonTX2/Foot||}}
 
{{JetsonTX2/Foot||}}
 
</noinclude>
 
</noinclude>

Revision as of 15:13, 12 July 2019



  Index  





H.264

videotestsrc

ARM load: 157% but only videotestsrc consumes 100%. According to the NVIDIA forum when using videotestsrc the system is also doing memory copies to feed the encoder with NVMM memory buffers so that loads more the ARM.

gst-launch-1.0 videotestsrc num-buffers=150 ! 'video/x-raw, format=(string)I420,width=(int)640, height=(int)480' ! omxh264enc ! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=test.h264 -e

VLC can play the file correctly at 30fps and reports as codec: H264-MPEG-4 AVC (part 10) (h264). The fan on top of the SoC didn't turn on.

nvcamerasrc

gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxh264enc bitrate=8000000 \
! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=test.h264 -e

Codecvisa reports bitrate on 7.96Mbps when variable mode is selected on the encoder.

ARM consumption 45.4% of one core (4 cores available 400% - this means something like 16.75% of total). However, only the capture is 11.25% so the h264 consumes 5.5%

RAM 1279/7853MB (lfb 1237x4MB) cpu [0%@1267,off,off,0%@1267,0%@1267,0%@1267]
RAM 1280/7853MB (lfb 1237x4MB) cpu [8%@345,off,off,19%@345,10%@345,12%@345]
RAM 1279/7853MB (lfb 1237x4MB) cpu [16%@345,off,off,16%@345,7%@345,13%@345]
RAM 1279/7853MB (lfb 1237x4MB) cpu [18%@345,off,off,11%@345,10%@345,16%@345]
RAM 1279/7853MB (lfb 1236x4MB) cpu [24%@345,off,off,12%@345,11%@345,13%@345]
RAM 1280/7853MB (lfb 1236x4MB) cpu [15%@345,off,off,14%@345,10%@345,14%@345]
RAM 1280/7853MB (lfb 1236x4MB) cpu [18%@345,off,off,14%@345,16%@345,11%@345]
RAM 1280/7853MB (lfb 1236x4MB) cpu [15%@345,off,off,19%@345,13%@345,16%@345]
RAM 1280/7853MB (lfb 1236x4MB) cpu [14%@345,off,off,18%@345,15%@345,11%@345]
RAM 1280/7853MB (lfb 1236x4MB) cpu [20%@345,off,off,13%@345,13%@345,14%@345]
RAM 1280/7853MB (lfb 1235x4MB) cpu [15%@345,off,off,14%@345,18%@345,12%@345]
RAM 1280/7853MB (lfb 1235x4MB) cpu [15%@345,off,off,17%@345,10%@345,13%@345]
RAM 1279/7853MB (lfb 1235x4MB) cpu [18%@345,off,off,19%@345,6%@345,13%@345]
RAM 1280/7853MB (lfb 1235x4MB) cpu [15%@345,off,off,19%@345,13%@345,10%@345]
RAM 1280/7853MB (lfb 1235x4MB) cpu [17%@345,off,off,18%@345,10%@345,14%@345]
RAM 1235/7853MB (lfb 1235x4MB) cpu [11%@345,off,off,7%@345,7%@345,8%@345]
RAM 1234/7853MB (lfb 1235x4MB) cpu [0%@345,off,off,1%@345,0%@345,0%@345]
RAM 1234/7853MB (lfb 1235x4MB) cpu [0%@345,off,off,3%@345,0%@345,0%@345]

 1574 root      20   0  9.979g 214836  44684 S  45.4  2.7   7:10.27 nvcamera-daemon                                                           
11614 nvidia    20   0  700192  12800   9236 S   8.6  0.2   0:00.88 gst-launch-1.0           

The encoder exposes the following parameters

  control-rate        : Bitrate control method
                        flags: readable, writable, changeable only in NULL or READY state
                        Enum "GstOMXVideoEncControlRate" Default: 1, "variable"
                           (0): disable          - Disable
                           (1): variable         - Variable
                           (2): constant         - Constant
                           (3): variable-skip-frames - Variable Skip Frames
                           (4): constant-skip-frames - Constant Skip Frames
  bitrate             : Target bitrate
                        flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4000000 
  quant-i-frames      : Quantization parameter for I-frames (0xffffffff=component default)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295 
  quant-p-frames      : Quantization parameter for P-frames (0xffffffff=component default)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295 
  quant-b-frames      : Quantization parameter for B-frames (0xffffffff=component default)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295 
  iframeinterval      : Encoding Intra Frame occurance frequency
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 0 
  SliceIntraRefreshEnable: Enable Slice Intra Refresh while encoding
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  SliceIntraRefreshInterval: Set SliceIntraRefreshInterval
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 60 
  bit-packetization   : Whether or not Packet size is based upon Number Of bits
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  vbv-size            : virtual buffer size = vbv-size * (bitrate/fps)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 30 Default: 10 
  temporal-tradeoff   : Temporal Tradeoff value for encoder
                        flags: readable, writable, changeable only in NULL or READY state
                        Enum "GstOmxVideoEncTemporalTradeoffType" Default: 0, "Do not drop frames"
                           (0): Do not drop frames - GST_OMX_VIDENC_DROP_NO_FRAMES
                           (1): Drop 1 in 5 frames - GST_OMX_VIDENC_DROP_1_IN_5_FRAMES
                           (2): Drop 1 in 3 frames - GST_OMX_VIDENC_DROP_1_IN_3_FRAMES
                           (3): Drop 1 in 2 frames - GST_OMX_VIDENC_DROP_1_IN_2_FRAMES
                           (4): Drop 2 in 3 frames - GST_OMX_VIDENC_DROP_2_IN_3_FRAMES
  EnableMVBufferMeta  : Enable Motion Vector Meta data for encoding
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  qp-range            : Qunatization range for P and I frame,
			 Use string with values of Qunatization Range 
			 in MinQpP-MaxQpP:MinQpI-MaxQpP:MinQpB-MaxQpB order, to set the property.
                        flags: readable, writable
                        String. Default: "-1,-1:-1,-1:-1,-1"
  MeasureEncoderLatency: Enable Measure Encoder latency Per Frame
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  EnableTwopassCBR    : Enable two pass CBR while encoding
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  preset-level        : HW preset level for encoder
                        flags: readable, writable, changeable only in NULL or READY state
                        Enum "GstOMXVideoEncHwPreset" Default: 0, "UltraFastPreset"
                           (0): UltraFastPreset  - UltraFastPreset for high perf
                           (1): FastPreset       - FastPreset
                           (2): MediumPreset     - MediumPreset
                           (3): SlowPreset       - SlowPreset
  insert-sps-pps      : Insert H.264 SPS, PPS at every IDR frame
                        flags: readable, writable
                        Boolean. Default: false
  num-B-Frames        : Number of B Frames between two reference frames (not recommended)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 2 Default: 0 
  slice-header-spacing: Slice Header Spacing number of macroblocks/bits in one packet
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Long. Range: 0 - 18446744073709551615 Default: 0 
  profile             : Set profile for encode
                        flags: readable, writable, changeable only in NULL or READY state
                        Enum "GstOmxVideoEncProfileType" Default: 1, "baseline"
                           (1): baseline         - GST_OMX_VIDENC_BASELINE_PROFILE
                           (2): main             - GST_OMX_VIDENC_MAIN_PROFILE
                           (8): high             - GST_OMX_VIDENC_HIGH_PROFILE


Dual H264 encoding

gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! tee name=streams \
streams. ! omxh264enc bitrate=8000000 ! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=testA.h264 \
streams. ! omxh264enc bitrate=8000000 ! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=testB.h264


ARM consumption ~44.1% of one core (4 cores available 400% - this means something like 16.5% of total). However, only the capture is 11.25% so the dual h264 consumes 5.25%

RAM 1320/7853MB (lfb 1221x4MB) cpu [0%@1420,off,off,0%@1420,0%@1420,0%@1420]
RAM 1320/7853MB (lfb 1221x4MB) cpu [19%@345,off,off,16%@345,10%@345,9%@345]
RAM 1320/7853MB (lfb 1221x4MB) cpu [18%@345,off,off,18%@345,16%@345,13%@345]
RAM 1321/7853MB (lfb 1221x4MB) cpu [20%@345,off,off,16%@345,19%@345,13%@345]
RAM 1321/7853MB (lfb 1221x4MB) cpu [19%@345,off,off,14%@345,12%@345,15%@345]
RAM 1321/7853MB (lfb 1220x4MB) cpu [18%@345,off,off,17%@345,14%@345,13%@345]
RAM 1321/7853MB (lfb 1219x4MB) cpu [19%@345,off,off,12%@345,18%@345,15%@345]
RAM 1321/7853MB (lfb 1219x4MB) cpu [14%@345,off,off,13%@345,14%@345,20%@345]
RAM 1321/7853MB (lfb 1218x4MB) cpu [14%@345,off,off,15%@345,21%@345,18%@345]
RAM 1321/7853MB (lfb 1218x4MB) cpu [15%@345,off,off,20%@345,15%@345,16%@345]
RAM 1321/7853MB (lfb 1217x4MB) cpu [14%@345,off,off,17%@345,11%@345,21%@345]
RAM 1321/7853MB (lfb 1217x4MB) cpu [18%@345,off,off,22%@345,13%@345,18%@345]
RAM 1321/7853MB (lfb 1217x4MB) cpu [15%@345,off,off,19%@345,20%@345,12%@345]
RAM 1321/7853MB (lfb 1216x4MB) cpu [15%@345,off,off,21%@345,16%@345,13%@345]
RAM 1321/7853MB (lfb 1216x4MB) cpu [16%@345,off,off,22%@345,18%@345,12%@345]
RAM 1275/7853MB (lfb 1216x4MB) cpu [15%@345,off,off,11%@345,11%@345,13%@345]
RAM 1275/7853MB (lfb 1216x4MB) cpu [1%@345,off,off,2%@345,0%@345,0%@345]
RAM 1275/7853MB (lfb 1216x4MB) cpu [0%@345,off,off,2%@345,0%@345,0%@345]
RAM 1275/7853MB (lfb 1216x4MB) cpu [0%@345,off,off,2%@345,0%@345,0%@345]
RAM 1275/7853MB (lfb 1216x4MB) cpu [0%@345,off,off,1%@345,0%@345,0%@345]

H.265

VLC with H265 support

In order to support h265 you need VLC 2.2 in your computer to play the videos

sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get install vlc vlc-plugin-*

videotestsrc

ARM load: 156% but only videotestsrc consumes 100%. According to the NVIDIA forum when using videotestsrc the system is also doing memory copies to feed the encoder with NVMM memory buffers so that loads more the ARM.

gst-launch-1.0 videotestsrc num-buffers=150 ! 'video/x-raw, format=(string)I420,width=(int)640, height=(int)480' ! omxh265enc ! filesink location=test.h265 -e

VLC can play the file correctly at 30fps and reports as codec: MPEG-H Part2/HEVC (H.265)(hevc). The fan on top of the SoC didn't turn on.

nvcamerasrc

gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxh265enc ! filesink location=test.h265 -e

Codecvisa reports bitrate on 7.96Mbps when variable mode is selected on the encoder.

ARM consumption ~55% of one core (4 cores available 400% - this means something like 13% of total). However, only the capture is 11.25% so the h264 consumes 1.75%

RAM 1487/7853MB (lfb 993x4MB) cpu [0%@1267,off,off,0%@1267,0%@1267,0%@1267]
RAM 1487/7853MB (lfb 993x4MB) cpu [12%@345,off,off,12%@345,10%@345,14%@345]
RAM 1487/7853MB (lfb 993x4MB) cpu [9%@345,off,off,19%@345,14%@345,9%@345]
RAM 1487/7853MB (lfb 993x4MB) cpu [16%@345,off,off,14%@345,12%@345,16%@345]
RAM 1487/7853MB (lfb 993x4MB) cpu [16%@345,off,off,11%@345,18%@345,20%@345]
RAM 1487/7853MB (lfb 992x4MB) cpu [14%@345,off,off,14%@345,12%@345,22%@345]
RAM 1488/7853MB (lfb 992x4MB) cpu [16%@345,off,off,18%@345,15%@345,15%@345]
RAM 1487/7853MB (lfb 992x4MB) cpu [22%@345,off,off,16%@345,8%@345,17%@345]
RAM 1487/7853MB (lfb 992x4MB) cpu [24%@345,off,off,17%@345,7%@345,14%@345]
RAM 1487/7853MB (lfb 992x4MB) cpu [13%@345,off,off,20%@345,20%@345,7%@345]
RAM 1487/7853MB (lfb 992x4MB) cpu [17%@345,off,off,19%@345,14%@345,15%@345]
RAM 1488/7853MB (lfb 992x4MB) cpu [15%@345,off,off,22%@345,12%@345,14%@345]
RAM 1488/7853MB (lfb 992x4MB) cpu [16%@345,off,off,14%@345,21%@345,13%@345]
RAM 1488/7853MB (lfb 992x4MB) cpu [15%@345,off,off,19%@345,13%@345,16%@345]
RAM 1488/7853MB (lfb 992x4MB) cpu [11%@345,off,off,11%@345,16%@345,16%@345]
RAM 1488/7853MB (lfb 991x4MB) cpu [22%@345,off,off,11%@345,15%@345,15%@345]
RAM 1488/7853MB (lfb 991x4MB) cpu [18%@345,off,off,14%@345,12%@345,14%@345]
RAM 1488/7853MB (lfb 991x4MB) cpu [8%@345,off,off,13%@345,20%@345,10%@345]
RAM 1488/7853MB (lfb 991x4MB) cpu [11%@345,off,off,12%@345,11%@345,21%@345]

 1574 root      20   0  9.979g 266012  44612 S  47.7  3.3  17:54.85 nvcamera-daemon                                                           
13273 nvidia    20   0  694396  12920   9156 S   8.6  0.2   0:01.32 gst-launch-1.0                         

The encoder exposes the following parameters

  control-rate        : Bitrate control method
                        flags: readable, writable, changeable only in NULL or READY state
                        Enum "GstOMXVideoEncControlRate" Default: 1, "variable"
                           (0): disable          - Disable
                           (1): variable         - Variable
                           (2): constant         - Constant
                           (3): variable-skip-frames - Variable Skip Frames
                           (4): constant-skip-frames - Constant Skip Frames
  bitrate             : Target bitrate
                        flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4000000 
  quant-i-frames      : Quantization parameter for I-frames (0xffffffff=component default)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295 
  quant-p-frames      : Quantization parameter for P-frames (0xffffffff=component default)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295 
  quant-b-frames      : Quantization parameter for B-frames (0xffffffff=component default)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295 
  iframeinterval      : Encoding Intra Frame occurance frequency
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 0 
  SliceIntraRefreshEnable: Enable Slice Intra Refresh while encoding
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  SliceIntraRefreshInterval: Set SliceIntraRefreshInterval
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 60 
  bit-packetization   : Whether or not Packet size is based upon Number Of bits
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  vbv-size            : virtual buffer size = vbv-size * (bitrate/fps)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 30 Default: 10 
  temporal-tradeoff   : Temporal Tradeoff value for encoder
                        flags: readable, writable, changeable only in NULL or READY state
                        Enum "GstOmxVideoEncTemporalTradeoffType" Default: 0, "Do not drop frames"
                           (0): Do not drop frames - GST_OMX_VIDENC_DROP_NO_FRAMES
                           (1): Drop 1 in 5 frames - GST_OMX_VIDENC_DROP_1_IN_5_FRAMES
                           (2): Drop 1 in 3 frames - GST_OMX_VIDENC_DROP_1_IN_3_FRAMES
                           (3): Drop 1 in 2 frames - GST_OMX_VIDENC_DROP_1_IN_2_FRAMES
                           (4): Drop 2 in 3 frames - GST_OMX_VIDENC_DROP_2_IN_3_FRAMES
  EnableMVBufferMeta  : Enable Motion Vector Meta data for encoding
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  qp-range            : Qunatization range for P and I frame,
			 Use string with values of Qunatization Range 
			 in MinQpP-MaxQpP:MinQpI-MaxQpP:MinQpB-MaxQpB order, to set the property.
                        flags: readable, writable
                        String. Default: "-1,-1:-1,-1:-1,-1"
  MeasureEncoderLatency: Enable Measure Encoder latency Per Frame
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  EnableTwopassCBR    : Enable two pass CBR while encoding
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  preset-level        : HW preset level for encoder
                        flags: readable, writable, changeable only in NULL or READY state
                        Enum "GstOMXVideoEncHwPreset" Default: 0, "UltraFastPreset"
                           (0): UltraFastPreset  - UltraFastPreset for high perf
                           (1): FastPreset       - FastPreset
                           (2): MediumPreset     - MediumPreset
                           (3): SlowPreset       - SlowPreset
  slice-header-spacing: Slice Header Spacing number of macroblocks/bits in one packet
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Long. Range: 0 - 18446744073709551615 Default: 0 

Dual H265 encoding

gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! tee name=streams \
streams. ! omxh264enc bitrate=8000000 ! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=testA.h264 \
streams. ! omxh264enc bitrate=8000000 ! 'video/x-h264, stream-format=(string)byte-stream' ! filesink location=testB.h264
gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! tee name=streams \
streams. ! omxh265enc bitrate=8000000 ! 'video/x-h265, stream-format=(string)byte-stream' ! filesink location=testA.h265 \
streams. ! omxh265enc bitrate=8000000 ! 'video/x-h265, stream-format=(string)byte-stream' ! filesink location=testB.h265

ARM consumption ~48.7% of one core (4 cores available 400% - this means something like 13.5% of total). However, only the capture is 11.25% so the dual h265 consumes 2.25%

RAM 1503/7853MB (lfb 965x4MB) cpu [0%@1420,off,off,0%@1420,0%@1420,0%@1420]
RAM 1503/7853MB (lfb 965x4MB) cpu [19%@345,off,off,10%@345,13%@345,16%@345]
RAM 1503/7853MB (lfb 965x4MB) cpu [17%@345,off,off,15%@345,9%@345,12%@345]
RAM 1503/7853MB (lfb 964x4MB) cpu [13%@345,off,off,13%@345,14%@345,19%@345]
RAM 1503/7853MB (lfb 964x4MB) cpu [18%@345,off,off,13%@345,10%@345,13%@345]
RAM 1503/7853MB (lfb 963x4MB) cpu [12%@345,off,off,10%@345,14%@345,18%@345]
RAM 1503/7853MB (lfb 962x4MB) cpu [19%@345,off,off,12%@345,19%@345,10%@345]
RAM 1504/7853MB (lfb 962x4MB) cpu [10%@345,off,off,14%@345,16%@345,18%@345]
RAM 1504/7853MB (lfb 961x4MB) cpu [24%@345,off,off,10%@345,13%@345,15%@345]
RAM 1504/7853MB (lfb 961x4MB) cpu [14%@345,off,off,13%@345,12%@345,18%@345]
RAM 1504/7853MB (lfb 961x4MB) cpu [16%@345,off,off,15%@345,9%@345,14%@345]
RAM 1504/7853MB (lfb 957x4MB) cpu [17%@345,off,off,20%@345,18%@345,15%@345]
RAM 1457/7853MB (lfb 957x4MB) cpu [14%@345,off,off,9%@345,10%@345,15%@345]
RAM 1456/7853MB (lfb 957x4MB) cpu [0%@345,off,off,1%@345,0%@345,0%@345]

VP8

videotestsrc

ARM load: 156% but only videotestsrc consumes 100%. According to the NVIDIA forum when using videotestsrc the system is also doing memory copies to feed the encoder with NVMM memory buffers so that loads more the ARM.

gst-launch-1.0 videotestsrc num-buffers=150 ! 'video/x-raw, format=(string)I420,width=(int)640, height=(int)480' ! omxvp8enc ! qtmux ! filesink location=test.mp4 -e

VLC can play the file correctly at 30fps and reports as codec: Google/On2's VP8 Video (VP80). The fan on top of the SoC didn't turn on.

nvcamerasrc


gst-launch-1.0 -e nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! \
nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxvp8enc bitrate=8000000 ! qtmux ! filesink location=test.mp4 -e

VLC reports bitrate on ~8Mbps.

ARM consumption ~50% of one core (4 cores available 400% - this means something like 15.5% of total). However, only the capture is 11.25% so the VP8 consumes 4.25%

RAM 1442/7853MB (lfb 1134x4MB) cpu [0%@1267,off,off,0%@1267,0%@1267,0%@1267]
RAM 1442/7853MB (lfb 1134x4MB) cpu [16%@345,off,off,12%@345,15%@345,14%@345]
RAM 1442/7853MB (lfb 1134x4MB) cpu [11%@345,off,off,17%@345,14%@345,17%@345]
RAM 1442/7853MB (lfb 1134x4MB) cpu [17%@345,off,off,18%@345,13%@345,10%@345]
RAM 1442/7853MB (lfb 1134x4MB) cpu [19%@345,off,off,18%@345,14%@345,9%@345]
RAM 1442/7853MB (lfb 1134x4MB) cpu [13%@499,off,off,14%@499,15%@499,17%@499]
RAM 1442/7853MB (lfb 1134x4MB) cpu [16%@345,off,off,15%@345,8%@345,11%@345]
RAM 1443/7853MB (lfb 1134x4MB) cpu [14%@345,off,off,13%@345,9%@345,15%@345]
RAM 1442/7853MB (lfb 1134x4MB) cpu [9%@345,off,off,16%@345,13%@345,9%@345]
RAM 1443/7853MB (lfb 1134x4MB) cpu [10%@345,off,off,15%@345,8%@345,14%@345]
RAM 1442/7853MB (lfb 1134x4MB) cpu [11%@345,off,off,19%@345,10%@345,15%@345]
RAM 1443/7853MB (lfb 1134x4MB) cpu [14%@345,off,off,23%@345,10%@345,13%@345]
RAM 1443/7853MB (lfb 1134x4MB) cpu [14%@345,off,off,20%@345,8%@345,12%@345]
RAM 1443/7853MB (lfb 1134x4MB) cpu [15%@345,off,off,21%@345,6%@345,10%@345]

 1574 root      20   0  9.979g 264008  44716 S  45.7  3.3  14:43.58 nvcamera-daemon                                                                                                                                                    
13065 nvidia    20   0  719944  14140   9996 S   9.2  0.2   0:09.34 gst-launch-1.0          

The encoder exposes the following parameters

bitrate             : Target bitrate
                        flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4000000 
  quant-i-frames      : Quantization parameter for I-frames (0xffffffff=component default)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295 
  quant-p-frames      : Quantization parameter for P-frames (0xffffffff=component default)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295 
  quant-b-frames      : Quantization parameter for B-frames (0xffffffff=component default)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295 
  iframeinterval      : Encoding Intra Frame occurance frequency
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 0 
  SliceIntraRefreshEnable: Enable Slice Intra Refresh while encoding
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  SliceIntraRefreshInterval: Set SliceIntraRefreshInterval
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 60 
  bit-packetization   : Whether or not Packet size is based upon Number Of bits
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  vbv-size            : virtual buffer size = vbv-size * (bitrate/fps)
                        flags: readable, writable, changeable only in NULL or READY state
                        Unsigned Integer. Range: 0 - 30 Default: 10 
  temporal-tradeoff   : Temporal Tradeoff value for encoder
                        flags: readable, writable, changeable only in NULL or READY state
                        Enum "GstOmxVideoEncTemporalTradeoffType" Default: 0, "Do not drop frames"
                           (0): Do not drop frames - GST_OMX_VIDENC_DROP_NO_FRAMES
                           (1): Drop 1 in 5 frames - GST_OMX_VIDENC_DROP_1_IN_5_FRAMES
                           (2): Drop 1 in 3 frames - GST_OMX_VIDENC_DROP_1_IN_3_FRAMES
                           (3): Drop 1 in 2 frames - GST_OMX_VIDENC_DROP_1_IN_2_FRAMES
                           (4): Drop 2 in 3 frames - GST_OMX_VIDENC_DROP_2_IN_3_FRAMES
  EnableMVBufferMeta  : Enable Motion Vector Meta data for encoding
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  qp-range            : Qunatization range for P and I frame,
			 Use string with values of Qunatization Range 
			 in MinQpP-MaxQpP:MinQpI-MaxQpP:MinQpB-MaxQpB order, to set the property.
                        flags: readable, writable
                        String. Default: "-1,-1:-1,-1:-1,-1"
  MeasureEncoderLatency: Enable Measure Encoder latency Per Frame
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  EnableTwopassCBR    : Enable two pass CBR while encoding
                        flags: readable, writable, changeable only in NULL or READY state
                        Boolean. Default: false
  preset-level        : HW preset level for encoder
                        flags: readable, writable, changeable only in NULL or READY state
                        Enum "GstOMXVideoEncHwPreset" Default: 0, "UltraFastPreset"
                           (0): UltraFastPreset  - UltraFastPreset for high perf
                           (1): FastPreset       - FastPreset
                           (2): MediumPreset     - MediumPreset
                           (3): SlowPreset       - SlowPreset


  Index