# nvh265enc

Encode H.265 video streams using NVCODEC API CUDA Mode

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──GstVideoEncoder
                        ╰──GstNvEncoder
                            ╰──nvh265enc

## Implemented interfaces

    GstPreset

## Factory details

Authors: – Seungha Yang <seungha></seungha>

Classification: – `Codec/Encoder/Video/Hardware`

Rank – primary + 1

Plugin – nvcodec

Package – GStreamer Bad Plug-ins

## Pad Templates

### `sink`

    video/x-raw(memory:CUDAMemory):
             format: { NV12, P010_10LE, Y444, Y444_16LE, GBR, GBR_16LE, VUYA, RGBA, RGBx, BGRA, BGRx, RGB10A2_LE }
              width: [ 144, 8192 ]
             height: [ 48, 8192 ]
     interlace-mode: progressive

    video/x-raw(memory:D3D12Memory):
             format: { NV12, P010_10LE, Y444, Y444_16LE, GBR, GBR_16LE, VUYA, RGBA, RGBx, BGRA, BGRx, RGB10A2_LE }
              width: [ 144, 8192 ]
             height: [ 48, 8192 ]
     interlace-mode: progressive

    video/x-raw(memory:GLMemory):
             format: { NV12, P010_10LE, Y444, Y444_16LE, GBR, GBR_16LE, VUYA, RGBA, RGBx, BGRA, BGRx, RGB10A2_LE }
              width: [ 144, 8192 ]
             height: [ 48, 8192 ]
     interlace-mode: progressive
    video/x-raw:
             format: { NV12, P010_10LE, Y444, Y444_16LE, GBR, GBR_16LE, VUYA, RGBA, RGBx, BGRA, BGRx, RGB10A2_LE }
              width: [ 144, 8192 ]
             height: [ 48, 8192 ]
     interlace-mode: progressive

Presence – always

Direction – sink

Object type – GstPad

### `src`

    video/x-h265:
              width: [ 144, 8192 ]
             height: [ 48, 8192 ]
            profile: { (string)main, (string)main-10, (string)main-444, (string)main-444-10 }
      stream-format: { (string)byte-stream, (string)hvc1, (string)hev1 }
          alignment: au

Presence – always

Direction – src

Object type – GstPad

## Properties

### aq-strength

    “aq-strength” guint

Adaptive Quantization Strength when spatial-aq is enabled from 1 (low) to 15 (aggressive), (0 = autoselect)

Flags : Read / Write

Default value : 0

### aud

    “aud” gboolean

Use AU (Access Unit) delimiter

Flags : Read / Write

Default value : true

### b-adapt

    “b-adapt” gboolean

Enable adaptive B-frame insert when lookahead is enabled

Flags : Read / Write

Default value : false

### bframes

    “bframes” guint

Number of B-frames between I and P

Flags : Read / Write

Default value : 0

### bitrate

    “bitrate” guint

Bitrate in kbit/sec (0 = automatic)

Flags : Read / Write

Default value : 0

### const-quality

    “const-quality” gdouble

Target Constant Quality level for VBR mode (0 = automatic)

Flags : Read / Write

Default value : 0

### cuda-device-id

    “cuda-device-id” guint

CUDA device ID of associated GPU

Flags : Read

Default value : 0

### gop-size

    “gop-size” gint

Number of frames between intra frames (-1 = infinite)

Flags : Read / Write

Default value : 75

### i-adapt

    “i-adapt” gboolean

Enable adaptive I-frame insert when lookahead is enabled

Flags : Read / Write

Default value : false

### max-bitrate

    “max-bitrate” guint

Maximum Bitrate in kbit/sec (ignored in CBR mode)

Flags : Read / Write

Default value : 0

### multi-pass

    “multi-pass” GstNvEncoderMultiPass *

Multi pass encoding

Flags : Read / Write

Default value : default (0)

### nonref-p

    “nonref-p” gboolean

Automatic insertion of non-reference P-frames

Flags : Read / Write

Default value : false

### preset

    “preset” GstNvEncoderPreset *

Encoding Preset

Flags : Read / Write

Default value : default (0)

### qp-const

    “qp-const” gint

DEPRECATED, use qp-const-{i,p,b} properties instead

Flags : Read / Write

Default value : -1

### qp-const-b

    “qp-const-b” gint

Constant QP value for B frame (-1 = default)

Flags : Read / Write

Default value : -1

### qp-const-i

    “qp-const-i” gint

Constant QP value for I frame (-1 = default)

Flags : Read / Write

Default value : -1

### qp-const-p

    “qp-const-p” gint

Constant QP value for P frame (-1 = default)

Flags : Read / Write

Default value : -1

### qp-max

    “qp-max” gint

DEPRECATED, Use qp-max-{i,p,b} properties instead

Flags : Read / Write

Default value : -1

