TUT HEVC Encoder
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Enumerations | Functions
kvazaar.h File Reference

This file defines the public API of Kvazaar when used as a library. More...

#include <stdint.h>
#include <stdio.h>
Include dependency graph for kvazaar.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  kvz_gop_config
 GoP picture configuration. More...
 
struct  kvz_config
 Struct which contains all configuration data. More...
 
struct  kvz_picture
 Struct which contains all picture data. More...
 
struct  kvz_frame_info
 Other information about an encoded frame. More...
 
struct  kvz_data_chunk
 A linked list of chunks of data. More...
 
struct  kvz_api
 

Macros

#define KVZ_PUBLIC
 
#define KVZ_MAX_GOP_LENGTH   32
 Maximum length of a GoP structure.
 
#define KVZ_MAX_GOP_LAYERS   6
 Maximum amount of GoP layers.
 
#define KVZ_DATA_CHUNK_SIZE   4096
 Size of data chunks.
 
#define KVZ_BIT_DEPTH   8
 
#define KVZ_FORMAT2CSP(format)   ((enum kvz_chroma_format)"\0\1\2\3"[format])
 

Typedefs

typedef uint8_t kvz_pixel
 
typedef int16_t kvz_pixel_im
 
typedef struct kvz_encoder kvz_encoder
 Opaque data structure representing one instance of the encoder.
 
typedef struct kvz_gop_config kvz_gop_config
 GoP picture configuration.
 
typedef struct kvz_config kvz_config
 Struct which contains all configuration data.
 
typedef struct kvz_picture kvz_picture
 Struct which contains all picture data.
 
typedef struct kvz_frame_info kvz_frame_info
 Other information about an encoded frame.
 
typedef struct kvz_data_chunk kvz_data_chunk
 A linked list of chunks of data.
 
typedef struct kvz_api kvz_api
 

Enumerations

enum  kvz_ime_algorithm {
  KVZ_IME_HEXBS = 0 , KVZ_IME_TZ = 1 , KVZ_IME_FULL = 2 , KVZ_IME_FULL8 = 3 ,
  KVZ_IME_FULL16 = 4 , KVZ_IME_FULL32 = 5 , KVZ_IME_FULL64 = 6 , KVZ_IME_DIA = 7
}
 Integer motion estimation algorithms. More...
 
enum  kvz_interlacing { KVZ_INTERLACING_NONE = 0 , KVZ_INTERLACING_TFF = 1 , KVZ_INTERLACING_BFF = 2 }
 Interlacing methods. More...
 
enum  kvz_mv_constraint {
  KVZ_MV_CONSTRAIN_NONE = 0 , KVZ_MV_CONSTRAIN_FRAME = 1 , KVZ_MV_CONSTRAIN_TILE = 2 , KVZ_MV_CONSTRAIN_FRAME_AND_TILE = 3 ,
  KVZ_MV_CONSTRAIN_FRAME_AND_TILE_MARGIN = 4
}
 Constrain movement vectors. More...
 
enum  kvz_hash { KVZ_HASH_NONE = 0 , KVZ_HASH_CHECKSUM = 1 , KVZ_HASH_MD5 = 2 }
 Constrain movement vectors. More...
 
enum  kvz_cu_split_termination { KVZ_CU_SPLIT_TERMINATION_ZERO = 0 , KVZ_CU_SPLIT_TERMINATION_OFF = 1 }
 cu split termination mode More...
 
enum  kvz_crypto_features {
  KVZ_CRYPTO_OFF = 0 , KVZ_CRYPTO_MVs = (1 << 0) , KVZ_CRYPTO_MV_SIGNS = (1 << 1) , KVZ_CRYPTO_TRANSF_COEFFS = (1 << 2) ,
  KVZ_CRYPTO_TRANSF_COEFF_SIGNS = (1 << 3) , KVZ_CRYPTO_INTRA_MODE = (1 << 4) , KVZ_CRYPTO_ON = (1 << 5) - 1
}
 Enable and disable crypto features. More...
 
enum  kvz_me_early_termination { KVZ_ME_EARLY_TERMINATION_OFF = 0 , KVZ_ME_EARLY_TERMINATION_ON = 1 , KVZ_ME_EARLY_TERMINATION_SENSITIVE = 2 }
 me early termination mode More...
 
enum  kvz_input_format { KVZ_FORMAT_P400 = 0 , KVZ_FORMAT_P420 = 1 , KVZ_FORMAT_P422 = 2 , KVZ_FORMAT_P444 = 3 }
 Format the pixels are read in. More...
 
enum  kvz_chroma_format { KVZ_CSP_400 = 0 , KVZ_CSP_420 = 1 , KVZ_CSP_422 = 2 , KVZ_CSP_444 = 3 }
 Chroma subsampling format used for encoding. More...
 
