History

Initial Commit

Ethan Hugg committed 12 years ago

Commit 70e5e621 parent bd509b2308 files · +97095 −-5Browse files

Showing the changes to codec/encoder/core/src/encoder_data_tables.cpp (1 of 308 files). Show all

Unified · Split

codec/encoder/core/src/encoder_data_tables.cpp+475−0
@@ -0,0 +1,475 @@
1/*!
2 * \copy
3 * Copyright (c) 2013, Cisco Systems
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * * Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
16 * distribution.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 *
31 */
32
33// exp_data.c
34// export date cross various modules (.c)
35#include "typedefs.h"
36#include "wels_common_basis.h"
37#include "mb_cache.h"
38#include "utils.h"
39#include "md.h"
40#include "sample.h"
41#include "svc_enc_golomb.h"
42#include "vlc_encoder.h"
43namespace WelsSVCEnc {
44///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
45
46// extern at mb_cache.h
47const uint8_t g_kuiSmb4AddrIn256[16] =
48{
49 0, 4, 16*4, 16*4+4,
50 8, 12, 16*4+8, 16*4+12,
51 16*8, 16*8+4, 16*12, 16*12+4,
52 16*8+8, 16*8+12, 16*12+8, 16*12+12
53};
54
55//////pNonZeroCount[16+8] mapping scan index
56const uint8_t g_kuiMbCountScan4Idx[24] =
57{ // 0 1 | 4 5 luma 8*8 block pNonZeroCount[16+8]
58 0, 1, 4, 5, // 2 3 | 6 7 0 | 1 0 1 2 3
59 2, 3, 6, 7, //--------------- --------- 4 5 6 7
60 8, 9, 12, 13, // 8 9 | 12 13 2 | 3 8 9 10 11
61 10, 11, 14, 15, // 10 11 | 14 15-----------------------------> 12 13 14 15
62 16, 17, 20, 21, //---------------- chroma 8*8 block 16 17 18 19
63 18, 19, 22, 23 // 16 17 | 20 21 0 1 20 21 22 23
64};
65
66const uint8_t g_kuiCache48CountScan4Idx[24] =
67{ // [16 + 2*4]
68 9, 10, 17, 18,
69 11, 12, 19, 20,
70 25, 26, 33, 34,
71 27, 28, 35, 36,
72 14, 15,
73 22, 23,
74 38, 39,
75 46, 47
76};
77
78
79//cache element equal to 30
80const uint8_t g_kuiCache30ScanIdx[16] = //mv or uiRefIndex cache scan index, 4*4 block as basic unit
81{
82 7, 8, 13, 14,
83 9, 10, 15, 16,
84 19, 20, 25, 26,
85 21, 22, 27, 28
86};
87
88const uint8_t g_kuiCache12_8x8RefIdx[4] = //mv or uiRefIndex cache scan index, 4*4 block as basic unit
89{
90 5,6,
91 9, 10
92};
93
94///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
95
96// extern at mb_cache.h
97
98const str_t *g_sWelsLogTags[] = {
99 "ERR",
100 "WARN",
101 "INFO",
102 "DBUG",
103 "RESV"
104};
105
106///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
107
108// extern at wels_common_basis.h
109const uint8_t g_kuiChromaQpTable[52]={
110 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,
111 12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,
112 28,29,29,30,31,32,32,33,34,34,35,35,36,36,37,37,
113 37,38,38,38,39,39,39,39
114};
115
116/*
117 * vcl type map for given NAL unit type and corresponding H264 type (0: AVC; 1: SVC).
118 */
119const EVclType g_keTypeMap[32][2] =
120{
121 { NON_VCL, NON_VCL }, // 0: NAL_UNIT_UNSPEC_0
122 { VCL, VCL, }, // 1: NAL_UNIT_CODED_SLICE
123 { VCL, NOT_APP }, // 2: NAL_UNIT_CODED_SLICE_DPA
124 { VCL, NOT_APP }, // 3: NAL_UNIT_CODED_SLICE_DPB
125 { VCL, NOT_APP }, // 4: NAL_UNIT_CODED_SLICE_DPC
126 { VCL, VCL }, // 5: NAL_UNIT_CODED_SLICE_IDR
127 { NON_VCL, NON_VCL }, // 6: NAL_UNIT_SEI
128 { NON_VCL, NON_VCL }, // 7: NAL_UNIT_SPS
129 { NON_VCL, NON_VCL }, // 8: NAL_UNIT_PPS
130 { NON_VCL, NON_VCL }, // 9: NAL_UNIT_AU_DELIMITER
131 { NON_VCL, NON_VCL }, // 10: NAL_UNIT_END_OF_SEQ
132 { NON_VCL, NON_VCL }, // 11: NAL_UNIT_END_OF_STR
133 { NON_VCL, NON_VCL }, // 12: NAL_UNIT_FILLER_DATA
134 { NON_VCL, NON_VCL }, // 13: NAL_UNIT_SPS_EXT
135 { NON_VCL, NON_VCL }, // 14: NAL_UNIT_PREFIX, NEED associate succeeded NAL to make a VCL
136 { NON_VCL, NON_VCL }, // 15: NAL_UNIT_SUBSET_SPS
137 { NON_VCL, NON_VCL }, // 16: NAL_UNIT_RESV_16
138 { NON_VCL, NON_VCL }, // 17: NAL_UNIT_RESV_17
139 { NON_VCL, NON_VCL }, // 18: NAL_UNIT_RESV_18
140 { NON_VCL, NON_VCL }, // 19: NAL_UNIT_AUX_CODED_SLICE
141 { NON_VCL, VCL }, // 20: NAL_UNIT_CODED_SLICE_EXT
142 { NON_VCL, NON_VCL }, // 21: NAL_UNIT_RESV_21
143 { NON_VCL, NON_VCL }, // 22: NAL_UNIT_RESV_22
144 { NON_VCL, NON_VCL }, // 23: NAL_UNIT_RESV_23
145 { NON_VCL, NON_VCL }, // 24: NAL_UNIT_UNSPEC_24
146 { NON_VCL, NON_VCL }, // 25: NAL_UNIT_UNSPEC_25
147 { NON_VCL, NON_VCL }, // 26: NAL_UNIT_UNSPEC_26
148 { NON_VCL, NON_VCL }, // 27: NAL_UNIT_UNSPEC_27
149 { NON_VCL, NON_VCL }, // 28: NAL_UNIT_UNSPEC_28
150 { NON_VCL, NON_VCL }, // 29: NAL_UNIT_UNSPEC_29
151 { NON_VCL, NON_VCL }, // 30: NAL_UNIT_UNSPEC_30
152 { NON_VCL, NON_VCL } // 31: NAL_UNIT_UNSPEC_31
153};
154
155__align16( const uint16_t, g_kuiDequantCoeff[52][8]) = {
156/* 0*/{ 10, 13, 10, 13, 13, 16, 13, 16 }, /* 1*/{ 11, 14, 11, 14, 14, 18, 14, 18 },
157/* 2*/{ 13, 16, 13, 16, 16, 20, 16, 20 }, /* 3*/{ 14, 18, 14, 18, 18, 23, 18, 23 },
158/* 4*/{ 16, 20, 16, 20, 20, 25, 20, 25 }, /* 5*/{ 18, 23, 18, 23, 23, 29, 23, 29 },
159/* 6*/{ 20, 26, 20, 26, 26, 32, 26, 32 }, /* 7*/{ 22, 28, 22, 28, 28, 36, 28, 36 },
160/* 8*/{ 26, 32, 26, 32, 32, 40, 32, 40 }, /* 9*/{ 28, 36, 28, 36, 36, 46, 36, 46 },
161/*10*/{ 32, 40, 32, 40, 40, 50, 40, 50 }, /*11*/{ 36, 46, 36, 46, 46, 58, 46, 58 },
162/*12*/{ 40, 52, 40, 52, 52, 64, 52, 64 }, /*13*/{ 44, 56, 44, 56, 56, 72, 56, 72 },
163/*14*/{ 52, 64, 52, 64, 64, 80, 64, 80 }, /*15*/{ 56, 72, 56, 72, 72, 92, 72, 92 },
164/*16*/{ 64, 80, 64, 80, 80, 100, 80, 100 }, /*17*/{ 72, 92, 72, 92, 92, 116, 92, 116 },
165/*18*/{ 80, 104, 80, 104, 104, 128, 104, 128 }, /*19*/{ 88, 112, 88, 112, 112, 144, 112, 144 },
166/*20*/{ 104, 128, 104, 128, 128, 160, 128, 160 }, /*21*/{ 112, 144, 112, 144, 144, 184, 144, 184 },
167/*22*/{ 128, 160, 128, 160, 160, 200, 160, 200 }, /*23*/{ 144, 184, 144, 184, 184, 232, 184, 232 },
168/*24*/{ 160, 208, 160, 208, 208, 256, 208, 256 }, /*25*/{ 176, 224, 176, 224, 224, 288, 224, 288 },
169/*26*/{ 208, 256, 208, 256, 256, 320, 256, 320 }, /*27*/{ 224, 288, 224, 288, 288, 368, 288, 368 },
170/*28*/{ 256, 320, 256, 320, 320, 400, 320, 400 }, /*29*/{ 288, 368, 288, 368, 368, 464, 368, 464 },
171/*30*/{ 320, 416, 320, 416, 416, 512, 416, 512 }, /*31*/{ 352, 448, 352, 448, 448, 576, 448, 576 },
172/*32*/{ 416, 512, 416, 512, 512, 640, 512, 640 }, /*33*/{ 448, 576, 448, 576, 576, 736, 576, 736 },
173/*34*/{ 512, 640, 512, 640, 640, 800, 640, 800 }, /*35*/{ 576, 736, 576, 736, 736, 928, 736, 928 },
174/*36*/{ 640, 832, 640, 832, 832, 1024, 832, 1024 }, /*37*/{ 704, 896, 704, 896, 896, 1152, 896, 1152 },
175/*38*/{ 832, 1024, 832, 1024, 1024, 1280, 1024, 1280 }, /*39*/{ 896, 1152, 896, 1152, 1152, 1472, 1152, 1472 },
176/*40*/{ 1024, 1280, 1024, 1280, 1280, 1600, 1280, 1600 }, /*41*/{ 1152, 1472, 1152, 1472, 1472, 1856, 1472, 1856 },
177/*42*/{ 1280, 1664, 1280, 1664, 1664, 2048, 1664, 2048 }, /*43*/{ 1408, 1792, 1408, 1792, 1792, 2304, 1792, 2304 },
178/*44*/{ 1664, 2048, 1664, 2048, 2048, 2560, 2048, 2560 }, /*45*/{ 1792, 2304, 1792, 2304, 2304, 2944, 2304, 2944 },
179/*46*/{ 2048, 2560, 2048, 2560, 2560, 3200, 2560, 3200 }, /*47*/{ 2304, 2944, 2304, 2944, 2944, 3712, 2944, 3712 },
180/*48*/{ 2560, 3328, 2560, 3328, 3328, 4096, 3328, 4096 }, /*49*/{ 2816, 3584, 2816, 3584, 3584, 4608, 3584, 4608 },
181/*50*/{ 3328, 4096, 3328, 4096, 4096, 5120, 4096, 5120 }, /*51*/{ 3584, 4608, 3584, 4608, 4608, 5888, 4608, 5888 },
182};
183
184///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
185
186// extern at md.h
187const int32_t g_kiQpCostTable[52] =
188{
189 1, 1, 1, 1, 1, 1, 1, 1, /* 0-7 */
190 1, 1, 1, 1, /* 8-11 */
191 1, 1, 1, 1, 2, 2, 2, 2, /* 12-19 */
192 3, 3, 3, 4, 4, 4, 5, 6, /* 20-27 */
193 6, 7, 8, 9,10,11,13,14, /* 28-35 */
194 16,18,20,23,25,29,32,36, /* 36-43 */
195 40,45,51,57,64,72,81,91 /* 44-51 */
196};
197const int8_t g_kiMapModeI16x16[7] =
198{
199 0, 1, 2, 3, 2, 2, 2
200};//{I16_PRED_V, I16_PRED_H, I16_PRED_DC, I16_PRED_P, I16_PRED_DC, I16_PRED_DC, I16_PRED_DC};
201
202const int8_t g_kiMapModeIntraChroma[7] =
203{
204 0, 1, 2, 3, 0, 0, 0
205};//{C_PRED_DC, C_PRED_H, C_PRED_V, C_PRED_P, C_PRED_DC_L, C_PRED_DC_T, C_PRED_DC_128};
206
207///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
208
209///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
210
211// extern at svc_enc_golomb.h
212
213const uint32_t g_uiGolombUELength[256] =
214{
215 1, 3, 3, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, //14
216 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, //30
217 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, //46
218 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, //62
219 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, //
220 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
221 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
222 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
223 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
224 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
225 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
226 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
227 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
228 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
229 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
230 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
231 17
232};
233
234///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
235
236// extern at vlc_encoder.h
237
238//g_kuiVlcCoeffToken[nc][total-coeff][trailing-ones][0--value, 1--bit count]
239const uint8_t g_kuiVlcCoeffToken[5][17][4][2] =
240{
241 {//0<=nc<2
242 { { 1, 1}, { 0, 0}, { 0, 0}, { 0, 0} }, //0
243 { { 5, 6}, { 1, 2}, { 0, 0}, { 0, 0} },//1
244 { { 7, 8}, { 4, 6}, { 1, 3}, { 0, 0} },//2
245 { { 7, 9}, { 6, 8}, { 5, 7}, { 3, 5} },//3
246 { { 7, 10}, { 6, 9}, { 5, 8}, { 3, 6} },//4
247 { { 7, 11}, { 6, 10}, { 5, 9}, { 4, 7} },//5
248 { {15, 13}, { 6, 11}, { 5, 10}, { 4, 8} },//6
249 { {11, 13}, {14, 13}, { 5, 11}, { 4, 9} },//7
250 { { 8, 13}, {10, 13}, {13, 13}, { 4, 10} },//8
251 { {15, 14}, {14, 14}, { 9, 13}, { 4, 11} },//9
252 { {11, 14}, {10, 14}, {13, 14}, {12, 13} },//10
253 { {15, 15}, {14, 15}, { 9, 14}, {12, 14} },//11
254 { {11, 15}, {10, 15}, {13, 15}, { 8, 14} },//12
255 { {15, 16}, { 1, 15}, { 9, 15}, {12, 15} },//13
256 { {11, 16}, {14, 16}, {13, 16}, { 8, 15} },//14
257 { { 7, 16}, {10, 16}, { 9, 16}, {12, 16} },//15
258 { { 4, 16}, { 6, 16}, { 5, 16}, { 8, 16} }//16
259 },
260
261 {//2<=nc<4
262 { { 3, 2}, { 0, 0}, { 0, 0}, { 0, 0} },//0
263 { {11, 6}, { 2, 2}, { 0, 0}, { 0, 0} },//1
264 { { 7, 6}, { 7, 5}, { 3, 3}, { 0, 0} },//2
265 { { 7, 7}, {10, 6}, { 9, 6}, { 5, 4} },//3
266 { { 7, 8}, { 6, 6}, { 5, 6}, { 4, 4} },//4
267 { { 4, 8}, { 6, 7}, { 5, 7}, { 6, 5} },//5
268 { { 7, 9}, { 6, 8}, { 5, 8}, { 8, 6} },//6
269 { {15, 11}, { 6, 9}, { 5, 9}, { 4, 6} },//7
270 { {11, 11}, {14, 11}, {13, 11}, { 4, 7} },//8
271 { {15, 12}, {10, 11}, { 9, 11}, { 4, 9} },//9
272 { {11, 12}, {14, 12}, {13, 12}, {12, 11} },//10
273 { { 8, 12}, {10, 12}, { 9, 12}, { 8, 11} },//11
274 { {15, 13}, {14, 13}, {13, 13}, {12, 12} },//12
275 { {11, 13}, {10, 13}, { 9, 13}, {12, 13} },//13
276 { { 7, 13}, {11, 14}, { 6, 13}, { 8, 13} },//14
277 { { 9, 14}, { 8, 14}, {10, 14}, { 1, 13} },//15
278 { { 7, 14}, { 6, 14}, { 5, 14}, { 4, 14} }//16
279 },
280
281 {//4<=nc<8
282 { {15, 4}, { 0, 0}, { 0, 0}, { 0, 0} },//0
283 { {15, 6}, {14, 4}, { 0, 0}, { 0, 0} },//1
284 { {11, 6}, {15, 5}, {13, 4}, { 0, 0} },//2
285 { { 8, 6}, {12, 5}, {14, 5}, {12, 4} },//3
286 { {15, 7}, {10, 5}, {11, 5}, {11, 4} },//4
287 { {11, 7}, { 8, 5}, { 9, 5}, {10, 4} },//5
288 { { 9, 7}, {14, 6}, {13, 6}, { 9, 4} },//6
289 { { 8, 7}, {10, 6}, { 9, 6}, { 8, 4} },//7
290 { {15, 8}, {14, 7}, {13, 7}, {13, 5} },//8
291 { {11, 8}, {14, 8}, {10, 7}, {12, 6} },//9
292 { {15, 9}, {10, 8}, {13, 8}, {12, 7} },//10
293 { {11, 9}, {14, 9}, { 9, 8}, {12, 8} },//11
294 { { 8, 9}, {10, 9}, {13, 9}, { 8, 8} },//12
295 { {13, 10}, { 7, 9}, { 9, 9}, {12, 9} },//13
296 { { 9, 10}, {12, 10}, {11, 10}, {10, 10} },//14
297 { { 5, 10}, { 8, 10}, { 7, 10}, { 6, 10} },//15
298 { { 1, 10}, { 4, 10}, { 3, 10}, { 2, 10} }//16
299 },
300
301 {//8<=nc
302 { { 3, 6}, { 0, 0}, { 0, 0}, { 0, 0} },//0
303 { { 0, 6}, { 1, 6}, { 0, 0}, { 0, 0} },//1
304 { { 4, 6}, { 5, 6}, { 6, 6}, { 0, 0} },//2
305 { { 8, 6}, { 9, 6}, {10, 6}, {11, 6} },//3
306 { {12, 6}, {13, 6}, {14, 6}, {15, 6} },//4
307 { {16, 6}, {17, 6}, {18, 6}, {19, 6} },//5
308 { {20, 6}, {21, 6}, {22, 6}, {23, 6} },//6
309 { {24, 6}, {25, 6}, {26, 6}, {27, 6} },//7
310 { {28, 6}, {29, 6}, {30, 6}, {31, 6} },//8
311 { {32, 6}, {33, 6}, {34, 6}, {35, 6} },//9
312 { {36, 6}, {37, 6}, {38, 6}, {39, 6} },//10
313 { {40, 6}, {41, 6}, {42, 6}, {43, 6} },//11
314 { {44, 6}, {45, 6}, {46, 6}, {47, 6} },//12
315 { {48, 6}, {49, 6}, {50, 6}, {51, 6} },//13
316 { {52, 6}, {53, 6}, {54, 6}, {55, 6} },//14
317 { {56, 6}, {57, 6}, {58, 6}, {59, 6} },//15
318 { {60, 6}, {61, 6}, {62, 6}, {63, 6} }//16
319 },
320
321 {//nc == -1
322 { { 1, 2}, { 0, 0}, { 0, 0}, { 0, 0} },//0
323 { { 7, 6}, { 1, 1}, { 0, 0}, { 0, 0} },//1
324 { { 4, 6}, { 6, 6}, { 1, 3}, { 0, 0} },//2
325 { { 3, 6}, { 3, 7}, { 2, 7}, { 5, 6} },//3
326 { { 2, 6}, { 3, 8}, { 2, 8}, { 0, 7} },//4
327 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },//5
328 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },//6
329 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },//7
330 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },//8
331 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },//9
332 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },//10
333 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },//11
334 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },//12
335 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },//13
336 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },//14
337 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },//15
338 { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} }//16
339 }
340};
341
342//const uint8_t g_kuiVlcLevelPrefix[15][2] =
343//{
344// {1, 1}, {1, 2}
345//};
346
347//g_kuiVlcTotalZeros[tzVlcIndex][total_zeros][0--value, 1--bit count]
348const uint8_t g_kuiVlcTotalZeros[16][16][2] =
349{
350 {//0 not available
351 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
352 },
353 {//1
354 {1, 1}, {3, 3}, {2, 3}, {3, 4}, {2, 4}, {3, 5}, {2, 5}, {3, 6}, {2, 6}, {3, 7}, {2, 7}, {3, 8}, {2, 8}, {3, 9}, {2, 9}, {1, 9}
355 },
356 {//2
357 {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {5, 4}, {4, 4}, {3, 4}, {2, 4}, {3, 5}, {2, 5}, {3, 6}, {2, 6}, {1, 6}, {0, 6}, {0, 0}
358 },
359 {//3
360 {5, 4}, {7, 3}, {6, 3}, {5, 3}, {4, 4}, {3, 4}, {4, 3}, {3, 3}, {2, 4}, {3, 5}, {2, 5}, {1, 6}, {1, 5}, {0, 6}, {0, 0}, {0, 0}
361 },
362 {//4
363 {3, 5}, {7, 3}, {5, 4}, {4, 4}, {6, 3}, {5, 3}, {4, 3}, {3, 4}, {3, 3}, {2, 4}, {2, 5}, {1, 5}, {0, 5}, {0, 0}, {0, 0}, {0, 0}
364 },
365 {//5
366 {5, 4}, {4, 4}, {3, 4}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 4}, {1, 5}, {1, 4}, {0, 5}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
367 },
368 {//6
369 {1, 6}, {1, 5}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 4}, {1, 3}, {0, 6}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
370 },
371 {//7
372 {1, 6}, {1, 5}, {5, 3}, {4, 3}, {3, 3}, {3, 2}, {2, 3}, {1, 4}, {1, 3}, {0, 6}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
373 },
374 {//8
375 {1, 6}, {1, 4}, {1, 5}, {3, 3}, {3, 2}, {2, 2}, {2, 3}, {1, 3}, {0, 6}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
376 },
377 {//9
378 {1, 6}, {0, 6}, {1, 4}, {3, 2}, {2, 2}, {1, 3}, {1, 2}, {1, 5}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
379 },
380 {//10
381 {1, 5}, {0, 5}, {1, 3}, {3, 2}, {2, 2}, {1, 2}, {1, 4}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
382 },
383 {//11
384 {0, 4}, {1, 4}, {1, 3}, {2, 3}, {1, 1}, {3, 3}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
385 },
386 {//12
387 {0, 4}, {1, 4}, {1, 2}, {1, 1}, {1, 3}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
388 },
389 {//13
390 {0, 3}, {1, 3}, {1, 1}, {1, 2}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
391 },
392 {//14
393 {0, 2}, {1, 2}, {1, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
394 },
395 {//15
396 {0, 1}, {1, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
397 }
398};
399
400const uint8_t g_kuiVlcTotalZerosChromaDc[4][4][2] =
401{
402 {
403 {0, 0}, {0, 0}, {0, 0}, {0, 0}
404 },
405 {
406 {1, 1}, {1, 2}, {1, 3}, {0, 3}
407 },
408 {
409 {1, 1}, {1, 2}, {0, 2}, {0, 0}
410 },
411 {
412 {1, 1}, {0, 1}, {0, 0}, {0, 0}
413 }
414};
415//
416
417//g_kuiVlcRunBefore[zeros-left][run-before][0--value, 1--bit count]
418const uint8_t g_kuiVlcRunBefore[8][15][2] =
419{
420 {//0 not available
421 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
422 },
423 {//1
424 {1, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
425 },
426 {//2
427 {1, 1}, {1, 2}, {0, 2}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
428 },
429 {//3
430 {3, 2}, {2, 2}, {1, 2}, {0, 2}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
431 },
432 {//4
433 {3, 2}, {2, 2}, {1, 2}, {1, 3}, {0, 3}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
434 },
435 {//5
436 {3, 2}, {2, 2}, {3, 3}, {2, 3}, {1, 3}, {0, 3}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
437 },
438 {//6
439 {3, 2}, {0, 3}, {1, 3}, {3, 3}, {2, 3}, {5, 3}, {4, 3}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
440 },
441 {//>6
442 {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, {1, 7}, {1, 8}, {1, 9}, {1, 10}, {1, 11}
443 }
444};
445
446const ALIGNED_DECLARE(uint8_t, g_kuiEncNcMapTable[18], 16) =
447{
448 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4
449};
450
451
452
453const uint8_t g_kuiTemporalIdListTable[MAX_TEMPORAL_LEVEL][MAX_GOP_SIZE + 1] =
454{
455 { 0, 0, 0, 0, 0, 0, 0, 0,
456 0, 0, 0, 0, 0, 0, 0, 0,
457 0 }, // gop size = 1
458 { 0, 1, 0, 0, 0, 0, 0, 0,
459 0, 0, 0, 0, 0, 0, 0, 0,
460 0 }, // uiGopSize = 2
461 { 0, 2, 1, 2, 0, 0, 0, 0,
462 0, 0, 0, 0, 0, 0, 0, 0,
463 0 }, // uiGopSize = 4
464 { 0, 3, 2, 3, 1, 3, 2, 3,
465 0, 0, 0, 0, 0, 0, 0, 0,
466 0 }, // uiGopSize = 8
467 { 0, 4, 3, 4, 2, 4, 3, 4,
468 1, 4, 3, 4, 2, 4, 3, 4,
469 0 } // uiGopSize = 16
470};
471///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
472
473// extern at svc_encode_slice.h
474///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
475}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t