1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2021 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __AV1_H__ 18*437bfbebSnyanmisaka #define __AV1_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka // OBU types (section 6.2.2). 21*437bfbebSnyanmisaka typedef enum { 22*437bfbebSnyanmisaka // 0 reserved. 23*437bfbebSnyanmisaka AV1_OBU_SEQUENCE_HEADER = 1, 24*437bfbebSnyanmisaka AV1_OBU_TEMPORAL_DELIMITER = 2, 25*437bfbebSnyanmisaka AV1_OBU_FRAME_HEADER = 3, 26*437bfbebSnyanmisaka AV1_OBU_TILE_GROUP = 4, 27*437bfbebSnyanmisaka AV1_OBU_METADATA = 5, 28*437bfbebSnyanmisaka AV1_OBU_FRAME = 6, 29*437bfbebSnyanmisaka AV1_OBU_REDUNDANT_FRAME_HEADER = 7, 30*437bfbebSnyanmisaka AV1_OBU_TILE_LIST = 8, 31*437bfbebSnyanmisaka // 9-14 reserved. 32*437bfbebSnyanmisaka AV1_OBU_PADDING = 15, 33*437bfbebSnyanmisaka } AV1_OBU_Type; 34*437bfbebSnyanmisaka 35*437bfbebSnyanmisaka // Metadata types (section 6.7.1). 36*437bfbebSnyanmisaka enum { 37*437bfbebSnyanmisaka AV1_METADATA_TYPE_HDR_CLL = 1, 38*437bfbebSnyanmisaka AV1_METADATA_TYPE_HDR_MDCV = 2, 39*437bfbebSnyanmisaka AV1_METADATA_TYPE_SCALABILITY = 3, 40*437bfbebSnyanmisaka AV1_METADATA_TYPE_ITUT_T35 = 4, 41*437bfbebSnyanmisaka AV1_METADATA_TYPE_TIMECODE = 5, 42*437bfbebSnyanmisaka }; 43*437bfbebSnyanmisaka 44*437bfbebSnyanmisaka // Frame types (section 6.8.2). 45*437bfbebSnyanmisaka enum { 46*437bfbebSnyanmisaka AV1_FRAME_KEY = 0, 47*437bfbebSnyanmisaka AV1_FRAME_INTER = 1, 48*437bfbebSnyanmisaka AV1_FRAME_INTRA_ONLY = 2, 49*437bfbebSnyanmisaka AV1_FRAME_SWITCH = 3, 50*437bfbebSnyanmisaka }; 51*437bfbebSnyanmisaka 52*437bfbebSnyanmisaka // Reference frames (section 6.10.24). 53*437bfbebSnyanmisaka enum { 54*437bfbebSnyanmisaka AV1_REF_FRAME_INTRA = 0, 55*437bfbebSnyanmisaka AV1_REF_FRAME_LAST = 1, 56*437bfbebSnyanmisaka AV1_REF_FRAME_LAST2 = 2, 57*437bfbebSnyanmisaka AV1_REF_FRAME_LAST3 = 3, 58*437bfbebSnyanmisaka AV1_REF_FRAME_GOLDEN = 4, 59*437bfbebSnyanmisaka AV1_REF_FRAME_BWDREF = 5, 60*437bfbebSnyanmisaka AV1_REF_FRAME_ALTREF2 = 6, 61*437bfbebSnyanmisaka AV1_REF_FRAME_ALTREF = 7, 62*437bfbebSnyanmisaka }; 63*437bfbebSnyanmisaka 64*437bfbebSnyanmisaka // Constants (section 3). 65*437bfbebSnyanmisaka enum { 66*437bfbebSnyanmisaka AV1_MAX_OPERATING_POINTS = 32, 67*437bfbebSnyanmisaka 68*437bfbebSnyanmisaka AV1_MAX_SB_SIZE = 128, 69*437bfbebSnyanmisaka AV1_MI_SIZE = 4, 70*437bfbebSnyanmisaka 71*437bfbebSnyanmisaka AV1_MAX_TILE_WIDTH = 4096, 72*437bfbebSnyanmisaka AV1_MAX_TILE_AREA = 4096 * 2304, 73*437bfbebSnyanmisaka AV1_MAX_TILE_ROWS = 64, 74*437bfbebSnyanmisaka AV1_MAX_TILE_COLS = 64, 75*437bfbebSnyanmisaka 76*437bfbebSnyanmisaka AV1_NUM_REF_FRAMES = 8, 77*437bfbebSnyanmisaka AV1_REFS_PER_FRAME = 7, 78*437bfbebSnyanmisaka AV1_TOTAL_REFS_PER_FRAME = 8, 79*437bfbebSnyanmisaka AV1_PRIMARY_REF_NONE = 7, 80*437bfbebSnyanmisaka 81*437bfbebSnyanmisaka AV1_MAX_SEGMENTS = 8, 82*437bfbebSnyanmisaka AV1_SEG_LVL_MAX = 8, 83*437bfbebSnyanmisaka 84*437bfbebSnyanmisaka AV1_SEG_LVL_ALT_Q = 0, 85*437bfbebSnyanmisaka AV1_SEG_LVL_ALT_LF_Y_V = 1, 86*437bfbebSnyanmisaka AV1_SEG_LVL_REF_FRAME = 5, 87*437bfbebSnyanmisaka AV1_SEG_LVL_SKIP = 6, 88*437bfbebSnyanmisaka AV1_SEG_LVL_GLOBAL_MV = 7, 89*437bfbebSnyanmisaka 90*437bfbebSnyanmisaka AV1_SELECT_SCREEN_CONTENT_TOOLS = 2, 91*437bfbebSnyanmisaka AV1_SELECT_INTEGER_MV = 2, 92*437bfbebSnyanmisaka 93*437bfbebSnyanmisaka AV1_SUPERRES_NUM = 8, 94*437bfbebSnyanmisaka AV1_SUPERRES_DENOM_MIN = 9, 95*437bfbebSnyanmisaka 96*437bfbebSnyanmisaka AV1_INTERPOLATION_FILTER_SWITCHABLE = 4, 97*437bfbebSnyanmisaka 98*437bfbebSnyanmisaka AV1_GM_ABS_ALPHA_BITS = 12, 99*437bfbebSnyanmisaka AV1_GM_ALPHA_PREC_BITS = 15, 100*437bfbebSnyanmisaka AV1_GM_ABS_TRANS_ONLY_BITS = 9, 101*437bfbebSnyanmisaka AV1_GM_TRANS_ONLY_PREC_BITS = 3, 102*437bfbebSnyanmisaka AV1_GM_ABS_TRANS_BITS = 12, 103*437bfbebSnyanmisaka AV1_GM_TRANS_PREC_BITS = 6, 104*437bfbebSnyanmisaka AV1_WARPEDMODEL_PREC_BITS = 16, 105*437bfbebSnyanmisaka 106*437bfbebSnyanmisaka AV1_WARP_MODEL_IDENTITY = 0, 107*437bfbebSnyanmisaka AV1_WARP_MODEL_TRANSLATION = 1, 108*437bfbebSnyanmisaka AV1_WARP_MODEL_ROTZOOM = 2, 109*437bfbebSnyanmisaka AV1_WARP_MODEL_AFFINE = 3, 110*437bfbebSnyanmisaka AV1_WARP_PARAM_REDUCE_BITS = 6, 111*437bfbebSnyanmisaka 112*437bfbebSnyanmisaka AV1_DIV_LUT_BITS = 8, 113*437bfbebSnyanmisaka AV1_DIV_LUT_PREC_BITS = 14, 114*437bfbebSnyanmisaka AV1_DIV_LUT_NUM = 257, 115*437bfbebSnyanmisaka 116*437bfbebSnyanmisaka AV1_MAX_LOOP_FILTER = 63, 117*437bfbebSnyanmisaka }; 118*437bfbebSnyanmisaka 119*437bfbebSnyanmisaka 120*437bfbebSnyanmisaka // The main colour configuration information uses the same ISO/IEC 23001-8 121*437bfbebSnyanmisaka // (H.273) enums as FF does, so separate definitions are not required. 122*437bfbebSnyanmisaka 123*437bfbebSnyanmisaka // Chroma sample position. 124*437bfbebSnyanmisaka enum { 125*437bfbebSnyanmisaka AV1_CSP_UNKNOWN = 0, 126*437bfbebSnyanmisaka AV1_CSP_VERTICAL = 1, // -> AVCHROMA_LOC_LEFT. 127*437bfbebSnyanmisaka AV1_CSP_COLOCATED = 2, // -> AVCHROMA_LOC_TOPLEFT. 128*437bfbebSnyanmisaka }; 129*437bfbebSnyanmisaka 130*437bfbebSnyanmisaka // Scalability modes (section 6.7.5) 131*437bfbebSnyanmisaka enum { 132*437bfbebSnyanmisaka AV1_SCALABILITY_L1T2 = 0, 133*437bfbebSnyanmisaka AV1_SCALABILITY_L1T3 = 1, 134*437bfbebSnyanmisaka AV1_SCALABILITY_L2T1 = 2, 135*437bfbebSnyanmisaka AV1_SCALABILITY_L2T2 = 3, 136*437bfbebSnyanmisaka AV1_SCALABILITY_L2T3 = 4, 137*437bfbebSnyanmisaka AV1_SCALABILITY_S2T1 = 5, 138*437bfbebSnyanmisaka AV1_SCALABILITY_S2T2 = 6, 139*437bfbebSnyanmisaka AV1_SCALABILITY_S2T3 = 7, 140*437bfbebSnyanmisaka AV1_SCALABILITY_L2T1h = 8, 141*437bfbebSnyanmisaka AV1_SCALABILITY_L2T2h = 9, 142*437bfbebSnyanmisaka AV1_SCALABILITY_L2T3h = 10, 143*437bfbebSnyanmisaka AV1_SCALABILITY_S2T1h = 11, 144*437bfbebSnyanmisaka AV1_SCALABILITY_S2T2h = 12, 145*437bfbebSnyanmisaka AV1_SCALABILITY_S2T3h = 13, 146*437bfbebSnyanmisaka AV1_SCALABILITY_SS = 14, 147*437bfbebSnyanmisaka AV1_SCALABILITY_L3T1 = 15, 148*437bfbebSnyanmisaka AV1_SCALABILITY_L3T2 = 16, 149*437bfbebSnyanmisaka AV1_SCALABILITY_L3T3 = 17, 150*437bfbebSnyanmisaka AV1_SCALABILITY_S3T1 = 18, 151*437bfbebSnyanmisaka AV1_SCALABILITY_S3T2 = 19, 152*437bfbebSnyanmisaka AV1_SCALABILITY_S3T3 = 20, 153*437bfbebSnyanmisaka AV1_SCALABILITY_L3T2_KEY = 21, 154*437bfbebSnyanmisaka AV1_SCALABILITY_L3T3_KEY = 22, 155*437bfbebSnyanmisaka AV1_SCALABILITY_L4T5_KEY = 23, 156*437bfbebSnyanmisaka AV1_SCALABILITY_L4T7_KEY = 24, 157*437bfbebSnyanmisaka AV1_SCALABILITY_L3T2_KEY_SHIFT = 25, 158*437bfbebSnyanmisaka AV1_SCALABILITY_L3T3_KEY_SHIFT = 26, 159*437bfbebSnyanmisaka AV1_SCALABILITY_L4T5_KEY_SHIFT = 27, 160*437bfbebSnyanmisaka AV1_SCALABILITY_L4T7_KEY_SHIFT = 28, 161*437bfbebSnyanmisaka }; 162*437bfbebSnyanmisaka 163*437bfbebSnyanmisaka // Frame Restoration types (section 6.10.15) 164*437bfbebSnyanmisaka enum { 165*437bfbebSnyanmisaka AV1_RESTORE_NONE = 0, 166*437bfbebSnyanmisaka AV1_RESTORE_WIENER = 1, 167*437bfbebSnyanmisaka AV1_RESTORE_SGRPROJ = 2, 168*437bfbebSnyanmisaka AV1_RESTORE_SWITCHABLE = 3, 169*437bfbebSnyanmisaka }; 170*437bfbebSnyanmisaka 171*437bfbebSnyanmisaka #define PROFILE_AV1_MAIN 0 172*437bfbebSnyanmisaka #define PROFILE_AV1_HIGH 1 173*437bfbebSnyanmisaka #define PROFILE_AV1_PROFESSIONAL 2 174*437bfbebSnyanmisaka #define AV1_MAX_TILES 128 175*437bfbebSnyanmisaka 176*437bfbebSnyanmisaka #endif /*__AV1_H__ */ 177