enum  kvz_slices { KVZ_SLICES_NONE , KVZ_SLICES_TILES = (1 << 0) , KVZ_SLICES_WPP = (1 << 1) }
 Chroma subsampling format used for encoding. More...
 
enum  kvz_sao { KVZ_SAO_OFF = 0 , KVZ_SAO_EDGE = 1 , KVZ_SAO_BAND = 2 , KVZ_SAO_FULL = 3 }
 
enum  kvz_scalinglist { KVZ_SCALING_LIST_OFF = 0 , KVZ_SCALING_LIST_CUSTOM = 1 , KVZ_SCALING_LIST_DEFAULT = 2 }
 
enum  kvz_rc_algorithm { KVZ_NO_RC = 0 , KVZ_LAMBDA = 1 , KVZ_OBA = 2 }
 
enum  kvz_file_format { KVZ_FORMAT_AUTO = 0 , KVZ_FORMAT_Y4M = 1 , KVZ_FORMAT_YUV = 2 }
 
enum  kvz_roi_format { KVZ_ROI_TXT = 0 , KVZ_ROI_BIN = 1 }
 
enum  kvz_nal_unit_type {
  KVZ_NAL_TRAIL_N = 0 , KVZ_NAL_TRAIL_R = 1 , KVZ_NAL_TSA_N = 2 , KVZ_NAL_TSA_R = 3 ,
  KVZ_NAL_STSA_N = 4 , KVZ_NAL_STSA_R = 5 , KVZ_NAL_RADL_N = 6 , KVZ_NAL_RADL_R = 7 ,
  KVZ_NAL_RASL_N = 8 , KVZ_NAL_RASL_R = 9 , KVZ_NAL_BLA_W_LP = 16 , KVZ_NAL_BLA_W_RADL = 17 ,
  KVZ_NAL_BLA_N_LP = 18 , KVZ_NAL_IDR_W_RADL = 19 , KVZ_NAL_IDR_N_LP = 20 , KVZ_NAL_CRA_NUT = 21 ,
  KVZ_NAL_RSV_IRAP_VCL22 = 22 , KVZ_NAL_RSV_IRAP_VCL23 = 23 , KVZ_NAL_VPS_NUT = 32 , KVZ_NAL_SPS_NUT = 33 ,
  KVZ_NAL_PPS_NUT = 34 , KVZ_NAL_AUD_NUT = 35 , KVZ_NAL_EOS_NUT = 36 , KVZ_NAL_EOB_NUT = 37 ,
  KVZ_NAL_FD_NUT = 38 , KVZ_NAL_PREFIX_SEI_NUT = 39 , KVZ_NAL_SUFFIX_SEI_NUT = 40
}
 NAL unit type codes. More...
 
enum  kvz_slice_type { KVZ_SLICE_B = 0 , KVZ_SLICE_P = 1 , KVZ_SLICE_I = 2 }
 

Functions

const kvz_apikvz_api_get (int bit_depth)
 

Macro Definition Documentation

◆ KVZ_BIT_DEPTH

#define KVZ_BIT_DEPTH   8

◆ KVZ_DATA_CHUNK_SIZE

#define KVZ_DATA_CHUNK_SIZE   4096

◆ KVZ_FORMAT2CSP

#define KVZ_FORMAT2CSP (   format)    ((enum kvz_chroma_format)"\0\1\2\3"[format])

◆ KVZ_MAX_GOP_LAYERS

#define KVZ_MAX_GOP_LAYERS   6

◆ KVZ_MAX_GOP_LENGTH

#define KVZ_MAX_GOP_LENGTH   32

◆ KVZ_PUBLIC

#define KVZ_PUBLIC

Typedef Documentation

◆ kvz_api

◆ kvz_config

Functions config_alloc, config_init and config_destroy must be used to maintain ABI compatibility. Do not copy this struct, as the size might change.

◆ kvz_data_chunk

Used for returning the encoded data.

◆ kvz_encoder

◆ kvz_frame_info

◆ kvz_gop_config

◆ kvz_picture

Function picture_alloc in kvz_api must be used for allocation.

◆ kvz_pixel

◆ kvz_pixel_im

Enumeration Type Documentation

◆ kvz_chroma_format

Since
3.12.0
Enumerator
KVZ_CSP_400 
KVZ_CSP_420 
KVZ_CSP_422 
KVZ_CSP_444 

◆ kvz_crypto_features

Since
3.7.0
Enumerator
KVZ_CRYPTO_OFF 
KVZ_CRYPTO_MVs 
KVZ_CRYPTO_MV_SIGNS 
KVZ_CRYPTO_TRANSF_COEFFS 
KVZ_CRYPTO_TRANSF_COEFF_SIGNS 
KVZ_CRYPTO_INTRA_MODE 
KVZ_CRYPTO_ON 