### qp-max-b

    “qp-max-b” gint

Maximum QP value for B frame, (-1 = automatic)

Flags : Read / Write

Default value : -1

### qp-max-i

    “qp-max-i” gint

Maximum QP value for I frame, (-1 = automatic)

Flags : Read / Write

Default value : -1

### qp-max-p

    “qp-max-p” gint

Maximum QP value for P frame, (-1 = automatic)

Flags : Read / Write

Default value : -1

### qp-min

    “qp-min” gint

DEPRECATED, Use qp-min-{i,p,b} properties instead

Flags : Read / Write

Default value : -1

### qp-min-b

    “qp-min-b” gint

Minimum QP value for B frame, (-1 = automatic)

Flags : Read / Write

Default value : -1

### qp-min-i

    “qp-min-i” gint

Minimum QP value for I frame, (-1 = automatic)

Flags : Read / Write

Default value : -1

### qp-min-p

    “qp-min-p” gint

Minimum QP value for P frame, (-1 = automatic)

Flags : Read / Write

Default value : -1

### rc-lookahead

    “rc-lookahead” guint

Number of frames for frame type lookahead

Flags : Read / Write

Default value : 0

### rc-mode

    “rc-mode” GstNvEncoderRCMode *

Rate Control Mode

Flags : Read / Write

Default value : default (0)

### repeat-sequence-header

    “repeat-sequence-header” gboolean

Insert sequence headers (SPS/PPS) per IDR, ignored if negotiated stream-format is "hvc1"

Flags : Read / Write

Default value : false

### spatial-aq

    “spatial-aq” gboolean

Spatial Adaptive Quantization

Flags : Read / Write

Default value : false

### strict-gop

    “strict-gop” gboolean

Minimize GOP-to-GOP rate fluctuations

Flags : Read / Write

Default value : false

### temporal-aq

    “temporal-aq” gboolean

Temporal Adaptive Quantization

Flags : Read / Write

Default value : false

### tune

    “tune” GstNvEncoderTune *

Encoding tune

Flags : Read / Write

Default value : default (0)

### vbv-buffer-size

    “vbv-buffer-size” guint

VBV(HRD) Buffer Size in kbits (0 = NVENC default)

Flags : Read / Write

Default value : 0

### weighted-pred

    “weighted-pred” gboolean

Enables Weighted Prediction

Flags : Read / Write

Default value : false

### zerolatency

    “zerolatency” gboolean

Zero latency operation (no reordering delay)

Flags : Read / Write

Default value : false

## Named constants

### GstNvEncoderMultiPass

#### Members

`default` (0) – Disable multi-pass when cqp, vbr or cbr is used. Otherwise encoder will select it based on rc-mode
`disabled` (1) – Disabled
`two-pass-quarter` (2) – Two pass with quarter resolution encoding in first pass
`two-pass` (3) – Two pass

Since : 1.24

### GstNvEncoderPreset

#### Members

`default` (0) – Default (deprecated, use p1~7 with tune)
`hp` (1) – High Performance (deprecated, use p1~7 with tune)
`hq` (2) – High Quality (deprecated, use p1~7 with tune)
`low-latency` (3) – Low Latency (deprecated, use p1~7 with tune)
`low-latency-hq` (4) – Low Latency (deprecated, use p1~7 with tune), High Quality
`low-latency-hp` (5) – Low Latency (deprecated, use p1~7 with tune), High Performance
`lossless` (6) – Lossless (deprecated, use p1~7 with tune)
`lossless-hp` (7) – Lossless (deprecated, use p1~7 with tune), High Performance
`p1` (8) – P1, fastest
`p2` (9) – P2, faster
`p3` (10) – P3, fast
`p4` (11) – P4, medium
`p5` (12) – P5, slow
`p6` (13) – P6, slower
`p7` (14) – P7, slowest

Since : 1.22

### GstNvEncoderRCMode

#### Members

`default` (0) – Default
`constqp` (1) – Constant Quantization
`cbr` (2) – Constant Bit Rate
`vbr` (3) – Variable Bit Rate
`vbr-minqp` (4) – Variable Bit Rate (deprecated, use vbr and qp options)
`cbr-ld-hq` (5) – Low-Delay CBR, High Quality (deprecated, use cbr with tune and multipass)
`cbr-hq` (6) – CBR, High Quality (deprecated, use cbr with tune and multipass)
`vbr-hq` (7) – VBR, High Quality (deprecated, use vbr with tune and multipass)

Since : 1.22

### GstNvEncoderTune

#### Members

`default` (0) – High quality when p1~7 preset is used. Otherwise encoder will select it based on preset
`high-quality` (1) – High quality
`low-latency` (2) – Low latency
`ultra-low-latency` (3) – Ultra low latency
`lossless` (4) – Lossless

Since : 1.24

The results of the search are