TUT HEVC Encoder
Loading...
Searching...
No Matches
Macros | Typedefs | Enumerations
global.h File Reference

Header that is included in every other header. More...

#include <assert.h>
#include <stdbool.h>
#include <stdint.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
Include dependency graph for global.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define PIXEL_MIN   0
 
#define PIXEL_MAX   ((1 << KVZ_BIT_DEPTH) - 1)
 
#define PU_DEPTH_INTER_MIN   0
 Limits for prediction block sizes. 0 = 64x64, 4 = 4x4.
 
#define PU_DEPTH_INTER_MAX   3
 
#define PU_DEPTH_INTRA_MIN   0
 
#define PU_DEPTH_INTRA_MAX   4
 
#define MAX_GOP_LAYERS   6
 Maximum number of layers in GOP structure (for allocating structures)
 
#define MAX_DEPTH   3
 Maximum CU depth when descending form LCU level.
 
#define MIN_SIZE   3
 Minimum log2 size of CUs.
 
#define MAX_PU_DEPTH   4
 Minimum log2 size of PUs.
 
#define ENABLE_PCM   0
 spec: pcm_enabled_flag, Setting to 1 will enable using PCM blocks (current intra-search does not consider PCM)
 
#define OPTIMIZATION_SKIP_RESIDUAL_ON_THRESHOLD   0
 skip residual coding when it's under some threshold
 
#define CU_MIN_SIZE_PIXELS   (1 << MIN_SIZE)
 pow(2, MIN_SIZE)
 
#define LCU_WIDTH   (1 << (MIN_SIZE + MAX_DEPTH))
 spec: CtbSizeY
 
#define LCU_WIDTH_C   (LCU_WIDTH / 2)
 spec: CtbWidthC and CtbHeightC
 
#define TR_MAX_LOG2_SIZE   5
 spec: Log2MaxTrafoSize <= Min(CtbLog2SizeY, 5)
 
#define TR_MAX_WIDTH   (1 << TR_MAX_LOG2_SIZE)
 
#define TR_MIN_LOG2_SIZE   2
 spec: Log2MinTrafoSize
 
#define TR_MIN_WIDTH   (1 << TR_MIN_LOG2_SIZE)
 
#define LCU_LUMA_SIZE   (LCU_WIDTH * LCU_WIDTH)
 
#define LCU_CHROMA_SIZE   (LCU_WIDTH * LCU_WIDTH >> 2)
 
#define DEBLOCK_DELAY_PX   8
 Number of pixels to delay deblocking.
 
#define SAO_DELAY_PX   (DEBLOCK_DELAY_PX + 2)
 Number of pixels to delay SAO in horizontal and vertical directions.
 
#define MAX_REF_PIC_COUNT   16
 
#define AMVP_MAX_NUM_CANDS   2
 
#define AMVP_MAX_NUM_CANDS_MEM   3
 
#define MRG_MAX_NUM_CANDS   5
 
#define ABS(a)   ((a) >= 0 ? (a) : (-a))
 
#define MAX(a, b)   (((a)>(b))?(a):(b))
 
#define MIN(a, b)   (((a)<(b))?(a):(b))
 
#define CLIP(low, high, value)   MAX((low),MIN((high),(value)))
 
#define CLIP_TO_PIXEL(value)   CLIP(0, PIXEL_MAX, (value))
 
#define CLIP_TO_QP(value)   CLIP(0, 51, (value))
 
#define SWAP(a, b, swaptype)   { swaptype tempval; tempval = a; a = b; b = tempval; }
 
#define CU_WIDTH_FROM_DEPTH(depth)   (LCU_WIDTH >> depth)
 
#define WITHIN(val, min_val, max_val)   ((min_val) <= (val) && (val) <= (max_val))
 
#define CEILDIV(x, y)   (((x) + (y) - 1) / (y))
 
#define LOG2_LCU_WIDTH   6
 
#define CU_TO_PIXEL(x, y, depth, stride)
 
#define SIGN3(x)   (((x) > 0) - ((x) < 0))
 
#define QUOTE(x)   #x
 
#define QUOTE_EXPAND(x)   QUOTE(x)
 