◆ kvz_cu_split_termination

Since
since 3.8.0
Enumerator
KVZ_CU_SPLIT_TERMINATION_ZERO 
KVZ_CU_SPLIT_TERMINATION_OFF 

◆ kvz_file_format

Enumerator
KVZ_FORMAT_AUTO 
KVZ_FORMAT_Y4M 
KVZ_FORMAT_YUV 

◆ kvz_hash

Since
3.5.0
Enumerator
KVZ_HASH_NONE 
KVZ_HASH_CHECKSUM 
KVZ_HASH_MD5 

◆ kvz_ime_algorithm

Enumerator
KVZ_IME_HEXBS 
KVZ_IME_TZ 
KVZ_IME_FULL 
KVZ_IME_FULL8 
KVZ_IME_FULL16 
Since
3.6.0
KVZ_IME_FULL32 
Since
3.6.0
KVZ_IME_FULL64 
Since
3.6.0
KVZ_IME_DIA 
Since
3.6.0

◆ kvz_input_format

This is separate from chroma subsampling, because we might want to read interleaved formats in the future.

Since
3.12.0
Enumerator
KVZ_FORMAT_P400 
KVZ_FORMAT_P420 
KVZ_FORMAT_P422 
KVZ_FORMAT_P444 

◆ kvz_interlacing

Since
3.2.0
Enumerator
KVZ_INTERLACING_NONE 
KVZ_INTERLACING_TFF 
KVZ_INTERLACING_BFF 

◆ kvz_me_early_termination

Since
since 3.8.0
Enumerator
KVZ_ME_EARLY_TERMINATION_OFF 
KVZ_ME_EARLY_TERMINATION_ON 
KVZ_ME_EARLY_TERMINATION_SENSITIVE 

◆ kvz_mv_constraint

Since
3.3.0
Enumerator
KVZ_MV_CONSTRAIN_NONE 
KVZ_MV_CONSTRAIN_FRAME 
KVZ_MV_CONSTRAIN_TILE 
KVZ_MV_CONSTRAIN_FRAME_AND_TILE 
KVZ_MV_CONSTRAIN_FRAME_AND_TILE_MARGIN 

◆ kvz_nal_unit_type

These are the nal_unit_type codes from Table 7-1 ITU-T H.265 v1.0.

Enumerator
KVZ_NAL_TRAIL_N 
KVZ_NAL_TRAIL_R 
KVZ_NAL_TSA_N 
KVZ_NAL_TSA_R 
KVZ_NAL_STSA_N 
KVZ_NAL_STSA_R 
KVZ_NAL_RADL_N 
KVZ_NAL_RADL_R 
KVZ_NAL_RASL_N 
KVZ_NAL_RASL_R 
KVZ_NAL_BLA_W_LP 
KVZ_NAL_BLA_W_RADL 
KVZ_NAL_BLA_N_LP 
KVZ_NAL_IDR_W_RADL 
KVZ_NAL_IDR_N_LP 
KVZ_NAL_CRA_NUT 
KVZ_NAL_RSV_IRAP_VCL22 
KVZ_NAL_RSV_IRAP_VCL23 
KVZ_NAL_VPS_NUT 
KVZ_NAL_SPS_NUT 
KVZ_NAL_PPS_NUT 
KVZ_NAL_AUD_NUT 
KVZ_NAL_EOS_NUT 
KVZ_NAL_EOB_NUT 
KVZ_NAL_FD_NUT 
KVZ_NAL_PREFIX_SEI_NUT 
KVZ_NAL_SUFFIX_SEI_NUT 

◆ kvz_rc_algorithm

Enumerator
KVZ_NO_RC 
KVZ_LAMBDA 
KVZ_OBA 

◆ kvz_roi_format

Enumerator
KVZ_ROI_TXT 
KVZ_ROI_BIN 

◆ kvz_sao

Enumerator
KVZ_SAO_OFF 
KVZ_SAO_EDGE 
KVZ_SAO_BAND 
KVZ_SAO_FULL 

◆ kvz_scalinglist

Enumerator
KVZ_SCALING_LIST_OFF 
KVZ_SCALING_LIST_CUSTOM 
KVZ_SCALING_LIST_DEFAULT 

◆ kvz_slice_type

Enumerator
KVZ_SLICE_B 
KVZ_SLICE_P 
KVZ_SLICE_I 

◆ kvz_slices

Since
3.15.0
Enumerator
KVZ_SLICES_NONE 
KVZ_SLICES_TILES 

Put each tile in a slice.

KVZ_SLICES_WPP 

Put each row in a slice.

Function Documentation

◆ kvz_api_get()

const kvz_api * kvz_api_get ( int  bit_depth)
Here is the caller graph for this function: