History

Pretty printed the C++ code with astyle

Ethan Hugg committed 12 years ago

Commit ff6b6691 parent 063709c225 files · +48457 −51954Browse files

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

Unified · Split

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

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