#define KVZ_VERSION   2.3.0
 
#define VERSION_STRING   QUOTE_EXPAND(KVZ_VERSION)
 
#define SAO_ABS_OFFSET_MAX   ((1 << (MIN(KVZ_BIT_DEPTH, 10) - 5)) - 1)
 
#define MAX_TILES_PER_DIM   48
 
#define MAX_SLICES   16
 
#define INLINE   inline
 
#define ALIGNED_POINTER(p, alignment)   (void*)((intptr_t)(p) + (alignment) - ((intptr_t)(p) % (alignment)))
 
#define SIMD_ALIGNMENT   32
 
#define ALIGNED(alignment)   __attribute__((aligned (alignment)))
 
#define MALLOC(type, num)   malloc(sizeof(type) * (num))
 
#define MALLOC_SIMD_PADDED(type, num, padding)   malloc(sizeof(type) * (num) + (padding))
 
#define FILL(var, val)   memset(&(var), (val), sizeof(var))
 
#define FILL_ARRAY(ar, val, size)
 
#define FREE_POINTER(pointer)   { free((void*)pointer); pointer = NULL; }
 
#define MOVE_POINTER(dst_pointer, src_pointer)   { dst_pointer = src_pointer; src_pointer = NULL; }
 
#define MAX_INT   0x7FFFFFFF
 
#define MAX_INT64   0x7FFFFFFFFFFFFFFFLL
 
#define MAX_DOUBLE   1.7e+308
 
#define SCALING_LIST_4x4   0
 
#define SCALING_LIST_8x8   1
 
#define SCALING_LIST_16x16   2
 
#define SCALING_LIST_32x32   3
 
#define SCALING_LIST_SIZE_NUM   4
 
#define SCALING_LIST_NUM   6
 
#define MAX_MATRIX_COEF_NUM   64
 
#define SCALING_LIST_REM_NUM   6
 
#define MAX_TR_DYNAMIC_RANGE   15
 
#define COMPILE_INTEL   0
 
#define MSC_X86_SIMD(level)   (_M_X64 || (_M_IX86_FP >= (level)))
 
#define COMPILE_POWERPC   0
 
#define COMPILE_ARM   0
 
#define KVZ_QP_DELTA_MIN   -(26 + 3 * (KVZ_BIT_DEPTH - 8))
 
#define KVZ_QP_DELTA_MAX   25 + 3 * (KVZ_BIT_DEPTH - 8)
 

Typedefs

typedef int16_t coeff_t
 

Enumerations

enum  color_t { COLOR_Y = 0 , COLOR_U , COLOR_V }
 

Detailed Description

This file contains global constants that can be referred to from any header or source file. It also contains some helper macros and includes stdint.h so that any file can refer to integer types with exact widths.

Macro Definition Documentation

◆ ABS

#define ABS (   a)    ((a) >= 0 ? (a) : (-a))

◆ ALIGNED

#define ALIGNED (   alignment)    __attribute__((aligned (alignment)))

◆ ALIGNED_POINTER

#define ALIGNED_POINTER (   p,
  alignment 
)    (void*)((intptr_t)(p) + (alignment) - ((intptr_t)(p) % (alignment)))

◆ AMVP_MAX_NUM_CANDS

#define AMVP_MAX_NUM_CANDS   2

◆ AMVP_MAX_NUM_CANDS_MEM

#define AMVP_MAX_NUM_CANDS_MEM   3

◆ CEILDIV

#define CEILDIV (   x,
 
)    (((x) + (y) - 1) / (y))

◆ CLIP

#define CLIP (   low,
  high,
  value 
)    MAX((low),MIN((high),(value)))

◆ CLIP_TO_PIXEL

#define CLIP_TO_PIXEL (   value)    CLIP(0, PIXEL_MAX, (value))

◆ CLIP_TO_QP

#define CLIP_TO_QP (   value)    CLIP(0, 51, (value))

◆ COMPILE_ARM

#define COMPILE_ARM   0

◆ COMPILE_INTEL

#define COMPILE_INTEL   0

◆ COMPILE_POWERPC

#define COMPILE_POWERPC   0

◆ CU_MIN_SIZE_PIXELS

#define CU_MIN_SIZE_PIXELS   (1 << MIN_SIZE)

◆ CU_TO_PIXEL

#define CU_TO_PIXEL (   x,
  y,
  depth,
  stride 
)
Value:
(((y) << (LOG2_LCU_WIDTH - (depth))) * (stride) \
+ ((x) << (LOG2_LCU_WIDTH - (depth))))
#define LOG2_LCU_WIDTH
Definition global.h:211

◆ CU_WIDTH_FROM_DEPTH

#define CU_WIDTH_FROM_DEPTH (   depth)    (LCU_WIDTH >> depth)

◆ DEBLOCK_DELAY_PX

#define DEBLOCK_DELAY_PX   8

Number of pixels at the bottom and right side of the LCU that are not deblocked until when filtering the neighboring LCU. The last four chroma pixels of the horizontal edges within the LCU are deblocked with the LCU to the right. Therefore, DEBLOCK_DELAY_PX is set to 8 pixels.

◆ ENABLE_PCM

#define ENABLE_PCM   0

◆ FILL

#define FILL (   var,
  val 
)    memset(&(var), (val), sizeof(var))

◆ FILL_ARRAY

#define FILL_ARRAY (   ar,
  val,
  size 
)
Value:
{\
void *temp_ptr = (void*)(ar);\
memset((temp_ptr), (val), (size) * sizeof(*(ar)));\
}
#define MAX_TILES_PER_DIM
Definition global.h:232

◆ FREE_POINTER

#define FREE_POINTER (   pointer)    { free((void*)pointer); pointer = NULL; }

◆ INLINE

#define INLINE   inline

◆ KVZ_QP_DELTA_MAX

#define KVZ_QP_DELTA_MAX   25 + 3 * (KVZ_BIT_DEPTH - 8)

◆ KVZ_QP_DELTA_MIN

#define KVZ_QP_DELTA_MIN   -(26 + 3 * (KVZ_BIT_DEPTH - 8))

◆ KVZ_VERSION

#define KVZ_VERSION   2.3.0

◆ LCU_CHROMA_SIZE

#define LCU_CHROMA_SIZE   (LCU_WIDTH * LCU_WIDTH >> 2)

◆ LCU_LUMA_SIZE

#define LCU_LUMA_SIZE   (LCU_WIDTH * LCU_WIDTH)

◆ LCU_WIDTH

#define LCU_WIDTH   (1 << (MIN_SIZE + MAX_DEPTH))

◆ LCU_WIDTH_C

#define LCU_WIDTH_C   (LCU_WIDTH / 2)

◆ LOG2_LCU_WIDTH

#define LOG2_LCU_WIDTH   6

◆ MALLOC

#define MALLOC (   type,
  num 
)    malloc(sizeof(type) * (num))

◆ MALLOC_SIMD_PADDED

#define MALLOC_SIMD_PADDED (   type,
  num,
  padding 
)    malloc(sizeof(type) * (num) + (padding))

◆ MAX

#define MAX (   a,
 
)    (((a)>(b))?(a):(b))

◆ MAX_DEPTH

#define MAX_DEPTH   3

spec: log2_diff_max_min_luma_coding_block_size

◆ MAX_DOUBLE

#define MAX_DOUBLE   1.7e+308

◆ MAX_GOP_LAYERS

#define MAX_GOP_LAYERS   6

◆ MAX_INT

#define MAX_INT   0x7FFFFFFF

◆ MAX_INT64

#define MAX_INT64   0x7FFFFFFFFFFFFFFFLL

◆ MAX_MATRIX_COEF_NUM

#define MAX_MATRIX_COEF_NUM   64

◆ MAX_PU_DEPTH

#define MAX_PU_DEPTH   4

Search is started at depth 0 and goes in Z-order to MAX_PU_DEPTH, see search_cu()

◆ MAX_REF_PIC_COUNT

#define MAX_REF_PIC_COUNT   16

◆ MAX_SLICES

#define MAX_SLICES   16

◆ MAX_TILES_PER_DIM

#define MAX_TILES_PER_DIM   48

◆ MAX_TR_DYNAMIC_RANGE

