summaryrefslogtreecommitdiffstats
path: root/baseline/source/h264_dec
diff options
context:
space:
mode:
Diffstat (limited to 'baseline/source/h264_dec')
-rw-r--r--baseline/source/h264_dec/changeLog.txt41
-rw-r--r--baseline/source/h264_dec/copyright.txt32
-rw-r--r--baseline/source/h264_dec/h264_dec.c610
-rw-r--r--baseline/source/h264_dec/h264_dec.h29
-rw-r--r--baseline/source/h264_dec/h264_decinput.c801
5 files changed, 1513 insertions, 0 deletions
diff --git a/baseline/source/h264_dec/changeLog.txt b/baseline/source/h264_dec/changeLog.txt
new file mode 100644
index 0000000..2d5d97f
--- /dev/null
+++ b/baseline/source/h264_dec/changeLog.txt
@@ -0,0 +1,41 @@
1File: h264dec_ldecode_macroblock.c
2Original provenience:
3
42015-12-21:
5- Filename changed to h264dec.c
6- global.h renamed to h264dec.h
7- Removed commented out includes
8- Removed all obsolete typedefs, enums and structs. Only remaining ones are
9 struct img_par and
10 enum SliceType
11- Renamed function decode_one_macroblock to h264dec_decode_one_macroblock
12- Function h264dec_decode_one_macroblock changed to void (i.e., removed statement return 0;)
13- Added functions h264dec_init, h264dec_return and main
14- Added forward declarations of all functions before the declarations of global
15 variables
16- Struct 'ImageParameters' renamed to 'h264dec_ImageParameters'
17- Re-ordered functions to fit template-order
18- Applied code formatting according to the following rules
19 (incomplete, to be discussed; I basically used astyle with the attached
20 options file):
21 - Lines shall not be wider than 80 characters; whenever possible, appropriate
22 line breaks shall be inserted to keep lines below 80 characters
23 - Indentation is done using whitespaces only, no tabs. Code is indented by
24 two whitespaces
25 - Two empty lines are put between any two functions
26 - In non-empty lists or index expressions, opening '(' and '[' are followed by
27 one whitespace, closing ')' and ']' are preceded by one whitespace
28 - In comma- or colon-separated argument lists, one whitespace is put after
29 each comma/colon
30 - Names of functions and global variables all start with a benchmark-specific
31 prefix (here: st_) followed by lowercase letter (e.g., st_square)
32 - For pointer types, one whitespace is put before the '*'
33 - Operators within expressions shall be preceded and followed by one
34 whitespace
35 - Code of then- and else-parts of if-then-else statements shall be put in
36 separate lines, not in the same lines as the if-condition or the keyword
37 "else"
38 - Opening braces '{' denoting the beginning of code for some if-else or loop
39 body shall be put at the end of the same line where the keywords "if",
40 "else", "for", "while" etc. occur
41- Added general TACLeBench header to beginning of source code \ No newline at end of file
diff --git a/baseline/source/h264_dec/copyright.txt b/baseline/source/h264_dec/copyright.txt
new file mode 100644
index 0000000..fe3eece
--- /dev/null
+++ b/baseline/source/h264_dec/copyright.txt
@@ -0,0 +1,32 @@
1/*
2***********************************************************************
3* COPYRIGHT AND WARRANTY INFORMATION
4*
5* Copyright 2001, International Telecommunications Union, Geneva
6*
7* DISCLAIMER OF WARRANTY
8*
9* These software programs are available to the user without any
10* license fee or royalty on an "as is" basis. The ITU disclaims
11* any and all warranties, whether express, implied, or
12* statutory, including any implied warranties of merchantability
13* or of fitness for a particular purpose. In no event shall the
14* contributor or the ITU be liable for any incidental, punitive, or
15* consequential damages of any kind whatsoever arising from the
16* use of these programs.
17*
18* This disclaimer of warranty extends to the user of these programs
19* and user's customers, employees, agents, transferees, successors,
20* and assigns.
21*
22* The ITU does not represent or warrant that the programs furnished
23* hereunder are free of infringement of any third-party patents.
24* Commercial implementations of ITU-T Recommendations, including
25* shareware, may be subject to royalty fees to patent holders.
26* Information regarding the ITU-T patent policy is available from
27* the ITU Web site at http://www.itu.int.
28*
29* THIS IS NOT A GRANT OF PATENT RIGHTS - SEE THE ITU-T PATENT POLICY.
30************************************************************************
31*/
32
diff --git a/baseline/source/h264_dec/h264_dec.c b/baseline/source/h264_dec/h264_dec.c
new file mode 100644
index 0000000..76af705
--- /dev/null
+++ b/baseline/source/h264_dec/h264_dec.c
@@ -0,0 +1,610 @@
1/*
2
3 This program is part of the TACLeBench benchmark suite.
4 Version V 2.0
5
6 Name: h264_dec_ldecode_macroblock.c
7
8 Author: Inge Lille-Langoy et al.
9
10 Function: H.264 decoder
11
12 Source: MediaBench II
13 http://euler.slu.edu/~fritts/mediabench (mirror)
14
15 Original name: h264_dec_ldecode_macroblock.c
16
17 Changes: no functional changes
18
19 License: see copyright.txt
20
21*/
22
23
24/*
25 Include section
26*/
27
28#include "../extra.h"
29#include "h264_dec.h"
30
31
32/*
33 Forward declaration of functions
34*/
35
36void h264_dec_init ();
37int h264_dec_return ();
38void h264_dec_decode_one_macroblock( struct h264_dec_img_par *img );
39void h264_dec_main( void );
40//int main( void );
41
42
43/*
44 Declaration of global variables
45*/
46
47extern signed char h264_dec_mv_array[65][65][2];
48extern short h264_dec_list_imgUV[2][45][45];
49extern int h264_dec_img_m7[16][16];
50
51char h264_dec_img_mpr[7][7];
52char h264_dec_dec_picture_imgUV[2][64][54];
53struct h264_dec_img_par h264_dec_img;
54
55
56/*
57 Initialization- and return-value-related functions
58*/
59
60int h264_dec_return ()
61{
62 return ( h264_dec_img_mpr[0][0] + h264_dec_dec_picture_imgUV[0][0][0] + 128 !=
63 0 );
64}
65
66void h264_dec_init ()
67{
68 unsigned int i;
69 unsigned char *p;
70 volatile char bitmask = 0;
71
72 /*
73 Apply volatile XOR-bitmask to entire input array.
74 */
75 p = ( unsigned char * ) &h264_dec_mv_array[ 0 ];
76 _Pragma( "loopbound min 33800 max 33800" )
77 for ( i = 0; i < sizeof( h264_dec_mv_array ); ++i, ++p )
78 *p ^= bitmask;
79
80 p = ( unsigned char * ) &h264_dec_list_imgUV[ 0 ];
81 _Pragma( "loopbound min 16200 max 16200" )
82 for ( i = 0; i < sizeof( h264_dec_list_imgUV ); ++i, ++p )
83 *p ^= bitmask;
84
85 p = ( unsigned char * ) &h264_dec_img_m7[ 0 ];
86 _Pragma( "loopbound min 1024 max 1024" )
87 for ( i = 0; i < sizeof( h264_dec_img_m7 ); ++i, ++p )
88 *p ^= bitmask;
89
90 h264_dec_img.mb_cr_size_x = 8;
91 h264_dec_img.mb_cr_size_y = 8;
92 h264_dec_img.num_blk8x8_uv = 2;
93 h264_dec_img.pix_c_x = 256;
94 h264_dec_img.pix_c_y = 256;
95 h264_dec_img.width_cr = 352;
96 h264_dec_img.apply_weights = 0;
97 h264_dec_img.direct_spatial_mv_pred_flag = 1;
98 h264_dec_img.type = 1;
99 h264_dec_img.wp_round_chroma = 0;
100 h264_dec_img.chroma_log2_weight_denom = 0;
101}
102
103
104/*
105 Algorithm core functions
106*/
107
108void h264_dec_decode_one_macroblock( struct h264_dec_img_par *img )
109{
110 int i = 0, j = 0, ii = 0, jj = 0, i1 = 0, j1 = 0, j4 = 0, i4 = 0;
111 int uv;
112 int ioff, joff;
113 int bw_pred = 0, fw_pred = 0, ifx;
114 int ii0, jj0, ii1, jj1, if1, jf1, if0, jf0;
115 int f1_x, f1_y, f2_x, f2_y, f3, f4;
116
117 short fw_refframe = -1, bw_refframe = -1;
118 int mv_mode, pred_dir, intra_prediction; // = currMB->ref_frame;
119 short fw_ref_idx = -1, bw_ref_idx = -1;
120
121 int mb_nr = 0;
122 short dec_picture_ref_idx = 0;
123
124 short active_sps_chroma_format_idc = 1;
125 short active_pps_weighted_pred_flag = 0;
126 short active_pps_weighted_bipred_idc = 0;
127
128 int smb = 0;
129 int max_y_cr = 287;
130
131 int jf;
132
133 int direct_pdir = -1;
134
135 int curr_mb_field = 0;
136
137 int b8, b4;
138
139 int residue_transform_flag = 0;
140
141 if ( 1 ) {
142 f1_x = 64 / img->mb_cr_size_x;
143 f2_x = f1_x - 1;
144
145 f1_y = 64 / img->mb_cr_size_y;
146 f2_y = f1_y - 1;
147
148 f3 = f1_x * f1_y;
149 f4 = f3 >> 1;
150
151 _Pragma( "loopbound min 2 max 2" )
152 for ( uv = 0; uv < 2; uv++ ) {
153 intra_prediction = 0;
154
155
156 _Pragma( "loopbound min 1 max 1" )
157 for ( b8 = 0; b8 < ( img->num_blk8x8_uv / 2 ); b8++ ) {
158 _Pragma( "loopbound min 4 max 4" )
159 for ( b4 = 0; b4 < 4; b4++ ) {
160 joff = 0;
161 j4 = img->pix_c_y + joff;
162 ioff = 0;
163 i4 = img->pix_c_x + ioff;
164
165 mv_mode = 1;
166 pred_dir = -1;
167
168 if ( !intra_prediction ) {
169 if ( pred_dir != 2 ) {
170
171 _Pragma( "loopbound min 4 max 4" )
172 for ( jj = 0; jj < 4; jj++ ) {
173 jf = ( ( j4 + jj ) / ( img->mb_cr_size_y / 4 ) ) % 64;
174 _Pragma( "loopbound min 4 max 4" )
175 for ( ii = 0; ii < 4; ii++ ) {
176 ifx = ( ( i4 + ii ) / ( img->mb_cr_size_x / 4 ) ) % 64;
177 i1 = ( i4 + ii ) * f1_x + h264_dec_mv_array[jf][ifx][0];
178
179 if ( !curr_mb_field )
180 j1 = ( j4 + jj ) * f1_y + h264_dec_mv_array[jf][ifx][1];
181 else {
182 if ( mb_nr % 2 == 0 ) {
183 j1 = ( ( img->pix_c_y / 2 ) + jj + joff ) * f1_y +
184 h264_dec_mv_array[jf][ifx][1];
185 } else {
186 j1 = ( ( img->pix_c_y - img->mb_cr_size_y ) / 2
187 + jj + joff ) * f1_y +
188 h264_dec_mv_array[jf][ifx][1];
189 }
190 ++mb_nr;
191 }
192
193 if ( active_sps_chroma_format_idc == 1 )
194 j1 += 0;
195
196 ii0 = ( ( ( 0 < ( ( i1 / f1_x > img->width_cr - 1 ) ?
197 img->width_cr - 1 : i1 / f1_x ) ) ?
198 ( ( i1 / f1_x > img->width_cr - 1 ) ?
199 img->width_cr - 1 : i1 / f1_x ) : 0 ) ) % 45;
200 jj0 = ( ( ( 0 < ( ( j1 / f1_y > max_y_cr ) ?
201 max_y_cr : j1 / f1_y ) ) ?
202 ( ( j1 / f1_y > max_y_cr ) ?
203 max_y_cr : j1 / f1_y ) : 0 ) ) % 45;
204 ii1 = ( ( ( 0 < (
205 ( ( i1 + f2_x ) / f1_x > img->width_cr - 1 )
206 ? img->width_cr - 1 : ( i1 + f2_x ) / f1_x ) )
207 ? ( ( ( i1 + f2_x ) / f1_x > img->width_cr - 1 )
208 ? img->width_cr - 1 :
209 ( i1 + f2_x ) / f1_x ) : 0 ) ) % 45;
210 jj1 = ( ( ( 0 < ( ( ( j1 + f2_y ) / f1_y > max_y_cr )
211 ? max_y_cr : ( j1 + f2_y ) / f1_y ) ) ?
212 ( ( ( j1 + f2_y ) / f1_y > max_y_cr ) ?
213 max_y_cr : ( j1 + f2_y ) / f1_y ) : 0 ) ) % 45;
214
215 if1 = ( i1 & f2_x );
216 jf1 = ( j1 & f2_y );
217 if0 = f1_x - if1;
218 jf0 = f1_y - jf1;
219
220 if ( img->apply_weights ) {
221 } else {
222 h264_dec_img_mpr[ii + ioff][jj + joff]
223 = ( if0 * jf0 * h264_dec_list_imgUV[uv][jj0][ii0]
224 + if1 * jf0 * h264_dec_list_imgUV[uv][jj0][ii1]
225 + if0 * jf1 * h264_dec_list_imgUV[uv][jj1][ii0]
226 + if1 * jf1 * h264_dec_list_imgUV[uv][jj1][ii1]
227 + f4 ) / f3;
228 }
229 }
230 }
231 } else {
232
233 _Pragma( "loopbound min 4 max 4" )
234 for ( jj = 0; jj < 4; jj++ ) {
235 jf = ( j4 + jj ) / ( img->mb_cr_size_y / 4 );
236 _Pragma( "loopbound min 4 max 4" )
237 for ( ii = 0; ii < 4; ii++ ) {
238 ifx = ( i4 + ii ) / ( img->mb_cr_size_x / 4 );
239 direct_pdir = 2;
240
241 if ( mv_mode == 0 && img->direct_spatial_mv_pred_flag ) {
242 if ( dec_picture_ref_idx != -1 ) {
243 fw_refframe = 0;
244 fw_ref_idx = fw_refframe;
245 }
246 if ( dec_picture_ref_idx != -1 ) {
247 bw_refframe = 0;
248 bw_ref_idx = bw_refframe;
249 }
250
251 if ( dec_picture_ref_idx == -1 ) direct_pdir = 0;
252 else
253 if ( dec_picture_ref_idx == -1 ) direct_pdir = 1;
254
255 if ( direct_pdir == 0 || direct_pdir == 2 ) {
256 i1 = ( img->pix_c_x + ii + ioff ) * f1_x +
257 h264_dec_mv_array[jf][ifx][0];
258
259 if ( !curr_mb_field ) {
260 j1 = ( img->pix_c_y + jj + joff ) * f1_y +
261 h264_dec_mv_array[jf][ifx][1];
262 } else {
263 if ( mb_nr % 2 == 0 ) {
264 j1 = ( ( img->pix_c_y ) / 2 + jj + joff ) *
265 f1_y + h264_dec_mv_array[jf][ifx][1];
266 } else {
267 j1 = ( ( img->pix_c_y - img->mb_cr_size_y )
268 / 2 + jj + joff ) * f1_y
269 + h264_dec_mv_array[jf][ifx][1];
270 }
271 }
272
273 if ( active_sps_chroma_format_idc == 1 )
274 j1 += 0;
275
276 ii0 = ( (
277 ( 0 < ( ( i1 / f1_x > img->width_cr - 1 ) ?
278 img->width_cr - 1 : i1 / f1_x ) ) ?
279 ( ( i1 / f1_x > img->width_cr - 1 ) ?
280 img->width_cr - 1 : i1 / f1_x ) : 0 ) ) % 45;
281 jj0 = ( (
282 ( 0 < ( ( j1 / f1_y > max_y_cr ) ?
283 max_y_cr : j1 / f1_y ) ) ? ( (
284 j1 / f1_y > max_y_cr ) ?
285 max_y_cr : j1 / f1_y ) : 0 )
286 ) % 45;
287 ii1 = ( ( ( 0 < ( ( ( i1 + f2_x ) /
288 f1_x > img->width_cr - 1 ) ?
289 img->width_cr - 1 :
290 ( i1 + f2_x ) / f1_x ) ) ?
291 ( ( ( i1 + f2_x ) / f1_x > img->width_cr - 1 )
292 ? img->width_cr - 1 :
293 ( i1 + f2_x ) / f1_x ) : 0 ) ) % 45;
294 jj1 = ( ( ( 0 < ( ( ( j1 + f2_y ) / f1_y > max_y_cr ) ?
295 max_y_cr : ( j1 + f2_y ) / f1_y ) ) ?
296 ( ( ( j1 + f2_y ) / f1_y > max_y_cr ) ?
297 max_y_cr : ( j1 + f2_y ) / f1_y ) : 0 )
298 ) % 45;
299
300
301 if1 = ( i1 & f2_x );
302 jf1 = ( j1 & f2_y );
303 if0 = f1_x - if1;
304 jf0 = f1_y - jf1;
305
306 fw_pred = ( if0 * jf0 *
307 h264_dec_list_imgUV[uv][jj0][ii0] +
308 if1 * jf0 *
309 h264_dec_list_imgUV[uv][jj0][ii1] +
310 if0 * jf1 *
311 h264_dec_list_imgUV[uv][jj1][ii0] +
312 if1 * jf1 *
313 h264_dec_list_imgUV[uv][jj1][ii1] +
314 f4 ) / f3;
315 }
316 if ( direct_pdir == 1 || direct_pdir == 2 ) {
317 i1 = ( img->pix_c_x + ii + ioff ) * f1_x +
318 h264_dec_mv_array[jf][ifx][0];
319
320 if ( !curr_mb_field ) {
321 j1 = ( img->pix_c_y + jj + joff ) * f1_y +
322 h264_dec_mv_array[jf][ifx][1];
323 } else {
324 if ( mb_nr % 2 == 0 ) {
325 j1 = ( ( img->pix_c_y ) / 2 + jj + joff ) * f1_y
326 + h264_dec_mv_array[jf][ifx][1];
327 } else {
328 j1 = ( ( img->pix_c_y - img->mb_cr_size_y ) / 2
329 + jj + joff ) * f1_y
330 + h264_dec_mv_array[jf][ifx][1];
331 }
332 }
333 if ( active_sps_chroma_format_idc == 1 )
334 j1 += 0;
335
336 ii0 = ( ( ( 0 < ( ( i1 / f1_x > img->width_cr - 1 ) ?
337 img->width_cr - 1 : i1 / f1_x ) ) ?
338 ( ( i1 / f1_x > img->width_cr - 1 ) ?
339 img->width_cr - 1 : i1 / f1_x ) : 0 ) ) % 45;
340 jj0 = ( ( ( 0 < ( ( j1 / f1_y > max_y_cr ) ?
341 max_y_cr : j1 / f1_y ) ) ?
342 ( ( j1 / f1_y > max_y_cr ) ?
343 max_y_cr : j1 / f1_y ) : 0 ) ) % 45;
344 ii1 = ( ( ( 0 < ( ( ( i1 + f2_x ) /
345 f1_x > img->width_cr - 1 ) ?
346 img->width_cr - 1 :
347 ( i1 + f2_x ) / f1_x ) ) ?
348 ( ( ( i1 + f2_x ) / f1_x > img->width_cr - 1 )
349 ? img->width_cr - 1 :
350 ( i1 + f2_x ) / f1_x ) : 0 ) ) % 45;
351 jj1 = ( ( ( 0 < ( ( ( j1 + f2_y ) / f1_y > max_y_cr ) ?
352 max_y_cr : ( j1 + f2_y ) / f1_y ) ) ?
353 ( ( ( j1 + f2_y ) / f1_y > max_y_cr ) ?
354 max_y_cr : ( j1 + f2_y ) / f1_y ) : 0 ) )
355 % 45;
356
357 if1 = ( i1 & f2_x );
358 jf1 = ( j1 & f2_y );
359 if0 = f1_x - if1;
360 jf0 = f1_y - jf1;
361
362 bw_pred = ( if0 * jf0 *
363 h264_dec_list_imgUV[uv][jj0][ii0] +
364 if1 * jf0 *
365 h264_dec_list_imgUV[uv][jj0][ii1] +
366 if0 * jf1 *
367 h264_dec_list_imgUV[uv][jj1][ii0] +
368 if1 * jf1 *
369 h264_dec_list_imgUV[uv][jj1][ii1] +
370 f4 ) / f3;
371 }
372
373 } else {
374 fw_refframe = 0;
375 bw_refframe = 0;
376
377 fw_ref_idx = fw_refframe;
378 bw_ref_idx = bw_refframe;
379
380 i1 = ( img->pix_c_x + ii + ioff ) * f1_x +
381 h264_dec_mv_array[jf][ifx][0];
382
383 if ( !curr_mb_field ) {
384 j1 = ( img->pix_c_y + jj + joff ) * f1_y +
385 h264_dec_mv_array[jf][ifx][1];
386 } else {
387 if ( mb_nr % 2 == 0 ) {
388 j1 = ( ( img->pix_c_y ) / 2 + jj + joff ) * f1_y +
389 h264_dec_mv_array[jf][ifx][1];
390 } else {
391 j1 = ( ( img->pix_c_y - img->mb_cr_size_y ) / 2
392 + jj + joff ) * f1_y
393 + h264_dec_mv_array[jf][ifx][1];
394 }
395 }
396
397 if ( active_sps_chroma_format_idc == 1 )
398 j1 += 0;
399
400 ii0 = ( ( ( 0 < ( ( i1 / f1_x > img->width_cr - 1 ) ?
401 img->width_cr - 1 : i1 / f1_x ) ) ?
402 ( ( i1 / f1_x > img->width_cr - 1 ) ?
403 img->width_cr - 1 : i1 / f1_x ) : 0 ) )
404 % 45;
405 jj0 = ( ( ( 0 < ( ( j1 / f1_y > max_y_cr ) ?
406 max_y_cr : j1 / f1_y ) ) ?
407 ( ( j1 / f1_y > max_y_cr ) ?
408 max_y_cr : j1 / f1_y ) : 0 ) ) % 45;
409 ii1 = ( ( ( 0 < ( ( ( i1 + f2_x ) /
410 f1_x > img->width_cr - 1 ) ?
411 img->width_cr - 1 :
412 ( i1 + f2_x ) / f1_x ) ) ?
413 ( ( ( i1 + f2_x ) / f1_x > img->width_cr - 1 ) ?
414 img->width_cr - 1 :
415 ( i1 + f2_x ) / f1_x ) : 0 ) ) % 45;
416 jj1 = ( ( ( 0 < ( ( ( j1 + f2_y ) / f1_y > max_y_cr ) ?
417 max_y_cr : ( j1 + f2_y ) / f1_y ) ) ?
418 ( ( ( j1 + f2_y ) / f1_y > max_y_cr ) ?
419 max_y_cr :
420 ( j1 + f2_y ) / f1_y ) : 0 ) ) % 45;
421
422 if1 = ( i1 & f2_x );
423 jf1 = ( j1 & f2_y );
424 if0 = f1_x - if1;
425 jf0 = f1_y - jf1;
426
427 fw_pred = ( if0 * jf0 * h264_dec_list_imgUV[uv][jj0][ii0] +
428 if1 * jf0 * h264_dec_list_imgUV[uv][jj0][ii1] +
429 if0 * jf1 * h264_dec_list_imgUV[uv][jj1][ii0] +
430 if1 * jf1 * h264_dec_list_imgUV[uv][jj1][ii1] +
431 f4 ) / f3;
432
433 i1 = ( img->pix_c_x + ii + ioff ) * f1_x +
434 h264_dec_mv_array[jf][ifx][0];
435
436 if ( !curr_mb_field ) {
437 j1 = ( img->pix_c_y + jj + joff ) * f1_y +
438 h264_dec_mv_array[jf][ifx][1];
439 } else {
440 if ( mb_nr % 2 == 0 ) {
441 j1 = ( ( img->pix_c_y ) / 2 + jj + joff ) * f1_y
442 + h264_dec_mv_array[jf][ifx][1];
443 } else {
444 j1 = ( ( img->pix_c_y - img->mb_cr_size_y ) / 2 + jj
445 + joff ) * f1_y
446 + h264_dec_mv_array[jf][ifx][1];
447 }
448 }
449
450 if ( active_sps_chroma_format_idc == 1 )
451 j1 += 0;
452
453 ii0 = ( ( ( 0 < ( ( i1 / f1_x > img->width_cr - 1 ) ?
454 img->width_cr - 1 : i1 / f1_x ) ) ?
455 ( ( i1 / f1_x > img->width_cr - 1 ) ?
456 img->width_cr - 1 : i1 / f1_x ) : 0 ) ) % 45;
457 jj0 = ( ( ( 0 < ( ( j1 / f1_y > max_y_cr ) ?
458 max_y_cr : j1 / f1_y ) ) ?
459 ( ( j1 / f1_y > max_y_cr ) ?
460 max_y_cr : j1 / f1_y ) : 0 ) ) % 45;
461 ii1 = ( ( ( 0 < ( ( ( i1 + f2_x ) /
462 f1_x > img->width_cr - 1 ) ?
463 img->width_cr - 1 :
464 ( i1 + f2_x ) / f1_x ) ) ?
465 ( ( ( i1 + f2_x ) / f1_x > img->width_cr - 1 ) ?
466 img->width_cr - 1 :
467 ( i1 + f2_x ) / f1_x ) : 0 ) ) % 45;
468 jj1 = ( ( ( 0 < ( ( ( j1 + f2_y ) / f1_y > max_y_cr ) ?
469 max_y_cr : ( j1 + f2_y ) / f1_y ) ) ?
470 ( ( ( j1 + f2_y ) / f1_y > max_y_cr ) ?
471 max_y_cr : ( j1 + f2_y ) / f1_y ) : 0 ) ) % 45;
472
473 if1 = ( i1 & f2_x );
474 jf1 = ( j1 & f2_y );
475 if0 = f1_x - if1;
476 jf0 = f1_y - jf1;
477
478 bw_pred = ( if0 * jf0 * h264_dec_list_imgUV[uv][jj0][ii0] +
479 if1 * jf0 * h264_dec_list_imgUV[uv][jj0][ii1] +
480 if0 * jf1 * h264_dec_list_imgUV[uv][jj1][ii0] +
481 if1 * jf1 * h264_dec_list_imgUV[uv][jj1][ii1] +
482 f4 ) / f3;
483 }
484
485 if ( img->apply_weights ) {
486 if ( ( ( active_pps_weighted_pred_flag &&
487 ( img->type == P_SLICE || img->type == SP_SLICE ) )
488 || ( active_pps_weighted_bipred_idc == 1 &&
489 ( img->type == B_SLICE ) ) )
490 && curr_mb_field ) {
491 fw_ref_idx >>= 1;
492 bw_ref_idx >>= 1;
493 }
494
495 if ( img->direct_spatial_mv_pred_flag
496 && direct_pdir == 1 ) {
497 img->mpr[ii + ioff][jj + joff] =
498 ( ( ( img->wp_round_chroma ) >>
499 img->chroma_log2_weight_denom ) < 0 ? 0 :
500 ( ( img->wp_round_chroma ) >>
501 img->chroma_log2_weight_denom ) ) + 0;
502 } else
503 if ( img->direct_spatial_mv_pred_flag
504 && direct_pdir == 0 ) {
505 img->mpr[ii + ioff][jj + joff] =
506 ( ( ( ( img->wp_round_chroma ) >>
507 img->chroma_log2_weight_denom ) ) < 0 ?
508 0 :
509 ( ( ( img->wp_round_chroma ) >>
510 img->chroma_log2_weight_denom ) ) ) ;
511 } else {
512
513 int alpha_fw = 0;
514 int alpha_bw = 0;
515
516 img->mpr[ii + ioff][jj + joff] =
517 ( ( ( alpha_fw * fw_pred + alpha_bw *
518 bw_pred +
519 ( 1 << img->chroma_log2_weight_denom ) ) >> (
520 img->chroma_log2_weight_denom + 1 ) ) < 0 ?
521 0 : ( ( alpha_fw * fw_pred + alpha_bw *
522 bw_pred +
523 ( 1 << img->chroma_log2_weight_denom ) ) >>
524 ( img->chroma_log2_weight_denom + 1 ) ) );
525 }
526 } else {
527 if ( img->direct_spatial_mv_pred_flag
528 && direct_pdir == 1 )
529 img->mpr[ii + ioff][jj + joff] = bw_pred;
530 else
531 if ( img->direct_spatial_mv_pred_flag
532 && direct_pdir == 0 )
533 img->mpr[ii + ioff][jj + joff] = fw_pred;
534 else {
535 img->mpr[ii + ioff][jj + joff] = ( fw_pred + bw_pred
536 +
537 1 ) / 2;
538 }
539 }
540 }
541 }
542 }
543 }
544
545 if ( !smb ) {
546 _Pragma( "loopbound min 4 max 4" )
547 for ( ii = 0; ii < 4; ii++ ) {
548 jj = 0;
549 _Pragma( "loopbound min 4 max 4" )
550 for ( ; jj < 4; jj++ ) {
551 if ( !residue_transform_flag ) {
552 h264_dec_dec_picture_imgUV[uv][( j4 + jj ) % 64]
553 [( i4 + ii ) % 54]
554 = h264_dec_img_m7[ii][jj];
555 }
556 }
557 }
558 }
559 }
560 }
561
562 if ( smb ) {
563 _Pragma( "loopbound min 2 max 2" )
564 for ( j = 4; j < 6; j++ ) {
565 joff = ( j - 4 ) * 4;
566 j4 = img->pix_c_y + joff;
567 _Pragma( "loopbound min 2 max 2" )
568 for ( i = 0; i < 2; i++ ) {
569 ioff = i * 4;
570 i4 = img->pix_c_x + ioff;
571
572 _Pragma( "loopbound min 4 max 4" )
573 for ( ii = 0; ii < 4; ii++ )
574 _Pragma( "loopbound min 4 max 4" )
575 for ( jj = 0; jj < 4; jj++ ) {
576 h264_dec_dec_picture_imgUV[uv][( j4 + jj ) % 64]
577 [( i4 + ii ) % 54]
578 = h264_dec_img_m7[ii][jj];
579 }
580 }
581 }
582 }
583 }
584 }
585}
586
587
588/*
589 Main functions
590*/
591
592void _Pragma( "entrypoint" ) h264_dec_main( void )
593{
594 h264_dec_decode_one_macroblock( &h264_dec_img );
595}
596
597
598int main( int argc, char** argv )
599{
600 SET_UP
601 for (jobsComplete=-1; jobsComplete<maxJobs; jobsComplete++){
602 START_LOOP
603 h264_dec_init();
604 h264_dec_main();
605 STOP_LOOP
606 }
607 WRITE_TO_FILE
608
609 return ( h264_dec_return() );
610}
diff --git a/baseline/source/h264_dec/h264_dec.h b/baseline/source/h264_dec/h264_dec.h
new file mode 100644
index 0000000..ad33a25
--- /dev/null
+++ b/baseline/source/h264_dec/h264_dec.h
@@ -0,0 +1,29 @@
1#ifndef __H264DEC_H
2#define __H264DEC_H
3
4typedef enum {
5 P_SLICE = 0,
6 B_SLICE,
7 I_SLICE,
8 SP_SLICE,
9 SI_SLICE
10} h264_dec_SliceType;
11
12// image parameters
13typedef struct h264_dec_img_par {
14 int direct_spatial_mv_pred_flag;
15 int type;
16 int width_cr;
17 int pix_c_y;
18 int pix_c_x;
19 unsigned short mpr[16][16];
20 unsigned int chroma_log2_weight_denom;
21 int wp_round_chroma;
22 unsigned int apply_weights;
23 int num_blk8x8_uv;
24 int mb_cr_size_x;
25 int mb_cr_size_y;
26
27} h264_dec_ImageParameters;
28
29#endif
diff --git a/baseline/source/h264_dec/h264_decinput.c b/baseline/source/h264_dec/h264_decinput.c
new file mode 100644
index 0000000..5055179
--- /dev/null
+++ b/baseline/source/h264_dec/h264_decinput.c
@@ -0,0 +1,801 @@
1signed char h264_dec_mv_array[65][65][2] = {
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}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
3 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
4 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
5 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
6 },
7 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
8 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
9 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
10 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
11 },
12 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
13 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
14 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
15 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
16 },
17 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
18 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
19 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
20 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
21 },
22 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
23 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
24 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
25 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
26 },
27 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
28 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
29 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
30 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
31 },
32 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
33 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
34 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
35 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
36 },
37 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
38 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
39 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
40 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
41 },
42 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
43 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
44 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
45 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
46 },
47 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
48 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
49 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
50 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
51 },
52 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
53 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
54 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
55 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
56 },
57 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
58 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
59 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
60 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
61 },
62 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
63 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
64 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
65 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
66 },
67 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
68 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
69 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
70 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
71 },
72 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
73 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
74 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
75 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
76 },
77 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
78 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
79 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
80 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
81 },
82 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
83 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
84 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
85 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
86 },
87 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
88 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
89 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
90 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
91 },
92 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
93 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
94 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
95 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
96 },
97 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
98 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
99 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
100 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
101 },
102 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
103 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
104 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
105 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
106 },
107 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
108 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
109 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
110 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
111 },
112 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
113 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
114 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
115 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
116 },
117 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
118 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
119 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
120 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
121 },
122 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
123 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
124 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
125 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
126 },
127 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
128 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
129 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
130 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
131 },
132 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
133 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
134 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
135 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
136 },
137 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
138 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
139 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
140 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
141 },
142 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
143 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
144 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
145 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
146 },
147 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
148 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
149 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
150 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
151 },
152 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
153 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
154 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
155 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
156 },
157 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
158 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
159 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
160 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
161 },
162 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
163 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
164 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
165 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
166 },
167 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
168 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
169 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
170 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
171 },
172 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
173 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
174 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
175 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
176 },
177 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
178 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
179 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
180 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
181 },
182 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
183 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
184 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
185 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
186 },
187 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
188 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
189 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
190 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
191 },
192 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
193 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
194 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
195 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
196 },
197 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
198 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
199 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
200 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
201 },
202 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
203 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
204 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
205 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
206 },
207 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
208 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
209 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
210 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
211 },
212 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
213 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
214 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
215 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
216 },
217 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
218 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
219 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
220 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
221 },
222 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
223 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
224 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
225 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
226 },
227 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
228 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
229 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
230 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
231 },
232 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
233 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
234 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
235 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
236 },
237 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
238 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
239 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
240 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
241 },
242 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
243 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
244 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
245 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
246 },
247 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
248 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
249 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
250 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
251 },
252 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
253 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
254 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
255 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
256 },
257 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
258 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
259 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
260 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
261 },
262 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
263 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
264 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
265 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
266 },
267 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
268 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
269 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
270 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
271 },
272 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
273 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
274 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
275 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
276 },
277 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
278 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
279 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
280 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
281 },
282 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
283 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
284 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
285 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
286 },
287 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
288 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
289 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
290 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
291 },
292 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
293 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
294 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
295 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
296 },
297 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
298 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
299 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
300 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
301 },
302 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
303 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
304 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
305 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
306 },
307 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
308 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
309 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
310 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
311 },
312 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
313 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
314 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
315 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
316 },
317 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
318 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
319 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
320 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
321 },
322 { {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
323 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
324 {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}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
325 {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
326 }
327};
328
329short h264_dec_list_imgUV[2][45][45] = {{
330 {
331 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124, 124, 124, 124,
332 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
333 124, 125, 126, 126, 126, 126, 126, 126, 126, 125, 123, 122, 122, 122, 122
334 },
335 {
336 122, 122, 122, 122, 122, 122, 123, 123, 124, 124, 124, 124, 124, 124, 124,
337 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 123, 122, 122,
338 121, 121, 120, 120, 120, 119, 119, 119, 119, 119, 119, 119, 120, 121, 121
339 },
340 {
341 121, 121, 121, 121, 121, 121, 120, 120, 120, 122, 122, 124, 124, 124, 123,
342 122, 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121, 121, 121, 121,
343 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
344 },
345 {
346 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122,
347 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
348 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 121, 121, 121, 121
349 },
350 {
351 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
352 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
353 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 121
354 },
355 {
356 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
357 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
358 122, 123, 123, 123, 123, 123, 123, 123, 124, 125, 125, 125, 125, 125, 125
359 },
360 {
361 125, 125, 125, 125, 125, 126, 126, 127, 127, 127, 128, 128, 128, 128, 127,
362 130, 135, 137, 139, 140, 140, 140, 140, 140, 140, 141, 142, 143, 143, 143,
363 143, 143, 143, 143, 142, 142, 142, 141, 141, 140, 140, 139, 138, 137, 137
364 },
365 {
366 136, 136, 135, 135, 135, 134, 133, 133, 134, 134, 135, 135, 135, 135, 135,
367 135, 135, 135, 135, 135, 135, 134, 134, 134, 134, 134, 134, 134, 134, 134,
368 134, 134, 134, 134, 134, 134, 134, 123, 123, 123, 123, 123, 123, 123, 123
369 },
370 {
371 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
372 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
373 124, 124, 123, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 123, 123
374 },
375 {
376 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
377 124, 124, 124, 124, 123, 122, 122, 121, 121, 120, 120, 120, 119, 119, 119,
378 119, 119, 119, 119, 120, 121, 121, 121, 121, 121, 121, 121, 121, 120, 120
379 },
380 {
381 120, 122, 122, 124, 124, 124, 123, 122, 122, 122, 122, 122, 122, 122, 121,
382 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
383 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
384 },
385 {
386 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
387 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
388 122, 122, 122, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
389 },
390 {
391 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
392 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122,
393 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121, 121, 121, 121, 121
394 },
395 {
396 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122,
397 122, 122, 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123,
398 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 127
399 },
400 {
401 127, 127, 128, 128, 128, 128, 127, 130, 135, 137, 139, 140, 140, 140, 140,
402 140, 140, 141, 142, 143, 143, 143, 143, 143, 143, 143, 142, 142, 142, 141,
403 141, 140, 140, 139, 138, 137, 137, 136, 136, 135, 135, 135, 134, 133, 133
404 },
405 {
406 134, 134, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 134, 134,
407 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 123,
408 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124, 124, 124, 124, 124
409 },
410 {
411 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
412 124, 123, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
413 122, 122, 122, 122, 122, 123, 123, 124, 124, 124, 124, 124, 124, 124, 124
414 },
415 {
416 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 123, 122, 122, 121,
417 121, 120, 120, 120, 119, 119, 119, 119, 119, 119, 119, 120, 121, 121, 121,
418 121, 121, 121, 121, 121, 120, 120, 120, 122, 122, 124, 124, 124, 123, 122
419 },
420 {
421 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121, 121, 121, 121, 121,
422 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
423 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122
424 },
425 {
426 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
427 122, 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121, 121, 121, 121,
428 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
429 },
430 {
431 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
432 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121,
433 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122
434 },
435 {
436 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 123, 123, 123,
437 123, 123, 123, 123, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
438 125, 126, 126, 127, 127, 127, 128, 128, 128, 128, 127, 130, 135, 137, 139
439 },
440 {
441 140, 140, 140, 140, 140, 140, 141, 142, 143, 143, 143, 143, 143, 143, 143,
442 142, 142, 142, 141, 141, 140, 140, 139, 138, 137, 137, 136, 136, 135, 135,
443 135, 134, 133, 133, 134, 134, 135, 135, 135, 135, 135, 135, 135, 135, 135
444 },
445 {
446 135, 135, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
447 134, 134, 134, 124, 124, 124, 124, 124, 124, 124, 124, 125, 125, 125, 125,
448 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 124, 124, 124
449 },
450 {
451 124, 124, 124, 124, 123, 123, 122, 122, 122, 122, 122, 122, 122, 123, 123,
452 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
453 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124, 124, 124, 124, 124
454 },
455 {
456 123, 122, 122, 121, 121, 120, 120, 120, 119, 118, 118, 118, 118, 118, 118,
457 119, 120, 120, 120, 120, 120, 120, 120, 120, 120, 119, 119, 121, 121, 123,
458 123, 123, 122, 122, 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121
459 },
460 {
461 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
462 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122,
463 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 123, 123
464 },
465 {
466 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 122,
467 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
468 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
469 },
470 {
471 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122,
472 122, 122, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
473 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122
474 },
475 {
476 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 124, 125, 125, 125,
477 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 127, 127, 127, 128, 128,
478 128, 128, 128, 130, 134, 136, 138, 139, 139, 139, 139, 139, 139, 140, 142
479 },
480 {
481 143, 143, 143, 142, 142, 142, 142, 142, 142, 142, 141, 141, 140, 140, 139,
482 138, 137, 137, 136, 136, 135, 135, 135, 134, 133, 133, 134, 134, 135, 135,
483 135, 135, 135, 135, 135, 135, 135, 135, 135, 134, 134, 134, 134, 134, 134
484 },
485 {
486 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 124, 124, 124, 124, 124,
487 124, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
488 125, 125, 125, 125, 124, 124, 124, 124, 124, 124, 124, 124, 122, 122, 122
489 },
490 {
491 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
492 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 124,
493 124, 124, 124, 124, 124, 124, 124, 123, 122, 122, 121, 121, 120, 120, 119
494 },
495 {
496 118, 118, 118, 118, 118, 118, 118, 118, 119, 120, 120, 120, 120, 120, 120,
497 120, 119, 119, 119, 121, 121, 123, 123, 123, 122, 122, 122, 122, 122, 122,
498 122, 122, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
499 },
500 {
501 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
502 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
503 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123
504 },
505 {
506 123, 123, 123, 123, 123, 123, 122, 121, 121, 121, 121, 121, 121, 121, 121,
507 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
508 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
509 },
510 {
511 121, 122, 122, 122, 122, 122, 122, 122, 122, 121, 121, 121, 125, 124, 123,
512 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
513 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122
514 },
515 {
516 122, 122, 123, 123, 123, 123, 123, 123, 123, 124, 125, 125, 125, 125, 125,
517 125, 125, 125, 125, 125, 125, 126, 126, 127, 127, 127, 128, 128, 128, 129,
518 128, 131, 134, 136, 138, 139, 139, 139, 139, 139, 139, 140, 142, 143, 143
519 },
520 {
521 142, 141, 140, 140, 141, 142, 142, 142, 141, 141, 140, 140, 139, 138, 137,
522 137, 136, 136, 135, 135, 135, 134, 133, 133, 134, 134, 135, 135, 135, 135,
523 135, 135, 135, 135, 135, 135, 135, 134, 134, 134, 134, 134, 134, 134, 134
524 },
525 {
526 134, 134, 134, 134, 134, 134, 134, 134, 125, 125, 125, 125, 125, 125, 125,
527 125, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
528 126, 126, 125, 124, 124, 124, 124, 124, 124, 124, 123, 123, 123, 123, 123
529 },
530 {
531 123, 123, 123, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 123,
532 123, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 123, 124, 124, 124,
533 124, 124, 124, 124, 124, 123, 122, 122, 121, 121, 120, 120, 119, 118, 117
534 },
535 {
536 117, 117, 117, 117, 117, 118, 119, 119, 119, 119, 119, 119, 119, 119, 118,
537 118, 118, 120, 120, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
538 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
539 },
540 {
541 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
542 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
543 122, 122, 123, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124
544 },
545 {
546 124, 124, 124, 123, 122, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
547 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
548 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122
549 },
550 {
551 122, 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121, 121, 121, 121,
552 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122,
553 122, 122, 122, 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123
554 }
555 },
556 { {
557 123, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 126, 126,
558 127, 127, 127, 128, 128, 128, 129, 129, 131, 133, 135, 137, 138, 138, 138,
559 138, 138, 138, 139, 142, 143, 143, 142, 140, 139, 139, 140, 141, 142, 142
560 },
561 {
562 141, 141, 140, 140, 139, 138, 137, 137, 136, 136, 135, 135, 135, 134, 133,
563 133, 134, 134, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 134,
564 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134
565 },
566 {
567 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, 126, 126,
568 126, 126, 126, 126, 126, 126, 126, 126, 126, 125, 124, 124, 124, 124, 124,
569 124, 124, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124, 124
570 },
571 {
572 124, 124, 124, 124, 124, 124, 123, 123, 122, 122, 122, 122, 122, 122, 122,
573 122, 122, 122, 123, 124, 124, 124, 124, 124, 124, 124, 124, 123, 122, 122,
574 121, 121, 120, 120, 119, 118, 117, 117, 117, 117, 117, 117, 118, 119, 119
575 },
576 {
577 119, 119, 119, 119, 119, 119, 118, 118, 118, 120, 120, 122, 122, 122, 122,
578 122, 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121, 121, 121, 121,
579 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
580 },
581 {
582 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122,
583 122, 122, 122, 122, 122, 122, 122, 122, 122, 123, 124, 124, 124, 124, 124,
584 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 123, 122, 121, 121, 121
585 },
586 {
587 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
588 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
589 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 121
590 },
591 {
592 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
593 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
594 122, 123, 123, 123, 123, 123, 123, 123, 124, 125, 125, 125, 125, 125, 125
595 },
596 {
597 125, 125, 125, 125, 125, 126, 126, 127, 127, 127, 128, 128, 128, 129, 129,
598 131, 133, 135, 137, 138, 138, 138, 138, 138, 138, 139, 142, 143, 143, 142,
599 140, 139, 139, 140, 141, 142, 142, 141, 141, 140, 140, 139, 138, 137, 137
600 },
601 {
602 136, 136, 135, 135, 135, 134, 133, 133, 134, 134, 135, 135, 135, 135, 135,
603 135, 135, 135, 135, 135, 135, 134, 134, 134, 134, 134, 134, 134, 134, 134,
604 134, 134, 134, 134, 134, 134, 134, 125, 125, 125, 125, 125, 125, 125, 125
605 },
606 {
607 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
608 126, 125, 124, 124, 124, 124, 123, 123, 123, 123, 123, 123, 123, 123, 123,
609 123, 123, 124, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 123, 123
610 },
611 {
612 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124,
613 124, 124, 124, 124, 122, 121, 121, 120, 120, 119, 119, 118, 117, 116, 116,
614 117, 117, 117, 117, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119
615 },
616 {
617 119, 120, 120, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 121,
618 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122,
619 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
620 },
621 {
622 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
623 122, 123, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
624 124, 124, 124, 123, 122, 122, 121, 121, 121, 121, 121, 121, 121, 121, 121
625 },
626 {
627 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
628 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122,
629 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121, 121, 121, 121, 121
630 },
631 {
632 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122,
633 122, 122, 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123,
634 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 127
635 },
636 {
637 127, 127, 128, 128, 128, 129, 129, 131, 132, 134, 137, 138, 138, 138, 138,
638 138, 138, 139, 142, 142, 142, 141, 140, 139, 139, 140, 141, 141, 141, 141,
639 141, 140, 140, 139, 138, 137, 137, 136, 136, 135, 135, 135, 134, 133, 133
640 },
641 {
642 134, 134, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 134, 133,
643 133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 125,
644 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125
645 },
646 {
647 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 123, 123, 121, 121,
648 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 122, 122, 122, 122, 122,
649 122, 122, 123, 123, 123, 123, 123, 124, 124, 124, 124, 124, 124, 124, 124
650 },
651 {
652 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 123, 121, 119, 119, 118,
653 118, 117, 117, 116, 116, 115, 115, 116, 116, 117, 117, 118, 119, 119, 120,
654 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 122, 122
655 },
656 {
657 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 122, 122, 122, 123, 123,
658 123, 123, 123, 123, 123, 123, 123, 122, 121, 121, 121, 121, 121, 121, 121,
659 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
660 },
661 {
662 121, 121, 121, 121, 122, 122, 123, 123, 124, 125, 125, 125, 125, 125, 125,
663 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 124, 123, 123, 122, 122,
664 121, 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
665 },
666 {
667 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 121, 121, 121,
668 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
669 122, 122, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121
670 },
671 {
672 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 123,
673 124, 124, 124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125,
674 125, 126, 126, 127, 127, 127, 128, 128, 128, 128, 128, 128, 129, 129, 130
675 },
676 {
677 131, 133, 136, 137, 137, 138, 138, 139, 139, 140, 141, 141, 141, 140, 140,
678 139, 139, 139, 140, 140, 140, 140, 140, 140, 140, 139, 138, 137, 137, 136,
679 136, 135, 135, 135, 134, 134, 134, 134, 135, 135, 135, 135, 135, 135, 135
680 },
681 {
682 135, 135, 135, 135, 134, 133, 132, 132, 133, 133, 134, 134, 134, 134, 134,
683 134, 134, 134, 134, 134, 134, 125, 125, 125, 125, 125, 125, 125, 125, 125,
684 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125
685 },
686 {
687 125, 125, 125, 123, 122, 120, 120, 121, 122, 123, 123, 123, 123, 123, 123,
688 123, 122, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 123, 123, 124,
689 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124
690 },
691 {
692 124, 124, 123, 120, 118, 118, 117, 117, 116, 116, 115, 115, 114, 114, 115,
693 116, 117, 117, 118, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120,
694 120, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 121, 121
695 },
696 {
697 121, 121, 122, 122, 122, 123, 124, 124, 124, 124, 123, 123, 123, 123, 122,
698 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
699 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 123, 123
700 },
701 {
702 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
703 125, 125, 124, 123, 123, 122, 122, 121, 120, 120, 121, 121, 121, 121, 121,
704 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122
705 },
706 {
707 122, 122, 122, 122, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122,
708 122, 122, 122, 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121, 121,
709 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122
710 },
711 {
712 122, 122, 122, 122, 122, 122, 123, 124, 124, 124, 124, 124, 124, 124, 124,
713 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 127, 127, 127, 128, 128,
714 128, 128, 128, 128, 129, 129, 130, 130, 132, 135, 136, 137, 138, 138, 139
715 },
716 {
717 139, 139, 140, 140, 140, 139, 139, 138, 138, 138, 139, 139, 139, 139, 139,
718 139, 139, 139, 138, 137, 136, 136, 135, 135, 134, 134, 134, 134, 134, 134,
719 135, 135, 135, 135, 134, 134, 134, 134, 134, 134, 134, 133, 132, 131, 131
720 },
721 {
722 132, 132, 133, 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, 125, 125,
723 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
724 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 123, 122, 120, 120, 121
725 },
726 {
727 122, 123, 123, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121, 121, 121,
728 121, 122, 122, 122, 123, 123, 124, 124, 124, 124, 124, 124, 124, 124, 124,
729 124, 124, 124, 124, 124, 124, 124, 124, 124, 123, 120, 118, 117, 117, 116
730 },
731 {
732 116, 115, 115, 114, 114, 114, 115, 116, 117, 117, 118, 119, 120, 120, 120,
733 120, 121, 121, 121, 120, 120, 120, 120, 121, 121, 121, 121, 122, 122, 122,
734 122, 122, 122, 122, 122, 121, 121, 121, 121, 122, 122, 122, 123, 124, 124
735 },
736 {
737 124, 124, 123, 123, 123, 123, 122, 121, 121, 121, 121, 121, 121, 121, 121,
738 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
739 121, 121, 121, 122, 122, 123, 123, 124, 125, 125, 125, 125, 125, 125, 125
740 },
741 {
742 125, 125, 125, 125, 125, 125, 125, 125, 125, 124, 123, 123, 122, 122, 121,
743 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
744 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 121, 121, 121, 121
745 },
746 {
747 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
748 122, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
749 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 123, 124
750 },
751 {
752 124, 124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125,
753 126, 126, 127, 127, 127, 128, 128, 128, 128, 128, 128, 129, 129, 130, 130,
754 132, 135, 136, 136, 137, 138, 139, 139, 139, 140, 140, 140, 139, 139, 138
755 },
756 {
757 138, 138, 139, 139, 139, 139, 139, 139, 139, 138, 137, 136, 135, 135, 134,
758 134, 133, 133, 133, 133, 134, 134, 134, 134, 134, 134, 133, 133, 133, 133,
759 133, 133, 133, 133, 132, 131, 131, 132, 132, 133, 132, 132, 133, 133, 133
760 },
761 {
762 133, 133, 133, 133, 133, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
763 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
764 124, 124, 123, 121, 120, 120, 121, 122, 122, 122, 122, 122, 122, 122, 122
765 },
766 {
767 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 123, 123, 124, 124,
768 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 123, 123,
769 123, 122, 118, 116, 116, 115, 115, 114, 114, 114, 114, 114, 115, 116, 117
770 },
771 {
772 117, 117, 118, 120, 121, 121, 121, 121, 121, 121, 121, 121, 120, 120, 120,
773 121, 121, 121, 122, 122, 121, 121, 121, 122, 122, 122, 122, 121, 121, 121,
774 121, 122, 122, 122, 123, 124, 124, 124, 124, 123, 123, 123, 123, 122, 121
775 },
776 {
777 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122,
778 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 123, 123, 124, 124, 124,
779 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125
780 }
781 }
782};
783
784int h264_dec_img_m7[16][16] = {
785 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
786 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
787 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
788 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
789 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
790 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
791 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
792 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
793 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
794 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
795 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
796 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
797 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
798 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
799 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
800 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
801};