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"
43+namespace WelsSVCEnc {
44+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
45+
46+// extern at mb_cache.h
47+const 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
56+const 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+
66+const 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
80+const 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+
88+const 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+
98+const 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
109+const 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+ */
119+const 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
187+const 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+};
197+const 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+
202+const 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+
213+const 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]
239+const 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]
348+const 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+
400+const 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]
418+const 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+
446+const 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+
453+const 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