mirror of
https://github.com/cemu-project/Cemu.git
synced 2024-12-30 19:51:51 +01:00
661 lines
18 KiB
C
661 lines
18 KiB
C
|
/******************************************************************************
|
||
|
*
|
||
|
* Copyright (C) 2015 The Android Open Source Project
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at:
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*
|
||
|
*****************************************************************************
|
||
|
* Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
|
||
|
*/
|
||
|
#ifndef _IH264D_DEFS_H_
|
||
|
#define _IH264D_DEFS_H_
|
||
|
|
||
|
/**
|
||
|
************************************************************************
|
||
|
* \file ih264d_defs.h
|
||
|
*
|
||
|
* \brief
|
||
|
* Type definitions used in the code
|
||
|
*
|
||
|
* \date
|
||
|
* 19/11/2002
|
||
|
*
|
||
|
* \author Sriram Sethuraman
|
||
|
*
|
||
|
************************************************************************
|
||
|
*/
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#define H264_MAX_FRAME_WIDTH 4080
|
||
|
#define H264_MAX_FRAME_HEIGHT 4080
|
||
|
#define H264_MAX_FRAME_SIZE (4096 * 2048)
|
||
|
|
||
|
#define H264_MIN_FRAME_WIDTH 16
|
||
|
#define H264_MIN_FRAME_HEIGHT 16
|
||
|
|
||
|
#define FMT_CONV_NUM_ROWS 16
|
||
|
|
||
|
/** Decoder currently has an additional latency of 2 pictures when
|
||
|
* returning output for display
|
||
|
*/
|
||
|
#define DISPLAY_LATENCY 2
|
||
|
|
||
|
/** Bit manipulation macros */
|
||
|
#define CHECKBIT(a,i) ((a) & (1 << i))
|
||
|
#define CLEARBIT(a,i) ((a) &= ~(1 << i))
|
||
|
|
||
|
/** Macro to check if a number lies in the valid integer range */
|
||
|
#define IS_OUT_OF_RANGE_S32(a) (((a) < INT32_MIN) || ((a) > INT32_MAX))
|
||
|
|
||
|
/** Macro to convert a integer to a boolean value */
|
||
|
#define BOOLEAN(x) (!!(x))
|
||
|
|
||
|
/** Arithmetic operations */
|
||
|
#define MOD(x,y) ((x)%(y))
|
||
|
#define DIV(x,y) ((x)/(y))
|
||
|
#define MUL(x,y) ((x)*(y))
|
||
|
#define SIGN_POW2_DIV(x, y) (((x) < 0) ? (-((-(x)) >> (y))) : ((x) >> (y)))
|
||
|
|
||
|
#define MB_ENABLE_FILTERING 0x00
|
||
|
#define MB_DISABLE_FILTERING 0x01
|
||
|
#define MB_DISABLE_TOP_EDGE 0x02
|
||
|
#define MB_DISABLE_LEFT_EDGE 0x04
|
||
|
|
||
|
/** Maximum number of reference pics */
|
||
|
#define MAX_REF_BUFS 32
|
||
|
#define MAX_DISP_BUFS_NEW 64
|
||
|
#define MAX_FRAMES 16
|
||
|
|
||
|
#define INVALID_FRAME_NUM 0x0fffffff
|
||
|
#define GAP_FRAME_NUM 0x1fffffff
|
||
|
|
||
|
/** macros for reference picture lists, refIdx to POC mapping */
|
||
|
// 1 extra entry into reference picture lists for refIdx = -1.
|
||
|
// this entry is always 0. this saves conditional checks in
|
||
|
// FillBs modules.
|
||
|
#define POC_LIST_L0_TO_L1_DIFF (( 2*MAX_FRAMES) + 1)
|
||
|
#define POC_LIST_L0_TO_L1_DIFF_1 ((MAX_FRAMES) + 1)
|
||
|
|
||
|
#define FRM_LIST_L0 0 //0
|
||
|
#define FRM_LIST_L1 1 * POC_LIST_L0_TO_L1_DIFF//FRM_LIST_L0 + POC_LIST_L0_TO_L1_DIFF //0+33 //(1 * POC_LIST_L0_TO_L1_DIFF)
|
||
|
#define TOP_LIST_FLD_L0 2 * POC_LIST_L0_TO_L1_DIFF//FRM_LIST_L1 + POC_LIST_L0_TO_L1_DIFF //0+33+33 //(2 * POC_LIST_L0_TO_L1_DIFF)
|
||
|
#define TOP_LIST_FLD_L1 3 * POC_LIST_L0_TO_L1_DIFF//TOP_LIST_FLD_L0 + POC_LIST_L0_TO_L1_DIFF_1 //0+33+33+17 //(3 * POC_LIST_L0_TO_L1_DIFF)
|
||
|
#define BOT_LIST_FLD_L0 4 * POC_LIST_L0_TO_L1_DIFF//TOP_LIST_FLD_L1 + POC_LIST_L0_TO_L1_DIFF_1 //0+33+33+17+17
|
||
|
#define BOT_LIST_FLD_L1 5 * POC_LIST_L0_TO_L1_DIFF//BOT_LIST_FLD_L0 + POC_LIST_L0_TO_L1_DIFF_1 //0+33+33+17+17+17
|
||
|
#define TOTAL_LIST_ENTRIES 6 * POC_LIST_L0_TO_L1_DIFF//BOT_LIST_FLD_L1 + POC_LIST_L0_TO_L1_DIFF_1 //0+33+33+17+17+17+17
|
||
|
#define PAD_MV_BANK_ROW 64
|
||
|
#define OFFSET_MV_BANK_ROW ((PAD_MV_BANK_ROW)>>1)
|
||
|
#define PAD_PUC_CURNNZ 32
|
||
|
#define OFFSET_PUC_CURNNZ (PAD_PUC_CURNNZ)
|
||
|
#define PAD_MAP_IDX_POC (1)
|
||
|
#define OFFSET_MAP_IDX_POC (1)
|
||
|
|
||
|
#define OFFSET_MAP_IDX_POC (1)
|
||
|
|
||
|
#define NAL_REF_IDC(nal_first_byte) ((nal_first_byte >> 5) & 0x3)
|
||
|
#define NAL_FORBIDDEN_BIT(nal_first_byte) (nal_first_byte>>7)
|
||
|
#define NAL_UNIT_TYPE(nal_first_byte) (nal_first_byte & 0x1F)
|
||
|
|
||
|
#define INT_PIC_TYPE_I (0x00)
|
||
|
|
||
|
#define YIELD_CNT_THRESHOLD 8
|
||
|
|
||
|
|
||
|
#define OK 0
|
||
|
#define END 1
|
||
|
#define NOT_OK -1
|
||
|
|
||
|
/* For 420SP */
|
||
|
#define YUV420SP_FACTOR 2
|
||
|
|
||
|
/*To prevent buffer overflow access; in case the size of nal unit is
|
||
|
* greater than the allocated buffer size*/
|
||
|
#define EXTRA_BS_OFFSET 16*16*2
|
||
|
|
||
|
/**
|
||
|
***************************************************************************
|
||
|
* Enum to hold various mem records being request
|
||
|
****************************************************************************
|
||
|
*/
|
||
|
enum
|
||
|
{
|
||
|
/**
|
||
|
* Codec Object at API level
|
||
|
*/
|
||
|
MEM_REC_IV_OBJ,
|
||
|
|
||
|
/**
|
||
|
* Codec context
|
||
|
*/
|
||
|
MEM_REC_CODEC,
|
||
|
|
||
|
/**
|
||
|
* Bitstream buffer which holds emulation prevention removed bytes
|
||
|
*/
|
||
|
MEM_REC_BITSBUF,
|
||
|
|
||
|
/**
|
||
|
* Buffer to hold coeff data
|
||
|
*/
|
||
|
MEM_REC_COEFF_DATA,
|
||
|
|
||
|
/**
|
||
|
* Motion vector bank
|
||
|
*/
|
||
|
MEM_REC_MVBANK,
|
||
|
|
||
|
/**
|
||
|
* Holds mem records passed to the codec.
|
||
|
*/
|
||
|
MEM_REC_BACKUP,
|
||
|
|
||
|
/**
|
||
|
* Holds SPS
|
||
|
*/
|
||
|
MEM_REC_SPS,
|
||
|
|
||
|
/**
|
||
|
* Holds PPS
|
||
|
*/
|
||
|
MEM_REC_PPS,
|
||
|
|
||
|
/**
|
||
|
* Holds Slice Headers
|
||
|
*/
|
||
|
MEM_REC_SLICE_HDR,
|
||
|
|
||
|
/**
|
||
|
* Holds thread handles
|
||
|
*/
|
||
|
MEM_REC_THREAD_HANDLE,
|
||
|
|
||
|
/**
|
||
|
* Contains i4_status map indicating parse i4_status per MB basis
|
||
|
*/
|
||
|
MEM_REC_PARSE_MAP,
|
||
|
|
||
|
/**
|
||
|
* Contains i4_status map indicating processing i4_status per MB basis
|
||
|
*/
|
||
|
MEM_REC_PROC_MAP,
|
||
|
|
||
|
/**
|
||
|
* Contains slice number info for each MB
|
||
|
*/
|
||
|
|
||
|
MEM_REC_SLICE_NUM_MAP,
|
||
|
|
||
|
/**
|
||
|
* Holds dpb manager context
|
||
|
*/
|
||
|
MEM_REC_DPB_MGR,
|
||
|
|
||
|
/**
|
||
|
* Holds neighbors' info
|
||
|
*/
|
||
|
MEM_REC_NEIGHBOR_INFO,
|
||
|
|
||
|
/**
|
||
|
* Holds neighbors' info
|
||
|
*/
|
||
|
MEM_REC_PRED_INFO,
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Holds inter pred inforamation on packed format info
|
||
|
*/
|
||
|
MEM_REC_PRED_INFO_PKD,
|
||
|
/**
|
||
|
* Holds neighbors' info
|
||
|
*/
|
||
|
MEM_REC_MB_INFO,
|
||
|
|
||
|
/**
|
||
|
* Holds deblock Mb info structure frame level)
|
||
|
*/
|
||
|
MEM_REC_DEBLK_MB_INFO,
|
||
|
|
||
|
/**
|
||
|
* Holds reference picture buffers in non-shared mode
|
||
|
*/
|
||
|
MEM_REC_REF_PIC,
|
||
|
|
||
|
/**
|
||
|
* Holds some misc intermediate_buffers
|
||
|
*/
|
||
|
MEM_REC_EXTRA_MEM,
|
||
|
|
||
|
/**
|
||
|
* Holds some misc intermediate_buffers
|
||
|
*/
|
||
|
MEM_REC_INTERNAL_SCRATCH,
|
||
|
|
||
|
/**
|
||
|
* Holds some misc intermediate_buffers
|
||
|
*/
|
||
|
MEM_REC_INTERNAL_PERSIST,
|
||
|
|
||
|
/* holds structures related to picture buffer manager*/
|
||
|
MEM_REC_PIC_BUF_MGR,
|
||
|
|
||
|
/*holds structure related to MV buffer manager*/
|
||
|
MEM_REC_MV_BUF_MGR,
|
||
|
|
||
|
/**
|
||
|
* Place holder to compute number of memory records.
|
||
|
*/
|
||
|
MEM_REC_CNT
|
||
|
/* Do not add anything below */
|
||
|
};
|
||
|
|
||
|
#ifdef DEBLOCK_THREAD
|
||
|
#define H264_MUTEX_LOCK(lock) ithread_mutex_lock(lock)
|
||
|
#define H264_MUTEX_UNLOCK(lock) ithread_mutex_unlock(lock)
|
||
|
#else //DEBLOCK_THREAD
|
||
|
#define H264_MUTEX_LOCK(lock)
|
||
|
#define H264_MUTEX_UNLOCK(lock)
|
||
|
|
||
|
#define DEBUG_THREADS_PRINTF(...)
|
||
|
#define DEBUG_PERF_PRINTF(...)
|
||
|
|
||
|
/** Profile Types*/
|
||
|
#define BASE_PROFILE_IDC 66
|
||
|
#define MAIN_PROFILE_IDC 77
|
||
|
#define EXTENDED_PROFILE_IDC 88
|
||
|
#define HIGH_PROFILE_IDC 100
|
||
|
|
||
|
|
||
|
#define MB_SIZE 16
|
||
|
#define BLK8x8SIZE 8
|
||
|
#define BLK_SIZE 4
|
||
|
#define NUM_BLKS_PER_MB 24
|
||
|
#define NUM_LUM_BLKS_PER_MB 16
|
||
|
#define LUM_BLK 0
|
||
|
#define CHROM_BLK 1
|
||
|
#define NUM_PELS_IN_MB 64
|
||
|
|
||
|
/* Level Types */
|
||
|
#define H264_LEVEL_1_0 10
|
||
|
#define H264_LEVEL_1_1 11
|
||
|
#define H264_LEVEL_1_2 12
|
||
|
#define H264_LEVEL_1_3 13
|
||
|
#define H264_LEVEL_2_0 20
|
||
|
#define H264_LEVEL_2_1 21
|
||
|
#define H264_LEVEL_2_2 22
|
||
|
#define H264_LEVEL_3_0 30
|
||
|
#define H264_LEVEL_3_1 31
|
||
|
#define H264_LEVEL_3_2 32
|
||
|
#define H264_LEVEL_4_0 40
|
||
|
#define H264_LEVEL_4_1 41
|
||
|
#define H264_LEVEL_4_2 42
|
||
|
#define H264_LEVEL_5_0 50
|
||
|
#define H264_LEVEL_5_1 51
|
||
|
|
||
|
#define MAX_MBS_LEVEL_51 36864
|
||
|
#define MAX_MBS_LEVEL_50 22080
|
||
|
#define MAX_MBS_LEVEL_42 8704
|
||
|
#define MAX_MBS_LEVEL_41 8192
|
||
|
#define MAX_MBS_LEVEL_40 8192
|
||
|
#define MAX_MBS_LEVEL_32 5120
|
||
|
#define MAX_MBS_LEVEL_31 3600
|
||
|
#define MAX_MBS_LEVEL_30 1620
|
||
|
#define MAX_MBS_LEVEL_22 1620
|
||
|
#define MAX_MBS_LEVEL_21 792
|
||
|
#define MAX_MBS_LEVEL_20 396
|
||
|
#define MAX_MBS_LEVEL_13 396
|
||
|
#define MAX_MBS_LEVEL_12 396
|
||
|
#define MAX_MBS_LEVEL_11 396
|
||
|
#define MAX_MBS_LEVEL_10 99
|
||
|
|
||
|
/** NAL Types */
|
||
|
#define SLICE_NAL 1
|
||
|
#define SLICE_DATA_PARTITION_A_NAL 2
|
||
|
#define SLICE_DATA_PARTITION_B_NAL 3
|
||
|
#define SLICE_DATA_PARTITION_C_NAL 4
|
||
|
#define IDR_SLICE_NAL 5
|
||
|
#define SEI_NAL 6
|
||
|
#define SEQ_PARAM_NAL 7
|
||
|
#define PIC_PARAM_NAL 8
|
||
|
#define ACCESS_UNIT_DELIMITER_RBSP 9
|
||
|
#define END_OF_SEQ_RBSP 10
|
||
|
#define END_OF_STREAM_RBSP 11
|
||
|
#define FILLER_DATA_NAL 12
|
||
|
|
||
|
/** Entropy coding modes */
|
||
|
#define CAVLC 0
|
||
|
#define CABAC 1
|
||
|
|
||
|
/** Picture Types */
|
||
|
#define I_PIC 0
|
||
|
#define IP_PIC 1
|
||
|
#define IPB_PIC 2
|
||
|
#define SI_PIC 3
|
||
|
#define SIP_PIC 4
|
||
|
#define ISI_PIC 5
|
||
|
#define ISI_PSP_PIC 6
|
||
|
#define ALL_PIC 7
|
||
|
|
||
|
/* Frame or field picture type */
|
||
|
#define FRM_PIC 0x00
|
||
|
#define TOP_FLD 0x01
|
||
|
#define BOT_FLD 0x02
|
||
|
#define COMP_FLD_PAIR 0x03 /* TOP_FLD | BOT_FLD */
|
||
|
#define AFRM_PIC 0x04
|
||
|
#define TOP_REF 0x08
|
||
|
#define BOT_REF 0x10
|
||
|
#define PIC_MASK 0x03
|
||
|
#define NON_EXISTING 0xff
|
||
|
|
||
|
/* field picture type for display */
|
||
|
#define DISP_TOP_FLD 0x00
|
||
|
#define DISP_BOT_FLD 0x01
|
||
|
|
||
|
/** Slice Types */
|
||
|
#define NA_SLICE -1
|
||
|
#define P_SLICE 0
|
||
|
#define B_SLICE 1
|
||
|
#define I_SLICE 2
|
||
|
#define SP_SLICE 3
|
||
|
#define SI_SLICE 4
|
||
|
|
||
|
/* Definition for picture skip */
|
||
|
#define SKIP_NONE (0x0)
|
||
|
#define I_SLC_BIT (0x1)
|
||
|
#define P_SLC_BIT (0x2)
|
||
|
#define B_SLC_BIT (0x4)
|
||
|
|
||
|
/** Macros used for Deblocking */
|
||
|
#define D_INTER_MB 0
|
||
|
#define D_INTRA_MB 1
|
||
|
#define D_PRED_NON_16x16 2
|
||
|
#define D_B_SLICE 4
|
||
|
#define D_B_SUBMB 6 //D_B_SLICE | D_PRED_NON_16x16 | D_INTER_MB
|
||
|
#define D_FLD_MB 0x80
|
||
|
|
||
|
/** Macros for Cabac checks */
|
||
|
/** MbType */
|
||
|
/** |x|x|I_PCM|SKIP|
|
||
|
|S|Inter/Intra|P/B|NON-BD16x16/BD16x16,I16x16/I4x4| */
|
||
|
#define CAB_INTRA 0x00 /* 0000 00xx */
|
||
|
#define CAB_INTER 0x04 /* 0000 01xx */
|
||
|
#define CAB_I4x4 0x00 /* 0000 00x0 */
|
||
|
#define CAB_I16x16 0x01 /* 0000 00x1 */
|
||
|
#define CAB_BD16x16 0x04 /* 0000 0100 */
|
||
|
#define CAB_NON_BD16x16 0x05 /* 0000 0101 */
|
||
|
#define CAB_P 0x07 /* 0000 0111 */
|
||
|
#define CAB_SI4x4 0x08 /* 0000 10x0 */
|
||
|
#define CAB_SI16x16 0x09 /* 0000 10x1 */
|
||
|
#define CAB_SKIP_MASK 0x10 /* 0001 0000 */
|
||
|
#define CAB_SKIP 0x10 /* 0001 0000 */
|
||
|
#define CAB_P_SKIP 0x16 /* 0001 x11x */
|
||
|
#define CAB_B_SKIP 0x14 /* 0001 x100 */
|
||
|
#define CAB_BD16x16_MASK 0x07 /* 0000 0111 */
|
||
|
#define CAB_INTRA_MASK 0x04 /* 0000 0100 */
|
||
|
#define CAB_I_PCM 0x20 /* 001x xxxx */
|
||
|
|
||
|
/**< Binarization types for CABAC */
|
||
|
/* |x|x|x|x|MSB_FIRST_FLC|FLC|TUNARY|UNARY| */
|
||
|
#define UNARY 1
|
||
|
#define TUNARY 2
|
||
|
#define FLC 4
|
||
|
#define MSB_FIRST_FLC 12
|
||
|
|
||
|
/** Macroblock Types */
|
||
|
#define I_4x4_MB 0
|
||
|
#define I_16x16_MB 1
|
||
|
#define P_MB 2
|
||
|
#define B_MB 3
|
||
|
#define SI_MB 4
|
||
|
#define SP_MB 5
|
||
|
#define I_PCM_MB 6
|
||
|
|
||
|
#define SI4x4_MB 0xFF
|
||
|
|
||
|
/** Intra luma 16x16 and chroma 8x8 prediction modes */
|
||
|
#define NUM_INTRA_PRED_MODES 4
|
||
|
#define VERT 0
|
||
|
#define HORIZ 1
|
||
|
#define DC 2
|
||
|
#define PLANE 3
|
||
|
#define NOT_VALID -1
|
||
|
#define DC_DC_DC_DC 0x02020202 /*packed 4 bytes used in Decode Intra Mb*/
|
||
|
|
||
|
/** Intra luma 4x4 prediction modes */
|
||
|
#define NUM_INTRA4x4_PRED_MODES 9
|
||
|
|
||
|
/** VERT, HORIZ, DC are applicable to 4x4 as well */
|
||
|
/** D - Down; U - Up; L - Left; R - Right */
|
||
|
#define DIAG_DL 3
|
||
|
#define DIAG_DR 4
|
||
|
#define VERT_R 5
|
||
|
#define HORIZ_D 6
|
||
|
#define VERT_L 7
|
||
|
#define HORIZ_U 8
|
||
|
|
||
|
/** P_MB prediction modes */
|
||
|
#define NUM_INTER_MB_PRED_MODES 5
|
||
|
#define PRED_16x16 0
|
||
|
#define PRED_16x8 1
|
||
|
#define PRED_8x16 2
|
||
|
#define PRED_8x8 3
|
||
|
#define PRED_8x8R0 4
|
||
|
#define MAGIC_16x16 5
|
||
|
#define MB_SKIP 255
|
||
|
|
||
|
/* P_MB submb modes */
|
||
|
#define P_L0_8x8 0
|
||
|
#define P_L0_8x4 1
|
||
|
#define P_L0_4x8 2
|
||
|
#define P_L0_4x4 3
|
||
|
|
||
|
/* B_MB submb modes */
|
||
|
#define B_DIRECT_8x8 0
|
||
|
#define B_L0_8x8 1
|
||
|
#define B_L1_8x8 2
|
||
|
#define B_BI_8x8 3
|
||
|
#define B_L0_8x4 4
|
||
|
#define B_L0_4x8 5
|
||
|
#define B_L1_8x4 6
|
||
|
#define B_L1_4x8 7
|
||
|
#define B_BI_8x4 8
|
||
|
#define B_BI_4x8 9
|
||
|
#define B_L0_4x4 10
|
||
|
#define B_L1_4x4 11
|
||
|
#define B_BI_4x4 12
|
||
|
|
||
|
/** B_MB prediction modes */
|
||
|
#define B_8x8 22
|
||
|
#define PRED_INVALID -1
|
||
|
#define B_DIRECT 0
|
||
|
#define PRED_L0 1
|
||
|
#define PRED_L1 2
|
||
|
#define BI_PRED 3
|
||
|
#define B_DIRECT_BI_PRED 23
|
||
|
#define B_DIRECT_PRED_L0 24
|
||
|
#define B_DIRECT_PRED_L1 25
|
||
|
#define B_DIRECT_SPATIAL 26
|
||
|
|
||
|
#define B_DIRECT8x8_BI_PRED 13
|
||
|
#define B_DIRECT8x8_PRED_L0 14
|
||
|
#define B_DIRECT8x8_PRED_L1 15
|
||
|
|
||
|
#define ONE_TO_ONE 0
|
||
|
#define FRM_TO_FLD 1
|
||
|
#define FLD_TO_FRM 2
|
||
|
|
||
|
/** Inter Sub MB Pred modes */
|
||
|
#define NUM_INTER_SUBMB_PRED_MODES 4
|
||
|
#define SUBMB_8x8 0
|
||
|
#define SUBMB_8x4 1
|
||
|
#define SUBMB_4x8 2
|
||
|
#define SUBMB_4x4 3
|
||
|
|
||
|
/** Coded Block Pattern - Chroma */
|
||
|
#define CBPC_ALLZERO 0
|
||
|
#define CBPC_ACZERO 1
|
||
|
#define CBPC_NONZERO 2
|
||
|
|
||
|
/** Index for accessing the left MB in the MV predictor array */
|
||
|
#define LEFT 0
|
||
|
/** Index for accessing the top MB in the MV predictor array */
|
||
|
#define TOP 1
|
||
|
/** Index for accessing the top right MB in the MV predictor array */
|
||
|
#define TOP_R 2
|
||
|
/** Index for accessing the top Left MB in the MV predictor array */
|
||
|
#define TOP_L 3
|
||
|
|
||
|
/** Maximum number of Sequence Parameter sets */
|
||
|
#define MAX_NUM_SEQ_PARAMS 32
|
||
|
|
||
|
/** Maximum number of Picture Parameter sets */
|
||
|
#define MAX_NUM_PIC_PARAMS 256
|
||
|
|
||
|
#define MASK_ERR_SEQ_SET_ID (0xFFFFFFE0)
|
||
|
#define MASK_ERR_PIC_SET_ID (0xFFFFFF00)
|
||
|
|
||
|
#define MAX_PIC_ORDER_CNT_TYPE 2
|
||
|
|
||
|
#define MAX_BITS_IN_FRAME_NUM 16
|
||
|
#define MAX_BITS_IN_POC_LSB 16
|
||
|
|
||
|
#define H264_MAX_REF_PICS 16
|
||
|
#define H264_MAX_REF_IDX 32
|
||
|
#define MAX_WEIGHT_BIPRED_IDC 2
|
||
|
#define MAX_CABAC_INIT_IDC 2
|
||
|
|
||
|
#define H264_DEFAULT_NUM_CORES 1
|
||
|
#define DEFAULT_SEPARATE_PARSE (H264_DEFAULT_NUM_CORES == 2)? 1 :0
|
||
|
|
||
|
/** Maximum number of Slice groups */
|
||
|
#define MAX_NUM_SLICE_GROUPS 8
|
||
|
#define MAX_NUM_REF_FRAMES_OFFSET 255
|
||
|
|
||
|
/** Deblocking modes for a slice */
|
||
|
#define SLICE_BOUNDARY_DBLK_DISABLED 2
|
||
|
#define DBLK_DISABLED 1
|
||
|
#define DBLK_ENABLED 0
|
||
|
#define MIN_DBLK_FIL_OFF -12
|
||
|
#define MAX_DBLK_FIL_OFF 12
|
||
|
|
||
|
/** Width of the predictor buffers used for MC */
|
||
|
#define MB_SIZE 16
|
||
|
#define BLK8x8SIZE 8
|
||
|
#define BLK_SIZE 4
|
||
|
#define NUM_BLKS_PER_MB 24
|
||
|
#define NUM_LUM_BLKS_PER_MB 16
|
||
|
|
||
|
#define SUB_BLK_WIDTH 4
|
||
|
#define SUB_SUB_BLK_SIZE 4 /* 2x2 pixel i4_size */
|
||
|
#define SUB_BLK_SIZE ((SUB_BLK_WIDTH) * (SUB_BLK_WIDTH))
|
||
|
#define MB_LUM_SIZE 256
|
||
|
#define MB_CHROM_SIZE 64
|
||
|
|
||
|
/**< Width to pad the luminance frame buff */
|
||
|
/**< Height to pad the luminance frame buff */
|
||
|
/**< Width to pad the chrominance frame buff */
|
||
|
/**< Height to pad the chrominance frame buff */
|
||
|
|
||
|
#define PAD_LEN_Y_H 32
|
||
|
#define PAD_LEN_Y_V 20
|
||
|
#define PAD_LEN_UV_H 16
|
||
|
#define PAD_LEN_UV_V 8
|
||
|
|
||
|
#define PAD_MV_BANK_ROW 64
|
||
|
|
||
|
/**< Maimum u4_ofst by which the Mvs could point outside the frame buffers
|
||
|
horizontally in the left and vertically in the top direction */
|
||
|
#define MAX_OFFSET_OUTSIDE_X_FRM -20
|
||
|
#define MAX_OFFSET_OUTSIDE_Y_FRM -20
|
||
|
#define MAX_OFFSET_OUTSIDE_UV_FRM -8
|
||
|
|
||
|
/** UVLC parsing macros */
|
||
|
#define UEV 1
|
||
|
#define SEV 2
|
||
|
#define TEV 3
|
||
|
|
||
|
/** Defines for Boolean values */
|
||
|
#ifndef TRUE
|
||
|
#define TRUE 1
|
||
|
#define FALSE 0
|
||
|
#endif
|
||
|
|
||
|
#define UNUSED_FOR_REF 0
|
||
|
#define IS_SHORT_TERM 1
|
||
|
#define IS_LONG_TERM 2
|
||
|
|
||
|
/** Defines for which field gets displayed first */
|
||
|
#define MAX_FRAMES 16
|
||
|
#define INVALID_FRAME_NUM 0x0fffffff
|
||
|
#define DO_NOT_DISP 254
|
||
|
#define DISP_FLD_FIRST_UNDEF 0
|
||
|
#define DISP_TOP_FLD_FIRST 1
|
||
|
#define DISP_BOT_FLD_FIRST 2
|
||
|
|
||
|
/** Misc error resilience requirements*/
|
||
|
#define MAX_LOG2_WEIGHT_DENOM 7
|
||
|
#define PRED_WEIGHT_MIN (-128)
|
||
|
#define PRED_WEIGHT_MAX 127
|
||
|
#define MAX_REDUNDANT_PIC_CNT 127
|
||
|
|
||
|
|
||
|
|
||
|
#endif //DEBLOCK_THREAD
|
||
|
|
||
|
#define NUM_COEFFS_IN_4x4BLK 16
|
||
|
#define CABAC_BITS_TO_READ 23
|
||
|
|
||
|
#define DISPLAY_PRIMARIES_X_UPPER_LIMIT 37000
|
||
|
#define DISPLAY_PRIMARIES_X_LOWER_LIMIT 5
|
||
|
#define DISPLAY_PRIMARIES_X_DIVISION_FACTOR 5
|
||
|
|
||
|
#define DISPLAY_PRIMARIES_Y_UPPER_LIMIT 42000
|
||
|
#define DISPLAY_PRIMARIES_Y_LOWER_LIMIT 5
|
||
|
#define DISPLAY_PRIMARIES_Y_DIVISION_FACTOR 5
|
||
|
|
||
|
#define WHITE_POINT_X_UPPER_LIMIT 37000
|
||
|
#define WHITE_POINT_X_LOWER_LIMIT 5
|
||
|
#define WHITE_POINT_X_DIVISION_FACTOR 5
|
||
|
|
||
|
#define WHITE_POINT_Y_UPPER_LIMIT 42000
|
||
|
#define WHITE_POINT_Y_LOWER_LIMIT 5
|
||
|
#define WHITE_POINT_Y_DIVISION_FACTOR 5
|
||
|
|
||
|
#define MAX_DISPLAY_MASTERING_LUMINANCE_UPPER_LIMIT 100000000
|
||
|
#define MAX_DISPLAY_MASTERING_LUMINANCE_LOWER_LIMIT 50000
|
||
|
#define MAX_DISPLAY_MASTERING_LUMINANCE_DIVISION_FACTOR 10000
|
||
|
|
||
|
#define MIN_DISPLAY_MASTERING_LUMINANCE_UPPER_LIMIT 50000
|
||
|
#define MIN_DISPLAY_MASTERING_LUMINANCE_LOWER_LIMIT 1
|
||
|
|
||
|
#define AMBIENT_LIGHT_X_UPPER_LIMIT 50000
|
||
|
#define AMBIENT_LIGHT_Y_UPPER_LIMIT 50000
|
||
|
|
||
|
#define CCV_PRIMARIES_X_UPPER_LIMIT 5000000
|
||
|
#define CCV_PRIMARIES_X_LOWER_LIMIT -5000000
|
||
|
#define CCV_PRIMARIES_Y_UPPER_LIMIT 5000000
|
||
|
#define CCV_PRIMARIES_Y_LOWER_LIMIT -5000000
|
||
|
|
||
|
|
||
|
#define MEMSET_16BYTES(pu4_start,value) \
|
||
|
{ \
|
||
|
memset(pu4_start,value,16); \
|
||
|
}
|
||
|
|
||
|
#define MEMCPY_16BYTES(dst,src) \
|
||
|
{ \
|
||
|
memcpy(dst,src,16); \
|
||
|
}
|
||
|
|
||
|
|
||
|
#endif /*_IH264D_DEFS_H_*/
|