# uvch264src

A camera bin src element that wraps v4l2src and implements UVC H264 Extension Units (XU) to control the H264 encoder in the camera

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──GstBin
                        ╰──GstBaseCameraSrc
                            ╰──uvch264src

## Implemented interfaces

    GstChildProxy

## Factory details

Authors: – Youness Alaoui

Classification: – `Source/Video`

Rank – none

Plugin – uvch264

Package – GStreamer Bad Plug-ins

## Pad Templates

### `imgsrc`

    EMPTY

Presence – always

Direction – src

Object type – GstPad

### `vfsrc`

The video src pad template

    video/x-raw:
             format: { ABGR64_LE, BGRA64_LE, AYUV64, ARGB64_LE, ARGB64, RGBA64_LE, ABGR64_BE, BGRA64_BE, ARGB64_BE, RGBA64_BE, GBRA_12LE, GBRA_12BE, Y412_LE, Y412_BE, A444_10LE, GBRA_10LE, A444_10BE, GBRA_10BE, A422_10LE, A422_10BE, A420_10LE, A420_10BE, RGB10A2_LE, BGR10A2_LE, Y410, GBRA, ABGR, VUYA, BGRA, AYUV, ARGB, RGBA, A420, AV12, Y444_16LE, Y444_16BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, I422_10LE, I422_10BE, NV16_10LE32, Y210, v210, UYVP, I420_10LE, I420_10BE, P010_10LE, NV12_10LE32, NV12_10LE40, P010_10BE, NV12_10BE_8L128, Y444, RGBP, GBR, BGRP, NV24, xBGR, BGRx, xRGB, RGBx, BGR, IYU2, v308, RGB, Y42B, NV61, NV16, VYUY, UYVY, YVYU, YUY2, I420, YV12, NV21, NV12, NV12_8L128, NV12_64Z32, NV12_4L4, NV12_32L32, NV12_16L32S, Y41B, IYU1, YVU9, YUV9, RGB16, BGR16, RGB15, BGR15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE32, GRAY8 }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]
    image/jpeg:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

Presence – always

Direction – src

Object type – GstPad

### `vidsrc`

    video/x-raw:
             format: { ABGR64_LE, BGRA64_LE, AYUV64, ARGB64_LE, ARGB64, RGBA64_LE, ABGR64_BE, BGRA64_BE, ARGB64_BE, RGBA64_BE, GBRA_12LE, GBRA_12BE, Y412_LE, Y412_BE, A444_10LE, GBRA_10LE, A444_10BE, GBRA_10BE, A422_10LE, A422_10BE, A420_10LE, A420_10BE, RGB10A2_LE, BGR10A2_LE, Y410, GBRA, ABGR, VUYA, BGRA, AYUV, ARGB, RGBA, A420, AV12, Y444_16LE, Y444_16BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, I422_10LE, I422_10BE, NV16_10LE32, Y210, v210, UYVP, I420_10LE, I420_10BE, P010_10LE, NV12_10LE32, NV12_10LE40, P010_10BE, NV12_10BE_8L128, Y444, RGBP, GBR, BGRP, NV24, xBGR, BGRx, xRGB, RGBx, BGR, IYU2, v308, RGB, Y42B, NV61, NV16, VYUY, UYVY, YVYU, YUY2, I420, YV12, NV21, NV12, NV12_8L128, NV12_64Z32, NV12_4L4, NV12_32L32, NV12_16L32S, Y41B, IYU1, YVU9, YUV9, RGB16, BGR16, RGB15, BGR15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE32, GRAY8 }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]
    image/jpeg:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]
    video/x-h264:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]
      stream-format: { (string)byte-stream, (string)avc }
          alignment: au
            profile: { (string)high, (string)main, (string)baseline, (string)constrained-baseline }

Presence – always

Direction – src

Object type – GstPad

## Action Signals

### get-boolean-setting

    g_signal_emit_by_name (param_0, "get-boolean-setting", arg0, arg1, arg2, &ret);

    ret = param_0.emit ("get-boolean-setting", arg0, arg1, arg2)

    let ret = param_0.emit ("get-boolean-setting", arg0, arg1, arg2);

Parameters:

`param_0` (GstElement *) –
No description available
`arg0` (gchararray) –
No description available
`arg1` (gpointer) –
No description available
`arg2` (gpointer) –
No description available
Returns (gboolean) –
No description available

Flags: Run Last / Action

### get-enum-setting

    g_signal_emit_by_name (param_0, "get-enum-setting", arg0, arg1, arg2, &ret);

    ret = param_0.emit ("get-enum-setting", arg0, arg1, arg2)

    let ret = param_0.emit ("get-enum-setting", arg0, arg1, arg2);

Parameters:

`param_0` (GstElement *) –
No description available
`arg0` (gchararray) –
No description available
`arg1` (gpointer) –
No description available
`arg2` (gpointer) –
No description available
Returns (gboolean) –
No description available

Flags: Run Last / Action

### get-int-setting

    g_signal_emit_by_name (param_0, "get-int-setting", arg0, arg1, arg2, arg3, &ret);

    ret = param_0.emit ("get-int-setting", arg0, arg1, arg2, arg3)

    let ret = param_0.emit ("get-int-setting", arg0, arg1, arg2, arg3);

Parameters:

`param_0` (GstElement *) –
No description available
`arg0` (gchararray) –
No description available
`arg1` (gpointer) –
No description available
`arg2` (gpointer) –
No description available
`arg3` (gpointer) –
No description available
Returns (gboolean) –
No description available