#define MAX_TR_DYNAMIC_RANGE   15

◆ MIN

#define MIN (   a,
 
)    (((a)<(b))?(a):(b))

◆ MIN_SIZE

#define MIN_SIZE   3

spec: MinCbLog2SizeY

◆ MOVE_POINTER

#define MOVE_POINTER (   dst_pointer,
  src_pointer 
)    { dst_pointer = src_pointer; src_pointer = NULL; }

◆ MRG_MAX_NUM_CANDS

#define MRG_MAX_NUM_CANDS   5

◆ MSC_X86_SIMD

#define MSC_X86_SIMD (   level)    (_M_X64 || (_M_IX86_FP >= (level)))

◆ OPTIMIZATION_SKIP_RESIDUAL_ON_THRESHOLD

#define OPTIMIZATION_SKIP_RESIDUAL_ON_THRESHOLD   0

◆ PIXEL_MAX

#define PIXEL_MAX   ((1 << KVZ_BIT_DEPTH) - 1)

◆ PIXEL_MIN

#define PIXEL_MIN   0

◆ PU_DEPTH_INTER_MAX

#define PU_DEPTH_INTER_MAX   3

◆ PU_DEPTH_INTER_MIN

#define PU_DEPTH_INTER_MIN   0

◆ PU_DEPTH_INTRA_MAX

#define PU_DEPTH_INTRA_MAX   4

◆ PU_DEPTH_INTRA_MIN

#define PU_DEPTH_INTRA_MIN   0

◆ QUOTE

#define QUOTE (   x)    #x

◆ QUOTE_EXPAND

#define QUOTE_EXPAND (   x)    QUOTE(x)

◆ SAO_ABS_OFFSET_MAX

#define SAO_ABS_OFFSET_MAX   ((1 << (MIN(KVZ_BIT_DEPTH, 10) - 5)) - 1)

◆ SAO_DELAY_PX

#define SAO_DELAY_PX   (DEBLOCK_DELAY_PX + 2)

Number of pixels at the bottom and right side of the LCU that are not filtered with SAO until when filtering the neighboring LCU. SAO reconstruction requires that a one pixels border has been deblocked for both luma and chroma. Therefore, SAO_DELAY_PX is set to DEBLOCK_DELAY_PX + 2.

◆ SCALING_LIST_16x16

#define SCALING_LIST_16x16   2

◆ SCALING_LIST_32x32

#define SCALING_LIST_32x32   3

◆ SCALING_LIST_4x4

#define SCALING_LIST_4x4   0

◆ SCALING_LIST_8x8

#define SCALING_LIST_8x8   1

◆ SCALING_LIST_NUM

#define SCALING_LIST_NUM   6

◆ SCALING_LIST_REM_NUM

#define SCALING_LIST_REM_NUM   6

◆ SCALING_LIST_SIZE_NUM

#define SCALING_LIST_SIZE_NUM   4

◆ SIGN3

#define SIGN3 (   x)    (((x) > 0) - ((x) < 0))

◆ SIMD_ALIGNMENT

#define SIMD_ALIGNMENT   32

◆ SWAP

#define SWAP (   a,
  b,
  swaptype 
)    { swaptype tempval; tempval = a; a = b; b = tempval; }

◆ TR_MAX_LOG2_SIZE

#define TR_MAX_LOG2_SIZE   5

◆ TR_MAX_WIDTH

#define TR_MAX_WIDTH   (1 << TR_MAX_LOG2_SIZE)

◆ TR_MIN_LOG2_SIZE

#define TR_MIN_LOG2_SIZE   2

◆ TR_MIN_WIDTH

#define TR_MIN_WIDTH   (1 << TR_MIN_LOG2_SIZE)

◆ VERSION_STRING

#define VERSION_STRING   QUOTE_EXPAND(KVZ_VERSION)

◆ WITHIN

#define WITHIN (   val,
  min_val,
  max_val 
)    ((min_val) <= (val) && (val) <= (max_val))

Typedef Documentation

◆ coeff_t

Enumeration Type Documentation

◆ color_t

Enumerator
COLOR_Y 
COLOR_U 
COLOR_V