# v4l2h264enc

The v4l2h264enc plugin uses the V4L2 APIs to encode the video stream.

- The plugin uses the H.264 video encoder to provide hardware accelerated H.264 (MPEG-4 Part 10) encoding on supported platforms.
- The plugin is based on the [GstVideoEncoder](https://gstreamer.freedesktop.org/documentation/video/gstvideoencoder.html?gi-language=c) base class.

## Inheritance chain

[GObject](https://docs.gtk.org/gobject/) → [GstObject](https://gstreamer.freedesktop.org/documentation/gstreamer/gstobject.html?gi-language=c) → [GstElement](https://gstreamer.freedesktop.org/documentation/gstreamer/gstelement.html?gi-language=c) → [GstVideoEncoder](https://gstreamer.freedesktop.org/documentation/video/gstvideoencoder.html?gi-language=c) → GstV4l2VideoEnc → v4l2h264enc

The following tables provide information on pad templates and element properties of v4l2h264enc. For use cases, see [Video encode and decode](https://docs.qualcomm.com/doc/80-70029-50/topic/camera-and-video-encode.html) and [Slice-based encoding](https://docs.qualcomm.com/doc/80-70029-50/topic/camera-and-video-encode.html#slice-based-encoding).

## Pad configuration

| Pad Name | Capabilities | Capabilities | Capabilities |
| --- | --- | --- | --- |
| <br>SINK template: 'sink'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  Always</p></li><br>> <li><p><em>Direction:</em>  sink</p></li><br>> </ul> | video/x-raw | format: | { (string)NV12, (string)NV21 } |
| <br>SINK template: 'sink'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  Always</p></li><br>> <li><p><em>Direction:</em>  sink</p></li><br>> </ul> | video/x-raw | width: | [ 1, 32768 ] |
| <br>SINK template: 'sink'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  Always</p></li><br>> <li><p><em>Direction:</em>  sink</p></li><br>> </ul> | video/x-raw | height: | [ 1, 32768 ] |
| <br>SINK template: 'sink'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  Always</p></li><br>> <li><p><em>Direction:</em>  sink</p></li><br>> </ul> | video/x-raw | framerate: | [ 0/1, 2147483647/1 ] |
| <br>SRC template: 'src'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  Always</p></li><br>> <li><p><em>Direction:</em>  source</p></li><br>> </ul> | video/x-h264 | alignment: | au |
| <br>SRC template: 'src'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  Always</p></li><br>> <li><p><em>Direction:</em>  source</p></li><br>> </ul> | video/x-h264 | stream-format: | byte-stream |
| <br>SRC template: 'src'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  Always</p></li><br>> <li><p><em>Direction:</em>  source</p></li><br>> </ul> | video/x-h264 | level: | { (string)1, (string)1b, (string)1.1, (string)1.2, (string)1.3, (string)2, (string)2.1, (string)2.2, (string)3, (string)3.1, (string)3.2, (string)4, (string)4.1, (string)4.2, (string)5, (string)5.1 } |
| <br>SRC template: 'src'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  Always</p></li><br>> <li><p><em>Direction:</em>  source</p></li><br>> </ul> | video/x-h264 | profile: | { (string)baseline, (string)constrained-baseline, (string)main, (string)high, (string)constrained-high } |
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |

## Element configuration

Table : Element properties of v4l2h264enc

| Property | Description |
| --- | --- |
| capture-io-mode | - Capture I/O mode (matches src pad).<br>    - <ul><br><li><p>flags: readable, writable</p></li><br><li><p>Enum "GstV4l2IOMode"; default: 0, "auto"</p><br><blockquote><br><div><ul class="simple"><br><li><p>(0): auto - GST_V4L2_IO_AUTO</p></li><br><li><p>(1): rw - GST_V4L2_IO_RW</p></li><br><li><p>(2): mmap - GST_V4L2_IO_MMAP</p></li><br><li><p>(3): userptr - GST_V4L2_IO_USERPTR</p></li><br><li><p>(4): dmabuf - GST_V4L2_IO_DMABUF</p></li><br><li><p>(5): dmabuf-import - GST_V4L2_IO_DMABUF_IMPORT</p></li><br></ul><br></div></blockquote><br></li><br></ul> |
| device | - Device location.<br>    - <ul class="simple"><br><li><p>flags: readable</p></li><br><li><p>String. Default: "/dev/video1"</p></li><br></ul> |
| device-fd | - File descriptor of the device.<br>    - <ul class="simple"><br><li><p>flags: readable</p></li><br><li><p>Integer. Range: ˗1 to 2147483647, default: ˗1</p></li><br></ul> |
| device-name | - Name of the device.<br>    - <ul class="simple"><br><li><p>flags: readable</p></li><br><li><p>String. Default: null</p></li><br></ul> |
| extra-controls | - Extra v4l2 control IDs (CIDs) for the device.<br>    - <ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Boxed pointer of type "GstStructure"</p></li><br></ul> |
| min-force-key-unit-interval | - Minimum interval between force-key unit requests in nanoseconds.<br>    - <ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Unsigned Integer 64</p></li><br><li><p>Range: 0 - 18446744073709551615; default: 0</p></li><br></ul> |
| name | - The name of the object.<br>    - <ul class="simple"><br><li><p>flags: readable, writable, 0x2000</p></li><br><li><p>String. Default: "v4l2h264enc0"</p></li><br></ul> |
| output-io-mode | - Output side I/O mode (matches sink pad).<br>    - <ul><br><li><p>flags: readable, writable</p></li><br><li><p>Enum "GstV4l2IOMode" Default: 0, "auto"</p><br><blockquote><br><div><ul class="simple"><br><li><p>(0): auto - GST_V4L2_IO_AUTO</p></li><br><li><p>(1): rw - GST_V4L2_IO_RW</p></li><br><li><p>(2): mmap - GST_V4L2_IO_MMAP</p></li><br><li><p>(3): userptr - GST_V4L2_IO_USERPTR</p></li><br><li><p>(4): dmabuf - GST_V4L2_IO_DMABUF</p></li><br><li><p>(5): dmabuf-import - GST_V4L2_IO_DMABUF_IMPORT</p></li><br></ul><br></div></blockquote><br></li><br></ul> |
| parent | - The parent of the object.<br>    - <ul class="simple"><br><li><p>flags: readable, writable, 0x2000</p></li><br><li><p>Object of type "GstObject"</p></li><br></ul> |
| qos | - Handle Quality-of-Service events from downstream.<br>    - <ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Boolean. Default: true</p></li><br></ul> |

Table : v4l2ctl extra-controls–user controls

| Control name | Control type | Parameters |
| --- | --- | --- |
| horizontal\_flip | Boolean | <ul class="simple"><br><li><p>value=0; this is the default value</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| vertical\_flip | Boolean | <ul class="simple"><br><li><p>value=0; this is the default value</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>flags= execute-on-write</p></li><br>> </ul> |
| rotate | Integer | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=270</p></li><br>> <li><p>step=90</p></li><br>> <li><p>value=0; this is the default value</p></li><br>> <li><p>flags=execute-on-write and modify-layout</p></li><br>> </ul> |

Table : v4l2ctl extra-controls–codec controls

| Control name | Control type | Parameters |
| --- | --- | --- |
| video\_b\_frames | Integer | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=7</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=0; this is the default value</p></li><br>> <li><p>flags=update and execute-on-write</p></li><br>> </ul> |
| video\_gop\_size | Integer | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=2147483647</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=59; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| video\_bitrate\_mode | Menu | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul><br>> <li><p>max=3</p></li><br>> <li><p>value=0: Variable Bitrate</p><br>> <blockquote><br>> <div><ul class="simple"><br>> <li><p>0: Variable Bitrate; this is the default value</p></li><br>> <li><p>1: Constant Bitrate</p></li><br>> <li><p>3: Maximum Bitrate</p></li><br>> </ul><br>> </div></blockquote><br>> </li><br>> <li><p>flags=update, execute-on-write</p></li><br>> </ul> |
| video\_bitrate | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=100000000</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=20000000</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| frame\_level\_rate\_control\_enable | Integer | <ul class="simple"><br><li><p>value=1; this is the default value</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| maximum\_bytes\_in\_a\_slice | Integer | <ul class="simple"><br><li><p>min=512</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=12500000</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=512; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| number\_of\_mbs\_in\_a\_slice | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=36864</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=1; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| slice\_partitioning\_method | Menu | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul><br>> <li><p>max=2</p></li><br>> <li><p>value=0:Single</p><br>> <blockquote><br>> <div><ul class="simple"><br>> <li><p>0: Single; this is the default value</p></li><br>> <li><p>1: Max macro blocks</p></li><br>> <li><p>2: Max Bytes</p></li><br>> </ul><br>> </div></blockquote><br>> </li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| ltr\_count | Integer | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=2</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=0; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| frame\_ltr\_index | Integer | <ul class="simple"><br><li><p>min=-1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=1</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=-1; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| use\_ltr\_frames | Bitmask | <ul class="simple"><br><li><p>max=0x00000003</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>default=0x00000000</p></li><br>> <li><p>value=0</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| intra\_refresh\_period | Integer | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=2147483647</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=0; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| intra\_refresh\_period\_type | Menu | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul><br>> <li><p>max=1</p></li><br>> <li><p>value=0</p><br>> <blockquote><br>> <div><ul class="simple"><br>> <li><p>0: Random; this is the default value</p></li><br>> <li><p>1: Cyclic</p></li><br>> </ul><br>> </div></blockquote><br>> </li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |

Table : v4l2ctl extra-controls–H.264 codec controls

| Control name | Control type | Parameters |
| --- | --- | --- |
| h264\_i\_frame\_qp\_value | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=51</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=20; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_p\_frame\_qp\_value | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=51</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=20; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_b\_frame\_qp\_value | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=51</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=20; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_minimum\_qp\_value | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=51</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=1; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_maximum\_qp\_value | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=51</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=51; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_entropy\_mode | Menu | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul><br>> <li><p>max=1</p></li><br>> <li><p>value=1 (CABAC)</p><br>> <blockquote><br>> <div><ul class="simple"><br>> <li><p>0: CAVLC</p></li><br>> <li><p>1: CABAC; this is the default value</p></li><br>> </ul><br>> </div></blockquote><br>> </li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_level | Menu | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul><br>> <li><p>max=15</p></li><br>> <li><p>value=15 (5.1)</p><br>> <blockquote><br>> <div><ul class="simple"><br>> <li><p>0: 1</p></li><br>> <li><p>1: 1b</p></li><br>> <li><p>2: 1.1</p></li><br>> <li><p>3: 1.2</p></li><br>> <li><p>4: 1.3</p></li><br>> <li><p>5: 2</p></li><br>> <li><p>6: 2.1</p></li><br>> <li><p>7: 2.2</p></li><br>> <li><p>8: 3</p></li><br>> <li><p>9: 3.1</p></li><br>> <li><p>10: 3.2</p></li><br>> <li><p>11: 4</p></li><br>> <li><p>12: 4.1</p></li><br>> <li><p>13: 4.2</p></li><br>> <li><p>14: 5</p></li><br>> <li><p>15: 5.1; this is the default value</p></li><br>> </ul><br>> </div></blockquote><br>> </li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_profile | Menu | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul><br>> <li><p>max=17</p></li><br>> <li><p>value=4 (High)</p><br>> <blockquote><br>> <div><ul class="simple"><br>> <li><p>0: Baseline</p></li><br>> <li><p>1: Constrained Baseline</p></li><br>> <li><p>2: Main</p></li><br>> <li><p>4: High; this is the default value</p></li><br>> <li><p>17: Constrained High</p></li><br>> </ul><br>> </div></blockquote><br>> </li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| enable\_h264\_hierarchical\_coding | Integer | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=1</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=0; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_hierarchical\_coding\_type | Menu | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul><br>> <li><p>max=1</p></li><br>> <li><p>value =1</p><br>> <blockquote><br>> <div><ul class="simple"><br>> <li><p>0: Hier Coding B</p></li><br>> <li><p>1: Hier Coding P; this is the default value</p></li><br>> </ul><br>> </div></blockquote><br>> </li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_number\_of\_hc\_layers | Integer | <ul class="simple"><br><li><p>min=0</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=5</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=0; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_i\_frame\_minimum\_qp\_value | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=51</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=1; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_i\_frame\_maximum\_qp\_value | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=51</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=51; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_p\_frame\_minimum\_qp\_value | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=51</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=1; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_p\_frame\_maximum\_qp\_value | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=51</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=51; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_b\_frame\_minimum\_qp\_value | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=51</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=1; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_b\_frame\_maximum\_qp\_value | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=51</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=51; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_hierarchical\_lay\_0\_bitrate | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=100000000</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=20000000; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_hierarchical\_lay\_1\_bitrate | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=100000000</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=20000000; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_hierarchical\_lay\_2\_bitrate | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=100000000</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=20000000; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_hierarchical\_lay\_3\_bitrate | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=100000000</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=20000000; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_hierarchical\_lay\_4\_bitrate | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=100000000</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=20000000; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |
| h264\_hierarchical\_lay\_5\_bitrate | Integer | <ul class="simple"><br><li><p>min=1</p></li><br></ul><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>max=100000000</p></li><br>> <li><p>step=1</p></li><br>> <li><p>value=20000000; this is the default value</p></li><br>> <li><p>flags=execute-on-write</p></li><br>> </ul> |

Last Published: Jun 03, 2026

[Previous Topic
v4l2h265dec](https://docs.qualcomm.com/bundle/publicresource/80-70029-50/topics/v4l2h265dec.md) [Next Topic
v4l2h265enc](https://docs.qualcomm.com/bundle/publicresource/80-70029-50/topics/v4l2h265enc.md)

Source: [https://docs.qualcomm.com/doc/80-70029-50/topic/v4l2h264enc.html](https://docs.qualcomm.com/doc/80-70029-50/topic/v4l2h264enc.html)