Flags: Run Last / Action

## Properties

### average-bitrate

    “average-bitrate” guint

The average bitrate in bits/second (dynamic control)

Flags : Read / Write

Default value : 3000000

### colorspace-name

    “colorspace-name” gchararray

The name of the colorspace element

Flags : Read / Write / Construct

Default value : videoconvert

### device

    “device” gchararray

Device location

Flags : Read / Write

Default value : /dev/video0

### device-name

    “device-name” gchararray

Name of the device

Flags : Read

### enable-sei

    “enable-sei” gboolean

Enable SEI picture timing (static control)

Flags : Read / Write

Default value : false

### entropy

    “entropy” Uvc-h264entropy *

Entropy (static control)

Flags : Read / Write

Default value : cavlc (0)

### fixed-framerate

    “fixed-framerate” gboolean

Fixed framerate (static & dynamic control)

Flags : Read / Write

Default value : false

### iframe-period

    “iframe-period” guint

Time between IDR frames in milliseconds (static control)

Flags : Read / Write

Default value : 10000

### initial-bitrate

    “initial-bitrate” guint

Initial bitrate in bits/second (static control)

Flags : Read / Write

Default value : 3000000

### jpeg-decoder-name

    “jpeg-decoder-name” gchararray

The name of the jpeg decoder element

Flags : Read / Write / Construct

Default value : jpegdec

### leaky-bucket-size

    “leaky-bucket-size” guint

Size of the leaky bucket size in milliseconds (static control)

Flags : Read / Write

Default value : 1000

### level-idc

    “level-idc” guint

Level IDC (dynamic control)

Flags : Read / Write

Default value : 40

### ltr-buffer-size

    “ltr-buffer-size” gint

Total number of Long-Term Reference frames (dynamic control)

Flags : Read / Write

Default value : 0

### ltr-encoder-control

    “ltr-encoder-control” gint

Number of LTR frames the device can control (dynamic control)

Flags : Read / Write

Default value : 0

### max-bframe-qp

    “max-bframe-qp” gint

The minimum Quantization step size for B frames (dynamic control)

Flags : Read / Write

Default value : 46

### max-iframe-qp

    “max-iframe-qp” gint

The minimum Quantization step size for I frames (dynamic control)

Flags : Read / Write

Default value : 46

### max-mbps

    “max-mbps” guint

The number of macroblocks per second for the maximum processing rate

Flags : Read

Default value : 0

### max-pframe-qp

    “max-pframe-qp” gint

The minimum Quantization step size for P frames (dynamic control)

Flags : Read / Write

Default value : 46

### min-bframe-qp

    “min-bframe-qp” gint

The minimum Quantization step size for B frames (dynamic control)

Flags : Read / Write

Default value : 10

### min-iframe-qp

    “min-iframe-qp” gint

The minimum Quantization step size for I frames (dynamic control)

Flags : Read / Write

Default value : 10

### min-pframe-qp

    “min-pframe-qp” gint

The minimum Quantization step size for P frames (dynamic control)

Flags : Read / Write

Default value : 10

### num-buffers

    “num-buffers” gint

Number of buffers to output before sending EOS (-1 = unlimited)

Flags : Read / Write

Default value : -1

### num-clock-samples

    “num-clock-samples” gint

Number of clock samples to gather for the PTS synchronization (-1 = unlimited)

Flags : Read / Write / Construct

Default value : 0

### num-reorder-frames

    “num-reorder-frames” guint

Number of B frames between the references frames (static control)

Flags : Read / Write

Default value : 0

### peak-bitrate

    “peak-bitrate” guint

The peak bitrate in bits/second (dynamic control)

Flags : Read / Write

Default value : 3000000

### preview-flipped

    “preview-flipped” gboolean

Horizontal flipped image for non H.264 streams (static control)

Flags : Read / Write

Default value : false

### rate-control

    “rate-control” Uvc-h264rate-control *

Rate control mode (static & dynamic control)

Flags : Read / Write

Default value : cbr (1)

### slice-mode

    “slice-mode” Uvc-h264slice-mode *

Defines the unit of the slice-units property (static control)

Flags : Read / Write

Default value : slice/frame (3)

### slice-units

    “slice-units” guint

Slice units (static control)

Flags : Read / Write

Default value : 4

### usage-type

    “usage-type” Uvc-h264usage-type *

The usage type (static control)

Flags : Read / Write

Default value : realtime (1)

## Named constants

### Uvc-h264entropy

#### Members

`cavlc` (0) – CAVLC
`cabac` (1) – CABAC

### Uvc-h264rate-control

#### Members

`cbr` (1) – Constant bit rate
`vbr` (2) – Variable bit rate
`qp` (3) – Constant QP

### Uvc-h264slice-mode

#### Members

`ignored` (0) – Ignored
`bits/slice` (1) – Bits per slice
`MBs/slice` (2) – MBs per Slice
`slice/frame` (3) – Slice Per Frame

### Uvc-h264usage-type

#### Members

`realtime` (1) – Realtime (video conferencing)
`broadcast` (2) – Broadcast
`storage` (3) – Storage
`ucconfig0` (4) – UCConfig 0
`ucconfig1` (5) – UCConfig 1
`ucconfig2q` (6) – UCConfig 2Q
`ucconfig2s` (7) – UCConfig 2S
`ucconfig3` (8) – UCConfig 3

The results of the search are