1 /************************************************************************** 2 * 3 * Copyright 2021 Advanced Micro Devices, Inc. 4 * 5 * SPDX-License-Identifier: MIT 6 * 7 **************************************************************************/ 8 9 #ifndef _RADEON_TEMPORAL_H 10 #define _RADEON_TEMPORAL_H 11 12 #include "radeon_video.h" 13 #include "radeon_vcn_enc.h" 14 15 #define RENCODE_MAX_TEMPORAL_LAYER_PATTERN_SIZE 9 16 17 typedef struct rvcn_temporal_layer_pattern_entry_s 18 { 19 unsigned temporal_id; 20 unsigned reference_index_in_table; 21 bool reference_modification; 22 unsigned frame_num_offset; 23 unsigned poc_offset; 24 bool mark_as_reference; 25 } rvcn_temporal_layer_pattern_entry_t; 26 27 typedef struct rvcn_temporal_layer_pattern_table_s 28 { 29 unsigned pattern_size; 30 rvcn_temporal_layer_pattern_entry_t pattern_table[RENCODE_MAX_TEMPORAL_LAYER_PATTERN_SIZE]; 31 } rvcn_temporal_layer_pattern_table_t; 32 33 static const rvcn_temporal_layer_pattern_table_t rvcn_temporal_layer_pattern_tables[RENCODE_MAX_NUM_TEMPORAL_LAYERS] = 34 { 35 /* 1 temporal layer */ 36 { 37 2, /* temporal layer pattern size */ 38 { 39 { 40 0, 41 0, 42 false, 43 0, 44 0, 45 true, 46 }, 47 { 48 0, 49 0, 50 false, 51 1, 52 2, 53 true, 54 } 55 } 56 }, 57 /* 2 temporal layers */ 58 { 59 3, /* temporal layer pattern size */ 60 { 61 { 62 0, 63 0, 64 false, 65 0, 66 0, 67 true, 68 }, 69 { 70 1, 71 0, 72 false, 73 1, 74 2, 75 false, 76 }, 77 { 78 0, 79 0, 80 false, 81 1, 82 4, 83 true, 84 } 85 } 86 }, 87 /* 3 temporal layers */ 88 { 89 5, /* temporal layer pattern size */ 90 { 91 { 92 0, 93 0, 94 false, 95 0, 96 0, 97 true, 98 }, 99 { 100 2, 101 0, 102 false, 103 1, 104 2, 105 false, 106 }, 107 { 108 1, 109 0, 110 false, 111 1, 112 4, 113 true, 114 }, 115 { 116 2, 117 2, 118 false, 119 2, 120 6, 121 false, 122 }, 123 { 124 0, 125 0, 126 true, 127 2, 128 8, 129 true, 130 } 131 } 132 }, 133 /* 4 temporal layers */ 134 { 135 9, /* temporal layer pattern size */ 136 { 137 { 138 0, 139 0, 140 false, 141 0, 142 0, 143 true, 144 }, 145 { 146 3, 147 0, 148 false, 149 1, 150 2, 151 false, 152 }, 153 { 154 2, 155 0, 156 false, 157 1, 158 4, 159 true, 160 }, 161 { 162 3, 163 2, 164 false, 165 2, 166 6, 167 false, 168 }, 169 { 170 1, 171 0, 172 true, 173 2, 174 8, 175 true, 176 }, 177 { 178 3, 179 4, 180 false, 181 3, 182 10, 183 false, 184 }, 185 { 186 2, 187 4, 188 false, 189 3, 190 12, 191 true, 192 }, 193 { 194 3, 195 6, 196 false, 197 4, 198 14, 199 false, 200 }, 201 { 202 0, 203 0, 204 true, 205 4, 206 16, 207 true, 208 } 209 } 210 } 211 }; 212 213 #endif // _RADEON_TEMPORAL_H