Mercurial > cgi-bin > hgwebdir.cgi > PR > Applications > VSs > VSs__H264__App
changeset 9:ea1ba68cf0ed
update to match api changes + add sscc produced source
| author | Nina Engelhardt <nengel@mailbox.tu-berlin.de> |
|---|---|
| date | Wed, 05 Jun 2013 14:43:26 +0200 |
| parents | 6c1433f5a562 |
| children | 4d1f82230449 |
| files | libavcodec/h264_ompss.c libavcodec/sscc_h264_ompss.c |
| diffstat | 2 files changed, 8716 insertions(+), 75 deletions(-) [+] |
line diff
1.1 --- a/libavcodec/h264_ompss.c Fri May 17 17:50:05 2013 +0200 1.2 +++ b/libavcodec/h264_ompss.c Wed Jun 05 14:43:26 2013 +0200 1.3 @@ -36,8 +36,8 @@ 1.4 H264Context *h; 1.5 } parse_taskArgs; 1.6 1.7 -int32 parse_taskArgTypes[4] = {INOUT, INOUT, OUTPUT, NONCTLD}; 1.8 -int32 parse_taskArgSizes[4] = {sizeof(ParserContext), sizeof(NalContext), sizeof(SliceBufferEntry), sizeof(H264Context)}; 1.9 +int32 parse_taskArgTypes[3] = {INOUT, INOUT, OUTPUT}; 1.10 +size_t parse_taskArgSizes[3] = {sizeof(ParserContext), sizeof(NalContext), sizeof(SliceBufferEntry)}; 1.11 1.12 //#pragma omp task inout(*pc, *nc) output(*sbe) 1.13 static void parse_task(void *_data){ 1.14 @@ -63,11 +63,10 @@ 1.15 1.16 VSsTaskType parse_taskType = { 1.17 .fn = &parse_task, 1.18 - .numCtldArgs = 3, 1.19 - .numTotalArgs = 4, 1.20 + .numDeps = 3, 1.21 .sizeOfArgs = sizeof(parse_taskArgs), 1.22 - .argTypes = parse_taskArgTypes, 1.23 - .argSizes = parse_taskArgSizes}; 1.24 + .depsTypes = parse_taskArgTypes, 1.25 + .depsSizes = parse_taskArgSizes}; 1.26 1.27 1.28 typedef struct{ 1.29 @@ -76,8 +75,8 @@ 1.30 H264Context *h; 1.31 } decode_slice_entropy_taskArgs; 1.32 1.33 -int32 decode_slice_entropy_taskArgTypes[3] = {INOUT, INOUT, NONCTLD}; 1.34 -int32 decode_slice_entropy_taskArgSizes[3] = {sizeof(EntropyContext), sizeof(SliceBufferEntry), sizeof(H264Context)}; 1.35 +int32 decode_slice_entropy_taskArgTypes[2] = {INOUT, INOUT}; 1.36 +size_t decode_slice_entropy_taskArgSizes[2] = {sizeof(EntropyContext), sizeof(SliceBufferEntry)}; 1.37 1.38 //#pragma omp task inout(*ec) inout(*sbe) 1.39 static void decode_slice_entropy_task(void *_data){ 1.40 @@ -133,11 +132,10 @@ 1.41 1.42 VSsTaskType decode_slice_entropy_taskType = { 1.43 .fn = &decode_slice_entropy_task, 1.44 - .numCtldArgs = 2, 1.45 - .numTotalArgs = 3, 1.46 + .numDeps = 2, 1.47 .sizeOfArgs = sizeof(decode_slice_entropy_taskArgs), 1.48 - .argTypes = decode_slice_entropy_taskArgTypes, 1.49 - .argSizes = decode_slice_entropy_taskArgSizes}; 1.50 + .depsTypes = decode_slice_entropy_taskArgTypes, 1.51 + .depsSizes = decode_slice_entropy_taskArgSizes}; 1.52 1.53 1.54 static void decode_super_mb_block(MBRecContext *d, H264Slice *s, SuperMBContext *smbc, H264Mb *mbs, int smb_x, int smb_y){ 1.55 @@ -163,8 +161,8 @@ 1.56 SuperMBContext *smbc; 1.57 } decode_super_mb_taskArgs; 1.58 1.59 -int32 decode_super_mb_taskArgTypes[6] = {IN, IN, IN, IN, INOUT, NONCTLD}; 1.60 -int32 decode_super_mb_taskArgSizes[6] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBContext)}; 1.61 +int32 decode_super_mb_taskArgTypes[5] = {IN, IN, IN, IN, INOUT}; 1.62 +size_t decode_super_mb_taskArgSizes[5] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask)}; 1.63 1.64 //#pragma omp task input(*d, *sbe, *ml, *mur) inout(*m) 1.65 static void decode_super_mb_task(void *_data){ 1.66 @@ -183,11 +181,10 @@ 1.67 1.68 VSsTaskType decode_super_mb_taskType = { 1.69 .fn = &decode_super_mb_task, 1.70 - .numCtldArgs = 5, 1.71 - .numTotalArgs = 6, 1.72 + .numDeps = 5, 1.73 .sizeOfArgs = sizeof(decode_super_mb_taskArgs), 1.74 - .argTypes = decode_super_mb_taskArgTypes, 1.75 - .argSizes = decode_super_mb_taskArgSizes}; 1.76 + .depsTypes = decode_super_mb_taskArgTypes, 1.77 + .depsSizes = decode_super_mb_taskArgSizes}; 1.78 1.79 1.80 1.81 @@ -199,8 +196,8 @@ 1.82 int* line; 1.83 } draw_edges_taskArgs; 1.84 1.85 -int32 draw_edges_taskArgTypes[5] = {IN, IN, INOUT, NONCTLD, NONCTLD}; 1.86 -int32 draw_edges_taskArgSizes[5] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask),sizeof(SuperMBContext),sizeof(int)}; 1.87 +int32 draw_edges_taskArgTypes[3] = {IN, IN, INOUT}; 1.88 +size_t draw_edges_taskArgSizes[3] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask)}; 1.89 1.90 //#pragma omp task input(*d, *sbe) inout(*sm) 1.91 static void draw_edges_task(void *_data){ 1.92 @@ -218,11 +215,10 @@ 1.93 } 1.94 VSsTaskType draw_edges_taskType = { 1.95 .fn = &draw_edges_task, 1.96 - .numCtldArgs = 3, 1.97 - .numTotalArgs = 5, 1.98 + .numDeps = 3, 1.99 .sizeOfArgs = sizeof(draw_edges_taskArgs), 1.100 - .argTypes = draw_edges_taskArgTypes, 1.101 - .argSizes = draw_edges_taskArgSizes}; 1.102 + .depsTypes = draw_edges_taskArgTypes, 1.103 + .depsSizes = draw_edges_taskArgSizes}; 1.104 1.105 1.106 static void decode_mb_in_slice(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe){ 1.107 @@ -245,7 +241,14 @@ 1.108 decode_super_mb_task_args.ml = sml; 1.109 decode_super_mb_task_args.mur = smur; 1.110 decode_super_mb_task_args.m = sm; 1.111 - VSs__submit_task(&decode_super_mb_taskType, &decode_super_mb_task_args); 1.112 + void** depsAddrs = malloc(decode_super_mb_taskType.numDeps * sizeof(void*)); 1.113 + /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask)*/ 1.114 + depsAddrs[0] = d; 1.115 + depsAddrs[1] = sbe; 1.116 + depsAddrs[2] = sml; 1.117 + depsAddrs[3] = smur; 1.118 + depsAddrs[4] = sm; 1.119 + VSs__submit_task(&decode_super_mb_taskType, &decode_super_mb_task_args, depsAddrs); 1.120 } 1.121 draw_edges_taskArgs draw_edges_task_args; 1.122 draw_edges_task_args.d = d; 1.123 @@ -254,7 +257,12 @@ 1.124 draw_edges_task_args.smbc = smbc; 1.125 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); 1.126 *(draw_edges_task_args.line) = j; 1.127 - VSs__submit_task(&draw_edges_taskType, &draw_edges_task_args); 1.128 + void** depsAddrs = malloc(sizeof (void*) * draw_edges_taskType.numDeps); 1.129 + /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask)*/ 1.130 + depsAddrs[0] = d; 1.131 + depsAddrs[1] = sbe; 1.132 + depsAddrs[2] = sm; 1.133 + VSs__submit_task(&draw_edges_taskType, &draw_edges_task_args, depsAddrs); 1.134 } 1.135 VSs__taskwait_on(sm); 1.136 //#pragma omp taskwait on(*sm) 1.137 @@ -268,8 +276,8 @@ 1.138 H264Context *h; 1.139 } decode_slice_mb_taskArgs; 1.140 1.141 -int32 decode_slice_mb_taskArgTypes[3] = {INOUT, INOUT, NONCTLD}; 1.142 -int32 decode_slice_mb_taskArgSizes[3] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(H264Context)}; 1.143 +int32 decode_slice_mb_taskArgTypes[2] = {INOUT, INOUT}; 1.144 +size_t decode_slice_mb_taskArgSizes[2] = {sizeof(MBRecContext), sizeof(SliceBufferEntry)}; 1.145 1.146 //#pragma omp task inout(*d) inout(*sbe) 1.147 static void decode_slice_mb_task(void *_data){ 1.148 @@ -320,11 +328,10 @@ 1.149 1.150 VSsTaskType decode_slice_mb_taskType = { 1.151 .fn = &decode_slice_mb_task, 1.152 - .numCtldArgs = 2, 1.153 - .numTotalArgs = 3, 1.154 + .numDeps = 2, 1.155 .sizeOfArgs = sizeof(decode_slice_mb_taskArgs), 1.156 - .argTypes = decode_slice_mb_taskArgTypes, 1.157 - .argSizes = decode_slice_mb_taskArgSizes}; 1.158 + .depsTypes = decode_slice_mb_taskArgTypes, 1.159 + .depsSizes = decode_slice_mb_taskArgSizes}; 1.160 1.161 // for static 3d wave 1.162 /*-------------------------------------------------------------------------------*/ 1.163 @@ -338,9 +345,9 @@ 1.164 SuperMBContext *smbc; 1.165 } decode_3dwave_super_mb_taskArgs; 1.166 1.167 -int32 decode_3dwave_super_mb_taskArgTypes[7] = {IN, IN, IN, IN, IN, INOUT, NONCTLD}; 1.168 -int32 decode_3dwave_super_mb_taskArgSizes[7] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), 1.169 - sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBContext)}; 1.170 +int32 decode_3dwave_super_mb_taskArgTypes[6] = {IN, IN, IN, IN, IN, INOUT}; 1.171 +size_t decode_3dwave_super_mb_taskArgSizes[6] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), 1.172 + sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask)}; 1.173 1.174 //#pragma omp task input(*d, *sbe, *ml, *mur, *mprev) inout(*m) 1.175 static void decode_3dwave_super_mb_task(void *_data){ 1.176 @@ -362,11 +369,10 @@ 1.177 1.178 VSsTaskType decode_3dwave_super_mb_taskType = { 1.179 .fn = &decode_3dwave_super_mb_task, 1.180 - .numCtldArgs = 6, 1.181 - .numTotalArgs = 7, 1.182 + .numDeps = 6, 1.183 .sizeOfArgs = sizeof(decode_3dwave_super_mb_taskArgs), 1.184 - .argTypes = decode_3dwave_super_mb_taskArgTypes, 1.185 - .argSizes = decode_3dwave_super_mb_taskArgSizes}; 1.186 + .depsTypes = decode_3dwave_super_mb_taskArgTypes, 1.187 + .depsSizes = decode_3dwave_super_mb_taskArgSizes}; 1.188 1.189 // int init_ref_count=0; 1.190 typedef struct{ 1.191 @@ -376,8 +382,8 @@ 1.192 H264Context *h; 1.193 } init_ref_list_and_get_dpb_taskArgs; 1.194 1.195 -int32 init_ref_list_and_get_dpb_taskArgTypes[4] = {INOUT, INOUT, INOUT, NONCTLD}; 1.196 -int32 init_ref_list_and_get_dpb_taskArgSizes[4] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(int), sizeof(H264Context)}; 1.197 +int32 init_ref_list_and_get_dpb_taskArgTypes[3] = {INOUT, INOUT, INOUT}; 1.198 +size_t init_ref_list_and_get_dpb_taskArgSizes[3] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(int)}; 1.199 1.200 //#pragma omp task inout(*d, *sbe, *init) 1.201 static void init_ref_list_and_get_dpb_task(void *_data){ 1.202 @@ -412,11 +418,10 @@ 1.203 1.204 VSsTaskType init_ref_list_and_get_dpb_taskType = { 1.205 .fn = &init_ref_list_and_get_dpb_task, 1.206 - .numCtldArgs = 3, 1.207 - .numTotalArgs = 4, 1.208 + .numDeps = 3, 1.209 .sizeOfArgs = sizeof(init_ref_list_and_get_dpb_taskArgs), 1.210 - .argTypes = init_ref_list_and_get_dpb_taskArgTypes, 1.211 - .argSizes = init_ref_list_and_get_dpb_taskArgSizes}; 1.212 + .depsTypes = init_ref_list_and_get_dpb_taskArgTypes, 1.213 + .depsSizes = init_ref_list_and_get_dpb_taskArgSizes}; 1.214 1.215 static SuperMBTask* add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, int k){ 1.216 int i,j; 1.217 @@ -446,10 +451,18 @@ 1.218 decode_3dwave_super_mb_task_args.mprev = smprev; 1.219 decode_3dwave_super_mb_task_args.m = sm; 1.220 taskID = VSs__create_taskID_of_size(3 ); 1.221 + void** depsAddrs = malloc(sizeof(void*) * decode_3dwave_super_mb_taskType.numDeps); 1.222 + /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), 1.223 + sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask)*/ 1.224 + depsAddrs[0] = d; 1.225 + depsAddrs[1] = sbe; 1.226 + depsAddrs[2] = sml; 1.227 + depsAddrs[3] = smur; 1.228 + depsAddrs[4] = smprev; 1.229 taskID[1] = k; 1.230 taskID[2] = j; 1.231 taskID[3] = i; 1.232 - VSs__submit_task_with_ID(&decode_3dwave_super_mb_taskType, &decode_3dwave_super_mb_task_args, taskID); 1.233 + VSs__submit_task_with_ID(&decode_3dwave_super_mb_taskType, &decode_3dwave_super_mb_task_args, depsAddrs, taskID); 1.234 } 1.235 draw_edges_taskArgs draw_edges_task_args; 1.236 draw_edges_task_args.d = d; 1.237 @@ -458,11 +471,16 @@ 1.238 draw_edges_task_args.smbc = smbc; 1.239 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); 1.240 *(draw_edges_task_args.line) = j; 1.241 + void** depsAddrs = malloc(sizeof (void*) * draw_edges_taskType.numDeps); 1.242 + /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask)*/ 1.243 + depsAddrs[0] = d; 1.244 + depsAddrs[1] = sbe; 1.245 + depsAddrs[2] = sm; 1.246 taskID = VSs__create_taskID_of_size(3); 1.247 taskID[1] = k; 1.248 taskID[2] = j; 1.249 taskID[3] = i; 1.250 - VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, taskID); 1.251 + VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, depsAddrs, taskID); 1.252 } 1.253 1.254 for(; j< smb_height; j++){ 1.255 @@ -477,11 +495,18 @@ 1.256 decode_super_mb_task_args.ml = sml; 1.257 decode_super_mb_task_args.mur = smur; 1.258 decode_super_mb_task_args.m = sm; 1.259 + void** depsAddrs = malloc(sizeof(void*) * decode_super_mb_taskType.numDeps); 1.260 + /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask)*/ 1.261 + depsAddrs[0] = d; 1.262 + depsAddrs[1] = sbe; 1.263 + depsAddrs[2] = sml; 1.264 + depsAddrs[3] = smur; 1.265 + depsAddrs[4] = sm; 1.266 taskID = VSs__create_taskID_of_size(3 ); 1.267 taskID[1] = k; 1.268 taskID[2] = j; 1.269 taskID[3] = i; 1.270 - VSs__submit_task_with_ID(&decode_super_mb_taskType, &decode_super_mb_task_args, taskID); 1.271 + VSs__submit_task_with_ID(&decode_super_mb_taskType, &decode_super_mb_task_args, depsAddrs, taskID); 1.272 } 1.273 draw_edges_taskArgs draw_edges_task_args; 1.274 draw_edges_task_args.d = d; 1.275 @@ -490,11 +515,16 @@ 1.276 draw_edges_task_args.smbc = smbc; 1.277 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); 1.278 *(draw_edges_task_args.line) = j; 1.279 + void** depsAddrs = malloc(sizeof (void*) * draw_edges_taskType.numDeps); 1.280 + /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask)*/ 1.281 + depsAddrs[0] = d; 1.282 + depsAddrs[1] = sbe; 1.283 + depsAddrs[2] = sm; 1.284 taskID = VSs__create_taskID_of_size(3); 1.285 taskID[1] = k; 1.286 taskID[2] = j; 1.287 taskID[3] = i; 1.288 - VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, taskID); 1.289 + VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, depsAddrs, taskID); 1.290 } 1.291 return sm; 1.292 } 1.293 @@ -508,8 +538,8 @@ 1.294 SuperMBContext *smbc; 1.295 } release_ref_list_taskArgs; 1.296 1.297 -int32 release_ref_list_taskArgTypes[6] = {INOUT, INOUT, IN, INOUT, NONCTLD, NONCTLD}; 1.298 -int32 release_ref_list_taskArgSizes[6] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(int), sizeof(H264Context), sizeof(SuperMBContext)}; 1.299 +int32 release_ref_list_taskArgTypes[4] = {INOUT, INOUT, IN, INOUT}; 1.300 +size_t release_ref_list_taskArgSizes[4] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(int)}; 1.301 1.302 //#pragma omp task inout(*d, *sbe, *release) input (*lastsmb) 1.303 static void release_ref_list_task(void *_data){ 1.304 @@ -542,11 +572,10 @@ 1.305 1.306 VSsTaskType release_ref_list_taskType = { 1.307 .fn = &release_ref_list_task, 1.308 - .numCtldArgs = 4, 1.309 - .numTotalArgs = 6, 1.310 + .numDeps = 4, 1.311 .sizeOfArgs = sizeof(release_ref_list_taskArgs), 1.312 - .argTypes = release_ref_list_taskArgTypes, 1.313 - .argSizes = release_ref_list_taskArgSizes}; 1.314 + .depsTypes = release_ref_list_taskArgTypes, 1.315 + .depsSizes = release_ref_list_taskArgSizes}; 1.316 1.317 // static void decode_mb_static_3dwave(H264Context *h, int mb_height, int mb_width, MBRecContext *d, H264Slice *s, H264Mb *mbs, SuperMBTask *smbs, SuperMBTask *smbs_prev){ 1.318 // 1.319 @@ -560,8 +589,8 @@ 1.320 H264Context *h; 1.321 } output_taskArgs; 1.322 1.323 -int32 output_taskArgTypes[3] = {INOUT, IN, NONCTLD}; 1.324 -int32 output_taskArgSizes[3] = {sizeof(OutputContext), sizeof(SliceBufferEntry), sizeof(H264Context)}; 1.325 +int32 output_taskArgTypes[2] = {INOUT, IN}; 1.326 +size_t output_taskArgSizes[2] = {sizeof(OutputContext), sizeof(SliceBufferEntry)}; 1.327 1.328 //#pragma omp task inout (*oc) input(*sbe) 1.329 static void output_task(void *_data){ 1.330 @@ -584,11 +613,10 @@ 1.331 1.332 VSsTaskType output_taskType = { 1.333 .fn = &output_task, 1.334 - .numCtldArgs = 2, 1.335 - .numTotalArgs = 3, 1.336 + .numDeps = 2, 1.337 .sizeOfArgs = sizeof(output_taskArgs), 1.338 - .argTypes = output_taskArgTypes, 1.339 - .argSizes = output_taskArgSizes}; 1.340 + .depsTypes = output_taskArgTypes, 1.341 + .depsSizes = output_taskArgSizes}; 1.342 1.343 /* 1.344 * The following code is the main loop of the file converter 1.345 @@ -610,6 +638,7 @@ 1.346 int frames=0; 1.347 1.348 int32* taskID; 1.349 + void** depsAddrs; 1.350 1.351 #if HAVE_LIBSDL2 1.352 pthread_t sdl_thr; 1.353 @@ -645,19 +674,28 @@ 1.354 parse_task_args.pc = pc; 1.355 parse_task_args.nc = nc; 1.356 parse_task_args.sbe = &sbe[k%bufs]; 1.357 + depsAddrs = malloc(sizeof(void*) * parse_taskType.numDeps); 1.358 + /*sizeof(ParserContext), sizeof(NalContext), sizeof(SliceBufferEntry)*/ 1.359 + depsAddrs[0] = pc; 1.360 + depsAddrs[1] = nc; 1.361 + depsAddrs[2] = &sbe[k%bufs]; 1.362 taskID = VSs__create_taskID_of_size(2); 1.363 taskID[1] = 1; 1.364 taskID[2] = k; 1.365 - VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID); 1.366 + VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, depsAddrs, taskID); 1.367 1.368 decode_slice_entropy_taskArgs decode_slice_entropy_task_args; 1.369 decode_slice_entropy_task_args.h = h; 1.370 decode_slice_entropy_task_args.ec = ec[k%bufs]; 1.371 decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; 1.372 + depsAddrs = malloc(sizeof(void*) * decode_slice_entropy_taskType.numDeps); 1.373 + /*sizeof(EntropyContext), sizeof(SliceBufferEntry)*/ 1.374 + depsAddrs[0] = ec[k%bufs]; 1.375 + depsAddrs[1] = &sbe[k%bufs]; 1.376 taskID = VSs__create_taskID_of_size(2); 1.377 taskID[1] = 2; 1.378 taskID[2] = k; 1.379 - VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID); 1.380 + VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, depsAddrs, taskID); 1.381 //#pragma omp taskwait on(*pc) 1.382 VSs__taskwait_on(pc); 1.383 k++; 1.384 @@ -669,19 +707,28 @@ 1.385 parse_task_args.pc = pc; 1.386 parse_task_args.nc = nc; 1.387 parse_task_args.sbe = &sbe[k%bufs]; 1.388 + depsAddrs = malloc(sizeof(void*) * parse_taskType.numDeps); 1.389 + /*sizeof(ParserContext), sizeof(NalContext), sizeof(SliceBufferEntry)*/ 1.390 + depsAddrs[0] = pc; 1.391 + depsAddrs[1] = nc; 1.392 + depsAddrs[2] = &sbe[k%bufs]; 1.393 taskID = VSs__create_taskID_of_size(2); 1.394 taskID[1] = 3; 1.395 taskID[2] = k; 1.396 - VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID); 1.397 + VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, depsAddrs, taskID); 1.398 1.399 decode_slice_entropy_taskArgs decode_slice_entropy_task_args; 1.400 decode_slice_entropy_task_args.h = h; 1.401 decode_slice_entropy_task_args.ec = ec[k%bufs]; 1.402 decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; 1.403 + depsAddrs = malloc(sizeof(void*) * decode_slice_entropy_taskType.numDeps); 1.404 + /*sizeof(EntropyContext), sizeof(SliceBufferEntry)*/ 1.405 + depsAddrs[0] = ec[k%bufs]; 1.406 + depsAddrs[1] = &sbe[k%bufs]; 1.407 taskID = VSs__create_taskID_of_size(2); 1.408 taskID[1] = 4; 1.409 taskID[2] = k; 1.410 - VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID); 1.411 + VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, depsAddrs, taskID); 1.412 1.413 k++; 1.414 1.415 @@ -690,10 +737,15 @@ 1.416 init_ref_list_and_get_dpb_task_args.d = rc[k%2]; 1.417 init_ref_list_and_get_dpb_task_args.sbe = &sbe[k%bufs]; 1.418 init_ref_list_and_get_dpb_task_args.init = &init; 1.419 + depsAddrs = malloc(sizeof(void*) * init_ref_list_and_get_dpb_taskType.numDeps); 1.420 + /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(int)*/ 1.421 + depsAddrs[0] = rc[k%2]; 1.422 + depsAddrs[1] = &sbe[k%bufs]; 1.423 + depsAddrs[2] = &init; 1.424 taskID = VSs__create_taskID_of_size(2); 1.425 taskID[1] = 5; 1.426 taskID[2] = k; 1.427 - VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID); 1.428 + VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, depsAddrs, taskID); 1.429 1.430 smbc = acquire_smbc(h); 1.431 SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k); 1.432 @@ -704,19 +756,29 @@ 1.433 release_ref_list_task_args.sbe = &sbe[k%bufs]; 1.434 release_ref_list_task_args.lastsmb = lastsmb; 1.435 release_ref_list_task_args.release = &release; 1.436 + depsAddrs = malloc(sizeof(void*) * release_ref_list_taskType.numDeps); 1.437 + /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(int)*/ 1.438 + depsAddrs[0] = rc[k%2]; 1.439 + depsAddrs[1] = &sbe[k%bufs]; 1.440 + depsAddrs[2] = smbc; 1.441 + depsAddrs[3] = &release; 1.442 taskID = VSs__create_taskID_of_size(2); 1.443 taskID[1] = 6; 1.444 taskID[2] = k; 1.445 - VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID); 1.446 + VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, depsAddrs, taskID); 1.447 1.448 output_taskArgs output_task_args; 1.449 output_task_args.h = h; 1.450 output_task_args.oc = oc; 1.451 output_task_args.sbe = &sbe[k%bufs]; 1.452 + depsAddrs = malloc(sizeof(void*) * output_taskType.numDeps); 1.453 + /*sizeof(OutputContext), sizeof(SliceBufferEntry)*/ 1.454 + depsAddrs[0] = oc; 1.455 + depsAddrs[1] = &sbe[k%bufs]; 1.456 taskID = VSs__create_taskID_of_size(2); 1.457 taskID[1] = 7; 1.458 taskID[2] = k; 1.459 - VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID); 1.460 + VSs__submit_task_with_ID(&output_taskType, &output_task_args, depsAddrs, taskID); 1.461 //#pragma omp taskwait on(*pc) 1.462 VSs__taskwait_on(pc); 1.463 } 1.464 @@ -728,10 +790,15 @@ 1.465 init_ref_list_and_get_dpb_task_args.d = rc[k%2]; 1.466 init_ref_list_and_get_dpb_task_args.sbe = &sbe[k%bufs]; 1.467 init_ref_list_and_get_dpb_task_args.init = &init; 1.468 + depsAddrs = malloc(sizeof(void*) * init_ref_list_and_get_dpb_taskType.numDeps); 1.469 + /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(int)*/ 1.470 + depsAddrs[0] = rc[k%2]; 1.471 + depsAddrs[1] = &sbe[k%bufs]; 1.472 + depsAddrs[2] = &init; 1.473 taskID = VSs__create_taskID_of_size(2); 1.474 taskID[1] = 8; 1.475 taskID[2] = i; 1.476 - VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID); 1.477 + VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, depsAddrs, taskID); 1.478 smbc = acquire_smbc(h); 1.479 SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k); 1.480 release_ref_list_taskArgs release_ref_list_task_args; 1.481 @@ -741,19 +808,29 @@ 1.482 release_ref_list_task_args.sbe = &sbe[k%bufs]; 1.483 release_ref_list_task_args.lastsmb = lastsmb; 1.484 release_ref_list_task_args.release = &release; 1.485 + depsAddrs = malloc(sizeof(void*) * release_ref_list_taskType.numDeps); 1.486 + /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(int)*/ 1.487 + depsAddrs[0] = rc[k%2]; 1.488 + depsAddrs[1] = &sbe[k%bufs]; 1.489 + depsAddrs[2] = smbc; 1.490 + depsAddrs[3] = &release; 1.491 taskID = VSs__create_taskID_of_size(2); 1.492 taskID[1] = 9; 1.493 taskID[2] = k; 1.494 - VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID); 1.495 + VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, depsAddrs, taskID); 1.496 1.497 output_taskArgs output_task_args; 1.498 output_task_args.h = h; 1.499 output_task_args.oc = oc; 1.500 output_task_args.sbe = &sbe[k%bufs]; 1.501 + depsAddrs = malloc(sizeof(void*) * output_taskType.numDeps); 1.502 + /*sizeof(OutputContext), sizeof(SliceBufferEntry)*/ 1.503 + depsAddrs[0] = oc; 1.504 + depsAddrs[1] = &sbe[k%bufs]; 1.505 taskID = VSs__create_taskID_of_size(2); 1.506 taskID[1] = 10; 1.507 taskID[2] = k; 1.508 - VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID); 1.509 + VSs__submit_task_with_ID(&output_taskType, &output_task_args, depsAddrs, taskID); 1.510 } 1.511 1.512 } else { 1.513 @@ -766,7 +843,12 @@ 1.514 parse_task_args.pc = pc; 1.515 parse_task_args.nc = nc; 1.516 parse_task_args.sbe = &sbe[k%bufs]; 1.517 - VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID); 1.518 + depsAddrs = malloc(sizeof(void*) * parse_taskType.numDeps); 1.519 + /*sizeof(ParserContext), sizeof(NalContext), sizeof(SliceBufferEntry)*/ 1.520 + depsAddrs[0] = pc; 1.521 + depsAddrs[1] = nc; 1.522 + depsAddrs[2] = &sbe[k%bufs]; 1.523 + VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, depsAddrs, taskID); 1.524 1.525 taskID = VSs__create_taskID_of_size(1); 1.526 taskID[1] = frames*10+2; 1.527 @@ -774,7 +856,11 @@ 1.528 decode_slice_entropy_task_args.h = h; 1.529 decode_slice_entropy_task_args.ec = ec[k%bufs]; 1.530 decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; 1.531 - VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args,taskID); 1.532 + depsAddrs = malloc(sizeof(void*) * decode_slice_entropy_taskType.numDeps); 1.533 + /*sizeof(EntropyContext), sizeof(SliceBufferEntry)*/ 1.534 + depsAddrs[0] = ec[k%bufs]; 1.535 + depsAddrs[1] = &sbe[k%bufs]; 1.536 + VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, depsAddrs, taskID); 1.537 1.538 taskID = VSs__create_taskID_of_size(1); 1.539 taskID[1] = frames*10+3; 1.540 @@ -782,7 +868,11 @@ 1.541 decode_slice_mb_task_args.h = h; 1.542 decode_slice_mb_task_args.d = rc[0]; 1.543 decode_slice_mb_task_args.sbe = &sbe[k%bufs]; 1.544 - VSs__submit_task_with_ID(&decode_slice_mb_taskType, &decode_slice_mb_task_args,taskID); 1.545 + depsAddrs = malloc(sizeof(void*) * decode_slice_mb_taskType.numDeps); 1.546 + /*sizeof(MBRecContext), sizeof(SliceBufferEntry)*/ 1.547 + depsAddrs[0] = rc[0]; 1.548 + depsAddrs[1] = &sbe[k%bufs]; 1.549 + VSs__submit_task_with_ID(&decode_slice_mb_taskType, &decode_slice_mb_task_args, depsAddrs, taskID); 1.550 1.551 taskID = VSs__create_taskID_of_size(1); 1.552 taskID[1] = frames*10+4; 1.553 @@ -790,7 +880,11 @@ 1.554 output_task_args.h = h; 1.555 output_task_args.oc = oc; 1.556 output_task_args.sbe = &sbe[k%bufs]; 1.557 - VSs__submit_task_with_ID(&output_taskType, &output_task_args,taskID); 1.558 + depsAddrs = malloc(sizeof(void*) * output_taskType.numDeps); 1.559 + /*sizeof(OutputContext), sizeof(SliceBufferEntry)*/ 1.560 + depsAddrs[0] = oc; 1.561 + depsAddrs[1] = &sbe[k%bufs]; 1.562 + VSs__submit_task_with_ID(&output_taskType, &output_task_args, depsAddrs, taskID); 1.563 //#pragma omp taskwait on(*pc) 1.564 VSs__taskwait_on(pc); 1.565 k++;
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/libavcodec/sscc_h264_ompss.c Wed Jun 05 14:43:26 2013 +0200 2.3 @@ -0,0 +1,8547 @@ 2.4 +const char *__nanos_family __attribute__((weak)) = "master"; 2.5 +int __nanos_version __attribute__((weak)) = 5015; 2.6 +int __mcc_master __attribute__((weak)) = 5015; 2.7 +int __mcc_openmp __attribute__((weak)) = 5; 2.8 +int __mcc_trunk __attribute__((weak)) = 399; 2.9 +int __mcc_worksharing __attribute__((weak)) = 1000; 2.10 +typedef unsigned char __u_char; 2.11 +typedef unsigned short int __u_short; 2.12 +typedef unsigned int __u_int; 2.13 +typedef unsigned long int __u_long; 2.14 +typedef signed char __int8_t; 2.15 +typedef unsigned char __uint8_t; 2.16 +typedef signed short int __int16_t; 2.17 +typedef unsigned short int __uint16_t; 2.18 +typedef signed int __int32_t; 2.19 +typedef unsigned int __uint32_t; 2.20 +typedef signed long int __int64_t; 2.21 +typedef unsigned long int __uint64_t; 2.22 +typedef long int __quad_t; 2.23 +typedef unsigned long int __u_quad_t; 2.24 +typedef unsigned long int __dev_t; 2.25 +typedef unsigned int __uid_t; 2.26 +typedef unsigned int __gid_t; 2.27 +typedef unsigned long int __ino_t; 2.28 +typedef unsigned long int __ino64_t; 2.29 +typedef unsigned int __mode_t; 2.30 +typedef unsigned long int __nlink_t; 2.31 +typedef long int __off_t; 2.32 +typedef long int __off64_t; 2.33 +typedef int __pid_t; 2.34 +typedef struct 2.35 +{ 2.36 + int __val[2]; 2.37 +} __fsid_t; 2.38 +typedef long int __clock_t; 2.39 +typedef unsigned long int __rlim_t; 2.40 +typedef unsigned long int __rlim64_t; 2.41 +typedef unsigned int __id_t; 2.42 +typedef long int __time_t; 2.43 +typedef unsigned int __useconds_t; 2.44 +typedef long int __suseconds_t; 2.45 +typedef int __daddr_t; 2.46 +typedef long int __swblk_t; 2.47 +typedef int __key_t; 2.48 +typedef int __clockid_t; 2.49 +typedef void *__timer_t; 2.50 +typedef long int __blksize_t; 2.51 +typedef long int __blkcnt_t; 2.52 +typedef long int __blkcnt64_t; 2.53 +typedef unsigned long int __fsblkcnt_t; 2.54 +typedef unsigned long int __fsblkcnt64_t; 2.55 +typedef unsigned long int __fsfilcnt_t; 2.56 +typedef unsigned long int __fsfilcnt64_t; 2.57 +typedef long int __ssize_t; 2.58 +typedef __off64_t __loff_t; 2.59 +typedef __quad_t *__qaddr_t; 2.60 +typedef char *__caddr_t; 2.61 +typedef long int __intptr_t; 2.62 +typedef unsigned int __socklen_t; 2.63 +typedef __ssize_t ssize_t; 2.64 +typedef long unsigned int size_t; 2.65 +typedef __gid_t gid_t; 2.66 +typedef __uid_t uid_t; 2.67 +typedef __off_t off_t; 2.68 +typedef __useconds_t useconds_t; 2.69 +typedef __pid_t pid_t; 2.70 +typedef __intptr_t intptr_t; 2.71 +typedef __socklen_t socklen_t; 2.72 +extern int access(__const char *__name, int __type) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.73 +extern int faccessat(int __fd, __const char *__file, int __type, int __flag) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))) __attribute__((__warn_unused_result__)); 2.74 +extern __off_t lseek(int __fd, __off_t __offset, int __whence) __attribute__((__nothrow__, __leaf__)); 2.75 +extern int close(int __fd); 2.76 +extern ssize_t read(int __fd, void *__buf, size_t __nbytes) __attribute__((__warn_unused_result__)); 2.77 +extern ssize_t write(int __fd, __const void *__buf, size_t __n) __attribute__((__warn_unused_result__)); 2.78 +extern ssize_t pread(int __fd, void *__buf, size_t __nbytes, __off_t __offset) __attribute__((__warn_unused_result__)); 2.79 +extern ssize_t pwrite(int __fd, __const void *__buf, size_t __n, __off_t __offset) __attribute__((__warn_unused_result__)); 2.80 +extern int pipe(int __pipedes[2]) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.81 +extern unsigned int alarm(unsigned int __seconds) __attribute__((__nothrow__, __leaf__)); 2.82 +extern unsigned int sleep(unsigned int __seconds); 2.83 +extern __useconds_t ualarm(__useconds_t __value, __useconds_t __interval) __attribute__((__nothrow__, __leaf__)); 2.84 +extern int usleep(__useconds_t __useconds); 2.85 +extern int pause(void); 2.86 +extern int chown(__const char *__file, __uid_t __owner, __gid_t __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.87 +extern int fchown(int __fd, __uid_t __owner, __gid_t __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.88 +extern int lchown(__const char *__file, __uid_t __owner, __gid_t __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.89 +extern int fchownat(int __fd, __const char *__file, __uid_t __owner, __gid_t __group, int __flag) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))) __attribute__((__warn_unused_result__)); 2.90 +extern int chdir(__const char *__path) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.91 +extern int fchdir(int __fd) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.92 +extern char *getcwd(char *__buf, size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.93 +extern char *getwd(char *__buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__deprecated__)) __attribute__((__warn_unused_result__)); 2.94 +extern int dup(int __fd) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.95 +extern int dup2(int __fd, int __fd2) __attribute__((__nothrow__, __leaf__)); 2.96 +extern char **__environ; 2.97 +extern int execve(__const char *__path, char *__const __argv[], char *__const __envp[]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.98 +extern int fexecve(int __fd, char *__const __argv[], char *__const __envp[]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.99 +extern int execv(__const char *__path, char *__const __argv[]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.100 +extern int execle(__const char *__path, __const char *__arg, ...) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.101 +extern int execl(__const char *__path, __const char *__arg, ...) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.102 +extern int execvp(__const char *__file, char *__const __argv[]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.103 +extern int execlp(__const char *__file, __const char *__arg, ...) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.104 +extern int nice(int __inc) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.105 +extern void _exit(int __status) __attribute__((__noreturn__)); 2.106 +enum 2.107 +{ 2.108 + _PC_LINK_MAX, 2.109 + _PC_MAX_CANON, 2.110 + _PC_MAX_INPUT, 2.111 + _PC_NAME_MAX, 2.112 + _PC_PATH_MAX, 2.113 + _PC_PIPE_BUF, 2.114 + _PC_CHOWN_RESTRICTED, 2.115 + _PC_NO_TRUNC, 2.116 + _PC_VDISABLE, 2.117 + _PC_SYNC_IO, 2.118 + _PC_ASYNC_IO, 2.119 + _PC_PRIO_IO, 2.120 + _PC_SOCK_MAXBUF, 2.121 + _PC_FILESIZEBITS, 2.122 + _PC_REC_INCR_XFER_SIZE, 2.123 + _PC_REC_MAX_XFER_SIZE, 2.124 + _PC_REC_MIN_XFER_SIZE, 2.125 + _PC_REC_XFER_ALIGN, 2.126 + _PC_ALLOC_SIZE_MIN, 2.127 + _PC_SYMLINK_MAX, 2.128 + _PC_2_SYMLINKS 2.129 +}; 2.130 +enum 2.131 +{ 2.132 + _SC_ARG_MAX, 2.133 + _SC_CHILD_MAX, 2.134 + _SC_CLK_TCK, 2.135 + _SC_NGROUPS_MAX, 2.136 + _SC_OPEN_MAX, 2.137 + _SC_STREAM_MAX, 2.138 + _SC_TZNAME_MAX, 2.139 + _SC_JOB_CONTROL, 2.140 + _SC_SAVED_IDS, 2.141 + _SC_REALTIME_SIGNALS, 2.142 + _SC_PRIORITY_SCHEDULING, 2.143 + _SC_TIMERS, 2.144 + _SC_ASYNCHRONOUS_IO, 2.145 + _SC_PRIORITIZED_IO, 2.146 + _SC_SYNCHRONIZED_IO, 2.147 + _SC_FSYNC, 2.148 + _SC_MAPPED_FILES, 2.149 + _SC_MEMLOCK, 2.150 + _SC_MEMLOCK_RANGE, 2.151 + _SC_MEMORY_PROTECTION, 2.152 + _SC_MESSAGE_PASSING, 2.153 + _SC_SEMAPHORES, 2.154 + _SC_SHARED_MEMORY_OBJECTS, 2.155 + _SC_AIO_LISTIO_MAX, 2.156 + _SC_AIO_MAX, 2.157 + _SC_AIO_PRIO_DELTA_MAX, 2.158 + _SC_DELAYTIMER_MAX, 2.159 + _SC_MQ_OPEN_MAX, 2.160 + _SC_MQ_PRIO_MAX, 2.161 + _SC_VERSION, 2.162 + _SC_PAGESIZE, 2.163 + _SC_RTSIG_MAX, 2.164 + _SC_SEM_NSEMS_MAX, 2.165 + _SC_SEM_VALUE_MAX, 2.166 + _SC_SIGQUEUE_MAX, 2.167 + _SC_TIMER_MAX, 2.168 + _SC_BC_BASE_MAX, 2.169 + _SC_BC_DIM_MAX, 2.170 + _SC_BC_SCALE_MAX, 2.171 + _SC_BC_STRING_MAX, 2.172 + _SC_COLL_WEIGHTS_MAX, 2.173 + _SC_EQUIV_CLASS_MAX, 2.174 + _SC_EXPR_NEST_MAX, 2.175 + _SC_LINE_MAX, 2.176 + _SC_RE_DUP_MAX, 2.177 + _SC_CHARCLASS_NAME_MAX, 2.178 + _SC_2_VERSION, 2.179 + _SC_2_C_BIND, 2.180 + _SC_2_C_DEV, 2.181 + _SC_2_FORT_DEV, 2.182 + _SC_2_FORT_RUN, 2.183 + _SC_2_SW_DEV, 2.184 + _SC_2_LOCALEDEF, 2.185 + _SC_PII, 2.186 + _SC_PII_XTI, 2.187 + _SC_PII_SOCKET, 2.188 + _SC_PII_INTERNET, 2.189 + _SC_PII_OSI, 2.190 + _SC_POLL, 2.191 + _SC_SELECT, 2.192 + _SC_UIO_MAXIOV, 2.193 + _SC_IOV_MAX = _SC_UIO_MAXIOV, 2.194 + _SC_PII_INTERNET_STREAM, 2.195 + _SC_PII_INTERNET_DGRAM, 2.196 + _SC_PII_OSI_COTS, 2.197 + _SC_PII_OSI_CLTS, 2.198 + _SC_PII_OSI_M, 2.199 + _SC_T_IOV_MAX, 2.200 + _SC_THREADS, 2.201 + _SC_THREAD_SAFE_FUNCTIONS, 2.202 + _SC_GETGR_R_SIZE_MAX, 2.203 + _SC_GETPW_R_SIZE_MAX, 2.204 + _SC_LOGIN_NAME_MAX, 2.205 + _SC_TTY_NAME_MAX, 2.206 + _SC_THREAD_DESTRUCTOR_ITERATIONS, 2.207 + _SC_THREAD_KEYS_MAX, 2.208 + _SC_THREAD_STACK_MIN, 2.209 + _SC_THREAD_THREADS_MAX, 2.210 + _SC_THREAD_ATTR_STACKADDR, 2.211 + _SC_THREAD_ATTR_STACKSIZE, 2.212 + _SC_THREAD_PRIORITY_SCHEDULING, 2.213 + _SC_THREAD_PRIO_INHERIT, 2.214 + _SC_THREAD_PRIO_PROTECT, 2.215 + _SC_THREAD_PROCESS_SHARED, 2.216 + _SC_NPROCESSORS_CONF, 2.217 + _SC_NPROCESSORS_ONLN, 2.218 + _SC_PHYS_PAGES, 2.219 + _SC_AVPHYS_PAGES, 2.220 + _SC_ATEXIT_MAX, 2.221 + _SC_PASS_MAX, 2.222 + _SC_XOPEN_VERSION, 2.223 + _SC_XOPEN_XCU_VERSION, 2.224 + _SC_XOPEN_UNIX, 2.225 + _SC_XOPEN_CRYPT, 2.226 + _SC_XOPEN_ENH_I18N, 2.227 + _SC_XOPEN_SHM, 2.228 + _SC_2_CHAR_TERM, 2.229 + _SC_2_C_VERSION, 2.230 + _SC_2_UPE, 2.231 + _SC_XOPEN_XPG2, 2.232 + _SC_XOPEN_XPG3, 2.233 + _SC_XOPEN_XPG4, 2.234 + _SC_CHAR_BIT, 2.235 + _SC_CHAR_MAX, 2.236 + _SC_CHAR_MIN, 2.237 + _SC_INT_MAX, 2.238 + _SC_INT_MIN, 2.239 + _SC_LONG_BIT, 2.240 + _SC_WORD_BIT, 2.241 + _SC_MB_LEN_MAX, 2.242 + _SC_NZERO, 2.243 + _SC_SSIZE_MAX, 2.244 + _SC_SCHAR_MAX, 2.245 + _SC_SCHAR_MIN, 2.246 + _SC_SHRT_MAX, 2.247 + _SC_SHRT_MIN, 2.248 + _SC_UCHAR_MAX, 2.249 + _SC_UINT_MAX, 2.250 + _SC_ULONG_MAX, 2.251 + _SC_USHRT_MAX, 2.252 + _SC_NL_ARGMAX, 2.253 + _SC_NL_LANGMAX, 2.254 + _SC_NL_MSGMAX, 2.255 + _SC_NL_NMAX, 2.256 + _SC_NL_SETMAX, 2.257 + _SC_NL_TEXTMAX, 2.258 + _SC_XBS5_ILP32_OFF32, 2.259 + _SC_XBS5_ILP32_OFFBIG, 2.260 + _SC_XBS5_LP64_OFF64, 2.261 + _SC_XBS5_LPBIG_OFFBIG, 2.262 + _SC_XOPEN_LEGACY, 2.263 + _SC_XOPEN_REALTIME, 2.264 + _SC_XOPEN_REALTIME_THREADS, 2.265 + _SC_ADVISORY_INFO, 2.266 + _SC_BARRIERS, 2.267 + _SC_BASE, 2.268 + _SC_C_LANG_SUPPORT, 2.269 + _SC_C_LANG_SUPPORT_R, 2.270 + _SC_CLOCK_SELECTION, 2.271 + _SC_CPUTIME, 2.272 + _SC_THREAD_CPUTIME, 2.273 + _SC_DEVICE_IO, 2.274 + _SC_DEVICE_SPECIFIC, 2.275 + _SC_DEVICE_SPECIFIC_R, 2.276 + _SC_FD_MGMT, 2.277 + _SC_FIFO, 2.278 + _SC_PIPE, 2.279 + _SC_FILE_ATTRIBUTES, 2.280 + _SC_FILE_LOCKING, 2.281 + _SC_FILE_SYSTEM, 2.282 + _SC_MONOTONIC_CLOCK, 2.283 + _SC_MULTI_PROCESS, 2.284 + _SC_SINGLE_PROCESS, 2.285 + _SC_NETWORKING, 2.286 + _SC_READER_WRITER_LOCKS, 2.287 + _SC_SPIN_LOCKS, 2.288 + _SC_REGEXP, 2.289 + _SC_REGEX_VERSION, 2.290 + _SC_SHELL, 2.291 + _SC_SIGNALS, 2.292 + _SC_SPAWN, 2.293 + _SC_SPORADIC_SERVER, 2.294 + _SC_THREAD_SPORADIC_SERVER, 2.295 + _SC_SYSTEM_DATABASE, 2.296 + _SC_SYSTEM_DATABASE_R, 2.297 + _SC_TIMEOUTS, 2.298 + _SC_TYPED_MEMORY_OBJECTS, 2.299 + _SC_USER_GROUPS, 2.300 + _SC_USER_GROUPS_R, 2.301 + _SC_2_PBS, 2.302 + _SC_2_PBS_ACCOUNTING, 2.303 + _SC_2_PBS_LOCATE, 2.304 + _SC_2_PBS_MESSAGE, 2.305 + _SC_2_PBS_TRACK, 2.306 + _SC_SYMLOOP_MAX, 2.307 + _SC_STREAMS, 2.308 + _SC_2_PBS_CHECKPOINT, 2.309 + _SC_V6_ILP32_OFF32, 2.310 + _SC_V6_ILP32_OFFBIG, 2.311 + _SC_V6_LP64_OFF64, 2.312 + _SC_V6_LPBIG_OFFBIG, 2.313 + _SC_HOST_NAME_MAX, 2.314 + _SC_TRACE, 2.315 + _SC_TRACE_EVENT_FILTER, 2.316 + _SC_TRACE_INHERIT, 2.317 + _SC_TRACE_LOG, 2.318 + _SC_LEVEL1_ICACHE_SIZE, 2.319 + _SC_LEVEL1_ICACHE_ASSOC, 2.320 + _SC_LEVEL1_ICACHE_LINESIZE, 2.321 + _SC_LEVEL1_DCACHE_SIZE, 2.322 + _SC_LEVEL1_DCACHE_ASSOC, 2.323 + _SC_LEVEL1_DCACHE_LINESIZE, 2.324 + _SC_LEVEL2_CACHE_SIZE, 2.325 + _SC_LEVEL2_CACHE_ASSOC, 2.326 + _SC_LEVEL2_CACHE_LINESIZE, 2.327 + _SC_LEVEL3_CACHE_SIZE, 2.328 + _SC_LEVEL3_CACHE_ASSOC, 2.329 + _SC_LEVEL3_CACHE_LINESIZE, 2.330 + _SC_LEVEL4_CACHE_SIZE, 2.331 + _SC_LEVEL4_CACHE_ASSOC, 2.332 + _SC_LEVEL4_CACHE_LINESIZE, 2.333 + _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, 2.334 + _SC_RAW_SOCKETS, 2.335 + _SC_V7_ILP32_OFF32, 2.336 + _SC_V7_ILP32_OFFBIG, 2.337 + _SC_V7_LP64_OFF64, 2.338 + _SC_V7_LPBIG_OFFBIG, 2.339 + _SC_SS_REPL_MAX, 2.340 + _SC_TRACE_EVENT_NAME_MAX, 2.341 + _SC_TRACE_NAME_MAX, 2.342 + _SC_TRACE_SYS_MAX, 2.343 + _SC_TRACE_USER_EVENT_MAX, 2.344 + _SC_XOPEN_STREAMS, 2.345 + _SC_THREAD_ROBUST_PRIO_INHERIT, 2.346 + _SC_THREAD_ROBUST_PRIO_PROTECT 2.347 +}; 2.348 +enum 2.349 +{ 2.350 + _CS_PATH, 2.351 + _CS_V6_WIDTH_RESTRICTED_ENVS, 2.352 + _CS_GNU_LIBC_VERSION, 2.353 + _CS_GNU_LIBPTHREAD_VERSION, 2.354 + _CS_V5_WIDTH_RESTRICTED_ENVS, 2.355 + _CS_V7_WIDTH_RESTRICTED_ENVS, 2.356 + _CS_LFS_CFLAGS = 1000, 2.357 + _CS_LFS_LDFLAGS, 2.358 + _CS_LFS_LIBS, 2.359 + _CS_LFS_LINTFLAGS, 2.360 + _CS_LFS64_CFLAGS, 2.361 + _CS_LFS64_LDFLAGS, 2.362 + _CS_LFS64_LIBS, 2.363 + _CS_LFS64_LINTFLAGS, 2.364 + _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, 2.365 + _CS_XBS5_ILP32_OFF32_LDFLAGS, 2.366 + _CS_XBS5_ILP32_OFF32_LIBS, 2.367 + _CS_XBS5_ILP32_OFF32_LINTFLAGS, 2.368 + _CS_XBS5_ILP32_OFFBIG_CFLAGS, 2.369 + _CS_XBS5_ILP32_OFFBIG_LDFLAGS, 2.370 + _CS_XBS5_ILP32_OFFBIG_LIBS, 2.371 + _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, 2.372 + _CS_XBS5_LP64_OFF64_CFLAGS, 2.373 + _CS_XBS5_LP64_OFF64_LDFLAGS, 2.374 + _CS_XBS5_LP64_OFF64_LIBS, 2.375 + _CS_XBS5_LP64_OFF64_LINTFLAGS, 2.376 + _CS_XBS5_LPBIG_OFFBIG_CFLAGS, 2.377 + _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, 2.378 + _CS_XBS5_LPBIG_OFFBIG_LIBS, 2.379 + _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, 2.380 + _CS_POSIX_V6_ILP32_OFF32_CFLAGS, 2.381 + _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, 2.382 + _CS_POSIX_V6_ILP32_OFF32_LIBS, 2.383 + _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, 2.384 + _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, 2.385 + _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, 2.386 + _CS_POSIX_V6_ILP32_OFFBIG_LIBS, 2.387 + _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, 2.388 + _CS_POSIX_V6_LP64_OFF64_CFLAGS, 2.389 + _CS_POSIX_V6_LP64_OFF64_LDFLAGS, 2.390 + _CS_POSIX_V6_LP64_OFF64_LIBS, 2.391 + _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, 2.392 + _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, 2.393 + _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, 2.394 + _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, 2.395 + _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, 2.396 + _CS_POSIX_V7_ILP32_OFF32_CFLAGS, 2.397 + _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, 2.398 + _CS_POSIX_V7_ILP32_OFF32_LIBS, 2.399 + _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, 2.400 + _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, 2.401 + _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, 2.402 + _CS_POSIX_V7_ILP32_OFFBIG_LIBS, 2.403 + _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, 2.404 + _CS_POSIX_V7_LP64_OFF64_CFLAGS, 2.405 + _CS_POSIX_V7_LP64_OFF64_LDFLAGS, 2.406 + _CS_POSIX_V7_LP64_OFF64_LIBS, 2.407 + _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, 2.408 + _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, 2.409 + _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, 2.410 + _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, 2.411 + _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, 2.412 + _CS_V6_ENV, 2.413 + _CS_V7_ENV 2.414 +}; 2.415 +extern long int pathconf(__const char *__path, int __name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.416 +extern long int fpathconf(int __fd, int __name) __attribute__((__nothrow__, __leaf__)); 2.417 +extern long int sysconf(int __name) __attribute__((__nothrow__, __leaf__)); 2.418 +extern size_t confstr(int __name, char *__buf, size_t __len) __attribute__((__nothrow__, __leaf__)); 2.419 +extern __pid_t getpid(void) __attribute__((__nothrow__, __leaf__)); 2.420 +extern __pid_t getppid(void) __attribute__((__nothrow__, __leaf__)); 2.421 +extern __pid_t getpgrp(void) __attribute__((__nothrow__, __leaf__)); 2.422 +extern __pid_t __getpgid(__pid_t __pid) __attribute__((__nothrow__, __leaf__)); 2.423 +extern __pid_t getpgid(__pid_t __pid) __attribute__((__nothrow__, __leaf__)); 2.424 +extern int setpgid(__pid_t __pid, __pid_t __pgid) __attribute__((__nothrow__, __leaf__)); 2.425 +extern int setpgrp(void) __attribute__((__nothrow__, __leaf__)); 2.426 +extern __pid_t setsid(void) __attribute__((__nothrow__, __leaf__)); 2.427 +extern __pid_t getsid(__pid_t __pid) __attribute__((__nothrow__, __leaf__)); 2.428 +extern __uid_t getuid(void) __attribute__((__nothrow__, __leaf__)); 2.429 +extern __uid_t geteuid(void) __attribute__((__nothrow__, __leaf__)); 2.430 +extern __gid_t getgid(void) __attribute__((__nothrow__, __leaf__)); 2.431 +extern __gid_t getegid(void) __attribute__((__nothrow__, __leaf__)); 2.432 +extern int getgroups(int __size, __gid_t __list[]) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.433 +extern int setuid(__uid_t __uid) __attribute__((__nothrow__, __leaf__)); 2.434 +extern int setreuid(__uid_t __ruid, __uid_t __euid) __attribute__((__nothrow__, __leaf__)); 2.435 +extern int seteuid(__uid_t __uid) __attribute__((__nothrow__, __leaf__)); 2.436 +extern int setgid(__gid_t __gid) __attribute__((__nothrow__, __leaf__)); 2.437 +extern int setregid(__gid_t __rgid, __gid_t __egid) __attribute__((__nothrow__, __leaf__)); 2.438 +extern int setegid(__gid_t __gid) __attribute__((__nothrow__, __leaf__)); 2.439 +extern __pid_t fork(void) __attribute__((__nothrow__)); 2.440 +extern __pid_t vfork(void) __attribute__((__nothrow__, __leaf__)); 2.441 +extern char *ttyname(int __fd) __attribute__((__nothrow__, __leaf__)); 2.442 +extern int ttyname_r(int __fd, char *__buf, size_t __buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))) __attribute__((__warn_unused_result__)); 2.443 +extern int isatty(int __fd) __attribute__((__nothrow__, __leaf__)); 2.444 +extern int ttyslot(void) __attribute__((__nothrow__, __leaf__)); 2.445 +extern int link(__const char *__from, __const char *__to) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__)); 2.446 +extern int linkat(int __fromfd, __const char *__from, int __tofd, __const char *__to, int __flags) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 4))) __attribute__((__warn_unused_result__)); 2.447 +extern int symlink(__const char *__from, __const char *__to) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__)); 2.448 +extern ssize_t readlink(__const char *__restrict __path, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__)); 2.449 +extern int symlinkat(__const char *__from, int __tofd, __const char *__to) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3))) __attribute__((__warn_unused_result__)); 2.450 +extern ssize_t readlinkat(int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))) __attribute__((__warn_unused_result__)); 2.451 +extern int unlink(__const char *__name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.452 +extern int unlinkat(int __fd, __const char *__name, int __flag) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.453 +extern int rmdir(__const char *__path) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.454 +extern __pid_t tcgetpgrp(int __fd) __attribute__((__nothrow__, __leaf__)); 2.455 +extern int tcsetpgrp(int __fd, __pid_t __pgrp_id) __attribute__((__nothrow__, __leaf__)); 2.456 +extern char *getlogin(void); 2.457 +extern int getlogin_r(char *__name, size_t __name_len) __attribute__((__nonnull__(1))); 2.458 +extern int setlogin(__const char *__name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.459 +extern char *optarg; 2.460 +extern int optind; 2.461 +extern int opterr; 2.462 +extern int optopt; 2.463 +extern int getopt(int ___argc, char *const *___argv, const char *__shortopts) __attribute__((__nothrow__, __leaf__)); 2.464 +extern int gethostname(char *__name, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.465 +extern int sethostname(__const char *__name, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.466 +extern int sethostid(long int __id) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.467 +extern int getdomainname(char *__name, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.468 +extern int setdomainname(__const char *__name, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.469 +extern int vhangup(void) __attribute__((__nothrow__, __leaf__)); 2.470 +extern int revoke(__const char *__file) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.471 +extern int profil(unsigned short int *__sample_buffer, size_t __size, size_t __offset, unsigned int __scale) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.472 +extern int acct(__const char *__name) __attribute__((__nothrow__, __leaf__)); 2.473 +extern char *getusershell(void) __attribute__((__nothrow__, __leaf__)); 2.474 +extern void endusershell(void) __attribute__((__nothrow__, __leaf__)); 2.475 +extern void setusershell(void) __attribute__((__nothrow__, __leaf__)); 2.476 +extern int daemon(int __nochdir, int __noclose) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.477 +extern int chroot(__const char *__path) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.478 +extern char *getpass(__const char *__prompt) __attribute__((__nonnull__(1))); 2.479 +extern int fsync(int __fd); 2.480 +extern long int gethostid(void); 2.481 +extern void sync(void) __attribute__((__nothrow__, __leaf__)); 2.482 +extern int getpagesize(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.483 +extern int getdtablesize(void) __attribute__((__nothrow__, __leaf__)); 2.484 +extern int truncate(__const char *__file, __off_t __length) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.485 +extern int ftruncate(int __fd, __off_t __length) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.486 +extern int brk(void *__addr) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.487 +extern void *sbrk(intptr_t __delta) __attribute__((__nothrow__, __leaf__)); 2.488 +extern long int syscall(long int __sysno, ...) __attribute__((__nothrow__, __leaf__)); 2.489 +extern int lockf(int __fd, int __cmd, __off_t __len) __attribute__((__warn_unused_result__)); 2.490 +extern int fdatasync(int __fildes); 2.491 +extern char *ctermid(char *__s) __attribute__((__nothrow__, __leaf__)); 2.492 +extern ssize_t __read_chk(int __fd, void *__buf, size_t __nbytes, size_t __buflen) __attribute__((__warn_unused_result__)); 2.493 +extern ssize_t __read_alias(int __fd, void *__buf, size_t __nbytes) __asm__ ("""read") __attribute__((__warn_unused_result__)); 2.494 +extern ssize_t __read_chk_warn(int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("""__read_chk") __attribute__((__warn_unused_result__)) __attribute__((__warning__("read called with bigger length than size of ""the destination buffer"))); 2.495 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) ssize_t read(int __fd, void *__buf, size_t __nbytes) 2.496 +{ 2.497 + if (__builtin_object_size(__buf, 0) != (size_t) - 1) 2.498 + { 2.499 + if (!__builtin_constant_p(__nbytes)) 2.500 + return __read_chk(__fd, __buf, __nbytes, __builtin_object_size(__buf, 0)); 2.501 + if (__nbytes > __builtin_object_size(__buf, 0)) 2.502 + return __read_chk_warn(__fd, __buf, __nbytes, __builtin_object_size(__buf, 0)); 2.503 + } 2.504 + return __read_alias(__fd, __buf, __nbytes); 2.505 +} 2.506 +extern ssize_t __readlink_chk(__const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__)); 2.507 +extern ssize_t __readlink_alias(__const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("""readlink") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__)); 2.508 +extern ssize_t __readlink_chk_warn(__const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("""__readlink_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__)) __attribute__((__warning__("readlink called with bigger length ""than size of destination buffer"))); 2.509 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__)) ssize_t __attribute__((__nothrow__, __leaf__)) readlink(__const char *__restrict __path, char *__restrict __buf, size_t __len) 2.510 +{ 2.511 + if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1) 2.512 + { 2.513 + if (!__builtin_constant_p(__len)) 2.514 + return __readlink_chk(__path, __buf, __len, __builtin_object_size(__buf, 2 > 1)); 2.515 + if (__len > __builtin_object_size(__buf, 2 > 1)) 2.516 + return __readlink_chk_warn(__path, __buf, __len, __builtin_object_size(__buf, 2 > 1)); 2.517 + } 2.518 + return __readlink_alias(__path, __buf, __len); 2.519 +} 2.520 +extern ssize_t __readlinkat_chk(int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))) __attribute__((__warn_unused_result__)); 2.521 +extern ssize_t __readlinkat_alias(int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("""readlinkat") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))) __attribute__((__warn_unused_result__)); 2.522 +extern ssize_t __readlinkat_chk_warn(int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("""__readlinkat_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))) __attribute__((__warn_unused_result__)) __attribute__((__warning__("readlinkat called with bigger ""length than size of destination ""buffer"))); 2.523 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__nonnull__(2, 3))) __attribute__((__warn_unused_result__)) ssize_t __attribute__((__nothrow__, __leaf__)) readlinkat(int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) 2.524 +{ 2.525 + if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1) 2.526 + { 2.527 + if (!__builtin_constant_p(__len)) 2.528 + return __readlinkat_chk(__fd, __path, __buf, __len, __builtin_object_size(__buf, 2 > 1)); 2.529 + if (__len > __builtin_object_size(__buf, 2 > 1)) 2.530 + return __readlinkat_chk_warn(__fd, __path, __buf, __len, __builtin_object_size(__buf, 2 > 1)); 2.531 + } 2.532 + return __readlinkat_alias(__fd, __path, __buf, __len); 2.533 +} 2.534 +extern char *__getcwd_chk(char *__buf, size_t __size, size_t __buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.535 +extern char *__getcwd_alias(char *__buf, size_t __size) __asm__ ("""getcwd") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.536 +extern char *__getcwd_chk_warn(char *__buf, size_t __size, size_t __buflen) __asm__ ("""__getcwd_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)) __attribute__((__warning__("getcwd caller with bigger length than size of ""destination buffer"))); 2.537 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) char *__attribute__((__nothrow__, __leaf__)) getcwd(char *__buf, size_t __size) 2.538 +{ 2.539 + if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1) 2.540 + { 2.541 + if (!__builtin_constant_p(__size)) 2.542 + return __getcwd_chk(__buf, __size, __builtin_object_size(__buf, 2 > 1)); 2.543 + if (__size > __builtin_object_size(__buf, 2 > 1)) 2.544 + return __getcwd_chk_warn(__buf, __size, __builtin_object_size(__buf, 2 > 1)); 2.545 + } 2.546 + return __getcwd_alias(__buf, __size); 2.547 +} 2.548 +extern char *__getwd_chk(char *__buf, size_t buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.549 +extern char *__getwd_warn(char *__buf) __asm__ ("""getwd") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)) __attribute__((__warning__("please use getcwd instead, as getwd ""doesn't specify buffer size"))); 2.550 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__nonnull__(1))) __attribute__((__deprecated__)) __attribute__((__warn_unused_result__)) char *__attribute__((__nothrow__, __leaf__)) getwd(char *__buf) 2.551 +{ 2.552 + if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1) 2.553 + return __getwd_chk(__buf, __builtin_object_size(__buf, 2 > 1)); 2.554 + return __getwd_warn(__buf); 2.555 +} 2.556 +extern size_t __confstr_chk(int __name, char *__buf, size_t __len, size_t __buflen) __attribute__((__nothrow__, __leaf__)); 2.557 +extern size_t __confstr_alias(int __name, char *__buf, size_t __len) __asm__ ("""confstr") __attribute__((__nothrow__, __leaf__)); 2.558 +extern size_t __confstr_chk_warn(int __name, char *__buf, size_t __len, size_t __buflen) __asm__ ("""__confstr_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warning__("confstr called with bigger length than size of destination ""buffer"))); 2.559 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) size_t __attribute__((__nothrow__, __leaf__)) confstr(int __name, char *__buf, size_t __len) 2.560 +{ 2.561 + if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1) 2.562 + { 2.563 + if (!__builtin_constant_p(__len)) 2.564 + return __confstr_chk(__name, __buf, __len, __builtin_object_size(__buf, 2 > 1)); 2.565 + if (__builtin_object_size(__buf, 2 > 1) < __len) 2.566 + return __confstr_chk_warn(__name, __buf, __len, __builtin_object_size(__buf, 2 > 1)); 2.567 + } 2.568 + return __confstr_alias(__name, __buf, __len); 2.569 +} 2.570 +extern int __getgroups_chk(int __size, __gid_t __list[], size_t __listlen) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.571 +extern int __getgroups_alias(int __size, __gid_t __list[]) __asm__ ("""getgroups") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.572 +extern int __getgroups_chk_warn(int __size, __gid_t __list[], size_t __listlen) __asm__ ("""__getgroups_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)) __attribute__((__warning__("getgroups called with bigger group count than what ""can fit into destination buffer"))); 2.573 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) getgroups(int __size, __gid_t __list[]) 2.574 +{ 2.575 + if (__builtin_object_size(__list, 2 > 1) != (size_t) - 1) 2.576 + { 2.577 + if (!__builtin_constant_p(__size) || __size < 0) 2.578 + return __getgroups_chk(__size, __list, __builtin_object_size(__list, 2 > 1)); 2.579 + if (__size * sizeof(__gid_t) > __builtin_object_size(__list, 2 > 1)) 2.580 + return __getgroups_chk_warn(__size, __list, __builtin_object_size(__list, 2 > 1)); 2.581 + } 2.582 + return __getgroups_alias(__size, __list); 2.583 +} 2.584 +extern int __ttyname_r_chk(int __fd, char *__buf, size_t __buflen, size_t __nreal) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.585 +extern int __ttyname_r_alias(int __fd, char *__buf, size_t __buflen) __asm__ ("""ttyname_r") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.586 +extern int __ttyname_r_chk_warn(int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("""__ttyname_r_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))) __attribute__((__warning__("ttyname_r called with bigger buflen than ""size of destination buffer"))); 2.587 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) ttyname_r(int __fd, char *__buf, size_t __buflen) 2.588 +{ 2.589 + if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1) 2.590 + { 2.591 + if (!__builtin_constant_p(__buflen)) 2.592 + return __ttyname_r_chk(__fd, __buf, __buflen, __builtin_object_size(__buf, 2 > 1)); 2.593 + if (__buflen > __builtin_object_size(__buf, 2 > 1)) 2.594 + return __ttyname_r_chk_warn(__fd, __buf, __buflen, __builtin_object_size(__buf, 2 > 1)); 2.595 + } 2.596 + return __ttyname_r_alias(__fd, __buf, __buflen); 2.597 +} 2.598 +extern int __getlogin_r_chk(char *__buf, size_t __buflen, size_t __nreal) __attribute__((__nonnull__(1))); 2.599 +extern int __getlogin_r_alias(char *__buf, size_t __buflen) __asm__ ("""getlogin_r") __attribute__((__nonnull__(1))); 2.600 +extern int __getlogin_r_chk_warn(char *__buf, size_t __buflen, size_t __nreal) __asm__ ("""__getlogin_r_chk") __attribute__((__nonnull__(1))) __attribute__((__warning__("getlogin_r called with bigger buflen than ""size of destination buffer"))); 2.601 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int getlogin_r(char *__buf, size_t __buflen) 2.602 +{ 2.603 + if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1) 2.604 + { 2.605 + if (!__builtin_constant_p(__buflen)) 2.606 + return __getlogin_r_chk(__buf, __buflen, __builtin_object_size(__buf, 2 > 1)); 2.607 + if (__buflen > __builtin_object_size(__buf, 2 > 1)) 2.608 + return __getlogin_r_chk_warn(__buf, __buflen, __builtin_object_size(__buf, 2 > 1)); 2.609 + } 2.610 + return __getlogin_r_alias(__buf, __buflen); 2.611 +} 2.612 +extern int __gethostname_chk(char *__buf, size_t __buflen, size_t __nreal) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.613 +extern int __gethostname_alias(char *__buf, size_t __buflen) __asm__ ("""gethostname") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.614 +extern int __gethostname_chk_warn(char *__buf, size_t __buflen, size_t __nreal) __asm__ ("""__gethostname_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warning__("gethostname called with bigger buflen than ""size of destination buffer"))); 2.615 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) gethostname(char *__buf, size_t __buflen) 2.616 +{ 2.617 + if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1) 2.618 + { 2.619 + if (!__builtin_constant_p(__buflen)) 2.620 + return __gethostname_chk(__buf, __buflen, __builtin_object_size(__buf, 2 > 1)); 2.621 + if (__buflen > __builtin_object_size(__buf, 2 > 1)) 2.622 + return __gethostname_chk_warn(__buf, __buflen, __builtin_object_size(__buf, 2 > 1)); 2.623 + } 2.624 + return __gethostname_alias(__buf, __buflen); 2.625 +} 2.626 +extern int __getdomainname_chk(char *__buf, size_t __buflen, size_t __nreal) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.627 +extern int __getdomainname_alias(char *__buf, size_t __buflen) __asm__ ("""getdomainname") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.628 +extern int __getdomainname_chk_warn(char *__buf, size_t __buflen, size_t __nreal) __asm__ ("""__getdomainname_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)) __attribute__((__warning__("getdomainname called with bigger ""buflen than size of destination ""buffer"))); 2.629 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) getdomainname(char *__buf, size_t __buflen) 2.630 +{ 2.631 + if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1) 2.632 + { 2.633 + if (!__builtin_constant_p(__buflen)) 2.634 + return __getdomainname_chk(__buf, __buflen, __builtin_object_size(__buf, 2 > 1)); 2.635 + if (__buflen > __builtin_object_size(__buf, 2 > 1)) 2.636 + return __getdomainname_chk_warn(__buf, __buflen, __builtin_object_size(__buf, 2 > 1)); 2.637 + } 2.638 + return __getdomainname_alias(__buf, __buflen); 2.639 +} 2.640 +struct _IO_FILE; 2.641 +typedef struct _IO_FILE FILE; 2.642 +typedef struct _IO_FILE __FILE; 2.643 +typedef struct 2.644 +{ 2.645 + int __count; 2.646 + union 2.647 + { 2.648 + unsigned int __wch; 2.649 + char __wchb[4]; 2.650 + } __value; 2.651 +} __mbstate_t; 2.652 +typedef struct 2.653 +{ 2.654 + __off_t __pos; 2.655 + __mbstate_t __state; 2.656 +} _G_fpos_t; 2.657 +typedef struct 2.658 +{ 2.659 + __off64_t __pos; 2.660 + __mbstate_t __state; 2.661 +} _G_fpos64_t; 2.662 +typedef int _G_int16_t __attribute__((__mode__(__HI__))); 2.663 +typedef int _G_int32_t __attribute__((__mode__(__SI__))); 2.664 +typedef unsigned int _G_uint16_t __attribute__((__mode__(__HI__))); 2.665 +typedef unsigned int _G_uint32_t __attribute__((__mode__(__SI__))); 2.666 +typedef __builtin_va_list __gnuc_va_list; 2.667 +struct _IO_jump_t; 2.668 +struct _IO_FILE; 2.669 +typedef void _IO_lock_t; 2.670 +struct _IO_marker 2.671 +{ 2.672 + struct _IO_marker *_next; 2.673 + struct _IO_FILE *_sbuf; 2.674 + int _pos; 2.675 +}; 2.676 +enum __codecvt_result 2.677 +{ 2.678 + __codecvt_ok, 2.679 + __codecvt_partial, 2.680 + __codecvt_error, 2.681 + __codecvt_noconv 2.682 +}; 2.683 +struct _IO_FILE 2.684 +{ 2.685 + int _flags; 2.686 + char *_IO_read_ptr; 2.687 + char *_IO_read_end; 2.688 + char *_IO_read_base; 2.689 + char *_IO_write_base; 2.690 + char *_IO_write_ptr; 2.691 + char *_IO_write_end; 2.692 + char *_IO_buf_base; 2.693 + char *_IO_buf_end; 2.694 + char *_IO_save_base; 2.695 + char *_IO_backup_base; 2.696 + char *_IO_save_end; 2.697 + struct _IO_marker *_markers; 2.698 + struct _IO_FILE *_chain; 2.699 + int _fileno; 2.700 + int _flags2; 2.701 + __off_t _old_offset; 2.702 + unsigned short _cur_column; 2.703 + signed char _vtable_offset; 2.704 + char _shortbuf[1]; 2.705 + _IO_lock_t *_lock; 2.706 + __off64_t _offset; 2.707 + void *__pad1; 2.708 + void *__pad2; 2.709 + void *__pad3; 2.710 + void *__pad4; 2.711 + size_t __pad5; 2.712 + int _mode; 2.713 + char _unused2[15 * sizeof(int) - 4 * sizeof(void *) - sizeof(size_t)]; 2.714 +}; 2.715 +typedef struct _IO_FILE _IO_FILE; 2.716 +struct _IO_FILE_plus; 2.717 +extern struct _IO_FILE_plus _IO_2_1_stdin_; 2.718 +extern struct _IO_FILE_plus _IO_2_1_stdout_; 2.719 +extern struct _IO_FILE_plus _IO_2_1_stderr_; 2.720 +typedef __ssize_t __io_read_fn(void *__cookie, char *__buf, size_t __nbytes); 2.721 +typedef __ssize_t __io_write_fn(void *__cookie, __const char *__buf, size_t __n); 2.722 +typedef int __io_seek_fn(void *__cookie, __off64_t *__pos, int __w); 2.723 +typedef int __io_close_fn(void *__cookie); 2.724 +extern int __underflow(_IO_FILE *); 2.725 +extern int __uflow(_IO_FILE *); 2.726 +extern int __overflow(_IO_FILE *, int); 2.727 +extern int _IO_getc(_IO_FILE *__fp); 2.728 +extern int _IO_putc(int __c, _IO_FILE *__fp); 2.729 +extern int _IO_feof(_IO_FILE *__fp) __attribute__((__nothrow__, __leaf__)); 2.730 +extern int _IO_ferror(_IO_FILE *__fp) __attribute__((__nothrow__, __leaf__)); 2.731 +extern int _IO_peekc_locked(_IO_FILE *__fp); 2.732 +extern void _IO_flockfile(_IO_FILE *) __attribute__((__nothrow__, __leaf__)); 2.733 +extern void _IO_funlockfile(_IO_FILE *) __attribute__((__nothrow__, __leaf__)); 2.734 +extern int _IO_ftrylockfile(_IO_FILE *) __attribute__((__nothrow__, __leaf__)); 2.735 +extern int _IO_vfscanf(_IO_FILE *__restrict , const char *__restrict , __gnuc_va_list, int *__restrict ); 2.736 +extern int _IO_vfprintf(_IO_FILE *__restrict , const char *__restrict , __gnuc_va_list); 2.737 +extern __ssize_t _IO_padn(_IO_FILE *, int, __ssize_t); 2.738 +extern size_t _IO_sgetn(_IO_FILE *, void *, size_t); 2.739 +extern __off64_t _IO_seekoff(_IO_FILE *, __off64_t, int, int); 2.740 +extern __off64_t _IO_seekpos(_IO_FILE *, __off64_t, int); 2.741 +extern void _IO_free_backup_area(_IO_FILE *) __attribute__((__nothrow__, __leaf__)); 2.742 +typedef __gnuc_va_list va_list; 2.743 +typedef _G_fpos_t fpos_t; 2.744 +extern struct _IO_FILE *stdin; 2.745 +extern struct _IO_FILE *stdout; 2.746 +extern struct _IO_FILE *stderr; 2.747 +extern int remove(__const char *__filename) __attribute__((__nothrow__, __leaf__)); 2.748 +extern int rename(__const char *__old, __const char *__new) __attribute__((__nothrow__, __leaf__)); 2.749 +extern int renameat(int __oldfd, __const char *__old, int __newfd, __const char *__new) __attribute__((__nothrow__, __leaf__)); 2.750 +extern FILE *tmpfile(void) __attribute__((__warn_unused_result__)); 2.751 +extern char *tmpnam(char *__s) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.752 +extern char *tmpnam_r(char *__s) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.753 +extern char *tempnam(__const char *__dir, __const char *__pfx) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)); 2.754 +extern int fclose(FILE *__stream); 2.755 +extern int fflush(FILE *__stream); 2.756 +extern int fflush_unlocked(FILE *__stream); 2.757 +extern FILE *fopen(__const char *__restrict __filename, __const char *__restrict __modes) __attribute__((__warn_unused_result__)); 2.758 +extern FILE *freopen(__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __attribute__((__warn_unused_result__)); 2.759 +extern FILE *fdopen(int __fd, __const char *__modes) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.760 +extern FILE *fmemopen(void *__s, size_t __len, __const char *__modes) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.761 +extern FILE *open_memstream(char **__bufloc, size_t *__sizeloc) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.762 +extern void setbuf(FILE *__restrict __stream, char *__restrict __buf) __attribute__((__nothrow__, __leaf__)); 2.763 +extern int setvbuf(FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) __attribute__((__nothrow__, __leaf__)); 2.764 +extern void setbuffer(FILE *__restrict __stream, char *__restrict __buf, size_t __size) __attribute__((__nothrow__, __leaf__)); 2.765 +extern void setlinebuf(FILE *__stream) __attribute__((__nothrow__, __leaf__)); 2.766 +extern int fprintf(FILE *__restrict __stream, __const char *__restrict __format, ...); 2.767 +extern int printf(__const char *__restrict __format, ...); 2.768 +extern int sprintf(char *__restrict __s, __const char *__restrict __format, ...) __attribute__((__nothrow__)); 2.769 +extern int vfprintf(FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg); 2.770 +extern int vprintf(__const char *__restrict __format, __gnuc_va_list __arg); 2.771 +extern int vsprintf(char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__((__nothrow__)); 2.772 +extern int snprintf(char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...) __attribute__((__nothrow__)) __attribute__((__format__(__printf__, 3, 4))); 2.773 +extern int vsnprintf(char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__((__nothrow__)) __attribute__((__format__(__printf__, 3, 0))); 2.774 +extern int vdprintf(int __fd, __const char *__restrict __fmt, __gnuc_va_list __arg) __attribute__((__format__(__printf__, 2, 0))); 2.775 +extern int dprintf(int __fd, __const char *__restrict __fmt, ...) __attribute__((__format__(__printf__, 2, 3))); 2.776 +extern int fscanf(FILE *__restrict __stream, __const char *__restrict __format, ...) __attribute__((__warn_unused_result__)); 2.777 +extern int scanf(__const char *__restrict __format, ...) __attribute__((__warn_unused_result__)); 2.778 +extern int sscanf(__const char *__restrict __s, __const char *__restrict __format, ...) __attribute__((__nothrow__, __leaf__)); 2.779 +extern int fscanf(FILE *__restrict __stream, __const char *__restrict __format, ...) __asm__ ("""__isoc99_fscanf") __attribute__((__warn_unused_result__)); 2.780 +extern int scanf(__const char *__restrict __format, ...) __asm__ ("""__isoc99_scanf") __attribute__((__warn_unused_result__)); 2.781 +extern int sscanf(__const char *__restrict __s, __const char *__restrict __format, ...) __asm__ ("""__isoc99_sscanf") __attribute__((__nothrow__, __leaf__)); 2.782 +extern int vfscanf(FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__((__format__(__scanf__, 2, 0))) __attribute__((__warn_unused_result__)); 2.783 +extern int vscanf(__const char *__restrict __format, __gnuc_va_list __arg) __attribute__((__format__(__scanf__, 1, 0))) __attribute__((__warn_unused_result__)); 2.784 +extern int vsscanf(__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__((__nothrow__, __leaf__)) __attribute__((__format__(__scanf__, 2, 0))); 2.785 +extern int vfscanf(FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("""__isoc99_vfscanf") __attribute__((__format__(__scanf__, 2, 0))) __attribute__((__warn_unused_result__)); 2.786 +extern int vscanf(__const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("""__isoc99_vscanf") __attribute__((__format__(__scanf__, 1, 0))) __attribute__((__warn_unused_result__)); 2.787 +extern int vsscanf(__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("""__isoc99_vsscanf") __attribute__((__nothrow__, __leaf__)) __attribute__((__format__(__scanf__, 2, 0))); 2.788 +extern int fgetc(FILE *__stream); 2.789 +extern int getc(FILE *__stream); 2.790 +extern int getchar(void); 2.791 +extern int getc_unlocked(FILE *__stream); 2.792 +extern int getchar_unlocked(void); 2.793 +extern int fgetc_unlocked(FILE *__stream); 2.794 +extern int fputc(int __c, FILE *__stream); 2.795 +extern int putc(int __c, FILE *__stream); 2.796 +extern int putchar(int __c); 2.797 +extern int fputc_unlocked(int __c, FILE *__stream); 2.798 +extern int putc_unlocked(int __c, FILE *__stream); 2.799 +extern int putchar_unlocked(int __c); 2.800 +extern int getw(FILE *__stream); 2.801 +extern int putw(int __w, FILE *__stream); 2.802 +extern char *fgets(char *__restrict __s, int __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__)); 2.803 +extern char *gets(char *__s) __attribute__((__warn_unused_result__)); 2.804 +extern __ssize_t __getdelim(char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) __attribute__((__warn_unused_result__)); 2.805 +extern __ssize_t getdelim(char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) __attribute__((__warn_unused_result__)); 2.806 +extern __ssize_t getline(char **__restrict __lineptr, size_t *__restrict __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__)); 2.807 +extern int fputs(__const char *__restrict __s, FILE *__restrict __stream); 2.808 +extern int puts(__const char *__s); 2.809 +extern int ungetc(int __c, FILE *__stream); 2.810 +extern size_t fread(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__)); 2.811 +extern size_t fwrite(__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s); 2.812 +extern size_t fread_unlocked(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__)); 2.813 +extern size_t fwrite_unlocked(__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream); 2.814 +extern int fseek(FILE *__stream, long int __off, int __whence); 2.815 +extern long int ftell(FILE *__stream) __attribute__((__warn_unused_result__)); 2.816 +extern void rewind(FILE *__stream); 2.817 +extern int fseeko(FILE *__stream, __off_t __off, int __whence); 2.818 +extern __off_t ftello(FILE *__stream) __attribute__((__warn_unused_result__)); 2.819 +extern int fgetpos(FILE *__restrict __stream, fpos_t *__restrict __pos); 2.820 +extern int fsetpos(FILE *__stream, __const fpos_t *__pos); 2.821 +extern void clearerr(FILE *__stream) __attribute__((__nothrow__, __leaf__)); 2.822 +extern int feof(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.823 +extern int ferror(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.824 +extern void clearerr_unlocked(FILE *__stream) __attribute__((__nothrow__, __leaf__)); 2.825 +extern int feof_unlocked(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.826 +extern int ferror_unlocked(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.827 +extern void perror(__const char *__s); 2.828 +extern int sys_nerr; 2.829 +extern __const char *__const sys_errlist[]; 2.830 +extern int fileno(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.831 +extern int fileno_unlocked(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.832 +extern FILE *popen(__const char *__command, __const char *__modes) __attribute__((__warn_unused_result__)); 2.833 +extern int pclose(FILE *__stream); 2.834 +extern char *ctermid(char *__s) __attribute__((__nothrow__, __leaf__)); 2.835 +extern void flockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__)); 2.836 +extern int ftrylockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.837 +extern void funlockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__)); 2.838 +extern __inline __attribute__((__gnu_inline__)) int getchar(void) 2.839 +{ 2.840 + return _IO_getc(stdin); 2.841 +} 2.842 +extern __inline __attribute__((__gnu_inline__)) int fgetc_unlocked(FILE *__fp) 2.843 +{ 2.844 + return (__builtin_expect(((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow(__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 2.845 +} 2.846 +extern __inline __attribute__((__gnu_inline__)) int getc_unlocked(FILE *__fp) 2.847 +{ 2.848 + return (__builtin_expect(((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow(__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 2.849 +} 2.850 +extern __inline __attribute__((__gnu_inline__)) int getchar_unlocked(void) 2.851 +{ 2.852 + return (__builtin_expect(((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow(stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); 2.853 +} 2.854 +extern __inline __attribute__((__gnu_inline__)) int putchar(int __c) 2.855 +{ 2.856 + return _IO_putc(__c, stdout); 2.857 +} 2.858 +extern __inline __attribute__((__gnu_inline__)) int fputc_unlocked(int __c, FILE *__stream) 2.859 +{ 2.860 + return (__builtin_expect(((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow(__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 2.861 +} 2.862 +extern __inline __attribute__((__gnu_inline__)) int putc_unlocked(int __c, FILE *__stream) 2.863 +{ 2.864 + return (__builtin_expect(((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow(__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 2.865 +} 2.866 +extern __inline __attribute__((__gnu_inline__)) int putchar_unlocked(int __c) 2.867 +{ 2.868 + return (__builtin_expect(((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow(stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); 2.869 +} 2.870 +extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) feof_unlocked(FILE *__stream) 2.871 +{ 2.872 + return (((__stream)->_flags & 0x10) != 0); 2.873 +} 2.874 +extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) ferror_unlocked(FILE *__stream) 2.875 +{ 2.876 + return (((__stream)->_flags & 0x20) != 0); 2.877 +} 2.878 +extern int __sprintf_chk(char *__restrict __s, int __flag, size_t __slen, __const char *__restrict __format, ...) __attribute__((__nothrow__, __leaf__)); 2.879 +extern int __vsprintf_chk(char *__restrict __s, int __flag, size_t __slen, __const char *__restrict __format, __gnuc_va_list __ap) __attribute__((__nothrow__, __leaf__)); 2.880 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) sprintf(char *__restrict __s, __const char *__restrict __fmt, ...) 2.881 +{ 2.882 + return __builtin___sprintf_chk(__s, 2 - 1, __builtin_object_size(__s, 2 > 1), __fmt, __builtin_va_arg_pack()); 2.883 +} 2.884 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) vsprintf(char *__restrict __s, __const char *__restrict __fmt, __gnuc_va_list __ap) 2.885 +{ 2.886 + return __builtin___vsprintf_chk(__s, 2 - 1, __builtin_object_size(__s, 2 > 1), __fmt, __ap); 2.887 +} 2.888 +extern int __snprintf_chk(char *__restrict __s, size_t __n, int __flag, size_t __slen, __const char *__restrict __format, ...) __attribute__((__nothrow__, __leaf__)); 2.889 +extern int __vsnprintf_chk(char *__restrict __s, size_t __n, int __flag, size_t __slen, __const char *__restrict __format, __gnuc_va_list __ap) __attribute__((__nothrow__, __leaf__)); 2.890 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) snprintf(char *__restrict __s, size_t __n, __const char *__restrict __fmt, ...) 2.891 +{ 2.892 + return __builtin___snprintf_chk(__s, __n, 2 - 1, __builtin_object_size(__s, 2 > 1), __fmt, __builtin_va_arg_pack()); 2.893 +} 2.894 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) vsnprintf(char *__restrict __s, size_t __n, __const char *__restrict __fmt, __gnuc_va_list __ap) 2.895 +{ 2.896 + return __builtin___vsnprintf_chk(__s, __n, 2 - 1, __builtin_object_size(__s, 2 > 1), __fmt, __ap); 2.897 +} 2.898 +extern int __fprintf_chk(FILE *__restrict __stream, int __flag, __const char *__restrict __format, ...); 2.899 +extern int __printf_chk(int __flag, __const char *__restrict __format, ...); 2.900 +extern int __vfprintf_chk(FILE *__restrict __stream, int __flag, __const char *__restrict __format, __gnuc_va_list __ap); 2.901 +extern int __vprintf_chk(int __flag, __const char *__restrict __format, __gnuc_va_list __ap); 2.902 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int fprintf(FILE *__restrict __stream, __const char *__restrict __fmt, ...) 2.903 +{ 2.904 + return __fprintf_chk(__stream, 2 - 1, __fmt, __builtin_va_arg_pack()); 2.905 +} 2.906 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int printf(__const char *__restrict __fmt, ...) 2.907 +{ 2.908 + return __printf_chk(2 - 1, __fmt, __builtin_va_arg_pack()); 2.909 +} 2.910 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int vprintf(__const char *__restrict __fmt, __gnuc_va_list __ap) 2.911 +{ 2.912 + return __vfprintf_chk(stdout, 2 - 1, __fmt, __ap); 2.913 +} 2.914 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int vfprintf(FILE *__restrict __stream, __const char *__restrict __fmt, __gnuc_va_list __ap) 2.915 +{ 2.916 + return __vfprintf_chk(__stream, 2 - 1, __fmt, __ap); 2.917 +} 2.918 +extern char *__gets_chk(char *__str, size_t) __attribute__((__warn_unused_result__)); 2.919 +extern char *__gets_warn(char *__str) __asm__ ("""gets") __attribute__((__warn_unused_result__)) __attribute__((__warning__("please use fgets or getline instead, gets can't ""specify buffer size"))); 2.920 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) char *gets(char *__str) 2.921 +{ 2.922 + if (__builtin_object_size(__str, 2 > 1) != (size_t) - 1) 2.923 + return __gets_chk(__str, __builtin_object_size(__str, 2 > 1)); 2.924 + return __gets_warn(__str); 2.925 +} 2.926 +extern char *__fgets_chk(char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__)); 2.927 +extern char *__fgets_alias(char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("""fgets") __attribute__((__warn_unused_result__)); 2.928 +extern char *__fgets_chk_warn(char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("""__fgets_chk") __attribute__((__warn_unused_result__)) __attribute__((__warning__("fgets called with bigger size than length ""of destination buffer"))); 2.929 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) char *fgets(char *__restrict __s, int __n, FILE *__restrict __stream) 2.930 +{ 2.931 + if (__builtin_object_size(__s, 2 > 1) != (size_t) - 1) 2.932 + { 2.933 + if (!__builtin_constant_p(__n) || __n <= 0) 2.934 + return __fgets_chk(__s, __builtin_object_size(__s, 2 > 1), __n, __stream); 2.935 + if ((size_t) __n > __builtin_object_size(__s, 2 > 1)) 2.936 + return __fgets_chk_warn(__s, __builtin_object_size(__s, 2 > 1), __n, __stream); 2.937 + } 2.938 + return __fgets_alias(__s, __n, __stream); 2.939 +} 2.940 +extern size_t __fread_chk(void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__)); 2.941 +extern size_t __fread_alias(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("""fread") __attribute__((__warn_unused_result__)); 2.942 +extern size_t __fread_chk_warn(void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("""__fread_chk") __attribute__((__warn_unused_result__)) __attribute__((__warning__("fread called with bigger size * nmemb than length ""of destination buffer"))); 2.943 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) size_t fread(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) 2.944 +{ 2.945 + if (__builtin_object_size(__ptr, 0) != (size_t) - 1) 2.946 + { 2.947 + if (!__builtin_constant_p(__size) || !__builtin_constant_p(__n) || (__size | __n) >= (((size_t) 1) << (8 * sizeof(size_t) / 2))) 2.948 + return __fread_chk(__ptr, __builtin_object_size(__ptr, 0), __size, __n, __stream); 2.949 + if (__size * __n > __builtin_object_size(__ptr, 0)) 2.950 + return __fread_chk_warn(__ptr, __builtin_object_size(__ptr, 0), __size, __n, __stream); 2.951 + } 2.952 + return __fread_alias(__ptr, __size, __n, __stream); 2.953 +} 2.954 +extern size_t __fread_unlocked_chk(void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__)); 2.955 +extern size_t __fread_unlocked_alias(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("""fread_unlocked") __attribute__((__warn_unused_result__)); 2.956 +extern size_t __fread_unlocked_chk_warn(void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("""__fread_unlocked_chk") __attribute__((__warn_unused_result__)) __attribute__((__warning__("fread_unlocked called with bigger size * nmemb than ""length of destination buffer"))); 2.957 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) size_t fread_unlocked(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) 2.958 +{ 2.959 + if (__builtin_object_size(__ptr, 0) != (size_t) - 1) 2.960 + { 2.961 + if (!__builtin_constant_p(__size) || !__builtin_constant_p(__n) || (__size | __n) >= (((size_t) 1) << (8 * sizeof(size_t) / 2))) 2.962 + return __fread_unlocked_chk(__ptr, __builtin_object_size(__ptr, 0), __size, __n, __stream); 2.963 + if (__size * __n > __builtin_object_size(__ptr, 0)) 2.964 + return __fread_unlocked_chk_warn(__ptr, __builtin_object_size(__ptr, 0), __size, __n, __stream); 2.965 + } 2.966 + if (__builtin_constant_p(__size) && __builtin_constant_p(__n) && (__size | __n) < (((size_t) 1) << (8 * sizeof(size_t) / 2)) && __size * __n <= 8) 2.967 + { 2.968 + size_t __cnt = __size * __n; 2.969 + char *__cptr = (char *) __ptr; 2.970 + if (__cnt == 0) 2.971 + return 0; 2.972 + for (; 2.973 + __cnt > 0; 2.974 + --__cnt) 2.975 + { 2.976 + int __c = (__builtin_expect(((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end), 0) ? __uflow(__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++); 2.977 + if (__c == (- 1)) 2.978 + break; 2.979 + *__cptr++ = __c; 2.980 + } 2.981 + return (__cptr - (char *) __ptr) / __size; 2.982 + } 2.983 + return __fread_unlocked_alias(__ptr, __size, __n, __stream); 2.984 +} 2.985 +typedef signed char int8_t; 2.986 +typedef short int int16_t; 2.987 +typedef int int32_t; 2.988 +typedef long int int64_t; 2.989 +typedef unsigned char uint8_t; 2.990 +typedef unsigned short int uint16_t; 2.991 +typedef unsigned int uint32_t; 2.992 +typedef unsigned long int uint64_t; 2.993 +typedef signed char int_least8_t; 2.994 +typedef short int int_least16_t; 2.995 +typedef int int_least32_t; 2.996 +typedef long int int_least64_t; 2.997 +typedef unsigned char uint_least8_t; 2.998 +typedef unsigned short int uint_least16_t; 2.999 +typedef unsigned int uint_least32_t; 2.1000 +typedef unsigned long int uint_least64_t; 2.1001 +typedef signed char int_fast8_t; 2.1002 +typedef long int int_fast16_t; 2.1003 +typedef long int int_fast32_t; 2.1004 +typedef long int int_fast64_t; 2.1005 +typedef unsigned char uint_fast8_t; 2.1006 +typedef unsigned long int uint_fast16_t; 2.1007 +typedef unsigned long int uint_fast32_t; 2.1008 +typedef unsigned long int uint_fast64_t; 2.1009 +typedef unsigned long int uintptr_t; 2.1010 +typedef long int intmax_t; 2.1011 +typedef unsigned long int uintmax_t; 2.1012 +typedef long int ptrdiff_t; 2.1013 +typedef int wchar_t; 2.1014 +typedef struct 2.1015 +{ 2.1016 + void **address; 2.1017 + ptrdiff_t offset; 2.1018 + struct 2.1019 + { 2.1020 + _Bool input : 1; 2.1021 + _Bool output : 1; 2.1022 + _Bool can_rename : 1; 2.1023 + _Bool commutative : 1; 2.1024 + } flags; 2.1025 + size_t size; 2.1026 +} nanos_dependence_internal_t; 2.1027 +typedef enum 2.1028 +{ 2.1029 + NANOS_PRIVATE, 2.1030 + NANOS_SHARED 2.1031 +} nanos_sharing_t; 2.1032 +typedef struct 2.1033 +{ 2.1034 + void *original; 2.1035 + void *privates; 2.1036 + void (*bop)(void *, void *); 2.1037 + void (*vop)(int n, void *, void *); 2.1038 + void (*cleanup)(void *); 2.1039 +} nanos_reduction_t; 2.1040 +typedef struct 2.1041 +{ 2.1042 + uint64_t address; 2.1043 + nanos_sharing_t sharing; 2.1044 + struct 2.1045 + { 2.1046 + _Bool input : 1; 2.1047 + _Bool output : 1; 2.1048 + } flags; 2.1049 + size_t size; 2.1050 +} nanos_copy_data_internal_t; 2.1051 +typedef nanos_dependence_internal_t nanos_dependence_t; 2.1052 +typedef nanos_copy_data_internal_t nanos_copy_data_t; 2.1053 +typedef void *nanos_thread_t; 2.1054 +typedef void *nanos_wd_t; 2.1055 +typedef struct 2.1056 +{ 2.1057 + int nsect; 2.1058 + nanos_wd_t lwd[]; 2.1059 +} nanos_compound_wd_data_t; 2.1060 +typedef struct 2.1061 +{ 2.1062 + int n; 2.1063 +} nanos_repeat_n_info_t; 2.1064 +typedef struct 2.1065 +{ 2.1066 + int lower; 2.1067 + int upper; 2.1068 + int step; 2.1069 + _Bool last; 2.1070 + int chunk; 2.1071 + int stride; 2.1072 + int thid; 2.1073 + void *args; 2.1074 +} nanos_loop_info_t; 2.1075 +typedef void *nanos_ws_t; 2.1076 +typedef void *nanos_ws_info_t; 2.1077 +typedef void *nanos_ws_data_t; 2.1078 +typedef void *nanos_ws_item_t; 2.1079 +typedef struct 2.1080 +{ 2.1081 + int lower_bound; 2.1082 + int upper_bound; 2.1083 + int loop_step; 2.1084 + int chunk_size; 2.1085 +} nanos_ws_info_loop_t; 2.1086 +typedef struct 2.1087 +{ 2.1088 + int lower; 2.1089 + int upper; 2.1090 + _Bool execute : 1; 2.1091 + _Bool last : 1; 2.1092 +} nanos_ws_item_loop_t; 2.1093 +typedef struct nanos_ws_desc 2.1094 +{ 2.1095 + volatile nanos_ws_t ws; 2.1096 + nanos_ws_data_t data; 2.1097 + struct nanos_ws_desc *next; 2.1098 + nanos_thread_t *threads; 2.1099 + int nths; 2.1100 +} nanos_ws_desc_t; 2.1101 +typedef struct 2.1102 +{ 2.1103 + _Bool mandatory_creation : 1; 2.1104 + _Bool tied : 1; 2.1105 + _Bool reserved0 : 1; 2.1106 + _Bool reserved1 : 1; 2.1107 + _Bool reserved2 : 1; 2.1108 + _Bool reserved3 : 1; 2.1109 + _Bool reserved4 : 1; 2.1110 + _Bool reserved5 : 1; 2.1111 +} nanos_wd_props_t; 2.1112 +typedef struct 2.1113 +{ 2.1114 + nanos_thread_t tie_to; 2.1115 + unsigned int priority; 2.1116 +} nanos_wd_dyn_props_t; 2.1117 +typedef struct 2.1118 +{ 2.1119 + void *(*factory)(void *arg); 2.1120 + void *arg; 2.1121 +} nanos_device_t; 2.1122 +typedef enum 2.1123 +{ 2.1124 + NANOS_STATE_START, 2.1125 + NANOS_STATE_END, 2.1126 + NANOS_SUBSTATE_START, 2.1127 + NANOS_SUBSTATE_END, 2.1128 + NANOS_BURST_START, 2.1129 + NANOS_BURST_END, 2.1130 + NANOS_PTP_START, 2.1131 + NANOS_PTP_END, 2.1132 + NANOS_POINT, 2.1133 + EVENT_TYPES 2.1134 +} nanos_event_type_t; 2.1135 +typedef enum 2.1136 +{ 2.1137 + NANOS_NOT_CREATED, 2.1138 + NANOS_NOT_RUNNING, 2.1139 + NANOS_STARTUP, 2.1140 + NANOS_SHUTDOWN, 2.1141 + NANOS_ERROR, 2.1142 + NANOS_IDLE, 2.1143 + NANOS_RUNTIME, 2.1144 + NANOS_RUNNING, 2.1145 + NANOS_SYNCHRONIZATION, 2.1146 + NANOS_SCHEDULING, 2.1147 + NANOS_CREATION, 2.1148 + NANOS_MEM_TRANSFER_IN, 2.1149 + NANOS_MEM_TRANSFER_OUT, 2.1150 + NANOS_MEM_TRANSFER_LOCAL, 2.1151 + NANOS_MEM_TRANSFER_DEVICE_IN, 2.1152 + NANOS_MEM_TRANSFER_DEVICE_OUT, 2.1153 + NANOS_MEM_TRANSFER_DEVICE_LOCAL, 2.1154 + NANOS_CACHE, 2.1155 + NANOS_YIELD, 2.1156 + NANOS_ACQUIRING_LOCK, 2.1157 + NANOS_CONTEXT_SWITCH, 2.1158 + NANOS_DEBUG, 2.1159 + NANOS_EVENT_STATE_TYPES 2.1160 +} nanos_event_state_value_t; 2.1161 +typedef enum 2.1162 +{ 2.1163 + NANOS_WD_DOMAIN, 2.1164 + NANOS_WD_DEPENDENCY, 2.1165 + NANOS_WAIT, 2.1166 + NANOS_WD_REMOTE, 2.1167 + NANOS_XFER_PUT, 2.1168 + NANOS_XFER_GET 2.1169 +} nanos_event_domain_t; 2.1170 +typedef long long nanos_event_id_t; 2.1171 +typedef unsigned int nanos_event_key_t; 2.1172 +typedef unsigned long long nanos_event_value_t; 2.1173 +typedef struct 2.1174 +{ 2.1175 + nanos_event_key_t key; 2.1176 + nanos_event_value_t value; 2.1177 +} nanos_event_burst_t; 2.1178 +typedef struct 2.1179 +{ 2.1180 + nanos_event_state_value_t value; 2.1181 +} nanos_event_state_t; 2.1182 +typedef struct 2.1183 +{ 2.1184 + unsigned int nkvs; 2.1185 + nanos_event_key_t *keys; 2.1186 + nanos_event_value_t *values; 2.1187 +} nanos_event_point_t; 2.1188 +typedef struct 2.1189 +{ 2.1190 + nanos_event_domain_t domain; 2.1191 + nanos_event_id_t id; 2.1192 + unsigned int nkvs; 2.1193 + nanos_event_key_t *keys; 2.1194 + nanos_event_value_t *values; 2.1195 +} nanos_event_ptp_t; 2.1196 +typedef struct 2.1197 +{ 2.1198 + nanos_event_type_t type; 2.1199 + union 2.1200 + { 2.1201 + nanos_event_burst_t burst; 2.1202 + nanos_event_state_t state; 2.1203 + nanos_event_point_t point; 2.1204 + nanos_event_ptp_t ptp; 2.1205 + } info; 2.1206 +} nanos_event_t; 2.1207 +typedef enum 2.1208 +{ 2.1209 + NANOS_LOCK_FREE = 0, 2.1210 + NANOS_LOCK_BUSY = 1 2.1211 +} nanos_lock_state_t; 2.1212 +typedef struct nanos_lock_t 2.1213 +{ 2.1214 + volatile nanos_lock_state_t _state; 2.1215 +} nanos_lock_t; 2.1216 +typedef void (*nanos_translate_args_t)(void *, nanos_wd_t); 2.1217 +typedef void (nanos_init_func_t)(void *); 2.1218 +typedef struct 2.1219 +{ 2.1220 + nanos_init_func_t *func; 2.1221 + void *data; 2.1222 +} nanos_init_desc_t; 2.1223 +typedef void *nanos_wg_t; 2.1224 +typedef void *nanos_team_t; 2.1225 +typedef void *nanos_sched_t; 2.1226 +typedef void *nanos_slicer_t; 2.1227 +typedef void *nanos_dd_t; 2.1228 +typedef void *nanos_sync_cond_t; 2.1229 +typedef unsigned int nanos_copy_id_t; 2.1230 +typedef struct nanos_const_wd_definition_tag 2.1231 +{ 2.1232 + nanos_wd_props_t props; 2.1233 + size_t data_alignment; 2.1234 + size_t num_copies; 2.1235 + size_t num_devices; 2.1236 +} nanos_const_wd_definition_t; 2.1237 +typedef struct 2.1238 +{ 2.1239 + int nthreads; 2.1240 + void *arch; 2.1241 +} nanos_constraint_t; 2.1242 +typedef enum 2.1243 +{ 2.1244 + NANOS_OK = 0, 2.1245 + NANOS_UNKNOWN_ERR, 2.1246 + NANOS_UNIMPLEMENTED 2.1247 +} nanos_err_t; 2.1248 +typedef struct 2.1249 +{ 2.1250 + void (*outline)(void *); 2.1251 +} nanos_smp_args_t; 2.1252 +extern nanos_wd_t nanos_current_wd_(void); 2.1253 +extern nanos_wd_t nanos_current_wd(void); 2.1254 +extern int nanos_get_wd_id_(nanos_wd_t wd); 2.1255 +extern int nanos_get_wd_id(nanos_wd_t wd); 2.1256 +extern nanos_slicer_t nanos_find_slicer_(const char *slicer); 2.1257 +extern nanos_slicer_t nanos_find_slicer(const char *slicer); 2.1258 +extern nanos_ws_t nanos_find_worksharing_(const char *label); 2.1259 +extern nanos_ws_t nanos_find_worksharing(const char *label); 2.1260 +extern nanos_err_t nanos_create_wd_compact_(nanos_wd_t *wd, nanos_const_wd_definition_t *const_data, nanos_wd_dyn_props_t *dyn_props, size_t data_size, void **data, nanos_wg_t wg, nanos_copy_data_t **copies); 2.1261 +extern nanos_err_t nanos_create_wd_compact(nanos_wd_t *wd, nanos_const_wd_definition_t *const_data, nanos_wd_dyn_props_t *dyn_props, size_t data_size, void **data, nanos_wg_t wg, nanos_copy_data_t **copies); 2.1262 +extern nanos_err_t nanos_set_translate_function_(nanos_wd_t wd, nanos_translate_args_t translate_args); 2.1263 +extern nanos_err_t nanos_set_translate_function(nanos_wd_t wd, nanos_translate_args_t translate_args); 2.1264 +extern nanos_err_t nanos_create_sliced_wd_(nanos_wd_t *uwd, size_t num_devices, nanos_device_t *devices, size_t outline_data_size, int outline_data_align, void **outline_data, nanos_wg_t uwg, nanos_slicer_t slicer, nanos_wd_props_t *props, nanos_wd_dyn_props_t *dyn_props, size_t num_copies, nanos_copy_data_t **copies); 2.1265 +extern nanos_err_t nanos_create_sliced_wd(nanos_wd_t *uwd, size_t num_devices, nanos_device_t *devices, size_t outline_data_size, int outline_data_align, void **outline_data, nanos_wg_t uwg, nanos_slicer_t slicer, nanos_wd_props_t *props, nanos_wd_dyn_props_t *dyn_props, size_t num_copies, nanos_copy_data_t **copies); 2.1266 +extern nanos_err_t nanos_submit_(nanos_wd_t wd, size_t num_deps, nanos_dependence_t *deps, nanos_team_t team); 2.1267 +extern nanos_err_t nanos_submit(nanos_wd_t wd, size_t num_deps, nanos_dependence_t *deps, nanos_team_t team); 2.1268 +extern nanos_err_t nanos_create_wd_and_run_compact_(nanos_const_wd_definition_t *const_data, nanos_wd_dyn_props_t *dyn_props, size_t data_size, void *data, size_t num_deps, nanos_dependence_t *deps, nanos_copy_data_t *copies, nanos_translate_args_t translate_args); 2.1269 +extern nanos_err_t nanos_create_wd_and_run_compact(nanos_const_wd_definition_t *const_data, nanos_wd_dyn_props_t *dyn_props, size_t data_size, void *data, size_t num_deps, nanos_dependence_t *deps, nanos_copy_data_t *copies, nanos_translate_args_t translate_args); 2.1270 +extern nanos_err_t nanos_create_for_(void); 2.1271 +extern nanos_err_t nanos_create_for(void); 2.1272 +extern nanos_err_t nanos_set_internal_wd_data_(nanos_wd_t wd, void *data); 2.1273 +extern nanos_err_t nanos_set_internal_wd_data(nanos_wd_t wd, void *data); 2.1274 +extern nanos_err_t nanos_get_internal_wd_data_(nanos_wd_t wd, void **data); 2.1275 +extern nanos_err_t nanos_get_internal_wd_data(nanos_wd_t wd, void **data); 2.1276 +extern nanos_err_t nanos_yield_(void); 2.1277 +extern nanos_err_t nanos_yield(void); 2.1278 +extern nanos_err_t nanos_slicer_get_specific_data_(nanos_slicer_t slicer, void **data); 2.1279 +extern nanos_err_t nanos_slicer_get_specific_data(nanos_slicer_t slicer, void **data); 2.1280 +extern nanos_err_t nanos_create_team_(nanos_team_t *team, nanos_sched_t sg, unsigned int *nthreads, nanos_constraint_t *constraints, _Bool reuse, nanos_thread_t *info); 2.1281 +extern nanos_err_t nanos_create_team(nanos_team_t *team, nanos_sched_t sg, unsigned int *nthreads, nanos_constraint_t *constraints, _Bool reuse, nanos_thread_t *info); 2.1282 +extern nanos_err_t nanos_create_team_mapped_(nanos_team_t *team, nanos_sched_t sg, unsigned int *nthreads, unsigned int *mapping); 2.1283 +extern nanos_err_t nanos_create_team_mapped(nanos_team_t *team, nanos_sched_t sg, unsigned int *nthreads, unsigned int *mapping); 2.1284 +extern nanos_err_t nanos_leave_team_(); 2.1285 +extern nanos_err_t nanos_leave_team(); 2.1286 +extern nanos_err_t nanos_end_team_(nanos_team_t team); 2.1287 +extern nanos_err_t nanos_end_team(nanos_team_t team); 2.1288 +extern nanos_err_t nanos_team_barrier_(void); 2.1289 +extern nanos_err_t nanos_team_barrier(void); 2.1290 +extern nanos_err_t nanos_single_guard_(_Bool *); 2.1291 +extern nanos_err_t nanos_single_guard(_Bool *); 2.1292 +extern nanos_err_t nanos_enter_sync_init_(_Bool *b); 2.1293 +extern nanos_err_t nanos_enter_sync_init(_Bool *b); 2.1294 +extern nanos_err_t nanos_wait_sync_init_(void); 2.1295 +extern nanos_err_t nanos_wait_sync_init(void); 2.1296 +extern nanos_err_t nanos_release_sync_init_(void); 2.1297 +extern nanos_err_t nanos_release_sync_init(void); 2.1298 +extern nanos_err_t nanos_team_get_num_starring_threads_(int *n); 2.1299 +extern nanos_err_t nanos_team_get_num_starring_threads(int *n); 2.1300 +extern nanos_err_t nanos_team_get_starring_threads_(int *n, nanos_thread_t *list_of_threads); 2.1301 +extern nanos_err_t nanos_team_get_starring_threads(int *n, nanos_thread_t *list_of_threads); 2.1302 +extern nanos_err_t nanos_team_get_num_supporting_threads_(int *n); 2.1303 +extern nanos_err_t nanos_team_get_num_supporting_threads(int *n); 2.1304 +extern nanos_err_t nanos_team_get_supporting_threads_(int *n, nanos_thread_t *list_of_threads); 2.1305 +extern nanos_err_t nanos_team_get_supporting_threads(int *n, nanos_thread_t *list_of_threads); 2.1306 +extern nanos_err_t nanos_register_reduction_(nanos_reduction_t *red); 2.1307 +extern nanos_err_t nanos_register_reduction(nanos_reduction_t *red); 2.1308 +extern nanos_err_t nanos_reduction_get_private_data_(void **copy, void *sink); 2.1309 +extern nanos_err_t nanos_reduction_get_private_data(void **copy, void *sink); 2.1310 +extern nanos_err_t nanos_worksharing_create_(nanos_ws_desc_t **wsd, nanos_ws_t ws, nanos_ws_info_t *info, _Bool *b); 2.1311 +extern nanos_err_t nanos_worksharing_create(nanos_ws_desc_t **wsd, nanos_ws_t ws, nanos_ws_info_t *info, _Bool *b); 2.1312 +extern nanos_err_t nanos_worksharing_next_item_(nanos_ws_desc_t *wsd, nanos_ws_item_t *wsi); 2.1313 +extern nanos_err_t nanos_worksharing_next_item(nanos_ws_desc_t *wsd, nanos_ws_item_t *wsi); 2.1314 +extern nanos_err_t nanos_wg_wait_completion_(nanos_wg_t wg, _Bool avoid_flush); 2.1315 +extern nanos_err_t nanos_wg_wait_completion(nanos_wg_t wg, _Bool avoid_flush); 2.1316 +extern nanos_err_t nanos_create_int_sync_cond_(nanos_sync_cond_t *sync_cond, volatile int *p, int condition); 2.1317 +extern nanos_err_t nanos_create_int_sync_cond(nanos_sync_cond_t *sync_cond, volatile int *p, int condition); 2.1318 +extern nanos_err_t nanos_create_bool_sync_cond_(nanos_sync_cond_t *sync_cond, volatile _Bool *p, _Bool condition); 2.1319 +extern nanos_err_t nanos_create_bool_sync_cond(nanos_sync_cond_t *sync_cond, volatile _Bool *p, _Bool condition); 2.1320 +extern nanos_err_t nanos_sync_cond_wait_(nanos_sync_cond_t *sync_cond); 2.1321 +extern nanos_err_t nanos_sync_cond_wait(nanos_sync_cond_t *sync_cond); 2.1322 +extern nanos_err_t nanos_sync_cond_signal_(nanos_sync_cond_t *sync_cond); 2.1323 +extern nanos_err_t nanos_sync_cond_signal(nanos_sync_cond_t *sync_cond); 2.1324 +extern nanos_err_t nanos_destroy_sync_cond_(nanos_sync_cond_t *sync_cond); 2.1325 +extern nanos_err_t nanos_destroy_sync_cond(nanos_sync_cond_t *sync_cond); 2.1326 +extern nanos_err_t nanos_wait_on_(size_t num_deps, nanos_dependence_t *deps); 2.1327 +extern nanos_err_t nanos_wait_on(size_t num_deps, nanos_dependence_t *deps); 2.1328 +extern nanos_err_t nanos_init_lock_(nanos_lock_t **lock); 2.1329 +extern nanos_err_t nanos_init_lock(nanos_lock_t **lock); 2.1330 +extern nanos_err_t nanos_set_lock_(nanos_lock_t *lock); 2.1331 +extern nanos_err_t nanos_set_lock(nanos_lock_t *lock); 2.1332 +extern nanos_err_t nanos_unset_lock_(nanos_lock_t *lock); 2.1333 +extern nanos_err_t nanos_unset_lock(nanos_lock_t *lock); 2.1334 +extern nanos_err_t nanos_try_lock_(nanos_lock_t *lock, _Bool *result); 2.1335 +extern nanos_err_t nanos_try_lock(nanos_lock_t *lock, _Bool *result); 2.1336 +extern nanos_err_t nanos_destroy_lock_(nanos_lock_t *lock); 2.1337 +extern nanos_err_t nanos_destroy_lock(nanos_lock_t *lock); 2.1338 +extern nanos_err_t nanos_get_addr_(nanos_copy_id_t copy_id, void **addr, nanos_wd_t cwd); 2.1339 +extern nanos_err_t nanos_get_addr(nanos_copy_id_t copy_id, void **addr, nanos_wd_t cwd); 2.1340 +extern nanos_err_t nanos_copy_value_(void *dst, nanos_copy_id_t copy_id, nanos_wd_t cwd); 2.1341 +extern nanos_err_t nanos_copy_value(void *dst, nanos_copy_id_t copy_id, nanos_wd_t cwd); 2.1342 +extern nanos_err_t nanos_get_num_running_tasks_(int *num); 2.1343 +extern nanos_err_t nanos_get_num_running_tasks(int *num); 2.1344 +extern nanos_err_t nanos_start_scheduler_(); 2.1345 +extern nanos_err_t nanos_start_scheduler(); 2.1346 +extern nanos_err_t nanos_stop_scheduler_(); 2.1347 +extern nanos_err_t nanos_stop_scheduler(); 2.1348 +extern nanos_err_t nanos_scheduler_enabled_(_Bool *res); 2.1349 +extern nanos_err_t nanos_scheduler_enabled(_Bool *res); 2.1350 +extern nanos_err_t nanos_wait_until_threads_paused_(); 2.1351 +extern nanos_err_t nanos_wait_until_threads_paused(); 2.1352 +extern nanos_err_t nanos_wait_until_threads_unpaused_(); 2.1353 +extern nanos_err_t nanos_wait_until_threads_unpaused(); 2.1354 +extern nanos_err_t nanos_delay_start_(); 2.1355 +extern nanos_err_t nanos_delay_start(); 2.1356 +extern nanos_err_t nanos_start_(); 2.1357 +extern nanos_err_t nanos_start(); 2.1358 +extern nanos_err_t nanos_finish_(); 2.1359 +extern nanos_err_t nanos_finish(); 2.1360 +extern nanos_err_t nanos_malloc_(void **p, size_t size, const char *file, int line); 2.1361 +extern nanos_err_t nanos_malloc(void **p, size_t size, const char *file, int line); 2.1362 +extern nanos_err_t nanos_free_(void *p); 2.1363 +extern nanos_err_t nanos_free(void *p); 2.1364 +extern void nanos_handle_error_(nanos_err_t err); 2.1365 +extern void nanos_handle_error(nanos_err_t err); 2.1366 +extern void *nanos_smp_factory_(void *args); 2.1367 +extern void *nanos_smp_factory(void *args); 2.1368 +extern nanos_err_t nanos_instrument_register_key_(nanos_event_key_t *event_key, const char *key, const char *description, _Bool abort_when_registered); 2.1369 +extern nanos_err_t nanos_instrument_register_key(nanos_event_key_t *event_key, const char *key, const char *description, _Bool abort_when_registered); 2.1370 +extern nanos_err_t nanos_instrument_register_value_(nanos_event_value_t *event_value, const char *key, const char *value, const char *description, _Bool abort_when_registered); 2.1371 +extern nanos_err_t nanos_instrument_register_value(nanos_event_value_t *event_value, const char *key, const char *value, const char *description, _Bool abort_when_registered); 2.1372 +extern nanos_err_t nanos_instrument_register_value_with_val_(nanos_event_value_t val, const char *key, const char *value, const char *description, _Bool abort_when_registered); 2.1373 +extern nanos_err_t nanos_instrument_register_value_with_val(nanos_event_value_t val, const char *key, const char *value, const char *description, _Bool abort_when_registered); 2.1374 +extern nanos_err_t nanos_instrument_get_key_(const char *key, nanos_event_key_t *event_key); 2.1375 +extern nanos_err_t nanos_instrument_get_key(const char *key, nanos_event_key_t *event_key); 2.1376 +extern nanos_err_t nanos_instrument_get_value_(const char *key, const char *value, nanos_event_value_t *event_value); 2.1377 +extern nanos_err_t nanos_instrument_get_value(const char *key, const char *value, nanos_event_value_t *event_value); 2.1378 +extern nanos_err_t nanos_instrument_events_(unsigned int num_events, nanos_event_t events[]); 2.1379 +extern nanos_err_t nanos_instrument_events(unsigned int num_events, nanos_event_t events[]); 2.1380 +extern nanos_err_t nanos_instrument_enter_state_(nanos_event_state_value_t state); 2.1381 +extern nanos_err_t nanos_instrument_enter_state(nanos_event_state_value_t state); 2.1382 +extern nanos_err_t nanos_instrument_leave_state_(void); 2.1383 +extern nanos_err_t nanos_instrument_leave_state(void); 2.1384 +extern nanos_err_t nanos_instrument_enter_burst_(nanos_event_key_t key, nanos_event_value_t value); 2.1385 +extern nanos_err_t nanos_instrument_enter_burst(nanos_event_key_t key, nanos_event_value_t value); 2.1386 +extern nanos_err_t nanos_instrument_leave_burst_(nanos_event_key_t key); 2.1387 +extern nanos_err_t nanos_instrument_leave_burst(nanos_event_key_t key); 2.1388 +extern nanos_err_t nanos_instrument_point_event_(unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values); 2.1389 +extern nanos_err_t nanos_instrument_point_event(unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values); 2.1390 +extern nanos_err_t nanos_instrument_ptp_start_(nanos_event_domain_t domain, nanos_event_id_t id, unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values); 2.1391 +extern nanos_err_t nanos_instrument_ptp_start(nanos_event_domain_t domain, nanos_event_id_t id, unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values); 2.1392 +extern nanos_err_t nanos_instrument_ptp_end_(nanos_event_domain_t domain, nanos_event_id_t id, unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values); 2.1393 +extern nanos_err_t nanos_instrument_ptp_end(nanos_event_domain_t domain, nanos_event_id_t id, unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values); 2.1394 +extern nanos_err_t nanos_instrument_disable_state_events_(nanos_event_state_value_t state); 2.1395 +extern nanos_err_t nanos_instrument_disable_state_events(nanos_event_state_value_t state); 2.1396 +extern nanos_err_t nanos_instrument_enable_state_events_(void); 2.1397 +extern nanos_err_t nanos_instrument_enable_state_events(void); 2.1398 +extern nanos_err_t nanos_instrument_close_user_fun_event_(); 2.1399 +extern nanos_err_t nanos_instrument_close_user_fun_event(); 2.1400 +extern nanos_err_t nanos_instrument_enable_(void); 2.1401 +extern nanos_err_t nanos_instrument_enable(void); 2.1402 +extern nanos_err_t nanos_instrument_disable_(void); 2.1403 +extern nanos_err_t nanos_instrument_disable(void); 2.1404 +void nanos_reduction_int_vop(int, void *, void *); 2.1405 +void nanos_reduction_bop_add_char(void *arg1, void *arg2); 2.1406 +void nanos_reduction_vop_add_char(int i, void *arg1, void *arg2); 2.1407 +void nanos_reduction_bop_add_uchar(void *arg1, void *arg2); 2.1408 +void nanos_reduction_vop_add_uchar(int i, void *arg1, void *arg2); 2.1409 +void nanos_reduction_bop_add_schar(void *arg1, void *arg2); 2.1410 +void nanos_reduction_vop_add_schar(int i, void *arg1, void *arg2); 2.1411 +void nanos_reduction_bop_add_short(void *arg1, void *arg2); 2.1412 +void nanos_reduction_vop_add_short(int i, void *arg1, void *arg2); 2.1413 +void nanos_reduction_bop_add_ushort(void *arg1, void *arg2); 2.1414 +void nanos_reduction_vop_add_ushort(int i, void *arg1, void *arg2); 2.1415 +void nanos_reduction_bop_add_int(void *arg1, void *arg2); 2.1416 +void nanos_reduction_vop_add_int(int i, void *arg1, void *arg2); 2.1417 +void nanos_reduction_bop_add_uint(void *arg1, void *arg2); 2.1418 +void nanos_reduction_vop_add_uint(int i, void *arg1, void *arg2); 2.1419 +void nanos_reduction_bop_add_long(void *arg1, void *arg2); 2.1420 +void nanos_reduction_vop_add_long(int i, void *arg1, void *arg2); 2.1421 +void nanos_reduction_bop_add_ulong(void *arg1, void *arg2); 2.1422 +void nanos_reduction_vop_add_ulong(int i, void *arg1, void *arg2); 2.1423 +void nanos_reduction_bop_add_longlong(void *arg1, void *arg2); 2.1424 +void nanos_reduction_vop_add_longlong(int i, void *arg1, void *arg2); 2.1425 +void nanos_reduction_bop_add_ulonglong(void *arg1, void *arg2); 2.1426 +void nanos_reduction_vop_add_ulonglong(int i, void *arg1, void *arg2); 2.1427 +void nanos_reduction_bop_add__Bool(void *arg1, void *arg2); 2.1428 +void nanos_reduction_vop_add__Bool(int i, void *arg1, void *arg2); 2.1429 +void nanos_reduction_bop_add_float(void *arg1, void *arg2); 2.1430 +void nanos_reduction_vop_add_float(int i, void *arg1, void *arg2); 2.1431 +void nanos_reduction_bop_add_double(void *arg1, void *arg2); 2.1432 +void nanos_reduction_vop_add_double(int i, void *arg1, void *arg2); 2.1433 +void nanos_reduction_bop_add_longdouble(void *arg1, void *arg2); 2.1434 +void nanos_reduction_vop_add_longdouble(int i, void *arg1, void *arg2); 2.1435 +void nanos_reduction_bop_sub_char(void *arg1, void *arg2); 2.1436 +void nanos_reduction_vop_sub_char(int i, void *arg1, void *arg2); 2.1437 +void nanos_reduction_bop_sub_uchar(void *arg1, void *arg2); 2.1438 +void nanos_reduction_vop_sub_uchar(int i, void *arg1, void *arg2); 2.1439 +void nanos_reduction_bop_sub_schar(void *arg1, void *arg2); 2.1440 +void nanos_reduction_vop_sub_schar(int i, void *arg1, void *arg2); 2.1441 +void nanos_reduction_bop_sub_short(void *arg1, void *arg2); 2.1442 +void nanos_reduction_vop_sub_short(int i, void *arg1, void *arg2); 2.1443 +void nanos_reduction_bop_sub_ushort(void *arg1, void *arg2); 2.1444 +void nanos_reduction_vop_sub_ushort(int i, void *arg1, void *arg2); 2.1445 +void nanos_reduction_bop_sub_int(void *arg1, void *arg2); 2.1446 +void nanos_reduction_vop_sub_int(int i, void *arg1, void *arg2); 2.1447 +void nanos_reduction_bop_sub_uint(void *arg1, void *arg2); 2.1448 +void nanos_reduction_vop_sub_uint(int i, void *arg1, void *arg2); 2.1449 +void nanos_reduction_bop_sub_long(void *arg1, void *arg2); 2.1450 +void nanos_reduction_vop_sub_long(int i, void *arg1, void *arg2); 2.1451 +void nanos_reduction_bop_sub_ulong(void *arg1, void *arg2); 2.1452 +void nanos_reduction_vop_sub_ulong(int i, void *arg1, void *arg2); 2.1453 +void nanos_reduction_bop_sub_longlong(void *arg1, void *arg2); 2.1454 +void nanos_reduction_vop_sub_longlong(int i, void *arg1, void *arg2); 2.1455 +void nanos_reduction_bop_sub_ulonglong(void *arg1, void *arg2); 2.1456 +void nanos_reduction_vop_sub_ulonglong(int i, void *arg1, void *arg2); 2.1457 +void nanos_reduction_bop_sub__Bool(void *arg1, void *arg2); 2.1458 +void nanos_reduction_vop_sub__Bool(int i, void *arg1, void *arg2); 2.1459 +void nanos_reduction_bop_sub_float(void *arg1, void *arg2); 2.1460 +void nanos_reduction_vop_sub_float(int i, void *arg1, void *arg2); 2.1461 +void nanos_reduction_bop_sub_double(void *arg1, void *arg2); 2.1462 +void nanos_reduction_vop_sub_double(int i, void *arg1, void *arg2); 2.1463 +void nanos_reduction_bop_sub_longdouble(void *arg1, void *arg2); 2.1464 +void nanos_reduction_vop_sub_longdouble(int i, void *arg1, void *arg2); 2.1465 +void nanos_reduction_bop_prod_char(void *arg1, void *arg2); 2.1466 +void nanos_reduction_vop_prod_char(int i, void *arg1, void *arg2); 2.1467 +void nanos_reduction_bop_prod_uchar(void *arg1, void *arg2); 2.1468 +void nanos_reduction_vop_prod_uchar(int i, void *arg1, void *arg2); 2.1469 +void nanos_reduction_bop_prod_schar(void *arg1, void *arg2); 2.1470 +void nanos_reduction_vop_prod_schar(int i, void *arg1, void *arg2); 2.1471 +void nanos_reduction_bop_prod_short(void *arg1, void *arg2); 2.1472 +void nanos_reduction_vop_prod_short(int i, void *arg1, void *arg2); 2.1473 +void nanos_reduction_bop_prod_ushort(void *arg1, void *arg2); 2.1474 +void nanos_reduction_vop_prod_ushort(int i, void *arg1, void *arg2); 2.1475 +void nanos_reduction_bop_prod_int(void *arg1, void *arg2); 2.1476 +void nanos_reduction_vop_prod_int(int i, void *arg1, void *arg2); 2.1477 +void nanos_reduction_bop_prod_uint(void *arg1, void *arg2); 2.1478 +void nanos_reduction_vop_prod_uint(int i, void *arg1, void *arg2); 2.1479 +void nanos_reduction_bop_prod_long(void *arg1, void *arg2); 2.1480 +void nanos_reduction_vop_prod_long(int i, void *arg1, void *arg2); 2.1481 +void nanos_reduction_bop_prod_ulong(void *arg1, void *arg2); 2.1482 +void nanos_reduction_vop_prod_ulong(int i, void *arg1, void *arg2); 2.1483 +void nanos_reduction_bop_prod_longlong(void *arg1, void *arg2); 2.1484 +void nanos_reduction_vop_prod_longlong(int i, void *arg1, void *arg2); 2.1485 +void nanos_reduction_bop_prod_ulonglong(void *arg1, void *arg2); 2.1486 +void nanos_reduction_vop_prod_ulonglong(int i, void *arg1, void *arg2); 2.1487 +void nanos_reduction_bop_prod__Bool(void *arg1, void *arg2); 2.1488 +void nanos_reduction_vop_prod__Bool(int i, void *arg1, void *arg2); 2.1489 +void nanos_reduction_bop_prod_float(void *arg1, void *arg2); 2.1490 +void nanos_reduction_vop_prod_float(int i, void *arg1, void *arg2); 2.1491 +void nanos_reduction_bop_prod_double(void *arg1, void *arg2); 2.1492 +void nanos_reduction_vop_prod_double(int i, void *arg1, void *arg2); 2.1493 +void nanos_reduction_bop_prod_longdouble(void *arg1, void *arg2); 2.1494 +void nanos_reduction_vop_prod_longdouble(int i, void *arg1, void *arg2); 2.1495 +void nanos_reduction_bop_and_char(void *arg1, void *arg2); 2.1496 +void nanos_reduction_vop_and_char(int i, void *arg1, void *arg2); 2.1497 +void nanos_reduction_bop_and_uchar(void *arg1, void *arg2); 2.1498 +void nanos_reduction_vop_and_uchar(int i, void *arg1, void *arg2); 2.1499 +void nanos_reduction_bop_and_schar(void *arg1, void *arg2); 2.1500 +void nanos_reduction_vop_and_schar(int i, void *arg1, void *arg2); 2.1501 +void nanos_reduction_bop_and_short(void *arg1, void *arg2); 2.1502 +void nanos_reduction_vop_and_short(int i, void *arg1, void *arg2); 2.1503 +void nanos_reduction_bop_and_ushort(void *arg1, void *arg2); 2.1504 +void nanos_reduction_vop_and_ushort(int i, void *arg1, void *arg2); 2.1505 +void nanos_reduction_bop_and_int(void *arg1, void *arg2); 2.1506 +void nanos_reduction_vop_and_int(int i, void *arg1, void *arg2); 2.1507 +void nanos_reduction_bop_and_uint(void *arg1, void *arg2); 2.1508 +void nanos_reduction_vop_and_uint(int i, void *arg1, void *arg2); 2.1509 +void nanos_reduction_bop_and_long(void *arg1, void *arg2); 2.1510 +void nanos_reduction_vop_and_long(int i, void *arg1, void *arg2); 2.1511 +void nanos_reduction_bop_and_ulong(void *arg1, void *arg2); 2.1512 +void nanos_reduction_vop_and_ulong(int i, void *arg1, void *arg2); 2.1513 +void nanos_reduction_bop_and_longlong(void *arg1, void *arg2); 2.1514 +void nanos_reduction_vop_and_longlong(int i, void *arg1, void *arg2); 2.1515 +void nanos_reduction_bop_and_ulonglong(void *arg1, void *arg2); 2.1516 +void nanos_reduction_vop_and_ulonglong(int i, void *arg1, void *arg2); 2.1517 +void nanos_reduction_bop_and__Bool(void *arg1, void *arg2); 2.1518 +void nanos_reduction_vop_and__Bool(int i, void *arg1, void *arg2); 2.1519 +void nanos_reduction_bop_or_char(void *arg1, void *arg2); 2.1520 +void nanos_reduction_vop_or_char(int i, void *arg1, void *arg2); 2.1521 +void nanos_reduction_bop_or_uchar(void *arg1, void *arg2); 2.1522 +void nanos_reduction_vop_or_uchar(int i, void *arg1, void *arg2); 2.1523 +void nanos_reduction_bop_or_schar(void *arg1, void *arg2); 2.1524 +void nanos_reduction_vop_or_schar(int i, void *arg1, void *arg2); 2.1525 +void nanos_reduction_bop_or_short(void *arg1, void *arg2); 2.1526 +void nanos_reduction_vop_or_short(int i, void *arg1, void *arg2); 2.1527 +void nanos_reduction_bop_or_ushort(void *arg1, void *arg2); 2.1528 +void nanos_reduction_vop_or_ushort(int i, void *arg1, void *arg2); 2.1529 +void nanos_reduction_bop_or_int(void *arg1, void *arg2); 2.1530 +void nanos_reduction_vop_or_int(int i, void *arg1, void *arg2); 2.1531 +void nanos_reduction_bop_or_uint(void *arg1, void *arg2); 2.1532 +void nanos_reduction_vop_or_uint(int i, void *arg1, void *arg2); 2.1533 +void nanos_reduction_bop_or_long(void *arg1, void *arg2); 2.1534 +void nanos_reduction_vop_or_long(int i, void *arg1, void *arg2); 2.1535 +void nanos_reduction_bop_or_ulong(void *arg1, void *arg2); 2.1536 +void nanos_reduction_vop_or_ulong(int i, void *arg1, void *arg2); 2.1537 +void nanos_reduction_bop_or_longlong(void *arg1, void *arg2); 2.1538 +void nanos_reduction_vop_or_longlong(int i, void *arg1, void *arg2); 2.1539 +void nanos_reduction_bop_or_ulonglong(void *arg1, void *arg2); 2.1540 +void nanos_reduction_vop_or_ulonglong(int i, void *arg1, void *arg2); 2.1541 +void nanos_reduction_bop_or__Bool(void *arg1, void *arg2); 2.1542 +void nanos_reduction_vop_or__Bool(int i, void *arg1, void *arg2); 2.1543 +void nanos_reduction_bop_xor_char(void *arg1, void *arg2); 2.1544 +void nanos_reduction_vop_xor_char(int i, void *arg1, void *arg2); 2.1545 +void nanos_reduction_bop_xor_uchar(void *arg1, void *arg2); 2.1546 +void nanos_reduction_vop_xor_uchar(int i, void *arg1, void *arg2); 2.1547 +void nanos_reduction_bop_xor_schar(void *arg1, void *arg2); 2.1548 +void nanos_reduction_vop_xor_schar(int i, void *arg1, void *arg2); 2.1549 +void nanos_reduction_bop_xor_short(void *arg1, void *arg2); 2.1550 +void nanos_reduction_vop_xor_short(int i, void *arg1, void *arg2); 2.1551 +void nanos_reduction_bop_xor_ushort(void *arg1, void *arg2); 2.1552 +void nanos_reduction_vop_xor_ushort(int i, void *arg1, void *arg2); 2.1553 +void nanos_reduction_bop_xor_int(void *arg1, void *arg2); 2.1554 +void nanos_reduction_vop_xor_int(int i, void *arg1, void *arg2); 2.1555 +void nanos_reduction_bop_xor_uint(void *arg1, void *arg2); 2.1556 +void nanos_reduction_vop_xor_uint(int i, void *arg1, void *arg2); 2.1557 +void nanos_reduction_bop_xor_long(void *arg1, void *arg2); 2.1558 +void nanos_reduction_vop_xor_long(int i, void *arg1, void *arg2); 2.1559 +void nanos_reduction_bop_xor_ulong(void *arg1, void *arg2); 2.1560 +void nanos_reduction_vop_xor_ulong(int i, void *arg1, void *arg2); 2.1561 +void nanos_reduction_bop_xor_longlong(void *arg1, void *arg2); 2.1562 +void nanos_reduction_vop_xor_longlong(int i, void *arg1, void *arg2); 2.1563 +void nanos_reduction_bop_xor_ulonglong(void *arg1, void *arg2); 2.1564 +void nanos_reduction_vop_xor_ulonglong(int i, void *arg1, void *arg2); 2.1565 +void nanos_reduction_bop_xor__Bool(void *arg1, void *arg2); 2.1566 +void nanos_reduction_vop_xor__Bool(int i, void *arg1, void *arg2); 2.1567 +void nanos_reduction_bop_land_char(void *arg1, void *arg2); 2.1568 +void nanos_reduction_vop_land_char(int i, void *arg1, void *arg2); 2.1569 +void nanos_reduction_bop_land_uchar(void *arg1, void *arg2); 2.1570 +void nanos_reduction_vop_land_uchar(int i, void *arg1, void *arg2); 2.1571 +void nanos_reduction_bop_land_schar(void *arg1, void *arg2); 2.1572 +void nanos_reduction_vop_land_schar(int i, void *arg1, void *arg2); 2.1573 +void nanos_reduction_bop_land_short(void *arg1, void *arg2); 2.1574 +void nanos_reduction_vop_land_short(int i, void *arg1, void *arg2); 2.1575 +void nanos_reduction_bop_land_ushort(void *arg1, void *arg2); 2.1576 +void nanos_reduction_vop_land_ushort(int i, void *arg1, void *arg2); 2.1577 +void nanos_reduction_bop_land_int(void *arg1, void *arg2); 2.1578 +void nanos_reduction_vop_land_int(int i, void *arg1, void *arg2); 2.1579 +void nanos_reduction_bop_land_uint(void *arg1, void *arg2); 2.1580 +void nanos_reduction_vop_land_uint(int i, void *arg1, void *arg2); 2.1581 +void nanos_reduction_bop_land_long(void *arg1, void *arg2); 2.1582 +void nanos_reduction_vop_land_long(int i, void *arg1, void *arg2); 2.1583 +void nanos_reduction_bop_land_ulong(void *arg1, void *arg2); 2.1584 +void nanos_reduction_vop_land_ulong(int i, void *arg1, void *arg2); 2.1585 +void nanos_reduction_bop_land_longlong(void *arg1, void *arg2); 2.1586 +void nanos_reduction_vop_land_longlong(int i, void *arg1, void *arg2); 2.1587 +void nanos_reduction_bop_land_ulonglong(void *arg1, void *arg2); 2.1588 +void nanos_reduction_vop_land_ulonglong(int i, void *arg1, void *arg2); 2.1589 +void nanos_reduction_bop_land__Bool(void *arg1, void *arg2); 2.1590 +void nanos_reduction_vop_land__Bool(int i, void *arg1, void *arg2); 2.1591 +void nanos_reduction_bop_land_float(void *arg1, void *arg2); 2.1592 +void nanos_reduction_vop_land_float(int i, void *arg1, void *arg2); 2.1593 +void nanos_reduction_bop_land_double(void *arg1, void *arg2); 2.1594 +void nanos_reduction_vop_land_double(int i, void *arg1, void *arg2); 2.1595 +void nanos_reduction_bop_land_longdouble(void *arg1, void *arg2); 2.1596 +void nanos_reduction_vop_land_longdouble(int i, void *arg1, void *arg2); 2.1597 +void nanos_reduction_bop_lor_char(void *arg1, void *arg2); 2.1598 +void nanos_reduction_vop_lor_char(int i, void *arg1, void *arg2); 2.1599 +void nanos_reduction_bop_lor_uchar(void *arg1, void *arg2); 2.1600 +void nanos_reduction_vop_lor_uchar(int i, void *arg1, void *arg2); 2.1601 +void nanos_reduction_bop_lor_schar(void *arg1, void *arg2); 2.1602 +void nanos_reduction_vop_lor_schar(int i, void *arg1, void *arg2); 2.1603 +void nanos_reduction_bop_lor_short(void *arg1, void *arg2); 2.1604 +void nanos_reduction_vop_lor_short(int i, void *arg1, void *arg2); 2.1605 +void nanos_reduction_bop_lor_ushort(void *arg1, void *arg2); 2.1606 +void nanos_reduction_vop_lor_ushort(int i, void *arg1, void *arg2); 2.1607 +void nanos_reduction_bop_lor_int(void *arg1, void *arg2); 2.1608 +void nanos_reduction_vop_lor_int(int i, void *arg1, void *arg2); 2.1609 +void nanos_reduction_bop_lor_uint(void *arg1, void *arg2); 2.1610 +void nanos_reduction_vop_lor_uint(int i, void *arg1, void *arg2); 2.1611 +void nanos_reduction_bop_lor_long(void *arg1, void *arg2); 2.1612 +void nanos_reduction_vop_lor_long(int i, void *arg1, void *arg2); 2.1613 +void nanos_reduction_bop_lor_ulong(void *arg1, void *arg2); 2.1614 +void nanos_reduction_vop_lor_ulong(int i, void *arg1, void *arg2); 2.1615 +void nanos_reduction_bop_lor_longlong(void *arg1, void *arg2); 2.1616 +void nanos_reduction_vop_lor_longlong(int i, void *arg1, void *arg2); 2.1617 +void nanos_reduction_bop_lor_ulonglong(void *arg1, void *arg2); 2.1618 +void nanos_reduction_vop_lor_ulonglong(int i, void *arg1, void *arg2); 2.1619 +void nanos_reduction_bop_lor__Bool(void *arg1, void *arg2); 2.1620 +void nanos_reduction_vop_lor__Bool(int i, void *arg1, void *arg2); 2.1621 +void nanos_reduction_bop_lor_float(void *arg1, void *arg2); 2.1622 +void nanos_reduction_vop_lor_float(int i, void *arg1, void *arg2); 2.1623 +void nanos_reduction_bop_lor_double(void *arg1, void *arg2); 2.1624 +void nanos_reduction_vop_lor_double(int i, void *arg1, void *arg2); 2.1625 +void nanos_reduction_bop_lor_longdouble(void *arg1, void *arg2); 2.1626 +void nanos_reduction_vop_lor_longdouble(int i, void *arg1, void *arg2); 2.1627 +void nanos_reduction_bop_max_char(void *arg1, void *arg2); 2.1628 +void nanos_reduction_vop_max_char(int i, void *arg1, void *arg2); 2.1629 +void nanos_reduction_bop_max_uchar(void *arg1, void *arg2); 2.1630 +void nanos_reduction_vop_max_uchar(int i, void *arg1, void *arg2); 2.1631 +void nanos_reduction_bop_max_schar(void *arg1, void *arg2); 2.1632 +void nanos_reduction_vop_max_schar(int i, void *arg1, void *arg2); 2.1633 +void nanos_reduction_bop_max_short(void *arg1, void *arg2); 2.1634 +void nanos_reduction_vop_max_short(int i, void *arg1, void *arg2); 2.1635 +void nanos_reduction_bop_max_ushort(void *arg1, void *arg2); 2.1636 +void nanos_reduction_vop_max_ushort(int i, void *arg1, void *arg2); 2.1637 +void nanos_reduction_bop_max_int(void *arg1, void *arg2); 2.1638 +void nanos_reduction_vop_max_int(int i, void *arg1, void *arg2); 2.1639 +void nanos_reduction_bop_max_uint(void *arg1, void *arg2); 2.1640 +void nanos_reduction_vop_max_uint(int i, void *arg1, void *arg2); 2.1641 +void nanos_reduction_bop_max_long(void *arg1, void *arg2); 2.1642 +void nanos_reduction_vop_max_long(int i, void *arg1, void *arg2); 2.1643 +void nanos_reduction_bop_max_ulong(void *arg1, void *arg2); 2.1644 +void nanos_reduction_vop_max_ulong(int i, void *arg1, void *arg2); 2.1645 +void nanos_reduction_bop_max_longlong(void *arg1, void *arg2); 2.1646 +void nanos_reduction_vop_max_longlong(int i, void *arg1, void *arg2); 2.1647 +void nanos_reduction_bop_max_ulonglong(void *arg1, void *arg2); 2.1648 +void nanos_reduction_vop_max_ulonglong(int i, void *arg1, void *arg2); 2.1649 +void nanos_reduction_bop_max__Bool(void *arg1, void *arg2); 2.1650 +void nanos_reduction_vop_max__Bool(int i, void *arg1, void *arg2); 2.1651 +void nanos_reduction_bop_max_float(void *arg1, void *arg2); 2.1652 +void nanos_reduction_vop_max_float(int i, void *arg1, void *arg2); 2.1653 +void nanos_reduction_bop_max_double(void *arg1, void *arg2); 2.1654 +void nanos_reduction_vop_max_double(int i, void *arg1, void *arg2); 2.1655 +void nanos_reduction_bop_max_longdouble(void *arg1, void *arg2); 2.1656 +void nanos_reduction_vop_max_longdouble(int i, void *arg1, void *arg2); 2.1657 +void nanos_reduction_bop_min_char(void *arg1, void *arg2); 2.1658 +void nanos_reduction_vop_min_char(int i, void *arg1, void *arg2); 2.1659 +void nanos_reduction_bop_min_uchar(void *arg1, void *arg2); 2.1660 +void nanos_reduction_vop_min_uchar(int i, void *arg1, void *arg2); 2.1661 +void nanos_reduction_bop_min_schar(void *arg1, void *arg2); 2.1662 +void nanos_reduction_vop_min_schar(int i, void *arg1, void *arg2); 2.1663 +void nanos_reduction_bop_min_short(void *arg1, void *arg2); 2.1664 +void nanos_reduction_vop_min_short(int i, void *arg1, void *arg2); 2.1665 +void nanos_reduction_bop_min_ushort(void *arg1, void *arg2); 2.1666 +void nanos_reduction_vop_min_ushort(int i, void *arg1, void *arg2); 2.1667 +void nanos_reduction_bop_min_int(void *arg1, void *arg2); 2.1668 +void nanos_reduction_vop_min_int(int i, void *arg1, void *arg2); 2.1669 +void nanos_reduction_bop_min_uint(void *arg1, void *arg2); 2.1670 +void nanos_reduction_vop_min_uint(int i, void *arg1, void *arg2); 2.1671 +void nanos_reduction_bop_min_long(void *arg1, void *arg2); 2.1672 +void nanos_reduction_vop_min_long(int i, void *arg1, void *arg2); 2.1673 +void nanos_reduction_bop_min_ulong(void *arg1, void *arg2); 2.1674 +void nanos_reduction_vop_min_ulong(int i, void *arg1, void *arg2); 2.1675 +void nanos_reduction_bop_min_longlong(void *arg1, void *arg2); 2.1676 +void nanos_reduction_vop_min_longlong(int i, void *arg1, void *arg2); 2.1677 +void nanos_reduction_bop_min_ulonglong(void *arg1, void *arg2); 2.1678 +void nanos_reduction_vop_min_ulonglong(int i, void *arg1, void *arg2); 2.1679 +void nanos_reduction_bop_min__Bool(void *arg1, void *arg2); 2.1680 +void nanos_reduction_vop_min__Bool(int i, void *arg1, void *arg2); 2.1681 +void nanos_reduction_bop_min_float(void *arg1, void *arg2); 2.1682 +void nanos_reduction_vop_min_float(int i, void *arg1, void *arg2); 2.1683 +void nanos_reduction_bop_min_double(void *arg1, void *arg2); 2.1684 +void nanos_reduction_vop_min_double(int i, void *arg1, void *arg2); 2.1685 +void nanos_reduction_bop_min_longdouble(void *arg1, void *arg2); 2.1686 +void nanos_reduction_vop_min_longdouble(int i, void *arg1, void *arg2); 2.1687 +void nanos_reduction_default_cleanup_char(void *r); 2.1688 +void nanos_reduction_default_cleanup_uchar(void *r); 2.1689 +void nanos_reduction_default_cleanup_schar(void *r); 2.1690 +void nanos_reduction_default_cleanup_short(void *r); 2.1691 +void nanos_reduction_default_cleanup_ushort(void *r); 2.1692 +void nanos_reduction_default_cleanup_int(void *r); 2.1693 +void nanos_reduction_default_cleanup_uint(void *r); 2.1694 +void nanos_reduction_default_cleanup_long(void *r); 2.1695 +void nanos_reduction_default_cleanup_ulong(void *r); 2.1696 +void nanos_reduction_default_cleanup_longlong(void *r); 2.1697 +void nanos_reduction_default_cleanup_ulonglong(void *r); 2.1698 +void nanos_reduction_default_cleanup__Bool(void *r); 2.1699 +void nanos_reduction_default_cleanup_float(void *r); 2.1700 +void nanos_reduction_default_cleanup_double(void *r); 2.1701 +void nanos_reduction_default_cleanup_longdouble(void *r); 2.1702 +typedef void *omp_lock_t; 2.1703 +typedef void *omp_nest_lock_t; 2.1704 +typedef enum omp_sched_t 2.1705 +{ 2.1706 + omp_sched_static = 1, 2.1707 + omp_sched_dynamic = 2, 2.1708 + omp_sched_guided = 3, 2.1709 + omp_sched_auto = 4 2.1710 +} omp_sched_t; 2.1711 +extern void omp_set_num_threads(int num_threads); 2.1712 +extern int omp_get_num_threads(void); 2.1713 +extern int omp_get_max_threads(void); 2.1714 +extern int omp_get_thread_num(void); 2.1715 +extern int omp_get_num_procs(void); 2.1716 +extern int omp_in_parallel(void); 2.1717 +extern void omp_set_dynamic(int dynamic_threads); 2.1718 +extern int omp_get_dynamic(void); 2.1719 +extern void omp_set_nested(int nested); 2.1720 +extern int omp_get_nested(void); 2.1721 +extern int omp_get_thread_limit(void); 2.1722 +extern void omp_set_max_active_levels(int max_active_levels); 2.1723 +extern int omp_get_max_active_levels(void); 2.1724 +extern void omp_set_schedule(omp_sched_t kind, int modifier); 2.1725 +extern void omp_get_schedule(omp_sched_t *kind, int *modifier); 2.1726 +extern int omp_get_level(void); 2.1727 +extern int omp_get_ancestor_thread_num(int level); 2.1728 +extern int omp_get_team_size(int level); 2.1729 +extern int omp_get_active_level(void); 2.1730 +extern void omp_init_lock(omp_lock_t *lock); 2.1731 +extern void omp_destroy_lock(omp_lock_t *lock); 2.1732 +extern void omp_set_lock(omp_lock_t *lock); 2.1733 +extern void omp_unset_lock(omp_lock_t *lock); 2.1734 +extern int omp_test_lock(omp_lock_t *lock); 2.1735 +extern void omp_init_nest_lock(omp_nest_lock_t *lock); 2.1736 +extern void omp_destroy_nest_lock(omp_nest_lock_t *lock); 2.1737 +extern void omp_set_nest_lock(omp_nest_lock_t *lock); 2.1738 +extern void omp_unset_nest_lock(omp_nest_lock_t *lock); 2.1739 +extern int omp_test_nest_lock(omp_nest_lock_t *lock); 2.1740 +extern double omp_get_wtime(void); 2.1741 +extern double omp_get_wtick(void); 2.1742 +extern int omp_in_final(void); 2.1743 +nanos_err_t nanos_omp_single(_Bool *); 2.1744 +nanos_err_t nanos_omp_barrier(void); 2.1745 +void nanos_omp_set_interface(void *); 2.1746 +nanos_err_t nanos_omp_set_implicit(nanos_wd_t uwd); 2.1747 +int nanos_omp_get_max_threads(void); 2.1748 +nanos_ws_t nanos_omp_find_worksharing(omp_sched_t kind); 2.1749 +nanos_err_t nanos_omp_get_schedule(omp_sched_t *kind, int *modifier); 2.1750 +typedef __time_t time_t; 2.1751 +struct timespec 2.1752 +{ 2.1753 + __time_t tv_sec; 2.1754 + long int tv_nsec; 2.1755 +}; 2.1756 +struct sched_param 2.1757 +{ 2.1758 + int __sched_priority; 2.1759 +}; 2.1760 +struct __sched_param 2.1761 +{ 2.1762 + int __sched_priority; 2.1763 +}; 2.1764 +typedef unsigned long int __cpu_mask; 2.1765 +typedef struct 2.1766 +{ 2.1767 + __cpu_mask __bits[1024 / (8 * sizeof(__cpu_mask))]; 2.1768 +} cpu_set_t; 2.1769 +extern int __sched_cpucount(size_t __setsize, const cpu_set_t *__setp) __attribute__((__nothrow__, __leaf__)); 2.1770 +extern cpu_set_t *__sched_cpualloc(size_t __count) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.1771 +extern void __sched_cpufree(cpu_set_t *__set) __attribute__((__nothrow__, __leaf__)); 2.1772 +extern int sched_setparam(__pid_t __pid, __const struct sched_param *__param) __attribute__((__nothrow__, __leaf__)); 2.1773 +extern int sched_getparam(__pid_t __pid, struct sched_param *__param) __attribute__((__nothrow__, __leaf__)); 2.1774 +extern int sched_setscheduler(__pid_t __pid, int __policy, __const struct sched_param *__param) __attribute__((__nothrow__, __leaf__)); 2.1775 +extern int sched_getscheduler(__pid_t __pid) __attribute__((__nothrow__, __leaf__)); 2.1776 +extern int sched_yield(void) __attribute__((__nothrow__, __leaf__)); 2.1777 +extern int sched_get_priority_max(int __algorithm) __attribute__((__nothrow__, __leaf__)); 2.1778 +extern int sched_get_priority_min(int __algorithm) __attribute__((__nothrow__, __leaf__)); 2.1779 +extern int sched_rr_get_interval(__pid_t __pid, struct timespec *__t) __attribute__((__nothrow__, __leaf__)); 2.1780 +typedef __clock_t clock_t; 2.1781 +typedef __clockid_t clockid_t; 2.1782 +typedef __timer_t timer_t; 2.1783 +struct tm 2.1784 +{ 2.1785 + int tm_sec; 2.1786 + int tm_min; 2.1787 + int tm_hour; 2.1788 + int tm_mday; 2.1789 + int tm_mon; 2.1790 + int tm_year; 2.1791 + int tm_wday; 2.1792 + int tm_yday; 2.1793 + int tm_isdst; 2.1794 + long int tm_gmtoff; 2.1795 + __const char *tm_zone; 2.1796 +}; 2.1797 +struct itimerspec 2.1798 +{ 2.1799 + struct timespec it_interval; 2.1800 + struct timespec it_value; 2.1801 +}; 2.1802 +struct sigevent; 2.1803 +extern clock_t clock(void) __attribute__((__nothrow__, __leaf__)); 2.1804 +extern time_t time(time_t *__timer) __attribute__((__nothrow__, __leaf__)); 2.1805 +extern double difftime(time_t __time1, time_t __time0) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.1806 +extern time_t mktime(struct tm *__tp) __attribute__((__nothrow__, __leaf__)); 2.1807 +extern size_t strftime(char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp) __attribute__((__nothrow__, __leaf__)); 2.1808 +typedef struct __locale_struct 2.1809 +{ 2.1810 + struct __locale_data *__locales[13]; 2.1811 + const unsigned short int *__ctype_b; 2.1812 + const int *__ctype_tolower; 2.1813 + const int *__ctype_toupper; 2.1814 + const char *__names[13]; 2.1815 +} *__locale_t; 2.1816 +typedef __locale_t locale_t; 2.1817 +extern size_t strftime_l(char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp, __locale_t __loc) __attribute__((__nothrow__, __leaf__)); 2.1818 +extern struct tm *gmtime(__const time_t *__timer) __attribute__((__nothrow__, __leaf__)); 2.1819 +extern struct tm *localtime(__const time_t *__timer) __attribute__((__nothrow__, __leaf__)); 2.1820 +extern struct tm *gmtime_r(__const time_t *__restrict __timer, struct tm *__restrict __tp) __attribute__((__nothrow__, __leaf__)); 2.1821 +extern struct tm *localtime_r(__const time_t *__restrict __timer, struct tm *__restrict __tp) __attribute__((__nothrow__, __leaf__)); 2.1822 +extern char *asctime(__const struct tm *__tp) __attribute__((__nothrow__, __leaf__)); 2.1823 +extern char *ctime(__const time_t *__timer) __attribute__((__nothrow__, __leaf__)); 2.1824 +extern char *asctime_r(__const struct tm *__restrict __tp, char *__restrict __buf) __attribute__((__nothrow__, __leaf__)); 2.1825 +extern char *ctime_r(__const time_t *__restrict __timer, char *__restrict __buf) __attribute__((__nothrow__, __leaf__)); 2.1826 +extern char *__tzname[2]; 2.1827 +extern int __daylight; 2.1828 +extern long int __timezone; 2.1829 +extern char *tzname[2]; 2.1830 +extern void tzset(void) __attribute__((__nothrow__, __leaf__)); 2.1831 +extern int daylight; 2.1832 +extern long int timezone; 2.1833 +extern int stime(__const time_t *__when) __attribute__((__nothrow__, __leaf__)); 2.1834 +extern time_t timegm(struct tm *__tp) __attribute__((__nothrow__, __leaf__)); 2.1835 +extern time_t timelocal(struct tm *__tp) __attribute__((__nothrow__, __leaf__)); 2.1836 +extern int dysize(int __year) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.1837 +extern int nanosleep(__const struct timespec *__requested_time, struct timespec *__remaining); 2.1838 +extern int clock_getres(clockid_t __clock_id, struct timespec *__res) __attribute__((__nothrow__, __leaf__)); 2.1839 +extern int clock_gettime(clockid_t __clock_id, struct timespec *__tp) __attribute__((__nothrow__, __leaf__)); 2.1840 +extern int clock_settime(clockid_t __clock_id, __const struct timespec *__tp) __attribute__((__nothrow__, __leaf__)); 2.1841 +extern int clock_nanosleep(clockid_t __clock_id, int __flags, __const struct timespec *__req, struct timespec *__rem); 2.1842 +extern int clock_getcpuclockid(pid_t __pid, clockid_t *__clock_id) __attribute__((__nothrow__, __leaf__)); 2.1843 +extern int timer_create(clockid_t __clock_id, struct sigevent *__restrict __evp, timer_t *__restrict __timerid) __attribute__((__nothrow__, __leaf__)); 2.1844 +extern int timer_delete(timer_t __timerid) __attribute__((__nothrow__, __leaf__)); 2.1845 +extern int timer_settime(timer_t __timerid, int __flags, __const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) __attribute__((__nothrow__, __leaf__)); 2.1846 +extern int timer_gettime(timer_t __timerid, struct itimerspec *__value) __attribute__((__nothrow__, __leaf__)); 2.1847 +extern int timer_getoverrun(timer_t __timerid) __attribute__((__nothrow__, __leaf__)); 2.1848 +typedef unsigned long int pthread_t; 2.1849 +typedef union 2.1850 +{ 2.1851 + char __size[56]; 2.1852 + long int __align; 2.1853 +} pthread_attr_t; 2.1854 +typedef struct __pthread_internal_list 2.1855 +{ 2.1856 + struct __pthread_internal_list *__prev; 2.1857 + struct __pthread_internal_list *__next; 2.1858 +} __pthread_list_t; 2.1859 +typedef union 2.1860 +{ 2.1861 + struct __pthread_mutex_s 2.1862 + { 2.1863 + int __lock; 2.1864 + unsigned int __count; 2.1865 + int __owner; 2.1866 + unsigned int __nusers; 2.1867 + int __kind; 2.1868 + int __spins; 2.1869 + __pthread_list_t __list; 2.1870 + } __data; 2.1871 + char __size[40]; 2.1872 + long int __align; 2.1873 +} pthread_mutex_t; 2.1874 +typedef union 2.1875 +{ 2.1876 + char __size[4]; 2.1877 + int __align; 2.1878 +} pthread_mutexattr_t; 2.1879 +typedef union 2.1880 +{ 2.1881 + struct 2.1882 + { 2.1883 + int __lock; 2.1884 + unsigned int __futex; 2.1885 + __extension__ 2.1886 + unsigned long long int __total_seq; 2.1887 + __extension__ 2.1888 + unsigned long long int __wakeup_seq; 2.1889 + __extension__ 2.1890 + unsigned long long int __woken_seq; 2.1891 + void *__mutex; 2.1892 + unsigned int __nwaiters; 2.1893 + unsigned int __broadcast_seq; 2.1894 + } __data; 2.1895 + char __size[48]; 2.1896 + __extension__ 2.1897 + long long int __align; 2.1898 +} pthread_cond_t; 2.1899 +typedef union 2.1900 +{ 2.1901 + char __size[4]; 2.1902 + int __align; 2.1903 +} pthread_condattr_t; 2.1904 +typedef unsigned int pthread_key_t; 2.1905 +typedef int pthread_once_t; 2.1906 +typedef union 2.1907 +{ 2.1908 + struct 2.1909 + { 2.1910 + int __lock; 2.1911 + unsigned int __nr_readers; 2.1912 + unsigned int __readers_wakeup; 2.1913 + unsigned int __writer_wakeup; 2.1914 + unsigned int __nr_readers_queued; 2.1915 + unsigned int __nr_writers_queued; 2.1916 + int __writer; 2.1917 + int __shared; 2.1918 + unsigned long int __pad1; 2.1919 + unsigned long int __pad2; 2.1920 + unsigned int __flags; 2.1921 + } __data; 2.1922 + char __size[56]; 2.1923 + long int __align; 2.1924 +} pthread_rwlock_t; 2.1925 +typedef union 2.1926 +{ 2.1927 + char __size[8]; 2.1928 + long int __align; 2.1929 +} pthread_rwlockattr_t; 2.1930 +typedef volatile int pthread_spinlock_t; 2.1931 +typedef union 2.1932 +{ 2.1933 + char __size[32]; 2.1934 + long int __align; 2.1935 +} pthread_barrier_t; 2.1936 +typedef union 2.1937 +{ 2.1938 + char __size[4]; 2.1939 + int __align; 2.1940 +} pthread_barrierattr_t; 2.1941 +typedef long int __jmp_buf[8]; 2.1942 +enum 2.1943 +{ 2.1944 + PTHREAD_CREATE_JOINABLE, 2.1945 + PTHREAD_CREATE_DETACHED 2.1946 +}; 2.1947 +enum 2.1948 +{ 2.1949 + PTHREAD_MUTEX_TIMED_NP, 2.1950 + PTHREAD_MUTEX_RECURSIVE_NP, 2.1951 + PTHREAD_MUTEX_ERRORCHECK_NP, 2.1952 + PTHREAD_MUTEX_ADAPTIVE_NP, 2.1953 + PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, 2.1954 + PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, 2.1955 + PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, 2.1956 + PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL 2.1957 +}; 2.1958 +enum 2.1959 +{ 2.1960 + PTHREAD_MUTEX_STALLED, 2.1961 + PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, 2.1962 + PTHREAD_MUTEX_ROBUST, 2.1963 + PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST 2.1964 +}; 2.1965 +enum 2.1966 +{ 2.1967 + PTHREAD_RWLOCK_PREFER_READER_NP, 2.1968 + PTHREAD_RWLOCK_PREFER_WRITER_NP, 2.1969 + PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, 2.1970 + PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP 2.1971 +}; 2.1972 +enum 2.1973 +{ 2.1974 + PTHREAD_INHERIT_SCHED, 2.1975 + PTHREAD_EXPLICIT_SCHED 2.1976 +}; 2.1977 +enum 2.1978 +{ 2.1979 + PTHREAD_SCOPE_SYSTEM, 2.1980 + PTHREAD_SCOPE_PROCESS 2.1981 +}; 2.1982 +enum 2.1983 +{ 2.1984 + PTHREAD_PROCESS_PRIVATE, 2.1985 + PTHREAD_PROCESS_SHARED 2.1986 +}; 2.1987 +struct _pthread_cleanup_buffer 2.1988 +{ 2.1989 + void (*__routine)(void *); 2.1990 + void *__arg; 2.1991 + int __canceltype; 2.1992 + struct _pthread_cleanup_buffer *__prev; 2.1993 +}; 2.1994 +enum 2.1995 +{ 2.1996 + PTHREAD_CANCEL_ENABLE, 2.1997 + PTHREAD_CANCEL_DISABLE 2.1998 +}; 2.1999 +enum 2.2000 +{ 2.2001 + PTHREAD_CANCEL_DEFERRED, 2.2002 + PTHREAD_CANCEL_ASYNCHRONOUS 2.2003 +}; 2.2004 +extern int pthread_create(pthread_t *__restrict __newthread, __const pthread_attr_t *__restrict __attr, void *(*__start_routine)(void *), void *__restrict __arg) __attribute__((__nothrow__)) __attribute__((__nonnull__(1, 3))); 2.2005 +extern void pthread_exit(void *__retval) __attribute__((__noreturn__)); 2.2006 +extern int pthread_join(pthread_t __th, void **__thread_return); 2.2007 +extern int pthread_detach(pthread_t __th) __attribute__((__nothrow__, __leaf__)); 2.2008 +extern pthread_t pthread_self(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2009 +extern int pthread_equal(pthread_t __thread1, pthread_t __thread2) __attribute__((__nothrow__, __leaf__)); 2.2010 +extern int pthread_attr_init(pthread_attr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2011 +extern int pthread_attr_destroy(pthread_attr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2012 +extern int pthread_attr_getdetachstate(__const pthread_attr_t *__attr, int *__detachstate) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2013 +extern int pthread_attr_setdetachstate(pthread_attr_t *__attr, int __detachstate) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2014 +extern int pthread_attr_getguardsize(__const pthread_attr_t *__attr, size_t *__guardsize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2015 +extern int pthread_attr_setguardsize(pthread_attr_t *__attr, size_t __guardsize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2016 +extern int pthread_attr_getschedparam(__const pthread_attr_t *__restrict __attr, struct sched_param *__restrict __param) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2017 +extern int pthread_attr_setschedparam(pthread_attr_t *__restrict __attr, __const struct sched_param *__restrict __param) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2018 +extern int pthread_attr_getschedpolicy(__const pthread_attr_t *__restrict __attr, int *__restrict __policy) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2019 +extern int pthread_attr_setschedpolicy(pthread_attr_t *__attr, int __policy) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2020 +extern int pthread_attr_getinheritsched(__const pthread_attr_t *__restrict __attr, int *__restrict __inherit) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2021 +extern int pthread_attr_setinheritsched(pthread_attr_t *__attr, int __inherit) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2022 +extern int pthread_attr_getscope(__const pthread_attr_t *__restrict __attr, int *__restrict __scope) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2023 +extern int pthread_attr_setscope(pthread_attr_t *__attr, int __scope) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2024 +extern int pthread_attr_getstackaddr(__const pthread_attr_t *__restrict __attr, void **__restrict __stackaddr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__deprecated__)); 2.2025 +extern int pthread_attr_setstackaddr(pthread_attr_t *__attr, void *__stackaddr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__deprecated__)); 2.2026 +extern int pthread_attr_getstacksize(__const pthread_attr_t *__restrict __attr, size_t *__restrict __stacksize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2027 +extern int pthread_attr_setstacksize(pthread_attr_t *__attr, size_t __stacksize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2028 +extern int pthread_attr_getstack(__const pthread_attr_t *__restrict __attr, void **__restrict __stackaddr, size_t *__restrict __stacksize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2, 3))); 2.2029 +extern int pthread_attr_setstack(pthread_attr_t *__attr, void *__stackaddr, size_t __stacksize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2030 +extern int pthread_setschedparam(pthread_t __target_thread, int __policy, __const struct sched_param *__param) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3))); 2.2031 +extern int pthread_getschedparam(pthread_t __target_thread, int *__restrict __policy, struct sched_param *__restrict __param) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))); 2.2032 +extern int pthread_setschedprio(pthread_t __target_thread, int __prio) __attribute__((__nothrow__, __leaf__)); 2.2033 +extern int pthread_once(pthread_once_t *__once_control, void (*__init_routine)(void)) __attribute__((__nonnull__(1, 2))); 2.2034 +extern int pthread_setcancelstate(int __state, int *__oldstate); 2.2035 +extern int pthread_setcanceltype(int __type, int *__oldtype); 2.2036 +extern int pthread_cancel(pthread_t __th); 2.2037 +extern void pthread_testcancel(void); 2.2038 +typedef struct 2.2039 +{ 2.2040 + struct 2.2041 + { 2.2042 + __jmp_buf __cancel_jmp_buf; 2.2043 + int __mask_was_saved; 2.2044 + } __cancel_jmp_buf[1]; 2.2045 + void *__pad[4]; 2.2046 +} __pthread_unwind_buf_t __attribute__((__aligned__)); 2.2047 +struct __pthread_cleanup_frame 2.2048 +{ 2.2049 + void (*__cancel_routine)(void *); 2.2050 + void *__cancel_arg; 2.2051 + int __do_it; 2.2052 + int __cancel_type; 2.2053 +}; 2.2054 +extern void __pthread_register_cancel(__pthread_unwind_buf_t *__buf); 2.2055 +extern void __pthread_unregister_cancel(__pthread_unwind_buf_t *__buf); 2.2056 +extern void __pthread_unwind_next(__pthread_unwind_buf_t *__buf) __attribute__((__noreturn__)) __attribute__((__weak__)); 2.2057 +struct __jmp_buf_tag; 2.2058 +extern int __sigsetjmp(struct __jmp_buf_tag *__env, int __savemask) __attribute__((__nothrow__, __leaf__)); 2.2059 +extern int pthread_mutex_init(pthread_mutex_t *__mutex, __const pthread_mutexattr_t *__mutexattr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2060 +extern int pthread_mutex_destroy(pthread_mutex_t *__mutex) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2061 +extern int pthread_mutex_trylock(pthread_mutex_t *__mutex) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2062 +extern int pthread_mutex_lock(pthread_mutex_t *__mutex) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2063 +extern int pthread_mutex_timedlock(pthread_mutex_t *__restrict __mutex, __const struct timespec *__restrict __abstime) __attribute__((__nothrow__)) __attribute__((__nonnull__(1, 2))); 2.2064 +extern int pthread_mutex_unlock(pthread_mutex_t *__mutex) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2065 +extern int pthread_mutex_getprioceiling(__const pthread_mutex_t *__restrict __mutex, int *__restrict __prioceiling) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2066 +extern int pthread_mutex_setprioceiling(pthread_mutex_t *__restrict __mutex, int __prioceiling, int *__restrict __old_ceiling) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3))); 2.2067 +extern int pthread_mutex_consistent(pthread_mutex_t *__mutex) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2068 +extern int pthread_mutexattr_init(pthread_mutexattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2069 +extern int pthread_mutexattr_destroy(pthread_mutexattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2070 +extern int pthread_mutexattr_getpshared(__const pthread_mutexattr_t *__restrict __attr, int *__restrict __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2071 +extern int pthread_mutexattr_setpshared(pthread_mutexattr_t *__attr, int __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2072 +extern int pthread_mutexattr_gettype(__const pthread_mutexattr_t *__restrict __attr, int *__restrict __kind) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2073 +extern int pthread_mutexattr_settype(pthread_mutexattr_t *__attr, int __kind) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2074 +extern int pthread_mutexattr_getprotocol(__const pthread_mutexattr_t *__restrict __attr, int *__restrict __protocol) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2075 +extern int pthread_mutexattr_setprotocol(pthread_mutexattr_t *__attr, int __protocol) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2076 +extern int pthread_mutexattr_getprioceiling(__const pthread_mutexattr_t *__restrict __attr, int *__restrict __prioceiling) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2077 +extern int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *__attr, int __prioceiling) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2078 +extern int pthread_mutexattr_getrobust(__const pthread_mutexattr_t *__attr, int *__robustness) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2079 +extern int pthread_mutexattr_setrobust(pthread_mutexattr_t *__attr, int __robustness) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2080 +extern int pthread_rwlock_init(pthread_rwlock_t *__restrict __rwlock, __const pthread_rwlockattr_t *__restrict __attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2081 +extern int pthread_rwlock_destroy(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2082 +extern int pthread_rwlock_rdlock(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2083 +extern int pthread_rwlock_tryrdlock(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2084 +extern int pthread_rwlock_timedrdlock(pthread_rwlock_t *__restrict __rwlock, __const struct timespec *__restrict __abstime) __attribute__((__nothrow__)) __attribute__((__nonnull__(1, 2))); 2.2085 +extern int pthread_rwlock_wrlock(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2086 +extern int pthread_rwlock_trywrlock(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2087 +extern int pthread_rwlock_timedwrlock(pthread_rwlock_t *__restrict __rwlock, __const struct timespec *__restrict __abstime) __attribute__((__nothrow__)) __attribute__((__nonnull__(1, 2))); 2.2088 +extern int pthread_rwlock_unlock(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2089 +extern int pthread_rwlockattr_init(pthread_rwlockattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2090 +extern int pthread_rwlockattr_destroy(pthread_rwlockattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2091 +extern int pthread_rwlockattr_getpshared(__const pthread_rwlockattr_t *__restrict __attr, int *__restrict __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2092 +extern int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *__attr, int __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2093 +extern int pthread_rwlockattr_getkind_np(__const pthread_rwlockattr_t *__restrict __attr, int *__restrict __pref) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2094 +extern int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t *__attr, int __pref) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2095 +extern int pthread_cond_init(pthread_cond_t *__restrict __cond, __const pthread_condattr_t *__restrict __cond_attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2096 +extern int pthread_cond_destroy(pthread_cond_t *__cond) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2097 +extern int pthread_cond_signal(pthread_cond_t *__cond) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2098 +extern int pthread_cond_broadcast(pthread_cond_t *__cond) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2099 +extern int pthread_cond_wait(pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex) __attribute__((__nonnull__(1, 2))); 2.2100 +extern int pthread_cond_timedwait(pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, __const struct timespec *__restrict __abstime) __attribute__((__nonnull__(1, 2, 3))); 2.2101 +extern int pthread_condattr_init(pthread_condattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2102 +extern int pthread_condattr_destroy(pthread_condattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2103 +extern int pthread_condattr_getpshared(__const pthread_condattr_t *__restrict __attr, int *__restrict __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2104 +extern int pthread_condattr_setpshared(pthread_condattr_t *__attr, int __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2105 +extern int pthread_condattr_getclock(__const pthread_condattr_t *__restrict __attr, __clockid_t *__restrict __clock_id) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2106 +extern int pthread_condattr_setclock(pthread_condattr_t *__attr, __clockid_t __clock_id) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2107 +extern int pthread_spin_init(pthread_spinlock_t *__lock, int __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2108 +extern int pthread_spin_destroy(pthread_spinlock_t *__lock) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2109 +extern int pthread_spin_lock(pthread_spinlock_t *__lock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2110 +extern int pthread_spin_trylock(pthread_spinlock_t *__lock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2111 +extern int pthread_spin_unlock(pthread_spinlock_t *__lock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2112 +extern int pthread_barrier_init(pthread_barrier_t *__restrict __barrier, __const pthread_barrierattr_t *__restrict __attr, unsigned int __count) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2113 +extern int pthread_barrier_destroy(pthread_barrier_t *__barrier) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2114 +extern int pthread_barrier_wait(pthread_barrier_t *__barrier) __attribute__((__nothrow__)) __attribute__((__nonnull__(1))); 2.2115 +extern int pthread_barrierattr_init(pthread_barrierattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2116 +extern int pthread_barrierattr_destroy(pthread_barrierattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2117 +extern int pthread_barrierattr_getpshared(__const pthread_barrierattr_t *__restrict __attr, int *__restrict __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.2118 +extern int pthread_barrierattr_setpshared(pthread_barrierattr_t *__attr, int __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2119 +extern int pthread_key_create(pthread_key_t *__key, void (*__destr_function)(void *)) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.2120 +extern int pthread_key_delete(pthread_key_t __key) __attribute__((__nothrow__, __leaf__)); 2.2121 +extern void *pthread_getspecific(pthread_key_t __key) __attribute__((__nothrow__, __leaf__)); 2.2122 +extern int pthread_setspecific(pthread_key_t __key, __const void *__pointer) __attribute__((__nothrow__, __leaf__)); 2.2123 +extern int pthread_getcpuclockid(pthread_t __thread_id, __clockid_t *__clock_id) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.2124 +extern int pthread_atfork(void (*__prepare)(void), void (*__parent)(void), void (*__child)(void)) __attribute__((__nothrow__, __leaf__)); 2.2125 +extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) pthread_equal(pthread_t __thread1, pthread_t __thread2) 2.2126 +{ 2.2127 + return __thread1 == __thread2; 2.2128 +} 2.2129 +extern int *__errno_location(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2130 +void *av_malloc(unsigned int size) __attribute__((__malloc__)); 2.2131 +void *av_realloc(void *ptr, unsigned int size); 2.2132 +void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size); 2.2133 +void av_fast_malloc(void *ptr, unsigned int *size, unsigned int min_size); 2.2134 +void av_free(void *ptr); 2.2135 +void *av_mallocz(unsigned int size) __attribute__((__malloc__)); 2.2136 +char *av_strdup(const char *s) __attribute__((__malloc__)); 2.2137 +void av_freep(void *ptr); 2.2138 +static __attribute__((always_inline)) inline uint32_t pack16to32(int a, int b) 2.2139 +{ 2.2140 + return (a & 0xFFFF) + (b << 16); 2.2141 +} 2.2142 +static __attribute__((always_inline)) inline uint16_t pack8to16(int a, int b) 2.2143 +{ 2.2144 + return (a & 0xFF) + (b << 8); 2.2145 +} 2.2146 +typedef short DCTELEM; 2.2147 +enum AVColorPrimaries 2.2148 +{ 2.2149 + AVCOL_PRI_BT709 = 1, 2.2150 + AVCOL_PRI_UNSPECIFIED = 2, 2.2151 + AVCOL_PRI_BT470M = 4, 2.2152 + AVCOL_PRI_BT470BG = 5, 2.2153 + AVCOL_PRI_SMPTE170M = 6, 2.2154 + AVCOL_PRI_SMPTE240M = 7, 2.2155 + AVCOL_PRI_FILM = 8, 2.2156 + AVCOL_PRI_NB 2.2157 +}; 2.2158 +enum AVColorTransferCharacteristic 2.2159 +{ 2.2160 + AVCOL_TRC_BT709 = 1, 2.2161 + AVCOL_TRC_UNSPECIFIED = 2, 2.2162 + AVCOL_TRC_GAMMA22 = 4, 2.2163 + AVCOL_TRC_GAMMA28 = 5, 2.2164 + AVCOL_TRC_NB 2.2165 +}; 2.2166 +enum AVColorSpace 2.2167 +{ 2.2168 + AVCOL_SPC_RGB = 0, 2.2169 + AVCOL_SPC_BT709 = 1, 2.2170 + AVCOL_SPC_UNSPECIFIED = 2, 2.2171 + AVCOL_SPC_FCC = 4, 2.2172 + AVCOL_SPC_BT470BG = 5, 2.2173 + AVCOL_SPC_SMPTE170M = 6, 2.2174 + AVCOL_SPC_SMPTE240M = 7, 2.2175 + AVCOL_SPC_NB 2.2176 +}; 2.2177 +enum AVColorRange 2.2178 +{ 2.2179 + AVCOL_RANGE_UNSPECIFIED = 0, 2.2180 + AVCOL_RANGE_MPEG = 1, 2.2181 + AVCOL_RANGE_JPEG = 2, 2.2182 + AVCOL_RANGE_NB 2.2183 +}; 2.2184 +typedef enum MMCOOpcode 2.2185 +{ 2.2186 + MMCO_END = 0, 2.2187 + MMCO_SHORT2UNUSED, 2.2188 + MMCO_LONG2UNUSED, 2.2189 + MMCO_SHORT2LONG, 2.2190 + MMCO_SET_MAX_LONG, 2.2191 + MMCO_RESET, 2.2192 + MMCO_LONG 2.2193 +} MMCOOpcode; 2.2194 +enum 2.2195 +{ 2.2196 + NAL_SLICE = 1, 2.2197 + NAL_DPA, 2.2198 + NAL_DPB, 2.2199 + NAL_DPC, 2.2200 + NAL_IDR_SLICE, 2.2201 + NAL_SEI, 2.2202 + NAL_SPS, 2.2203 + NAL_PPS, 2.2204 + NAL_AUD, 2.2205 + NAL_END_SEQUENCE, 2.2206 + NAL_END_STREAM, 2.2207 + NAL_FILLER_DATA, 2.2208 + NAL_SPS_EXT, 2.2209 + NAL_AUXILIARY_SLICE = 19 2.2210 +}; 2.2211 +typedef enum 2.2212 +{ 2.2213 + SEI_BUFFERING_PERIOD = 0, 2.2214 + SEI_TYPE_PIC_TIMING = 1, 2.2215 + SEI_TYPE_USER_DATA_UNREGISTERED = 5, 2.2216 + SEI_TYPE_RECOVERY_POINT = 6 2.2217 +} SEI_Type; 2.2218 +typedef enum 2.2219 +{ 2.2220 + SEI_PIC_STRUCT_FRAME = 0, 2.2221 + SEI_PIC_STRUCT_TOP_FIELD = 1, 2.2222 + SEI_PIC_STRUCT_BOTTOM_FIELD = 2, 2.2223 + SEI_PIC_STRUCT_TOP_BOTTOM = 3, 2.2224 + SEI_PIC_STRUCT_BOTTOM_TOP = 4, 2.2225 + SEI_PIC_STRUCT_TOP_BOTTOM_TOP = 5, 2.2226 + SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM = 6, 2.2227 + SEI_PIC_STRUCT_FRAME_DOUBLING = 7, 2.2228 + SEI_PIC_STRUCT_FRAME_TRIPLING = 8 2.2229 +} SEI_PicStructType; 2.2230 +typedef struct SPS 2.2231 +{ 2.2232 + int profile_idc; 2.2233 + int level_idc; 2.2234 + int chroma_format_idc; 2.2235 + int transform_bypass; 2.2236 + int log2_max_frame_num; 2.2237 + int poc_type; 2.2238 + int log2_max_poc_lsb; 2.2239 + int delta_pic_order_always_zero_flag; 2.2240 + int offset_for_non_ref_pic; 2.2241 + int offset_for_top_to_bottom_field; 2.2242 + int poc_cycle_length; 2.2243 + int ref_frame_count; 2.2244 + int gaps_in_frame_num_allowed_flag; 2.2245 + int mb_width; 2.2246 + int mb_height; 2.2247 + int frame_mbs_only_flag; 2.2248 + int mb_aff; 2.2249 + int direct_8x8_inference_flag; 2.2250 + int crop; 2.2251 + unsigned int crop_left; 2.2252 + unsigned int crop_right; 2.2253 + unsigned int crop_top; 2.2254 + unsigned int crop_bottom; 2.2255 + int vui_parameters_present_flag; 2.2256 + int num, den; 2.2257 + int video_signal_type_present_flag; 2.2258 + int full_range; 2.2259 + int colour_description_present_flag; 2.2260 + enum AVColorPrimaries color_primaries; 2.2261 + enum AVColorTransferCharacteristic color_trc; 2.2262 + enum AVColorSpace colorspace; 2.2263 + int timing_info_present_flag; 2.2264 + uint32_t num_units_in_tick; 2.2265 + uint32_t time_scale; 2.2266 + int fixed_frame_rate_flag; 2.2267 + short offset_for_ref_frame[256]; 2.2268 + int bitstream_restriction_flag; 2.2269 + int num_reorder_frames; 2.2270 + int scaling_matrix_present; 2.2271 + uint8_t scaling_matrix4[6][16]; 2.2272 + uint8_t scaling_matrix8[2][64]; 2.2273 + int nal_hrd_parameters_present_flag; 2.2274 + int vcl_hrd_parameters_present_flag; 2.2275 + int pic_struct_present_flag; 2.2276 + int time_offset_length; 2.2277 + int cpb_cnt; 2.2278 + int initial_cpb_removal_delay_length; 2.2279 + int cpb_removal_delay_length; 2.2280 + int dpb_output_delay_length; 2.2281 + int bit_depth_luma; 2.2282 + int bit_depth_chroma; 2.2283 + int residual_color_transform_flag; 2.2284 +} SPS; 2.2285 +typedef struct PPS 2.2286 +{ 2.2287 + unsigned int sps_id; 2.2288 + int cabac; 2.2289 + int pic_order_present; 2.2290 + int slice_group_count; 2.2291 + int mb_slice_group_map_type; 2.2292 + unsigned int ref_count[2]; 2.2293 + int weighted_pred; 2.2294 + int weighted_bipred_idc; 2.2295 + int init_qp; 2.2296 + int init_qs; 2.2297 + int chroma_qp_index_offset[2]; 2.2298 + int deblocking_filter_parameters_present; 2.2299 + int constrained_intra_pred; 2.2300 + int redundant_pic_cnt_present; 2.2301 + int transform_8x8_mode; 2.2302 + uint8_t scaling_matrix4[6][16]; 2.2303 + uint8_t scaling_matrix8[2][64]; 2.2304 + uint8_t chroma_qp_table[2][64]; 2.2305 + int chroma_qp_diff; 2.2306 +} PPS; 2.2307 +typedef struct TopBorder 2.2308 +{ 2.2309 + uint8_t unfiltered_y[16]; 2.2310 + uint8_t unfiltered_cb[8]; 2.2311 + uint8_t unfiltered_cr[8]; 2.2312 + uint8_t top_borders_y[16 * 4]; 2.2313 + uint8_t top_borders_cb[8 * 2]; 2.2314 + uint8_t top_borders_cr[8 * 2]; 2.2315 +} TopBorder; 2.2316 +typedef struct LeftBorder 2.2317 +{ 2.2318 + uint8_t unfiltered_y[17]; 2.2319 + uint8_t unfiltered_cb[9]; 2.2320 + uint8_t unfiltered_cr[9]; 2.2321 +} LeftBorder; 2.2322 +typedef struct H264Mb 2.2323 +{ 2.2324 + int16_t mb_x, mb_y; 2.2325 + int32_t mb_type; 2.2326 + uint16_t cbp; 2.2327 + int8_t qscale_mb_xy; 2.2328 + int8_t qscale_left_mb_xy; 2.2329 + int8_t qscale_top_mb_xy; 2.2330 + uint16_t __attribute__((aligned(8))) sub_mb_type[4]; 2.2331 + uint8_t __attribute__((aligned(8))) non_zero_count[24]; 2.2332 + int16_t __attribute__((aligned(16))) mb[16 * 24]; 2.2333 + union 2.2334 + { 2.2335 + struct 2.2336 + { 2.2337 + int8_t __attribute__((aligned(8))) ref_index[2][4]; 2.2338 + int16_t __attribute__((aligned(16))) mvd[2][16][2]; 2.2339 + }; 2.2340 + struct 2.2341 + { 2.2342 + int8_t __attribute__((aligned(8))) intra4x4_pred_mode[16]; 2.2343 + int8_t chroma_pred_mode; 2.2344 + int8_t intra16x16_pred_mode; 2.2345 + }; 2.2346 + }; 2.2347 + uint8_t __attribute__((aligned(8))) top_border[16 + 2 * 8]; 2.2348 + uint8_t __attribute__((aligned(8))) top_border_next[8]; 2.2349 + uint8_t __attribute__((aligned(8))) left_border[17 + 2 * 9]; 2.2350 + int8_t intra4x4_pred_mode_left[4]; 2.2351 +} H264Mb; 2.2352 +typedef struct RawFrame 2.2353 +{ 2.2354 + uint8_t *data; 2.2355 + int size; 2.2356 + unsigned int data_size; 2.2357 + int64_t pos; 2.2358 + int state; 2.2359 +} RawFrame; 2.2360 +typedef struct PictureInfo 2.2361 +{ 2.2362 + int ref_poc[2][16]; 2.2363 + int ref_count[2]; 2.2364 + int poc; 2.2365 + int frame_num; 2.2366 + int pic_id; 2.2367 + int long_ref; 2.2368 + int cpn; 2.2369 + int slice_type_nos; 2.2370 + int reference; 2.2371 +} PictureInfo; 2.2372 +typedef struct DecodedPicture 2.2373 +{ 2.2374 + int16_t (*motion_val[2])[2]; 2.2375 + int16_t (*motion_val_base[2])[2]; 2.2376 + int8_t *ref_index[2]; 2.2377 + uint32_t *mb_type; 2.2378 + uint32_t *mb_type_base; 2.2379 + int8_t *intra4x4_pred_mode; 2.2380 + int8_t *non_zero_count; 2.2381 + uint8_t *data[3]; 2.2382 + int linesize[3]; 2.2383 + uint8_t *base[3]; 2.2384 + int cpn; 2.2385 + int poc; 2.2386 + int reference; 2.2387 + int key_frame; 2.2388 + int mmco_reset; 2.2389 +} DecodedPicture; 2.2390 +extern void __assert_fail(__const char *__assertion, __const char *__file, unsigned int __line, __const char *__function) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__)); 2.2391 +extern void __assert_perror_fail(int __errnum, __const char *__file, unsigned int __line, __const char *__function) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__)); 2.2392 +extern void __assert(const char *__assertion, const char *__file, int __line) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__)); 2.2393 +typedef int64_t x86_reg; 2.2394 +typedef struct CABACContext 2.2395 +{ 2.2396 + int low; 2.2397 + int range; 2.2398 + int outstanding_count; 2.2399 + const uint8_t *bytestream_start; 2.2400 + const uint8_t *bytestream; 2.2401 + const uint8_t *bytestream_end; 2.2402 + uint8_t cabac_state[460]; 2.2403 +} CABACContext; 2.2404 +extern uint8_t ff_h264_mlps_state[4 * 64]; 2.2405 +extern uint8_t ff_h264_lps_range[4 * 2 * 64]; 2.2406 +extern uint8_t ff_h264_mps_state[2 * 64]; 2.2407 +extern uint8_t ff_h264_lps_state[2 * 64]; 2.2408 +extern const uint8_t ff_h264_norm_shift[512]; 2.2409 +void ff_init_cabac_decoder(CABACContext *c, const uint8_t *buf, int buf_size); 2.2410 +void ff_init_cabac_states(void); 2.2411 +static void refill(CABACContext *c) 2.2412 +{ 2.2413 + c->low += (c->bytestream[0] << 9) + (c->bytestream[1] << 1); 2.2414 + c->low -= ((1 << 16) - 1); 2.2415 + c->bytestream += 16 / 8; 2.2416 +} 2.2417 +static void refill2(CABACContext *c) 2.2418 +{ 2.2419 + int i, x; 2.2420 + x = c->low ^ (c->low - 1); 2.2421 + i = 7 - ff_h264_norm_shift[x >> (16 - 1)]; 2.2422 + x = - ((1 << 16) - 1); 2.2423 + x += (c->bytestream[0] << 9) + (c->bytestream[1] << 1); 2.2424 + c->low += x << i; 2.2425 + c->bytestream += 16 / 8; 2.2426 +} 2.2427 +static inline void renorm_cabac_decoder(CABACContext *c) 2.2428 +{ 2.2429 + while (c->range < 0x100) 2.2430 + { 2.2431 + c->range += c->range; 2.2432 + c->low += c->low; 2.2433 + if (!(c->low & ((1 << 16) - 1))) 2.2434 + refill(c); 2.2435 + } 2.2436 +} 2.2437 +static inline void renorm_cabac_decoder_once(CABACContext *c) 2.2438 +{ 2.2439 + int shift = (uint32_t) (c->range - 0x100) >> 31; 2.2440 + c->range <<= shift; 2.2441 + c->low <<= shift; 2.2442 + if (!(c->low & ((1 << 16) - 1))) 2.2443 + refill(c); 2.2444 +} 2.2445 +static __attribute__((always_inline)) inline int get_cabac_inline(CABACContext *c, uint8_t *const state) 2.2446 +{ 2.2447 + int s = *state; 2.2448 + int RangeLPS = ff_h264_lps_range[2 * (c->range & 0xC0) + s]; 2.2449 + int bit, lps_mask __attribute__((unused)); 2.2450 + c->range -= RangeLPS; 2.2451 + lps_mask = ((c->range << (16 + 1)) - c->low) >> 31; 2.2452 + c->low -= (c->range << (16 + 1)) & lps_mask; 2.2453 + c->range += (RangeLPS - c->range) & lps_mask; 2.2454 + s ^= lps_mask; 2.2455 + *state = (ff_h264_mlps_state + 128)[s]; 2.2456 + bit = s & 1; 2.2457 + lps_mask = ff_h264_norm_shift[c->range]; 2.2458 + c->range <<= lps_mask; 2.2459 + c->low <<= lps_mask; 2.2460 + if (!(c->low & ((1 << 16) - 1))) 2.2461 + refill2(c); 2.2462 + return bit; 2.2463 +} 2.2464 +static int __attribute__((noinline)) __attribute__((unused)) get_cabac_noinline(CABACContext *c, uint8_t *const state) 2.2465 +{ 2.2466 + return get_cabac_inline(c, state); 2.2467 +} 2.2468 +static int __attribute__((unused)) get_cabac(CABACContext *c, uint8_t *const state) 2.2469 +{ 2.2470 + return get_cabac_inline(c, state); 2.2471 +} 2.2472 +static int __attribute__((unused)) get_cabac_bypass(CABACContext *c) 2.2473 +{ 2.2474 + int range; 2.2475 + c->low += c->low; 2.2476 + if (!(c->low & ((1 << 16) - 1))) 2.2477 + refill(c); 2.2478 + range = c->range << (16 + 1); 2.2479 + if (c->low < range) 2.2480 + { 2.2481 + return 0; 2.2482 + } 2.2483 + else 2.2484 + { 2.2485 + c->low -= range; 2.2486 + return 1; 2.2487 + } 2.2488 +} 2.2489 +static __attribute__((always_inline)) inline int get_cabac_bypass_sign(CABACContext *c, int val) 2.2490 +{ 2.2491 + int range, mask; 2.2492 + c->low += c->low; 2.2493 + if (!(c->low & ((1 << 16) - 1))) 2.2494 + refill(c); 2.2495 + range = c->range << (16 + 1); 2.2496 + c->low -= range; 2.2497 + mask = c->low >> 31; 2.2498 + range &= mask; 2.2499 + c->low += range; 2.2500 + return (val ^ mask) - mask; 2.2501 +} 2.2502 +static int __attribute__((unused)) get_cabac_terminate(CABACContext *c) 2.2503 +{ 2.2504 + c->range -= 2; 2.2505 + if (c->low < c->range << (16 + 1)) 2.2506 + { 2.2507 + renorm_cabac_decoder_once(c); 2.2508 + return 0; 2.2509 + } 2.2510 + else 2.2511 + { 2.2512 + return c->bytestream - c->bytestream_start; 2.2513 + } 2.2514 +} 2.2515 +static __attribute__((always_inline)) inline __attribute__((const)) uint16_t bswap_16(uint16_t x) 2.2516 +{ 2.2517 + __asm__ ("rorw $8, %0": "+r" (x): ); 2.2518 + return x; 2.2519 +} 2.2520 +static __attribute__((always_inline)) inline __attribute__((const)) uint32_t bswap_32(uint32_t x) 2.2521 +{ 2.2522 + __asm__ ("bswap %0": "+r" (x): ); 2.2523 + return x; 2.2524 +} 2.2525 +static inline uint64_t __attribute__((const)) bswap_64(uint64_t x) 2.2526 +{ 2.2527 + __asm__ ("bswap %0": "=r" (x): "0" (x)); 2.2528 + return x; 2.2529 +} 2.2530 +enum 2.2531 +{ 2.2532 + _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), 2.2533 + _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), 2.2534 + _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), 2.2535 + _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), 2.2536 + _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), 2.2537 + _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), 2.2538 + _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), 2.2539 + _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), 2.2540 + _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), 2.2541 + _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), 2.2542 + _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), 2.2543 + _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) 2.2544 +}; 2.2545 +extern __const unsigned short int **__ctype_b_loc(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const)); 2.2546 +extern __const __int32_t **__ctype_tolower_loc(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const)); 2.2547 +extern __const __int32_t **__ctype_toupper_loc(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const)); 2.2548 +extern int isalnum(int) __attribute__((__nothrow__, __leaf__)); 2.2549 +extern int isalpha(int) __attribute__((__nothrow__, __leaf__)); 2.2550 +extern int iscntrl(int) __attribute__((__nothrow__, __leaf__)); 2.2551 +extern int isdigit(int) __attribute__((__nothrow__, __leaf__)); 2.2552 +extern int islower(int) __attribute__((__nothrow__, __leaf__)); 2.2553 +extern int isgraph(int) __attribute__((__nothrow__, __leaf__)); 2.2554 +extern int isprint(int) __attribute__((__nothrow__, __leaf__)); 2.2555 +extern int ispunct(int) __attribute__((__nothrow__, __leaf__)); 2.2556 +extern int isspace(int) __attribute__((__nothrow__, __leaf__)); 2.2557 +extern int isupper(int) __attribute__((__nothrow__, __leaf__)); 2.2558 +extern int isxdigit(int) __attribute__((__nothrow__, __leaf__)); 2.2559 +extern int tolower(int __c) __attribute__((__nothrow__, __leaf__)); 2.2560 +extern int toupper(int __c) __attribute__((__nothrow__, __leaf__)); 2.2561 +extern int isblank(int) __attribute__((__nothrow__, __leaf__)); 2.2562 +extern int isascii(int __c) __attribute__((__nothrow__, __leaf__)); 2.2563 +extern int toascii(int __c) __attribute__((__nothrow__, __leaf__)); 2.2564 +extern int _toupper(int) __attribute__((__nothrow__, __leaf__)); 2.2565 +extern int _tolower(int) __attribute__((__nothrow__, __leaf__)); 2.2566 +extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) tolower(int __c) 2.2567 +{ 2.2568 + return __c >= - 128 && __c < 256 ? (*__ctype_tolower_loc())[__c] : __c; 2.2569 +} 2.2570 +extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) toupper(int __c) 2.2571 +{ 2.2572 + return __c >= - 128 && __c < 256 ? (*__ctype_toupper_loc())[__c] : __c; 2.2573 +} 2.2574 +extern int isalnum_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2575 +extern int isalpha_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2576 +extern int iscntrl_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2577 +extern int isdigit_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2578 +extern int islower_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2579 +extern int isgraph_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2580 +extern int isprint_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2581 +extern int ispunct_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2582 +extern int isspace_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2583 +extern int isupper_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2584 +extern int isxdigit_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2585 +extern int isblank_l(int, __locale_t) __attribute__((__nothrow__, __leaf__)); 2.2586 +extern int __tolower_l(int __c, __locale_t __l) __attribute__((__nothrow__, __leaf__)); 2.2587 +extern int tolower_l(int __c, __locale_t __l) __attribute__((__nothrow__, __leaf__)); 2.2588 +extern int __toupper_l(int __c, __locale_t __l) __attribute__((__nothrow__, __leaf__)); 2.2589 +extern int toupper_l(int __c, __locale_t __l) __attribute__((__nothrow__, __leaf__)); 2.2590 +typedef int __gwchar_t; 2.2591 +typedef struct 2.2592 +{ 2.2593 + long int quot; 2.2594 + long int rem; 2.2595 +} imaxdiv_t; 2.2596 +extern intmax_t imaxabs(intmax_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2597 +extern imaxdiv_t imaxdiv(intmax_t __numer, intmax_t __denom) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2598 +extern intmax_t strtoimax(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)); 2.2599 +extern uintmax_t strtoumax(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)); 2.2600 +extern intmax_t wcstoimax(__const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)); 2.2601 +extern uintmax_t wcstoumax(__const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)); 2.2602 +extern long int __strtol_internal(__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.2603 +extern __inline __attribute__((__gnu_inline__)) intmax_t __attribute__((__nothrow__, __leaf__)) strtoimax(__const char *__restrict nptr, char **__restrict endptr, int base) 2.2604 +{ 2.2605 + return __strtol_internal(nptr, endptr, base, 0); 2.2606 +} 2.2607 +extern unsigned long int __strtoul_internal(__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.2608 +extern __inline __attribute__((__gnu_inline__)) uintmax_t __attribute__((__nothrow__, __leaf__)) strtoumax(__const char *__restrict nptr, char **__restrict endptr, int base) 2.2609 +{ 2.2610 + return __strtoul_internal(nptr, endptr, base, 0); 2.2611 +} 2.2612 +extern long int __wcstol_internal(__const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base, int __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.2613 +extern __inline __attribute__((__gnu_inline__)) intmax_t __attribute__((__nothrow__, __leaf__)) wcstoimax(__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base) 2.2614 +{ 2.2615 + return __wcstol_internal(nptr, endptr, base, 0); 2.2616 +} 2.2617 +extern unsigned long int __wcstoul_internal(__const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base, int __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.2618 +extern __inline __attribute__((__gnu_inline__)) uintmax_t __attribute__((__nothrow__, __leaf__)) wcstoumax(__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base) 2.2619 +{ 2.2620 + return __wcstoul_internal(nptr, endptr, base, 0); 2.2621 +} 2.2622 +typedef float float_t; 2.2623 +typedef double double_t; 2.2624 +extern double acos(double __x) __attribute__((__nothrow__, __leaf__)); 2.2625 +extern double __acos(double __x) __attribute__((__nothrow__, __leaf__)); 2.2626 +extern double asin(double __x) __attribute__((__nothrow__, __leaf__)); 2.2627 +extern double __asin(double __x) __attribute__((__nothrow__, __leaf__)); 2.2628 +extern double atan(double __x) __attribute__((__nothrow__, __leaf__)); 2.2629 +extern double __atan(double __x) __attribute__((__nothrow__, __leaf__)); 2.2630 +extern double atan2(double __y, double __x) __attribute__((__nothrow__, __leaf__)); 2.2631 +extern double __atan2(double __y, double __x) __attribute__((__nothrow__, __leaf__)); 2.2632 +extern double cos(double __x) __attribute__((__nothrow__, __leaf__)); 2.2633 +extern double __cos(double __x) __attribute__((__nothrow__, __leaf__)); 2.2634 +extern double sin(double __x) __attribute__((__nothrow__, __leaf__)); 2.2635 +extern double __sin(double __x) __attribute__((__nothrow__, __leaf__)); 2.2636 +extern double tan(double __x) __attribute__((__nothrow__, __leaf__)); 2.2637 +extern double __tan(double __x) __attribute__((__nothrow__, __leaf__)); 2.2638 +extern double cosh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2639 +extern double __cosh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2640 +extern double sinh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2641 +extern double __sinh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2642 +extern double tanh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2643 +extern double __tanh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2644 +extern double acosh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2645 +extern double __acosh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2646 +extern double asinh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2647 +extern double __asinh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2648 +extern double atanh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2649 +extern double __atanh(double __x) __attribute__((__nothrow__, __leaf__)); 2.2650 +extern double exp(double __x) __attribute__((__nothrow__, __leaf__)); 2.2651 +extern double __exp(double __x) __attribute__((__nothrow__, __leaf__)); 2.2652 +extern double frexp(double __x, int *__exponent) __attribute__((__nothrow__, __leaf__)); 2.2653 +extern double __frexp(double __x, int *__exponent) __attribute__((__nothrow__, __leaf__)); 2.2654 +extern double ldexp(double __x, int __exponent) __attribute__((__nothrow__, __leaf__)); 2.2655 +extern double __ldexp(double __x, int __exponent) __attribute__((__nothrow__, __leaf__)); 2.2656 +extern double log(double __x) __attribute__((__nothrow__, __leaf__)); 2.2657 +extern double __log(double __x) __attribute__((__nothrow__, __leaf__)); 2.2658 +extern double log10(double __x) __attribute__((__nothrow__, __leaf__)); 2.2659 +extern double __log10(double __x) __attribute__((__nothrow__, __leaf__)); 2.2660 +extern double modf(double __x, double *__iptr) __attribute__((__nothrow__, __leaf__)); 2.2661 +extern double __modf(double __x, double *__iptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.2662 +extern double expm1(double __x) __attribute__((__nothrow__, __leaf__)); 2.2663 +extern double __expm1(double __x) __attribute__((__nothrow__, __leaf__)); 2.2664 +extern double log1p(double __x) __attribute__((__nothrow__, __leaf__)); 2.2665 +extern double __log1p(double __x) __attribute__((__nothrow__, __leaf__)); 2.2666 +extern double logb(double __x) __attribute__((__nothrow__, __leaf__)); 2.2667 +extern double __logb(double __x) __attribute__((__nothrow__, __leaf__)); 2.2668 +extern double exp2(double __x) __attribute__((__nothrow__, __leaf__)); 2.2669 +extern double __exp2(double __x) __attribute__((__nothrow__, __leaf__)); 2.2670 +extern double log2(double __x) __attribute__((__nothrow__, __leaf__)); 2.2671 +extern double __log2(double __x) __attribute__((__nothrow__, __leaf__)); 2.2672 +extern double pow(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2673 +extern double __pow(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2674 +extern double sqrt(double __x) __attribute__((__nothrow__, __leaf__)); 2.2675 +extern double __sqrt(double __x) __attribute__((__nothrow__, __leaf__)); 2.2676 +extern double hypot(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2677 +extern double __hypot(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2678 +extern double cbrt(double __x) __attribute__((__nothrow__, __leaf__)); 2.2679 +extern double __cbrt(double __x) __attribute__((__nothrow__, __leaf__)); 2.2680 +extern double ceil(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2681 +extern double __ceil(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2682 +extern double fabs(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2683 +extern double __fabs(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2684 +extern double floor(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2685 +extern double __floor(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2686 +extern double fmod(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2687 +extern double __fmod(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2688 +extern int __isinf(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2689 +extern int __finite(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2690 +extern int isinf(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2691 +extern int finite(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2692 +extern double drem(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2693 +extern double __drem(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2694 +extern double significand(double __x) __attribute__((__nothrow__, __leaf__)); 2.2695 +extern double __significand(double __x) __attribute__((__nothrow__, __leaf__)); 2.2696 +extern double copysign(double __x, double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2697 +extern double __copysign(double __x, double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2698 +extern double nan(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2699 +extern double __nan(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2700 +extern int __isnan(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2701 +extern int isnan(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2702 +extern double j0(double) __attribute__((__nothrow__, __leaf__)); 2.2703 +extern double __j0(double) __attribute__((__nothrow__, __leaf__)); 2.2704 +extern double j1(double) __attribute__((__nothrow__, __leaf__)); 2.2705 +extern double __j1(double) __attribute__((__nothrow__, __leaf__)); 2.2706 +extern double jn(int, double) __attribute__((__nothrow__, __leaf__)); 2.2707 +extern double __jn(int, double) __attribute__((__nothrow__, __leaf__)); 2.2708 +extern double y0(double) __attribute__((__nothrow__, __leaf__)); 2.2709 +extern double __y0(double) __attribute__((__nothrow__, __leaf__)); 2.2710 +extern double y1(double) __attribute__((__nothrow__, __leaf__)); 2.2711 +extern double __y1(double) __attribute__((__nothrow__, __leaf__)); 2.2712 +extern double yn(int, double) __attribute__((__nothrow__, __leaf__)); 2.2713 +extern double __yn(int, double) __attribute__((__nothrow__, __leaf__)); 2.2714 +extern double erf(double) __attribute__((__nothrow__, __leaf__)); 2.2715 +extern double __erf(double) __attribute__((__nothrow__, __leaf__)); 2.2716 +extern double erfc(double) __attribute__((__nothrow__, __leaf__)); 2.2717 +extern double __erfc(double) __attribute__((__nothrow__, __leaf__)); 2.2718 +extern double lgamma(double) __attribute__((__nothrow__, __leaf__)); 2.2719 +extern double __lgamma(double) __attribute__((__nothrow__, __leaf__)); 2.2720 +extern double tgamma(double) __attribute__((__nothrow__, __leaf__)); 2.2721 +extern double __tgamma(double) __attribute__((__nothrow__, __leaf__)); 2.2722 +extern double gamma(double) __attribute__((__nothrow__, __leaf__)); 2.2723 +extern double __gamma(double) __attribute__((__nothrow__, __leaf__)); 2.2724 +extern double lgamma_r(double, int *__signgamp) __attribute__((__nothrow__, __leaf__)); 2.2725 +extern double __lgamma_r(double, int *__signgamp) __attribute__((__nothrow__, __leaf__)); 2.2726 +extern double rint(double __x) __attribute__((__nothrow__, __leaf__)); 2.2727 +extern double __rint(double __x) __attribute__((__nothrow__, __leaf__)); 2.2728 +extern double nextafter(double __x, double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2729 +extern double __nextafter(double __x, double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2730 +extern double nexttoward(double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2731 +extern double __nexttoward(double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2732 +extern double remainder(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2733 +extern double __remainder(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2734 +extern double scalbn(double __x, int __n) __attribute__((__nothrow__, __leaf__)); 2.2735 +extern double __scalbn(double __x, int __n) __attribute__((__nothrow__, __leaf__)); 2.2736 +extern int ilogb(double __x) __attribute__((__nothrow__, __leaf__)); 2.2737 +extern int __ilogb(double __x) __attribute__((__nothrow__, __leaf__)); 2.2738 +extern double scalbln(double __x, long int __n) __attribute__((__nothrow__, __leaf__)); 2.2739 +extern double __scalbln(double __x, long int __n) __attribute__((__nothrow__, __leaf__)); 2.2740 +extern double nearbyint(double __x) __attribute__((__nothrow__, __leaf__)); 2.2741 +extern double __nearbyint(double __x) __attribute__((__nothrow__, __leaf__)); 2.2742 +extern double round(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2743 +extern double __round(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2744 +extern double trunc(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2745 +extern double __trunc(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2746 +extern double remquo(double __x, double __y, int *__quo) __attribute__((__nothrow__, __leaf__)); 2.2747 +extern double __remquo(double __x, double __y, int *__quo) __attribute__((__nothrow__, __leaf__)); 2.2748 +extern long int lrint(double __x) __attribute__((__nothrow__, __leaf__)); 2.2749 +extern long int __lrint(double __x) __attribute__((__nothrow__, __leaf__)); 2.2750 +extern long long int llrint(double __x) __attribute__((__nothrow__, __leaf__)); 2.2751 +extern long long int __llrint(double __x) __attribute__((__nothrow__, __leaf__)); 2.2752 +extern long int lround(double __x) __attribute__((__nothrow__, __leaf__)); 2.2753 +extern long int __lround(double __x) __attribute__((__nothrow__, __leaf__)); 2.2754 +extern long long int llround(double __x) __attribute__((__nothrow__, __leaf__)); 2.2755 +extern long long int __llround(double __x) __attribute__((__nothrow__, __leaf__)); 2.2756 +extern double fdim(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2757 +extern double __fdim(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2758 +extern double fmax(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2759 +extern double __fmax(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2760 +extern double fmin(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2761 +extern double __fmin(double __x, double __y) __attribute__((__nothrow__, __leaf__)); 2.2762 +extern int __fpclassify(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2763 +extern int __signbit(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2764 +extern double fma(double __x, double __y, double __z) __attribute__((__nothrow__, __leaf__)); 2.2765 +extern double __fma(double __x, double __y, double __z) __attribute__((__nothrow__, __leaf__)); 2.2766 +extern double scalb(double __x, double __n) __attribute__((__nothrow__, __leaf__)); 2.2767 +extern double __scalb(double __x, double __n) __attribute__((__nothrow__, __leaf__)); 2.2768 +extern float acosf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2769 +extern float __acosf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2770 +extern float asinf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2771 +extern float __asinf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2772 +extern float atanf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2773 +extern float __atanf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2774 +extern float atan2f(float __y, float __x) __attribute__((__nothrow__, __leaf__)); 2.2775 +extern float __atan2f(float __y, float __x) __attribute__((__nothrow__, __leaf__)); 2.2776 +extern float cosf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2777 +extern float __cosf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2778 +extern float sinf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2779 +extern float __sinf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2780 +extern float tanf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2781 +extern float __tanf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2782 +extern float coshf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2783 +extern float __coshf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2784 +extern float sinhf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2785 +extern float __sinhf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2786 +extern float tanhf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2787 +extern float __tanhf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2788 +extern float acoshf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2789 +extern float __acoshf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2790 +extern float asinhf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2791 +extern float __asinhf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2792 +extern float atanhf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2793 +extern float __atanhf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2794 +extern float expf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2795 +extern float __expf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2796 +extern float frexpf(float __x, int *__exponent) __attribute__((__nothrow__, __leaf__)); 2.2797 +extern float __frexpf(float __x, int *__exponent) __attribute__((__nothrow__, __leaf__)); 2.2798 +extern float ldexpf(float __x, int __exponent) __attribute__((__nothrow__, __leaf__)); 2.2799 +extern float __ldexpf(float __x, int __exponent) __attribute__((__nothrow__, __leaf__)); 2.2800 +extern float logf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2801 +extern float __logf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2802 +extern float log10f(float __x) __attribute__((__nothrow__, __leaf__)); 2.2803 +extern float __log10f(float __x) __attribute__((__nothrow__, __leaf__)); 2.2804 +extern float modff(float __x, float *__iptr) __attribute__((__nothrow__, __leaf__)); 2.2805 +extern float __modff(float __x, float *__iptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.2806 +extern float expm1f(float __x) __attribute__((__nothrow__, __leaf__)); 2.2807 +extern float __expm1f(float __x) __attribute__((__nothrow__, __leaf__)); 2.2808 +extern float log1pf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2809 +extern float __log1pf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2810 +extern float logbf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2811 +extern float __logbf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2812 +extern float exp2f(float __x) __attribute__((__nothrow__, __leaf__)); 2.2813 +extern float __exp2f(float __x) __attribute__((__nothrow__, __leaf__)); 2.2814 +extern float log2f(float __x) __attribute__((__nothrow__, __leaf__)); 2.2815 +extern float __log2f(float __x) __attribute__((__nothrow__, __leaf__)); 2.2816 +extern float powf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2817 +extern float __powf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2818 +extern float sqrtf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2819 +extern float __sqrtf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2820 +extern float hypotf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2821 +extern float __hypotf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2822 +extern float cbrtf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2823 +extern float __cbrtf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2824 +extern float ceilf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2825 +extern float __ceilf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2826 +extern float fabsf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2827 +extern float __fabsf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2828 +extern float floorf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2829 +extern float __floorf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2830 +extern float fmodf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2831 +extern float __fmodf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2832 +extern int __isinff(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2833 +extern int __finitef(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2834 +extern int isinff(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2835 +extern int finitef(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2836 +extern float dremf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2837 +extern float __dremf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2838 +extern float significandf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2839 +extern float __significandf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2840 +extern float copysignf(float __x, float __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2841 +extern float __copysignf(float __x, float __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2842 +extern float nanf(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2843 +extern float __nanf(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2844 +extern int __isnanf(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2845 +extern int isnanf(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2846 +extern float j0f(float) __attribute__((__nothrow__, __leaf__)); 2.2847 +extern float __j0f(float) __attribute__((__nothrow__, __leaf__)); 2.2848 +extern float j1f(float) __attribute__((__nothrow__, __leaf__)); 2.2849 +extern float __j1f(float) __attribute__((__nothrow__, __leaf__)); 2.2850 +extern float jnf(int, float) __attribute__((__nothrow__, __leaf__)); 2.2851 +extern float __jnf(int, float) __attribute__((__nothrow__, __leaf__)); 2.2852 +extern float y0f(float) __attribute__((__nothrow__, __leaf__)); 2.2853 +extern float __y0f(float) __attribute__((__nothrow__, __leaf__)); 2.2854 +extern float y1f(float) __attribute__((__nothrow__, __leaf__)); 2.2855 +extern float __y1f(float) __attribute__((__nothrow__, __leaf__)); 2.2856 +extern float ynf(int, float) __attribute__((__nothrow__, __leaf__)); 2.2857 +extern float __ynf(int, float) __attribute__((__nothrow__, __leaf__)); 2.2858 +extern float erff(float) __attribute__((__nothrow__, __leaf__)); 2.2859 +extern float __erff(float) __attribute__((__nothrow__, __leaf__)); 2.2860 +extern float erfcf(float) __attribute__((__nothrow__, __leaf__)); 2.2861 +extern float __erfcf(float) __attribute__((__nothrow__, __leaf__)); 2.2862 +extern float lgammaf(float) __attribute__((__nothrow__, __leaf__)); 2.2863 +extern float __lgammaf(float) __attribute__((__nothrow__, __leaf__)); 2.2864 +extern float tgammaf(float) __attribute__((__nothrow__, __leaf__)); 2.2865 +extern float __tgammaf(float) __attribute__((__nothrow__, __leaf__)); 2.2866 +extern float gammaf(float) __attribute__((__nothrow__, __leaf__)); 2.2867 +extern float __gammaf(float) __attribute__((__nothrow__, __leaf__)); 2.2868 +extern float lgammaf_r(float, int *__signgamp) __attribute__((__nothrow__, __leaf__)); 2.2869 +extern float __lgammaf_r(float, int *__signgamp) __attribute__((__nothrow__, __leaf__)); 2.2870 +extern float rintf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2871 +extern float __rintf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2872 +extern float nextafterf(float __x, float __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2873 +extern float __nextafterf(float __x, float __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2874 +extern float nexttowardf(float __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2875 +extern float __nexttowardf(float __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2876 +extern float remainderf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2877 +extern float __remainderf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2878 +extern float scalbnf(float __x, int __n) __attribute__((__nothrow__, __leaf__)); 2.2879 +extern float __scalbnf(float __x, int __n) __attribute__((__nothrow__, __leaf__)); 2.2880 +extern int ilogbf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2881 +extern int __ilogbf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2882 +extern float scalblnf(float __x, long int __n) __attribute__((__nothrow__, __leaf__)); 2.2883 +extern float __scalblnf(float __x, long int __n) __attribute__((__nothrow__, __leaf__)); 2.2884 +extern float nearbyintf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2885 +extern float __nearbyintf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2886 +extern float roundf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2887 +extern float __roundf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2888 +extern float truncf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2889 +extern float __truncf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2890 +extern float remquof(float __x, float __y, int *__quo) __attribute__((__nothrow__, __leaf__)); 2.2891 +extern float __remquof(float __x, float __y, int *__quo) __attribute__((__nothrow__, __leaf__)); 2.2892 +extern long int lrintf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2893 +extern long int __lrintf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2894 +extern long long int llrintf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2895 +extern long long int __llrintf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2896 +extern long int lroundf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2897 +extern long int __lroundf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2898 +extern long long int llroundf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2899 +extern long long int __llroundf(float __x) __attribute__((__nothrow__, __leaf__)); 2.2900 +extern float fdimf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2901 +extern float __fdimf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2902 +extern float fmaxf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2903 +extern float __fmaxf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2904 +extern float fminf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2905 +extern float __fminf(float __x, float __y) __attribute__((__nothrow__, __leaf__)); 2.2906 +extern int __fpclassifyf(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2907 +extern int __signbitf(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2908 +extern float fmaf(float __x, float __y, float __z) __attribute__((__nothrow__, __leaf__)); 2.2909 +extern float __fmaf(float __x, float __y, float __z) __attribute__((__nothrow__, __leaf__)); 2.2910 +extern float scalbf(float __x, float __n) __attribute__((__nothrow__, __leaf__)); 2.2911 +extern float __scalbf(float __x, float __n) __attribute__((__nothrow__, __leaf__)); 2.2912 +extern long double acosl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2913 +extern long double __acosl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2914 +extern long double asinl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2915 +extern long double __asinl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2916 +extern long double atanl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2917 +extern long double __atanl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2918 +extern long double atan2l(long double __y, long double __x) __attribute__((__nothrow__, __leaf__)); 2.2919 +extern long double __atan2l(long double __y, long double __x) __attribute__((__nothrow__, __leaf__)); 2.2920 +extern long double cosl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2921 +extern long double __cosl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2922 +extern long double sinl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2923 +extern long double __sinl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2924 +extern long double tanl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2925 +extern long double __tanl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2926 +extern long double coshl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2927 +extern long double __coshl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2928 +extern long double sinhl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2929 +extern long double __sinhl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2930 +extern long double tanhl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2931 +extern long double __tanhl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2932 +extern long double acoshl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2933 +extern long double __acoshl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2934 +extern long double asinhl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2935 +extern long double __asinhl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2936 +extern long double atanhl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2937 +extern long double __atanhl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2938 +extern long double expl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2939 +extern long double __expl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2940 +extern long double frexpl(long double __x, int *__exponent) __attribute__((__nothrow__, __leaf__)); 2.2941 +extern long double __frexpl(long double __x, int *__exponent) __attribute__((__nothrow__, __leaf__)); 2.2942 +extern long double ldexpl(long double __x, int __exponent) __attribute__((__nothrow__, __leaf__)); 2.2943 +extern long double __ldexpl(long double __x, int __exponent) __attribute__((__nothrow__, __leaf__)); 2.2944 +extern long double logl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2945 +extern long double __logl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2946 +extern long double log10l(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2947 +extern long double __log10l(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2948 +extern long double modfl(long double __x, long double *__iptr) __attribute__((__nothrow__, __leaf__)); 2.2949 +extern long double __modfl(long double __x, long double *__iptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.2950 +extern long double expm1l(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2951 +extern long double __expm1l(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2952 +extern long double log1pl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2953 +extern long double __log1pl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2954 +extern long double logbl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2955 +extern long double __logbl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2956 +extern long double exp2l(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2957 +extern long double __exp2l(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2958 +extern long double log2l(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2959 +extern long double __log2l(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2960 +extern long double powl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.2961 +extern long double __powl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.2962 +extern long double sqrtl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2963 +extern long double __sqrtl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2964 +extern long double hypotl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.2965 +extern long double __hypotl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.2966 +extern long double cbrtl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2967 +extern long double __cbrtl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2968 +extern long double ceill(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2969 +extern long double __ceill(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2970 +extern long double fabsl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2971 +extern long double __fabsl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2972 +extern long double floorl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2973 +extern long double __floorl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2974 +extern long double fmodl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.2975 +extern long double __fmodl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.2976 +extern int __isinfl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2977 +extern int __finitel(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2978 +extern int isinfl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2979 +extern int finitel(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2980 +extern long double dreml(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.2981 +extern long double __dreml(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.2982 +extern long double significandl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2983 +extern long double __significandl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.2984 +extern long double copysignl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2985 +extern long double __copysignl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2986 +extern long double nanl(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2987 +extern long double __nanl(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2988 +extern int __isnanl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2989 +extern int isnanl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.2990 +extern long double j0l(long double) __attribute__((__nothrow__, __leaf__)); 2.2991 +extern long double __j0l(long double) __attribute__((__nothrow__, __leaf__)); 2.2992 +extern long double j1l(long double) __attribute__((__nothrow__, __leaf__)); 2.2993 +extern long double __j1l(long double) __attribute__((__nothrow__, __leaf__)); 2.2994 +extern long double jnl(int, long double) __attribute__((__nothrow__, __leaf__)); 2.2995 +extern long double __jnl(int, long double) __attribute__((__nothrow__, __leaf__)); 2.2996 +extern long double y0l(long double) __attribute__((__nothrow__, __leaf__)); 2.2997 +extern long double __y0l(long double) __attribute__((__nothrow__, __leaf__)); 2.2998 +extern long double y1l(long double) __attribute__((__nothrow__, __leaf__)); 2.2999 +extern long double __y1l(long double) __attribute__((__nothrow__, __leaf__)); 2.3000 +extern long double ynl(int, long double) __attribute__((__nothrow__, __leaf__)); 2.3001 +extern long double __ynl(int, long double) __attribute__((__nothrow__, __leaf__)); 2.3002 +extern long double erfl(long double) __attribute__((__nothrow__, __leaf__)); 2.3003 +extern long double __erfl(long double) __attribute__((__nothrow__, __leaf__)); 2.3004 +extern long double erfcl(long double) __attribute__((__nothrow__, __leaf__)); 2.3005 +extern long double __erfcl(long double) __attribute__((__nothrow__, __leaf__)); 2.3006 +extern long double lgammal(long double) __attribute__((__nothrow__, __leaf__)); 2.3007 +extern long double __lgammal(long double) __attribute__((__nothrow__, __leaf__)); 2.3008 +extern long double tgammal(long double) __attribute__((__nothrow__, __leaf__)); 2.3009 +extern long double __tgammal(long double) __attribute__((__nothrow__, __leaf__)); 2.3010 +extern long double gammal(long double) __attribute__((__nothrow__, __leaf__)); 2.3011 +extern long double __gammal(long double) __attribute__((__nothrow__, __leaf__)); 2.3012 +extern long double lgammal_r(long double, int *__signgamp) __attribute__((__nothrow__, __leaf__)); 2.3013 +extern long double __lgammal_r(long double, int *__signgamp) __attribute__((__nothrow__, __leaf__)); 2.3014 +extern long double rintl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3015 +extern long double __rintl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3016 +extern long double nextafterl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3017 +extern long double __nextafterl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3018 +extern long double nexttowardl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3019 +extern long double __nexttowardl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3020 +extern long double remainderl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.3021 +extern long double __remainderl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.3022 +extern long double scalbnl(long double __x, int __n) __attribute__((__nothrow__, __leaf__)); 2.3023 +extern long double __scalbnl(long double __x, int __n) __attribute__((__nothrow__, __leaf__)); 2.3024 +extern int ilogbl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3025 +extern int __ilogbl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3026 +extern long double scalblnl(long double __x, long int __n) __attribute__((__nothrow__, __leaf__)); 2.3027 +extern long double __scalblnl(long double __x, long int __n) __attribute__((__nothrow__, __leaf__)); 2.3028 +extern long double nearbyintl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3029 +extern long double __nearbyintl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3030 +extern long double roundl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3031 +extern long double __roundl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3032 +extern long double truncl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3033 +extern long double __truncl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3034 +extern long double remquol(long double __x, long double __y, int *__quo) __attribute__((__nothrow__, __leaf__)); 2.3035 +extern long double __remquol(long double __x, long double __y, int *__quo) __attribute__((__nothrow__, __leaf__)); 2.3036 +extern long int lrintl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3037 +extern long int __lrintl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3038 +extern long long int llrintl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3039 +extern long long int __llrintl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3040 +extern long int lroundl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3041 +extern long int __lroundl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3042 +extern long long int llroundl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3043 +extern long long int __llroundl(long double __x) __attribute__((__nothrow__, __leaf__)); 2.3044 +extern long double fdiml(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.3045 +extern long double __fdiml(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.3046 +extern long double fmaxl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.3047 +extern long double __fmaxl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.3048 +extern long double fminl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.3049 +extern long double __fminl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)); 2.3050 +extern int __fpclassifyl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3051 +extern int __signbitl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3052 +extern long double fmal(long double __x, long double __y, long double __z) __attribute__((__nothrow__, __leaf__)); 2.3053 +extern long double __fmal(long double __x, long double __y, long double __z) __attribute__((__nothrow__, __leaf__)); 2.3054 +extern long double scalbl(long double __x, long double __n) __attribute__((__nothrow__, __leaf__)); 2.3055 +extern long double __scalbl(long double __x, long double __n) __attribute__((__nothrow__, __leaf__)); 2.3056 +extern int signgam; 2.3057 +enum 2.3058 +{ 2.3059 + FP_NAN, 2.3060 + FP_INFINITE, 2.3061 + FP_ZERO, 2.3062 + FP_SUBNORMAL, 2.3063 + FP_NORMAL 2.3064 +}; 2.3065 +typedef enum 2.3066 +{ 2.3067 + _IEEE_ = - 1, 2.3068 + _SVID_, 2.3069 + _XOPEN_, 2.3070 + _POSIX_, 2.3071 + _ISOC_ 2.3072 +} _LIB_VERSION_TYPE; 2.3073 +extern _LIB_VERSION_TYPE _LIB_VERSION; 2.3074 +struct exception 2.3075 +{ 2.3076 + int type; 2.3077 + char *name; 2.3078 + double arg1; 2.3079 + double arg2; 2.3080 + double retval; 2.3081 +}; 2.3082 +extern int matherr(struct exception *__exc); 2.3083 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) __signbitf(float __x) 2.3084 +{ 2.3085 + int __m; 2.3086 + __asm ("pmovmskb %1, %0": "=r" (__m): "x" (__x)); 2.3087 + return __m & 0x8; 2.3088 +} 2.3089 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) __signbit(double __x) 2.3090 +{ 2.3091 + int __m; 2.3092 + __asm ("pmovmskb %1, %0": "=r" (__m): "x" (__x)); 2.3093 + return __m & 0x80; 2.3094 +} 2.3095 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) __signbitl(long double __x) 2.3096 +{ 2.3097 + __extension__ 2.3098 + union 2.3099 + { 2.3100 + long double __l; 2.3101 + int __i[3]; 2.3102 + } __u = {__l:__x}; 2.3103 + return (__u.__i[2] & 0x8000) != 0; 2.3104 +} 2.3105 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) long int __attribute__((__nothrow__, __leaf__)) lrintf(float __x) 2.3106 +{ 2.3107 + long int __res; 2.3108 + __asm ("cvtss2si %1, %0": "=r" (__res): "xm" (__x)); 2.3109 + return __res; 2.3110 +} 2.3111 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) long int __attribute__((__nothrow__, __leaf__)) lrint(double __x) 2.3112 +{ 2.3113 + long int __res; 2.3114 + __asm ("cvtsd2si %1, %0": "=r" (__res): "xm" (__x)); 2.3115 + return __res; 2.3116 +} 2.3117 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) long long int __attribute__((__nothrow__, __leaf__)) llrintf(float __x) 2.3118 +{ 2.3119 + long long int __res; 2.3120 + __asm ("cvtss2si %1, %0": "=r" (__res): "xm" (__x)); 2.3121 + return __res; 2.3122 +} 2.3123 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) long long int __attribute__((__nothrow__, __leaf__)) llrint(double __x) 2.3124 +{ 2.3125 + long long int __res; 2.3126 + __asm ("cvtsd2si %1, %0": "=r" (__res): "xm" (__x)); 2.3127 + return __res; 2.3128 +} 2.3129 +union wait 2.3130 +{ 2.3131 + int w_status; 2.3132 + struct 2.3133 + { 2.3134 + unsigned int __w_termsig : 7; 2.3135 + unsigned int __w_coredump : 1; 2.3136 + unsigned int __w_retcode : 8; 2.3137 + unsigned int : 16; 2.3138 + } __wait_terminated; 2.3139 + struct 2.3140 + { 2.3141 + unsigned int __w_stopval : 8; 2.3142 + unsigned int __w_stopsig : 8; 2.3143 + unsigned int : 16; 2.3144 + } __wait_stopped; 2.3145 +}; 2.3146 +typedef union 2.3147 +{ 2.3148 + union wait *__uptr; 2.3149 + int *__iptr; 2.3150 +} __WAIT_STATUS __attribute__((__transparent_union__)); 2.3151 +typedef struct 2.3152 +{ 2.3153 + int quot; 2.3154 + int rem; 2.3155 +} div_t; 2.3156 +typedef struct 2.3157 +{ 2.3158 + long int quot; 2.3159 + long int rem; 2.3160 +} ldiv_t; 2.3161 +__extension__ 2.3162 +typedef struct 2.3163 +{ 2.3164 + long long int quot; 2.3165 + long long int rem; 2.3166 +} lldiv_t; 2.3167 +extern size_t __ctype_get_mb_cur_max(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.3168 +extern double atof(__const char *__nptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3169 +extern int atoi(__const char *__nptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3170 +extern long int atol(__const char *__nptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3171 +__extension__ 2.3172 +extern long long int atoll(__const char *__nptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3173 +extern double strtod(__const char *__restrict __nptr, char **__restrict __endptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3174 +extern float strtof(__const char *__restrict __nptr, char **__restrict __endptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3175 +extern long double strtold(__const char *__restrict __nptr, char **__restrict __endptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3176 +extern long int strtol(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3177 +extern unsigned long int strtoul(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3178 +__extension__ 2.3179 +extern long long int strtoq(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3180 +__extension__ 2.3181 +extern unsigned long long int strtouq(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3182 +__extension__ 2.3183 +extern long long int strtoll(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3184 +__extension__ 2.3185 +extern unsigned long long int strtoull(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3186 +extern __inline __attribute__((__gnu_inline__)) double __attribute__((__nothrow__, __leaf__)) atof(__const char *__nptr) 2.3187 +{ 2.3188 + return strtod(__nptr, (char **) ((void *) 0)); 2.3189 +} 2.3190 +extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) atoi(__const char *__nptr) 2.3191 +{ 2.3192 + return (int) strtol(__nptr, (char **) ((void *) 0), 10); 2.3193 +} 2.3194 +extern __inline __attribute__((__gnu_inline__)) long int __attribute__((__nothrow__, __leaf__)) atol(__const char *__nptr) 2.3195 +{ 2.3196 + return strtol(__nptr, (char **) ((void *) 0), 10); 2.3197 +} 2.3198 +__extension__ 2.3199 +extern __inline __attribute__((__gnu_inline__)) long long int __attribute__((__nothrow__, __leaf__)) atoll(__const char *__nptr) 2.3200 +{ 2.3201 + return strtoll(__nptr, (char **) ((void *) 0), 10); 2.3202 +} 2.3203 +extern char *l64a(long int __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.3204 +extern long int a64l(__const char *__s) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3205 +typedef __u_char u_char; 2.3206 +typedef __u_short u_short; 2.3207 +typedef __u_int u_int; 2.3208 +typedef __u_long u_long; 2.3209 +typedef __quad_t quad_t; 2.3210 +typedef __u_quad_t u_quad_t; 2.3211 +typedef __fsid_t fsid_t; 2.3212 +typedef __loff_t loff_t; 2.3213 +typedef __ino_t ino_t; 2.3214 +typedef __dev_t dev_t; 2.3215 +typedef __mode_t mode_t; 2.3216 +typedef __nlink_t nlink_t; 2.3217 +typedef __id_t id_t; 2.3218 +typedef __daddr_t daddr_t; 2.3219 +typedef __caddr_t caddr_t; 2.3220 +typedef __key_t key_t; 2.3221 +typedef unsigned long int ulong; 2.3222 +typedef unsigned short int ushort; 2.3223 +typedef unsigned int uint; 2.3224 +typedef unsigned int u_int8_t __attribute__((__mode__(__QI__))); 2.3225 +typedef unsigned int u_int16_t __attribute__((__mode__(__HI__))); 2.3226 +typedef unsigned int u_int32_t __attribute__((__mode__(__SI__))); 2.3227 +typedef unsigned int u_int64_t __attribute__((__mode__(__DI__))); 2.3228 +typedef int register_t __attribute__((__mode__(__word__))); 2.3229 +typedef int __sig_atomic_t; 2.3230 +typedef struct 2.3231 +{ 2.3232 + unsigned long int __val[(1024 / (8 * sizeof(unsigned long int)))]; 2.3233 +} __sigset_t; 2.3234 +typedef __sigset_t sigset_t; 2.3235 +struct timeval 2.3236 +{ 2.3237 + __time_t tv_sec; 2.3238 + __suseconds_t tv_usec; 2.3239 +}; 2.3240 +typedef __suseconds_t suseconds_t; 2.3241 +typedef long int __fd_mask; 2.3242 +typedef struct 2.3243 +{ 2.3244 + __fd_mask __fds_bits[1024 / (8 * (int) sizeof(__fd_mask))]; 2.3245 +} fd_set; 2.3246 +typedef __fd_mask fd_mask; 2.3247 +extern int select(int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout); 2.3248 +extern int pselect(int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, const struct timespec *__restrict __timeout, const __sigset_t *__restrict __sigmask); 2.3249 +extern unsigned long int __fdelt_chk(unsigned long int __d); 2.3250 +extern unsigned long int __fdelt_warn(unsigned long int __d) __attribute__((__warning__("bit outside of fd_set selected"))); 2.3251 +__extension__ 2.3252 +extern unsigned int gnu_dev_major(unsigned long long int __dev) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3253 +__extension__ 2.3254 +extern unsigned int gnu_dev_minor(unsigned long long int __dev) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3255 +__extension__ 2.3256 +extern unsigned long long int gnu_dev_makedev(unsigned int __major, unsigned int __minor) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3257 +__extension__ 2.3258 +extern __inline __attribute__((__gnu_inline__)) __attribute__((__const__)) unsigned int __attribute__((__nothrow__, __leaf__)) gnu_dev_major(unsigned long long int __dev) 2.3259 +{ 2.3260 + return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); 2.3261 +} 2.3262 +__extension__ 2.3263 +extern __inline __attribute__((__gnu_inline__)) __attribute__((__const__)) unsigned int __attribute__((__nothrow__, __leaf__)) gnu_dev_minor(unsigned long long int __dev) 2.3264 +{ 2.3265 + return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); 2.3266 +} 2.3267 +__extension__ 2.3268 +extern __inline __attribute__((__gnu_inline__)) __attribute__((__const__)) unsigned long long int __attribute__((__nothrow__, __leaf__)) gnu_dev_makedev(unsigned int __major, unsigned int __minor) 2.3269 +{ 2.3270 + return ((__minor & 0xff) | ((__major & 0xfff) << 8) | (((unsigned long long int) (__minor & ~0xff)) << 12) | (((unsigned long long int) (__major & ~0xfff)) << 32)); 2.3271 +} 2.3272 +typedef __blksize_t blksize_t; 2.3273 +typedef __blkcnt_t blkcnt_t; 2.3274 +typedef __fsblkcnt_t fsblkcnt_t; 2.3275 +typedef __fsfilcnt_t fsfilcnt_t; 2.3276 +extern long int random(void) __attribute__((__nothrow__, __leaf__)); 2.3277 +extern void srandom(unsigned int __seed) __attribute__((__nothrow__, __leaf__)); 2.3278 +extern char *initstate(unsigned int __seed, char *__statebuf, size_t __statelen) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.3279 +extern char *setstate(char *__statebuf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3280 +struct random_data 2.3281 +{ 2.3282 + int32_t *fptr; 2.3283 + int32_t *rptr; 2.3284 + int32_t *state; 2.3285 + int rand_type; 2.3286 + int rand_deg; 2.3287 + int rand_sep; 2.3288 + int32_t *end_ptr; 2.3289 +}; 2.3290 +extern int random_r(struct random_data *__restrict __buf, int32_t *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3291 +extern int srandom_r(unsigned int __seed, struct random_data *__buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.3292 +extern int initstate_r(unsigned int __seed, char *__restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 4))); 2.3293 +extern int setstate_r(char *__restrict __statebuf, struct random_data *__restrict __buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3294 +extern int rand(void) __attribute__((__nothrow__, __leaf__)); 2.3295 +extern void srand(unsigned int __seed) __attribute__((__nothrow__, __leaf__)); 2.3296 +extern int rand_r(unsigned int *__seed) __attribute__((__nothrow__, __leaf__)); 2.3297 +extern double drand48(void) __attribute__((__nothrow__, __leaf__)); 2.3298 +extern double erand48(unsigned short int __xsubi[3]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3299 +extern long int lrand48(void) __attribute__((__nothrow__, __leaf__)); 2.3300 +extern long int nrand48(unsigned short int __xsubi[3]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3301 +extern long int mrand48(void) __attribute__((__nothrow__, __leaf__)); 2.3302 +extern long int jrand48(unsigned short int __xsubi[3]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3303 +extern void srand48(long int __seedval) __attribute__((__nothrow__, __leaf__)); 2.3304 +extern unsigned short int *seed48(unsigned short int __seed16v[3]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3305 +extern void lcong48(unsigned short int __param[7]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3306 +struct drand48_data 2.3307 +{ 2.3308 + unsigned short int __x[3]; 2.3309 + unsigned short int __old_x[3]; 2.3310 + unsigned short int __c; 2.3311 + unsigned short int __init; 2.3312 + unsigned long long int __a; 2.3313 +}; 2.3314 +extern int drand48_r(struct drand48_data *__restrict __buffer, double *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3315 +extern int erand48_r(unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3316 +extern int lrand48_r(struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3317 +extern int nrand48_r(unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3318 +extern int mrand48_r(struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3319 +extern int jrand48_r(unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3320 +extern int srand48_r(long int __seedval, struct drand48_data *__buffer) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.3321 +extern int seed48_r(unsigned short int __seed16v[3], struct drand48_data *__buffer) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3322 +extern int lcong48_r(unsigned short int __param[7], struct drand48_data *__buffer) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3323 +extern void *malloc(size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)); 2.3324 +extern void *calloc(size_t __nmemb, size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)); 2.3325 +extern void *realloc(void *__ptr, size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.3326 +extern void free(void *__ptr) __attribute__((__nothrow__, __leaf__)); 2.3327 +extern void cfree(void *__ptr) __attribute__((__nothrow__, __leaf__)); 2.3328 +extern void *alloca(size_t __size) __attribute__((__nothrow__, __leaf__)); 2.3329 +extern void *valloc(size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)); 2.3330 +extern int posix_memalign(void **__memptr, size_t __alignment, size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3331 +extern void abort(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__)); 2.3332 +extern int atexit(void (*__func)(void)) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3333 +extern int on_exit(void (*__func)(int __status, void *__arg), void *__arg) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3334 +extern void exit(int __status) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__)); 2.3335 +extern void _Exit(int __status) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__)); 2.3336 +extern char *getenv(__const char *__name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3337 +extern char *__secure_getenv(__const char *__name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3338 +extern int putenv(char *__string) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3339 +extern int setenv(__const char *__name, __const char *__value, int __replace) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.3340 +extern int unsetenv(__const char *__name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3341 +extern int clearenv(void) __attribute__((__nothrow__, __leaf__)); 2.3342 +extern char *mktemp(char *__template) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3343 +extern int mkstemp(char *__template) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3344 +extern int mkstemps(char *__template, int __suffixlen) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3345 +extern char *mkdtemp(char *__template) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3346 +extern int system(__const char *__command) __attribute__((__warn_unused_result__)); 2.3347 +extern char *realpath(__const char *__restrict __name, char *__restrict __resolved) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.3348 +typedef int (*__compar_fn_t)(__const void *, __const void *); 2.3349 +extern void *bsearch(__const void *__key, __const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __attribute__((__nonnull__(1, 2, 5))) __attribute__((__warn_unused_result__)); 2.3350 +extern void qsort(void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __attribute__((__nonnull__(1, 4))); 2.3351 +extern int abs(int __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__)); 2.3352 +extern long int labs(long int __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__)); 2.3353 +__extension__ 2.3354 +extern long long int llabs(long long int __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__)); 2.3355 +extern div_t div(int __numer, int __denom) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__)); 2.3356 +extern ldiv_t ldiv(long int __numer, long int __denom) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__)); 2.3357 +__extension__ 2.3358 +extern lldiv_t lldiv(long long int __numer, long long int __denom) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__)); 2.3359 +extern char *ecvt(double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4))) __attribute__((__warn_unused_result__)); 2.3360 +extern char *fcvt(double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4))) __attribute__((__warn_unused_result__)); 2.3361 +extern char *gcvt(double __value, int __ndigit, char *__buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3))) __attribute__((__warn_unused_result__)); 2.3362 +extern char *qecvt(long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4))) __attribute__((__warn_unused_result__)); 2.3363 +extern char *qfcvt(long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4))) __attribute__((__warn_unused_result__)); 2.3364 +extern char *qgcvt(long double __value, int __ndigit, char *__buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3))) __attribute__((__warn_unused_result__)); 2.3365 +extern int ecvt_r(double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4, 5))); 2.3366 +extern int fcvt_r(double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4, 5))); 2.3367 +extern int qecvt_r(long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4, 5))); 2.3368 +extern int qfcvt_r(long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4, 5))); 2.3369 +extern int mblen(__const char *__s, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.3370 +extern int mbtowc(wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.3371 +extern int wctomb(char *__s, wchar_t __wchar) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.3372 +extern size_t mbstowcs(wchar_t *__restrict __pwcs, __const char *__restrict __s, size_t __n) __attribute__((__nothrow__, __leaf__)); 2.3373 +extern size_t wcstombs(char *__restrict __s, __const wchar_t *__restrict __pwcs, size_t __n) __attribute__((__nothrow__, __leaf__)); 2.3374 +extern int rpmatch(__const char *__response) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)); 2.3375 +extern int getsubopt(char **__restrict __optionp, char *__const *__restrict __tokens, char **__restrict __valuep) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2, 3))) __attribute__((__warn_unused_result__)); 2.3376 +extern int getloadavg(double __loadavg[], int __nelem) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3377 +extern char *__realpath_chk(__const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.3378 +extern char *__realpath_alias(__const char *__restrict __name, char *__restrict __resolved) __asm__ ("""realpath") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.3379 +extern char *__realpath_chk_warn(__const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __asm__ ("""__realpath_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)) __attribute__((__warning__("second argument of realpath must be either NULL or at ""least PATH_MAX bytes long buffer"))); 2.3380 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) char *__attribute__((__nothrow__, __leaf__)) realpath(__const char *__restrict __name, char *__restrict __resolved) 2.3381 +{ 2.3382 + if (__builtin_object_size(__resolved, 2 > 1) != (size_t) - 1) 2.3383 + { 2.3384 + if (__builtin_object_size(__resolved, 2 > 1) < 4096) 2.3385 + return __realpath_chk_warn(__name, __resolved, __builtin_object_size(__resolved, 2 > 1)); 2.3386 + return __realpath_chk(__name, __resolved, __builtin_object_size(__resolved, 2 > 1)); 2.3387 + } 2.3388 + return __realpath_alias(__name, __resolved); 2.3389 +} 2.3390 +extern int __ptsname_r_chk(int __fd, char *__buf, size_t __buflen, size_t __nreal) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.3391 +extern int __ptsname_r_alias(int __fd, char *__buf, size_t __buflen) __asm__ ("""ptsname_r") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.3392 +extern int __ptsname_r_chk_warn(int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("""__ptsname_r_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))) __attribute__((__warning__("ptsname_r called with buflen bigger than ""size of buf"))); 2.3393 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) ptsname_r(int __fd, char *__buf, size_t __buflen) 2.3394 +{ 2.3395 + if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1) 2.3396 + { 2.3397 + if (!__builtin_constant_p(__buflen)) 2.3398 + return __ptsname_r_chk(__fd, __buf, __buflen, __builtin_object_size(__buf, 2 > 1)); 2.3399 + if (__buflen > __builtin_object_size(__buf, 2 > 1)) 2.3400 + return __ptsname_r_chk_warn(__fd, __buf, __buflen, __builtin_object_size(__buf, 2 > 1)); 2.3401 + } 2.3402 + return __ptsname_r_alias(__fd, __buf, __buflen); 2.3403 +} 2.3404 +extern int __wctomb_chk(char *__s, wchar_t __wchar, size_t __buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.3405 +extern int __wctomb_alias(char *__s, wchar_t __wchar) __asm__ ("""wctomb") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)); 2.3406 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) int __attribute__((__nothrow__, __leaf__)) wctomb(char *__s, wchar_t __wchar) 2.3407 +{ 2.3408 + if (__builtin_object_size(__s, 2 > 1) != (size_t) - 1 && 16 > __builtin_object_size(__s, 2 > 1)) 2.3409 + return __wctomb_chk(__s, __wchar, __builtin_object_size(__s, 2 > 1)); 2.3410 + return __wctomb_alias(__s, __wchar); 2.3411 +} 2.3412 +extern size_t __mbstowcs_chk(wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len, size_t __dstlen) __attribute__((__nothrow__, __leaf__)); 2.3413 +extern size_t __mbstowcs_alias(wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) __asm__ ("""mbstowcs") __attribute__((__nothrow__, __leaf__)); 2.3414 +extern size_t __mbstowcs_chk_warn(wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("""__mbstowcs_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warning__("mbstowcs called with dst buffer smaller than len ""* sizeof (wchar_t)"))); 2.3415 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) size_t __attribute__((__nothrow__, __leaf__)) mbstowcs(wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) 2.3416 +{ 2.3417 + if (__builtin_object_size(__dst, 2 > 1) != (size_t) - 1) 2.3418 + { 2.3419 + if (!__builtin_constant_p(__len)) 2.3420 + return __mbstowcs_chk(__dst, __src, __len, __builtin_object_size(__dst, 2 > 1) / sizeof(wchar_t)); 2.3421 + if (__len > __builtin_object_size(__dst, 2 > 1) / sizeof(wchar_t)) 2.3422 + return __mbstowcs_chk_warn(__dst, __src, __len, __builtin_object_size(__dst, 2 > 1) / sizeof(wchar_t)); 2.3423 + } 2.3424 + return __mbstowcs_alias(__dst, __src, __len); 2.3425 +} 2.3426 +extern size_t __wcstombs_chk(char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __attribute__((__nothrow__, __leaf__)); 2.3427 +extern size_t __wcstombs_alias(char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) __asm__ ("""wcstombs") __attribute__((__nothrow__, __leaf__)); 2.3428 +extern size_t __wcstombs_chk_warn(char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("""__wcstombs_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warning__("wcstombs called with dst buffer smaller than len"))); 2.3429 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) size_t __attribute__((__nothrow__, __leaf__)) wcstombs(char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) 2.3430 +{ 2.3431 + if (__builtin_object_size(__dst, 2 > 1) != (size_t) - 1) 2.3432 + { 2.3433 + if (!__builtin_constant_p(__len)) 2.3434 + return __wcstombs_chk(__dst, __src, __len, __builtin_object_size(__dst, 2 > 1)); 2.3435 + if (__len > __builtin_object_size(__dst, 2 > 1)) 2.3436 + return __wcstombs_chk_warn(__dst, __src, __len, __builtin_object_size(__dst, 2 > 1)); 2.3437 + } 2.3438 + return __wcstombs_alias(__dst, __src, __len); 2.3439 +} 2.3440 +extern void *memcpy(void *__restrict __dest, __const void *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3441 +extern void *memmove(void *__dest, __const void *__src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3442 +extern void *memccpy(void *__restrict __dest, __const void *__restrict __src, int __c, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3443 +extern void *memset(void *__s, int __c, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3444 +extern int memcmp(__const void *__s1, __const void *__s2, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2))); 2.3445 +extern void *memchr(__const void *__s, int __c, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))); 2.3446 +extern char *strcpy(char *__restrict __dest, __const char *__restrict __src) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3447 +extern char *strncpy(char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3448 +extern char *strcat(char *__restrict __dest, __const char *__restrict __src) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3449 +extern char *strncat(char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3450 +extern int strcmp(__const char *__s1, __const char *__s2) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2))); 2.3451 +extern int strncmp(__const char *__s1, __const char *__s2, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2))); 2.3452 +extern int strcoll(__const char *__s1, __const char *__s2) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2))); 2.3453 +extern size_t strxfrm(char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.3454 +extern int strcoll_l(__const char *__s1, __const char *__s2, __locale_t __l) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2, 3))); 2.3455 +extern size_t strxfrm_l(char *__dest, __const char *__src, size_t __n, __locale_t __l) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 4))); 2.3456 +extern char *strdup(__const char *__s) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__nonnull__(1))); 2.3457 +extern char *strndup(__const char *__string, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__nonnull__(1))); 2.3458 +extern char *strchr(__const char *__s, int __c) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))); 2.3459 +extern char *strrchr(__const char *__s, int __c) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))); 2.3460 +extern size_t strcspn(__const char *__s, __const char *__reject) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2))); 2.3461 +extern size_t strspn(__const char *__s, __const char *__accept) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2))); 2.3462 +extern char *strpbrk(__const char *__s, __const char *__accept) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2))); 2.3463 +extern char *strstr(__const char *__haystack, __const char *__needle) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2))); 2.3464 +extern char *strtok(char *__restrict __s, __const char *__restrict __delim) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.3465 +extern char *__strtok_r(char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))); 2.3466 +extern char *strtok_r(char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))); 2.3467 +extern size_t strlen(__const char *__s) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))); 2.3468 +extern size_t strnlen(__const char *__string, size_t __maxlen) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))); 2.3469 +extern char *strerror(int __errnum) __attribute__((__nothrow__, __leaf__)); 2.3470 +extern int strerror_r(int __errnum, char *__buf, size_t __buflen) __asm__ ("""__xpg_strerror_r") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); 2.3471 +extern char *strerror_l(int __errnum, __locale_t __l) __attribute__((__nothrow__, __leaf__)); 2.3472 +extern void __bzero(void *__s, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3473 +extern void bcopy(__const void *__src, void *__dest, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3474 +extern void bzero(void *__s, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); 2.3475 +extern int bcmp(__const void *__s1, __const void *__s2, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2))); 2.3476 +extern char *index(__const char *__s, int __c) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))); 2.3477 +extern char *rindex(__const char *__s, int __c) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))); 2.3478 +extern int ffs(int __i) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); 2.3479 +extern int strcasecmp(__const char *__s1, __const char *__s2) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2))); 2.3480 +extern int strncasecmp(__const char *__s1, __const char *__s2, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2))); 2.3481 +extern char *strsep(char **__restrict __stringp, __const char *__restrict __delim) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3482 +extern char *strsignal(int __sig) __attribute__((__nothrow__, __leaf__)); 2.3483 +extern char *__stpcpy(char *__restrict __dest, __const char *__restrict __src) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3484 +extern char *stpcpy(char *__restrict __dest, __const char *__restrict __src) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3485 +extern char *__stpncpy(char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3486 +extern char *stpncpy(char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); 2.3487 +extern void *__rawmemchr(const void *__s, int __c); 2.3488 +extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c1(__const char *__s, int __reject); 2.3489 +extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c1(__const char *__s, int __reject) 2.3490 +{ 2.3491 + register size_t __result = 0; 2.3492 + while (__s[__result] != '\0' && __s[__result] != __reject) 2.3493 + ++__result; 2.3494 + return __result; 2.3495 +} 2.3496 +extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c2(__const char *__s, int __reject1, int __reject2); 2.3497 +extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c2(__const char *__s, int __reject1, int __reject2) 2.3498 +{ 2.3499 + register size_t __result = 0; 2.3500 + while (__s[__result] != '\0' && __s[__result] != __reject1 && __s[__result] != __reject2) 2.3501 + ++__result; 2.3502 + return __result; 2.3503 +} 2.3504 +extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c3(__const char *__s, int __reject1, int __reject2, int __reject3); 2.3505 +extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c3(__const char *__s, int __reject1, int __reject2, int __reject3) 2.3506 +{ 2.3507 + register size_t __result = 0; 2.3508 + while (__s[__result] != '\0' && __s[__result] != __reject1 && __s[__result] != __reject2 && __s[__result] != __reject3) 2.3509 + ++__result; 2.3510 + return __result; 2.3511 +} 2.3512 +extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c1(__const char *__s, int __accept); 2.3513 +extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c1(__const char *__s, int __accept) 2.3514 +{ 2.3515 + register size_t __result = 0; 2.3516 + while (__s[__result] == __accept) 2.3517 + ++__result; 2.3518 + return __result; 2.3519 +} 2.3520 +extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c2(__const char *__s, int __accept1, int __accept2); 2.3521 +extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c2(__const char *__s, int __accept1, int __accept2) 2.3522 +{ 2.3523 + register size_t __result = 0; 2.3524 + while (__s[__result] == __accept1 || __s[__result] == __accept2) 2.3525 + ++__result; 2.3526 + return __result; 2.3527 +} 2.3528 +extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c3(__const char *__s, int __accept1, int __accept2, int __accept3); 2.3529 +extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c3(__const char *__s, int __accept1, int __accept2, int __accept3) 2.3530 +{ 2.3531 + register size_t __result = 0; 2.3532 + while (__s[__result] == __accept1 || __s[__result] == __accept2 || __s[__result] == __accept3) 2.3533 + ++__result; 2.3534 + return __result; 2.3535 +} 2.3536 +extern __inline __attribute__((__gnu_inline__)) char *__strpbrk_c2(__const char *__s, int __accept1, int __accept2); 2.3537 +extern __inline __attribute__((__gnu_inline__)) char *__strpbrk_c2(__const char *__s, int __accept1, int __accept2) 2.3538 +{ 2.3539 + while (*__s != '\0' && *__s != __accept1 && *__s != __accept2) 2.3540 + ++__s; 2.3541 + return *__s == '\0' ? ((void *) 0) : (char *) (size_t) __s; 2.3542 +} 2.3543 +extern __inline __attribute__((__gnu_inline__)) char *__strpbrk_c3(__const char *__s, int __accept1, int __accept2, int __accept3); 2.3544 +extern __inline __attribute__((__gnu_inline__)) char *__strpbrk_c3(__const char *__s, int __accept1, int __accept2, int __accept3) 2.3545 +{ 2.3546 + while (*__s != '\0' && *__s != __accept1 && *__s != __accept2 && *__s != __accept3) 2.3547 + ++__s; 2.3548 + return *__s == '\0' ? ((void *) 0) : (char *) (size_t) __s; 2.3549 +} 2.3550 +extern __inline __attribute__((__gnu_inline__)) char *__strtok_r_1c(char *__s, char __sep, char **__nextp); 2.3551 +extern __inline __attribute__((__gnu_inline__)) char *__strtok_r_1c(char *__s, char __sep, char **__nextp) 2.3552 +{ 2.3553 + char *__result; 2.3554 + if (__s == ((void *) 0)) 2.3555 + __s = *__nextp; 2.3556 + while (*__s == __sep) 2.3557 + ++__s; 2.3558 + __result = ((void *) 0); 2.3559 + if (*__s != '\0') 2.3560 + { 2.3561 + __result = __s++; 2.3562 + while (*__s != '\0') 2.3563 + if (*__s++ == __sep) 2.3564 + { 2.3565 + __s[- 1] = '\0'; 2.3566 + break; 2.3567 + } 2.3568 + } 2.3569 + *__nextp = __s; 2.3570 + return __result; 2.3571 +} 2.3572 +extern char *__strsep_g(char **__stringp, __const char *__delim); 2.3573 +extern __inline __attribute__((__gnu_inline__)) char *__strsep_1c(char **__s, char __reject); 2.3574 +extern __inline __attribute__((__gnu_inline__)) char *__strsep_1c(char **__s, char __reject) 2.3575 +{ 2.3576 + register char *__retval = *__s; 2.3577 + if (__retval != ((void *) 0) && (*__s = (__extension__ (__builtin_constant_p(__reject) && !__builtin_constant_p(__retval) && (__reject) == '\0' ? (char *) __rawmemchr(__retval, __reject) : __builtin_strchr(__retval, __reject)))) != ((void *) 0)) 2.3578 + *(*__s)++ = '\0'; 2.3579 + return __retval; 2.3580 +} 2.3581 +extern __inline __attribute__((__gnu_inline__)) char *__strsep_2c(char **__s, char __reject1, char __reject2); 2.3582 +extern __inline __attribute__((__gnu_inline__)) char *__strsep_2c(char **__s, char __reject1, char __reject2) 2.3583 +{ 2.3584 + register char *__retval = *__s; 2.3585 + if (__retval != ((void *) 0)) 2.3586 + { 2.3587 + register char *__cp = __retval; 2.3588 + while (1) 2.3589 + { 2.3590 + if (*__cp == '\0') 2.3591 + { 2.3592 + __cp = ((void *) 0); 2.3593 + break; 2.3594 + } 2.3595 + if (*__cp == __reject1 || *__cp == __reject2) 2.3596 + { 2.3597 + *__cp++ = '\0'; 2.3598 + break; 2.3599 + } 2.3600 + ++__cp; 2.3601 + } 2.3602 + *__s = __cp; 2.3603 + } 2.3604 + return __retval; 2.3605 +} 2.3606 +extern __inline __attribute__((__gnu_inline__)) char *__strsep_3c(char **__s, char __reject1, char __reject2, char __reject3); 2.3607 +extern __inline __attribute__((__gnu_inline__)) char *__strsep_3c(char **__s, char __reject1, char __reject2, char __reject3) 2.3608 +{ 2.3609 + register char *__retval = *__s; 2.3610 + if (__retval != ((void *) 0)) 2.3611 + { 2.3612 + register char *__cp = __retval; 2.3613 + while (1) 2.3614 + { 2.3615 + if (*__cp == '\0') 2.3616 + { 2.3617 + __cp = ((void *) 0); 2.3618 + break; 2.3619 + } 2.3620 + if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3) 2.3621 + { 2.3622 + *__cp++ = '\0'; 2.3623 + break; 2.3624 + } 2.3625 + ++__cp; 2.3626 + } 2.3627 + *__s = __cp; 2.3628 + } 2.3629 + return __retval; 2.3630 +} 2.3631 +extern char *__strdup(__const char *__string) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)); 2.3632 +extern char *__strndup(__const char *__string, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)); 2.3633 +extern void __warn_memset_zero_len(void) __attribute__((__warning__("memset used with constant zero length parameter; this could be due to transposed parameters"))); 2.3634 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) void *__attribute__((__nothrow__, __leaf__)) memcpy(void *__restrict __dest, __const void *__restrict __src, size_t __len) 2.3635 +{ 2.3636 + return __builtin___memcpy_chk(__dest, __src, __len, __builtin_object_size(__dest, 0)); 2.3637 +} 2.3638 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) void *__attribute__((__nothrow__, __leaf__)) memmove(void *__dest, __const void *__src, size_t __len) 2.3639 +{ 2.3640 + return __builtin___memmove_chk(__dest, __src, __len, __builtin_object_size(__dest, 0)); 2.3641 +} 2.3642 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) void *__attribute__((__nothrow__, __leaf__)) memset(void *__dest, int __ch, size_t __len) 2.3643 +{ 2.3644 + if (__builtin_constant_p(__len) && __len == 0 && (!__builtin_constant_p(__ch) || __ch != 0)) 2.3645 + { 2.3646 + __warn_memset_zero_len(); 2.3647 + return __dest; 2.3648 + } 2.3649 + return __builtin___memset_chk(__dest, __ch, __len, __builtin_object_size(__dest, 0)); 2.3650 +} 2.3651 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) void __attribute__((__nothrow__, __leaf__)) bcopy(__const void *__src, void *__dest, size_t __len) 2.3652 +{ 2.3653 + (void) __builtin___memmove_chk(__dest, __src, __len, __builtin_object_size(__dest, 0)); 2.3654 +} 2.3655 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) void __attribute__((__nothrow__, __leaf__)) bzero(void *__dest, size_t __len) 2.3656 +{ 2.3657 + (void) __builtin___memset_chk(__dest, '\0', __len, __builtin_object_size(__dest, 0)); 2.3658 +} 2.3659 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) char *__attribute__((__nothrow__, __leaf__)) strcpy(char *__restrict __dest, __const char *__restrict __src) 2.3660 +{ 2.3661 + return __builtin___strcpy_chk(__dest, __src, __builtin_object_size(__dest, 2 > 1)); 2.3662 +} 2.3663 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) char *__attribute__((__nothrow__, __leaf__)) strncpy(char *__restrict __dest, __const char *__restrict __src, size_t __len) 2.3664 +{ 2.3665 + return __builtin___strncpy_chk(__dest, __src, __len, __builtin_object_size(__dest, 2 > 1)); 2.3666 +} 2.3667 +extern char *__stpncpy_chk(char *__dest, __const char *__src, size_t __n, size_t __destlen) __attribute__((__nothrow__, __leaf__)); 2.3668 +extern char *__stpncpy_alias(char *__dest, __const char *__src, size_t __n) __asm__ ("""stpncpy") __attribute__((__nothrow__, __leaf__)); 2.3669 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) char *__attribute__((__nothrow__, __leaf__)) stpncpy(char *__dest, __const char *__src, size_t __n) 2.3670 +{ 2.3671 + if (__builtin_object_size(__dest, 2 > 1) != (size_t) - 1 && (!__builtin_constant_p(__n) || __n <= __builtin_object_size(__dest, 2 > 1))) 2.3672 + return __stpncpy_chk(__dest, __src, __n, __builtin_object_size(__dest, 2 > 1)); 2.3673 + return __stpncpy_alias(__dest, __src, __n); 2.3674 +} 2.3675 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) char *__attribute__((__nothrow__, __leaf__)) strcat(char *__restrict __dest, __const char *__restrict __src) 2.3676 +{ 2.3677 + return __builtin___strcat_chk(__dest, __src, __builtin_object_size(__dest, 2 > 1)); 2.3678 +} 2.3679 +extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) char *__attribute__((__nothrow__, __leaf__)) strncat(char *__restrict __dest, __const char *__restrict __src, size_t __len) 2.3680 +{ 2.3681 + return __builtin___strncat_chk(__dest, __src, __len, __builtin_object_size(__dest, 2 > 1)); 2.3682 +} 2.3683 +extern const uint8_t ff_log2_tab[256]; 2.3684 +static inline __attribute__((const)) int av_log2_c(unsigned int v) 2.3685 +{ 2.3686 + int n = 0; 2.3687 + if (v & 0xffff0000) 2.3688 + { 2.3689 + v >>= 16; 2.3690 + n += 16; 2.3691 + } 2.3692 + if (v & 0xff00) 2.3693 + { 2.3694 + v >>= 8; 2.3695 + n += 8; 2.3696 + } 2.3697 + n += ff_log2_tab[v]; 2.3698 + return n; 2.3699 +} 2.3700 +static inline __attribute__((const)) int av_log2_16bit_c(unsigned int v) 2.3701 +{ 2.3702 + int n = 0; 2.3703 + if (v & 0xff00) 2.3704 + { 2.3705 + v >>= 8; 2.3706 + n += 8; 2.3707 + } 2.3708 + n += ff_log2_tab[v]; 2.3709 + return n; 2.3710 +} 2.3711 +static inline __attribute__((const)) int av_clip(int a, int amin, int amax) 2.3712 +{ 2.3713 + if (a < amin) 2.3714 + return amin; 2.3715 + else 2.3716 + if (a > amax) 2.3717 + return amax; 2.3718 + else 2.3719 + return a; 2.3720 +} 2.3721 +static inline __attribute__((const)) uint8_t av_clip_uint8(int a) 2.3722 +{ 2.3723 + if (a & (~0xFF)) 2.3724 + return (- a) >> 31; 2.3725 + else 2.3726 + return a; 2.3727 +} 2.3728 +static inline __attribute__((const)) uint16_t av_clip_uint16(int a) 2.3729 +{ 2.3730 + if (a & (~0xFFFF)) 2.3731 + return (- a) >> 31; 2.3732 + else 2.3733 + return a; 2.3734 +} 2.3735 +static inline __attribute__((const)) int16_t av_clip_int16(int a) 2.3736 +{ 2.3737 + if ((a + 0x8000) & ~0xFFFF) 2.3738 + return (a >> 31) ^ 0x7FFF; 2.3739 + else 2.3740 + return a; 2.3741 +} 2.3742 +static inline __attribute__((const)) int32_t av_clipl_int32(int64_t a) 2.3743 +{ 2.3744 + if ((a + 0x80000000u) & ~0xFFFFFFFFUL) 2.3745 + return (a >> 63) ^ 0x7FFFFFFF; 2.3746 + else 2.3747 + return a; 2.3748 +} 2.3749 +static inline __attribute__((const)) float av_clipf(float a, float amin, float amax) 2.3750 +{ 2.3751 + if (a < amin) 2.3752 + return amin; 2.3753 + else 2.3754 + if (a > amax) 2.3755 + return amax; 2.3756 + else 2.3757 + return a; 2.3758 +} 2.3759 +static inline __attribute__((const)) int av_ceil_log2(int x) 2.3760 +{ 2.3761 + return av_log2_c((x - 1) << 1); 2.3762 +} 2.3763 +typedef union 2.3764 +{ 2.3765 + uint64_t u64; 2.3766 + uint32_t u32[2]; 2.3767 + uint16_t u16[4]; 2.3768 + uint8_t u8[8]; 2.3769 + double f64; 2.3770 + float f32[2]; 2.3771 +} __attribute__((__may_alias__)) av_alias64; 2.3772 +typedef union 2.3773 +{ 2.3774 + uint32_t u32; 2.3775 + uint16_t u16[2]; 2.3776 + uint8_t u8[4]; 2.3777 + float f32; 2.3778 +} __attribute__((__may_alias__)) av_alias32; 2.3779 +typedef union 2.3780 +{ 2.3781 + uint16_t u16; 2.3782 + uint8_t u8[2]; 2.3783 +} __attribute__((__may_alias__)) av_alias16; 2.3784 +static __attribute__((always_inline)) inline void AV_COPY64(void *d, const void *s) 2.3785 +{ 2.3786 + __asm__ ("movq %1, %%mm0 \n\t""movq %%mm0, %0 \n\t": "=m" (*(uint64_t *) d): "m" (*(const uint64_t *) s): "mm0"); 2.3787 +} 2.3788 +static __attribute__((always_inline)) inline void AV_SWAP64(void *a, void *b) 2.3789 +{ 2.3790 + __asm__ ("movq %1, %%mm0 \n\t""movq %0, %%mm1 \n\t""movq %%mm0, %0 \n\t""movq %%mm1, %1 \n\t": "+m" (*(uint64_t *) a), "+m" (*(uint64_t *) b): : "mm0", "mm1"); 2.3791 +} 2.3792 +static __attribute__((always_inline)) inline void AV_ZERO64(void *d) 2.3793 +{ 2.3794 + __asm__ ("pxor %%mm0, %%mm0 \n\t""movq %%mm0, %0 \n\t": "=m" (*(uint64_t *) d): : "mm0"); 2.3795 +} 2.3796 +static __attribute__((always_inline)) inline void AV_COPY128(void *d, const void *s) 2.3797 +{ 2.3798 + struct v 2.3799 + { 2.3800 + uint64_t v[2]; 2.3801 + }; 2.3802 + __asm__ ("movaps %1, %%xmm0 \n\t""movaps %%xmm0, %0 \n\t": "=m" (*(struct v *) d): "m" (*(const struct v *) s): "xmm0"); 2.3803 +} 2.3804 +static __attribute__((always_inline)) inline void AV_ZERO128(void *d) 2.3805 +{ 2.3806 + struct v 2.3807 + { 2.3808 + uint64_t v[2]; 2.3809 + }; 2.3810 + __asm__ ("pxor %%xmm0, %%xmm0 \n\t""movdqa %%xmm0, %0 \n\t": "=m" (*(struct v *) d): : "xmm0"); 2.3811 +} 2.3812 +void ff_h264_idct8_add_c(uint8_t *dst, DCTELEM *block, int stride); 2.3813 +void ff_h264_idct_add_c(uint8_t *dst, DCTELEM *block, int stride); 2.3814 +void ff_h264_idct8_dc_add_c(uint8_t *dst, DCTELEM *block, int stride); 2.3815 +void ff_h264_idct_dc_add_c(uint8_t *dst, DCTELEM *block, int stride); 2.3816 +void ff_h264_lowres_idct_add_c(uint8_t *dst, int stride, DCTELEM *block); 2.3817 +void ff_h264_lowres_idct_put_c(uint8_t *dst, int stride, DCTELEM *block); 2.3818 +void ff_h264_idct_add16_c(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]); 2.3819 +void ff_h264_idct_add16intra_c(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]); 2.3820 +void ff_h264_idct8_add4_c(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]); 2.3821 +void ff_h264_idct_add8_c(uint8_t **dest, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]); 2.3822 +void h264_luma_dc_dequant_idct_c(DCTELEM *block, int qmul); 2.3823 +void chroma_dc_dequant_idct_c(DCTELEM *block, int qmul); 2.3824 +void ff_vector_fmul_window_c(float *dst, const float *src0, const float *src1, const float *win, float add_bias, int len); 2.3825 +void ff_float_to_int16_c(int16_t *dst, const float *src, long len); 2.3826 +void ff_float_to_int16_interleave_c(int16_t *dst, const float **src, long len, int channels); 2.3827 +extern const uint8_t ff_alternate_horizontal_scan[64]; 2.3828 +extern const uint8_t ff_alternate_vertical_scan[64]; 2.3829 +extern const uint8_t ff_zigzag_direct[64]; 2.3830 +extern const uint8_t ff_zigzag248_direct[64]; 2.3831 +extern uint32_t ff_squareTbl[512]; 2.3832 +extern uint8_t ff_cropTbl[256 + 2 * 1024]; 2.3833 +void ff_vp3_idct_c(DCTELEM *block); 2.3834 +void ff_vp3_idct_put_c(uint8_t *dest, int line_size, DCTELEM *block); 2.3835 +void ff_vp3_idct_add_c(uint8_t *dest, int line_size, DCTELEM *block); 2.3836 +void ff_vp3_idct_dc_add_c(uint8_t *dest, int line_size, const DCTELEM *block); 2.3837 +void ff_vp3_v_loop_filter_c(uint8_t *src, int stride, int *bounding_values); 2.3838 +void ff_vp3_h_loop_filter_c(uint8_t *src, int stride, int *bounding_values); 2.3839 +void ff_vp6_filter_diag4_c(uint8_t *dst, uint8_t *src, int stride, const int16_t *h_weights, const int16_t *v_weights); 2.3840 +void ff_bink_idct_c(DCTELEM *block); 2.3841 +void ff_bink_idct_add_c(uint8_t *dest, int linesize, DCTELEM *block); 2.3842 +void ff_bink_idct_put_c(uint8_t *dest, int linesize, DCTELEM *block); 2.3843 +void ff_put_cavs_qpel8_mc00_c(uint8_t *dst, uint8_t *src, int stride); 2.3844 +void ff_avg_cavs_qpel8_mc00_c(uint8_t *dst, uint8_t *src, int stride); 2.3845 +void ff_put_cavs_qpel16_mc00_c(uint8_t *dst, uint8_t *src, int stride); 2.3846 +void ff_avg_cavs_qpel16_mc00_c(uint8_t *dst, uint8_t *src, int stride); 2.3847 +void ff_put_vc1_mspel_mc00_c(uint8_t *dst, const uint8_t *src, int stride, int rnd); 2.3848 +void ff_avg_vc1_mspel_mc00_c(uint8_t *dst, const uint8_t *src, int stride, int rnd); 2.3849 +void ff_ea_idct_put_c(uint8_t *dest, int linesize, DCTELEM *block); 2.3850 +void ff_img_copy_plane(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height); 2.3851 +void ff_shrink22(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height); 2.3852 +void ff_shrink44(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height); 2.3853 +void ff_shrink88(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height); 2.3854 +void ff_gmc_c(uint8_t *dst, uint8_t *src, int stride, int h, int ox, int oy, int dxx, int dxy, int dyx, int dyy, int shift, int r, int width, int height); 2.3855 +typedef void (*op_pixels_func)(uint8_t *block, const uint8_t *pixels, int line_size, int h); 2.3856 +typedef void (*tpel_mc_func)(uint8_t *block, const uint8_t *pixels, int line_size, int w, int h); 2.3857 +typedef void (*qpel_mc_func)(uint8_t *dst, uint8_t *src, int stride); 2.3858 +typedef void (*h264_chroma_mc_func)(uint8_t *dst, uint8_t *src, int srcStride, int h, int x, int y); 2.3859 +typedef void (*op_fill_func)(uint8_t *block, uint8_t value, int line_size, int h); 2.3860 +void ff_put_qpel16_mc11_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3861 +void ff_put_no_rnd_qpel16_mc11_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3862 +void ff_avg_qpel16_mc11_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3863 +void ff_put_qpel16_mc31_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3864 +void ff_put_no_rnd_qpel16_mc31_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3865 +void ff_avg_qpel16_mc31_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3866 +void ff_put_qpel16_mc12_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3867 +void ff_put_no_rnd_qpel16_mc12_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3868 +void ff_avg_qpel16_mc12_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3869 +void ff_put_qpel16_mc32_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3870 +void ff_put_no_rnd_qpel16_mc32_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3871 +void ff_avg_qpel16_mc32_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3872 +void ff_put_qpel16_mc13_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3873 +void ff_put_no_rnd_qpel16_mc13_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3874 +void ff_avg_qpel16_mc13_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3875 +void ff_put_qpel16_mc33_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3876 +void ff_put_no_rnd_qpel16_mc33_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3877 +void ff_avg_qpel16_mc33_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3878 +void ff_put_qpel8_mc11_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3879 +void ff_put_no_rnd_qpel8_mc11_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3880 +void ff_avg_qpel8_mc11_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3881 +void ff_put_qpel8_mc31_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3882 +void ff_put_no_rnd_qpel8_mc31_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3883 +void ff_avg_qpel8_mc31_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3884 +void ff_put_qpel8_mc12_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3885 +void ff_put_no_rnd_qpel8_mc12_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3886 +void ff_avg_qpel8_mc12_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3887 +void ff_put_qpel8_mc32_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3888 +void ff_put_no_rnd_qpel8_mc32_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3889 +void ff_avg_qpel8_mc32_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3890 +void ff_put_qpel8_mc13_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3891 +void ff_put_no_rnd_qpel8_mc13_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3892 +void ff_avg_qpel8_mc13_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3893 +void ff_put_qpel8_mc33_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3894 +void ff_put_no_rnd_qpel8_mc33_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3895 +void ff_avg_qpel8_mc33_old_c(uint8_t *dst, uint8_t *src, int stride); 2.3896 +typedef int (*me_cmp_func)(void *s, uint8_t *blk1, uint8_t *blk2, int line_size, int h); 2.3897 +typedef struct ScanTable 2.3898 +{ 2.3899 + const uint8_t *scantable; 2.3900 + uint8_t permutated[64]; 2.3901 + uint8_t raster_end[64]; 2.3902 +} ScanTable; 2.3903 +void ff_init_scantable(uint8_t *, ScanTable *st, const uint8_t *src_scantable); 2.3904 +void ff_emulated_edge_mc(uint8_t *buf, uint8_t *src, int linesize, int block_w, int block_h, int src_x, int src_y, int w, int h); 2.3905 +typedef struct DSPContext 2.3906 +{ 2.3907 + void (*get_pixels)(DCTELEM *block, const uint8_t *pixels, int line_size); 2.3908 + void (*diff_pixels)(DCTELEM *block, const uint8_t *s1, const uint8_t *s2, int stride); 2.3909 + void (*put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); 2.3910 + void (*put_signed_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); 2.3911 + void (*put_pixels_nonclamped)(const DCTELEM *block, uint8_t *pixels, int line_size); 2.3912 + void (*add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); 2.3913 + void (*add_pixels8)(uint8_t *pixels, DCTELEM *block, int line_size); 2.3914 + void (*add_pixels4)(uint8_t *pixels, DCTELEM *block, int line_size); 2.3915 + void (*clear_block)(DCTELEM *block); 2.3916 + void (*clear_blocks)(DCTELEM *blocks); 2.3917 + op_pixels_func put_pixels_tab[4][4]; 2.3918 + op_pixels_func avg_pixels_tab[4][4]; 2.3919 + op_pixels_func put_no_rnd_pixels_tab[4][4]; 2.3920 + op_pixels_func avg_no_rnd_pixels_tab[4][4]; 2.3921 + void (*put_no_rnd_pixels_l2[2])(uint8_t *block, const uint8_t *a, const uint8_t *b, int line_size, int h); 2.3922 + qpel_mc_func put_qpel_pixels_tab[2][16]; 2.3923 + qpel_mc_func avg_qpel_pixels_tab[2][16]; 2.3924 + qpel_mc_func put_no_rnd_qpel_pixels_tab[2][16]; 2.3925 + qpel_mc_func avg_no_rnd_qpel_pixels_tab[2][16]; 2.3926 + qpel_mc_func put_mspel_pixels_tab[8]; 2.3927 + h264_chroma_mc_func put_h264_chroma_pixels_tab[3]; 2.3928 + h264_chroma_mc_func avg_h264_chroma_pixels_tab[3]; 2.3929 + h264_chroma_mc_func put_no_rnd_vc1_chroma_pixels_tab[3]; 2.3930 + h264_chroma_mc_func avg_no_rnd_vc1_chroma_pixels_tab[3]; 2.3931 + qpel_mc_func put_h264_qpel_pixels_tab[4][16]; 2.3932 + qpel_mc_func avg_h264_qpel_pixels_tab[4][16]; 2.3933 + qpel_mc_func put_2tap_qpel_pixels_tab[4][16]; 2.3934 + qpel_mc_func avg_2tap_qpel_pixels_tab[4][16]; 2.3935 + void (*fdct)(DCTELEM *block); 2.3936 + void (*fdct248)(DCTELEM *block); 2.3937 + void (*idct)(DCTELEM *block); 2.3938 + void (*idct_put)(uint8_t *dest, int line_size, DCTELEM *block); 2.3939 + void (*idct_add)(uint8_t *dest, int line_size, DCTELEM *block); 2.3940 + void (*draw_edges)(uint8_t *buf, int wrap, int width, int height, int w); 2.3941 + void (*prefetch)(void *mem, int stride, int h); 2.3942 +} DSPContext; 2.3943 +void dsputil_static_init(void); 2.3944 +void dsputil_init(DSPContext *p); 2.3945 +int ff_check_alignment(void); 2.3946 +void ff_block_permute(DCTELEM *block, uint8_t *permutation, const uint8_t *scantable, int last); 2.3947 +void ff_set_cmp(DSPContext *c, me_cmp_func *cmp, int type); 2.3948 +static inline uint32_t rnd_avg32(uint32_t a, uint32_t b) 2.3949 +{ 2.3950 + return (a | b) - (((a ^ b) & ~((0x01) * 0x01010101UL)) >> 1); 2.3951 +} 2.3952 +static inline uint32_t no_rnd_avg32(uint32_t a, uint32_t b) 2.3953 +{ 2.3954 + return (a & b) + (((a ^ b) & ~((0x01) * 0x01010101UL)) >> 1); 2.3955 +} 2.3956 +int mm_support(void); 2.3957 +extern int mm_flags; 2.3958 +void dsputil_init_arm(DSPContext *c); 2.3959 +void dsputil_init_mmx(DSPContext *c); 2.3960 +void dsputil_init_ppc(DSPContext *c); 2.3961 +void ff_dsputil_init_dwt(DSPContext *c); 2.3962 +static inline void emms(void) 2.3963 +{ 2.3964 + __asm__ volatile("emms;": : : "memory"); 2.3965 +} 2.3966 +static inline void copy_block2(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h) 2.3967 +{ 2.3968 + int i; 2.3969 + for (i = 0; 2.3970 + i < h; 2.3971 + i++) 2.3972 + { 2.3973 + do 2.3974 + { 2.3975 + ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])); 2.3976 + ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8; 2.3977 + } 2.3978 + while (0); 2.3979 + dst += dstStride; 2.3980 + src += srcStride; 2.3981 + } 2.3982 +} 2.3983 +static inline void copy_block4(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h) 2.3984 +{ 2.3985 + int i; 2.3986 + for (i = 0; 2.3987 + i < h; 2.3988 + i++) 2.3989 + { 2.3990 + do 2.3991 + { 2.3992 + ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])); 2.3993 + ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8; 2.3994 + ((uint8_t *) (dst))[2] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 16; 2.3995 + ((uint8_t *) (dst))[3] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 24; 2.3996 + } 2.3997 + while (0); 2.3998 + dst += dstStride; 2.3999 + src += srcStride; 2.4000 + } 2.4001 +} 2.4002 +static inline void copy_block8(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h) 2.4003 +{ 2.4004 + int i; 2.4005 + for (i = 0; 2.4006 + i < h; 2.4007 + i++) 2.4008 + { 2.4009 + do 2.4010 + { 2.4011 + ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])); 2.4012 + ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8; 2.4013 + ((uint8_t *) (dst))[2] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 16; 2.4014 + ((uint8_t *) (dst))[3] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 24; 2.4015 + } 2.4016 + while (0); 2.4017 + do 2.4018 + { 2.4019 + ((uint8_t *) (dst + 4))[0] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])); 2.4020 + ((uint8_t *) (dst + 4))[1] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 8; 2.4021 + ((uint8_t *) (dst + 4))[2] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 16; 2.4022 + ((uint8_t *) (dst + 4))[3] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 24; 2.4023 + } 2.4024 + while (0); 2.4025 + dst += dstStride; 2.4026 + src += srcStride; 2.4027 + } 2.4028 +} 2.4029 +static inline void copy_block9(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h) 2.4030 +{ 2.4031 + int i; 2.4032 + for (i = 0; 2.4033 + i < h; 2.4034 + i++) 2.4035 + { 2.4036 + do 2.4037 + { 2.4038 + ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])); 2.4039 + ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8; 2.4040 + ((uint8_t *) (dst))[2] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 16; 2.4041 + ((uint8_t *) (dst))[3] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 24; 2.4042 + } 2.4043 + while (0); 2.4044 + do 2.4045 + { 2.4046 + ((uint8_t *) (dst + 4))[0] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])); 2.4047 + ((uint8_t *) (dst + 4))[1] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 8; 2.4048 + ((uint8_t *) (dst + 4))[2] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 16; 2.4049 + ((uint8_t *) (dst + 4))[3] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 24; 2.4050 + } 2.4051 + while (0); 2.4052 + dst[8] = src[8]; 2.4053 + dst += dstStride; 2.4054 + src += srcStride; 2.4055 + } 2.4056 +} 2.4057 +static inline void copy_block16(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h) 2.4058 +{ 2.4059 + int i; 2.4060 + for (i = 0; 2.4061 + i < h; 2.4062 + i++) 2.4063 + { 2.4064 + do 2.4065 + { 2.4066 + ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])); 2.4067 + ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8; 2.4068 + ((uint8_t *) (dst))[2] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 16; 2.4069 + ((uint8_t *) (dst))[3] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 24; 2.4070 + } 2.4071 + while (0); 2.4072 + do 2.4073 + { 2.4074 + ((uint8_t *) (dst + 4))[0] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])); 2.4075 + ((uint8_t *) (dst + 4))[1] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 8; 2.4076 + ((uint8_t *) (dst + 4))[2] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 16; 2.4077 + ((uint8_t *) (dst + 4))[3] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 24; 2.4078 + } 2.4079 + while (0); 2.4080 + do 2.4081 + { 2.4082 + ((uint8_t *) (dst + 8))[0] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])); 2.4083 + ((uint8_t *) (dst + 8))[1] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 8; 2.4084 + ((uint8_t *) (dst + 8))[2] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 16; 2.4085 + ((uint8_t *) (dst + 8))[3] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 24; 2.4086 + } 2.4087 + while (0); 2.4088 + do 2.4089 + { 2.4090 + ((uint8_t *) (dst + 12))[0] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])); 2.4091 + ((uint8_t *) (dst + 12))[1] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 8; 2.4092 + ((uint8_t *) (dst + 12))[2] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 16; 2.4093 + ((uint8_t *) (dst + 12))[3] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 24; 2.4094 + } 2.4095 + while (0); 2.4096 + dst += dstStride; 2.4097 + src += srcStride; 2.4098 + } 2.4099 +} 2.4100 +static inline void copy_block17(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h) 2.4101 +{ 2.4102 + int i; 2.4103 + for (i = 0; 2.4104 + i < h; 2.4105 + i++) 2.4106 + { 2.4107 + do 2.4108 + { 2.4109 + ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])); 2.4110 + ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8; 2.4111 + ((uint8_t *) (dst))[2] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 16; 2.4112 + ((uint8_t *) (dst))[3] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 24; 2.4113 + } 2.4114 + while (0); 2.4115 + do 2.4116 + { 2.4117 + ((uint8_t *) (dst + 4))[0] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])); 2.4118 + ((uint8_t *) (dst + 4))[1] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 8; 2.4119 + ((uint8_t *) (dst + 4))[2] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 16; 2.4120 + ((uint8_t *) (dst + 4))[3] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 24; 2.4121 + } 2.4122 + while (0); 2.4123 + do 2.4124 + { 2.4125 + ((uint8_t *) (dst + 8))[0] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])); 2.4126 + ((uint8_t *) (dst + 8))[1] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 8; 2.4127 + ((uint8_t *) (dst + 8))[2] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 16; 2.4128 + ((uint8_t *) (dst + 8))[3] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 24; 2.4129 + } 2.4130 + while (0); 2.4131 + do 2.4132 + { 2.4133 + ((uint8_t *) (dst + 12))[0] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])); 2.4134 + ((uint8_t *) (dst + 12))[1] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 8; 2.4135 + ((uint8_t *) (dst + 12))[2] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 16; 2.4136 + ((uint8_t *) (dst + 12))[3] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 24; 2.4137 + } 2.4138 + while (0); 2.4139 + dst[16] = src[16]; 2.4140 + dst += dstStride; 2.4141 + src += srcStride; 2.4142 + } 2.4143 +} 2.4144 +typedef void (*h264_weight_func)(uint8_t *block, int stride, int log2_denom, int weight, int offset); 2.4145 +typedef void (*h264_biweight_func)(uint8_t *dst, uint8_t *src, int stride, int log2_denom, int weightd, int weights, int offset); 2.4146 +typedef struct H264DSPContext 2.4147 +{ 2.4148 + h264_weight_func weight_h264_pixels_tab[10]; 2.4149 + h264_biweight_func biweight_h264_pixels_tab[10]; 2.4150 + void (*h264_v_loop_filter_luma)(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0); 2.4151 + void (*h264_h_loop_filter_luma)(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0); 2.4152 + void (*h264_v_loop_filter_luma_intra)(uint8_t *pix, int stride, int alpha, int beta); 2.4153 + void (*h264_h_loop_filter_luma_intra)(uint8_t *pix, int stride, int alpha, int beta); 2.4154 + void (*h264_v_loop_filter_chroma)(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0); 2.4155 + void (*h264_h_loop_filter_chroma)(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0); 2.4156 + void (*h264_v_loop_filter_chroma_intra)(uint8_t *pix, int stride, int alpha, int beta); 2.4157 + void (*h264_h_loop_filter_chroma_intra)(uint8_t *pix, int stride, int alpha, int beta); 2.4158 + void (*h264_loop_filter_strength)(int16_t bS[2][4][4], uint8_t nnz[40], int8_t ref[2][40], int16_t mv[2][40][2], int bidir, int edges, int step, int mask_mv0, int mask_mv1, int field); 2.4159 + void (*h264_idct_add)(uint8_t *dst, DCTELEM *block, int stride); 2.4160 + void (*h264_idct8_add)(uint8_t *dst, DCTELEM *block, int stride); 2.4161 + void (*h264_idct_dc_add)(uint8_t *dst, DCTELEM *block, int stride); 2.4162 + void (*h264_idct8_dc_add)(uint8_t *dst, DCTELEM *block, int stride); 2.4163 + void (*h264_dct)(DCTELEM block[4][4]); 2.4164 + void (*h264_idct_add16)(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]); 2.4165 + void (*h264_idct8_add4)(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]); 2.4166 + void (*h264_idct_add8)(uint8_t **dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]); 2.4167 + void (*h264_idct_add16intra)(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]); 2.4168 + qpel_mc_func (*qpel_put)[16]; 2.4169 + qpel_mc_func (*qpel_avg)[16]; 2.4170 +} H264DSPContext; 2.4171 +void ff_h264dsp_init(H264DSPContext *c); 2.4172 +void ff_h264dsp_init_arm(H264DSPContext *c); 2.4173 +void ff_h264dsp_init_ppc(H264DSPContext *c); 2.4174 +void ff_h264dsp_init_x86(H264DSPContext *c); 2.4175 +typedef struct H264PredContext 2.4176 +{ 2.4177 + void (*pred4x4[9 + 3 + 3])(uint8_t *src, uint8_t *topright, int stride); 2.4178 + void (*pred8x8l[9 + 3])(uint8_t *src, int topleft, int topright, int stride); 2.4179 + void (*pred8x8[4 + 3 + 4])(uint8_t *src, int stride); 2.4180 + void (*pred16x16[4 + 3])(uint8_t *src, int stride); 2.4181 + void (*pred4x4_add[2])(uint8_t *pix, const DCTELEM *block, int stride); 2.4182 + void (*pred8x8l_add[2])(uint8_t *pix, const DCTELEM *block, int stride); 2.4183 + void (*pred8x8_add[3])(uint8_t *pix, const int *block_offset, const DCTELEM *block, int stride); 2.4184 + void (*pred16x16_add[3])(uint8_t *pix, const int *block_offset, const DCTELEM *block, int stride); 2.4185 +} H264PredContext; 2.4186 +void ff_h264_pred_init(H264PredContext *h); 2.4187 +void ff_h264_pred_init_arm(H264PredContext *h); 2.4188 +typedef struct 2.4189 +{ 2.4190 + const char *class_name; 2.4191 + const char *(*item_name)(void *ctx); 2.4192 + const struct AVOption *option; 2.4193 + int version; 2.4194 +} AVClass; 2.4195 +void av_log(int level, const char *fmt, ...); 2.4196 +void av_vlog(int level, const char *fmt, va_list); 2.4197 +int av_log_get_level(void); 2.4198 +void av_log_set_level(int); 2.4199 +void av_log_set_callback(void (*)(int, const char *, va_list)); 2.4200 +void av_log_default_callback(int level, const char *fmt, va_list vl); 2.4201 +static inline uint64_t read_time(void) 2.4202 +{ 2.4203 + uint32_t a, d; 2.4204 + __asm__ volatile("rdtsc": "=a" (a), "=d" (d): ); 2.4205 + return ((uint64_t) d << 32) + a; 2.4206 +} 2.4207 +static inline int32_t NEG_SSR32(int32_t a, int8_t s) 2.4208 +{ 2.4209 + __asm__ ("sarl %1, %0\n\t": "+r" (a): "ic" ((uint8_t) (- s))); 2.4210 + return a; 2.4211 +} 2.4212 +static inline uint32_t NEG_USR32(uint32_t a, int8_t s) 2.4213 +{ 2.4214 + __asm__ ("shrl %1, %0\n\t": "+r" (a): "ic" ((uint8_t) (- s))); 2.4215 + return a; 2.4216 +} 2.4217 +static __attribute__((always_inline)) inline int MULH(int a, int b) 2.4218 +{ 2.4219 + return ((int64_t) (a) * (int64_t) (b)) >> 32; 2.4220 +} 2.4221 +static __attribute__((always_inline)) inline unsigned UMULH(unsigned a, unsigned b) 2.4222 +{ 2.4223 + return ((uint64_t) (a) * (uint64_t) (b)) >> 32; 2.4224 +} 2.4225 +static inline __attribute__((const)) int mid_pred(int a, int b, int c) 2.4226 +{ 2.4227 + if (a > b) 2.4228 + { 2.4229 + if (c > b) 2.4230 + { 2.4231 + if (c > a) 2.4232 + b = a; 2.4233 + else 2.4234 + b = c; 2.4235 + } 2.4236 + } 2.4237 + else 2.4238 + { 2.4239 + if (b > c) 2.4240 + { 2.4241 + if (c > a) 2.4242 + b = c; 2.4243 + else 2.4244 + b = a; 2.4245 + } 2.4246 + } 2.4247 + return b; 2.4248 +} 2.4249 +static inline __attribute__((const)) int sign_extend(int val, unsigned bits) 2.4250 +{ 2.4251 + return (val << ((8 * sizeof(int)) - bits)) >> ((8 * sizeof(int)) - bits); 2.4252 +} 2.4253 +static inline __attribute__((const)) unsigned zero_extend(unsigned val, unsigned bits) 2.4254 +{ 2.4255 + return (val << ((8 * sizeof(int)) - bits)) >> ((8 * sizeof(int)) - bits); 2.4256 +} 2.4257 +typedef struct GetBitContext 2.4258 +{ 2.4259 + uint8_t *rbsp; 2.4260 + unsigned int rbsp_size; 2.4261 + uint8_t *raw; 2.4262 + const uint8_t *buffer, *buffer_end; 2.4263 + unsigned int alloc_size; 2.4264 + unsigned int buf_size; 2.4265 + uint32_t *buffer_ptr; 2.4266 + uint32_t cache0; 2.4267 + uint32_t cache1; 2.4268 + int bit_count; 2.4269 + int size_in_bits; 2.4270 +} GetBitContext; 2.4271 +static inline int get_bits_count(const GetBitContext *s) 2.4272 +{ 2.4273 + return ((uint8_t *) s->buffer_ptr - s->buffer) * 8 - 32 + s->bit_count; 2.4274 +} 2.4275 +static inline void skip_bits_long(GetBitContext *s, int n) 2.4276 +{ 2.4277 + int re_bit_count = (s)->bit_count; 2.4278 + uint32_t re_cache0 = (s)->cache0; 2.4279 + uint32_t re_cache1 = (s)->cache1; 2.4280 + uint32_t *re_buffer_ptr = (s)->buffer_ptr; 2.4281 + re_bit_count += n; 2.4282 + re_buffer_ptr += re_bit_count >> 5; 2.4283 + re_bit_count &= 31; 2.4284 + re_cache0 = bswap_32(re_buffer_ptr[- 1]) << re_bit_count; 2.4285 + re_cache1 = 0; 2.4286 + if (re_bit_count > 0) 2.4287 + { 2.4288 + const uint32_t next = bswap_32(*re_buffer_ptr); 2.4289 + re_cache0 |= NEG_USR32(next, re_bit_count); 2.4290 + re_cache1 |= next << re_bit_count; 2.4291 + re_buffer_ptr++; 2.4292 + re_bit_count -= 32; 2.4293 + } 2.4294 + (s)->bit_count = re_bit_count; 2.4295 + (s)->cache0 = re_cache0; 2.4296 + (s)->cache1 = re_cache1; 2.4297 + (s)->buffer_ptr = re_buffer_ptr; 2.4298 +} 2.4299 +static inline int get_xbits(GetBitContext *s, int n) 2.4300 +{ 2.4301 + register int sign; 2.4302 + register int32_t cache; 2.4303 + int re_bit_count = (s)->bit_count; 2.4304 + uint32_t re_cache0 = (s)->cache0; 2.4305 + uint32_t re_cache1 = (s)->cache1; 2.4306 + uint32_t *re_buffer_ptr = (s)->buffer_ptr; 2.4307 + if (re_bit_count > 0) 2.4308 + { 2.4309 + const uint32_t next = bswap_32(*re_buffer_ptr); 2.4310 + re_cache0 |= NEG_USR32(next, re_bit_count); 2.4311 + re_cache1 |= next << re_bit_count; 2.4312 + re_buffer_ptr++; 2.4313 + re_bit_count -= 32; 2.4314 + } 2.4315 + cache = (re_cache0); 2.4316 + sign = (~cache) >> 31; 2.4317 + { 2.4318 + __asm__ ("shldl %2, %1, %0 \n\t""shll %2, %1 \n\t": "+r" (re_cache0), "+r" (re_cache1): "Ic" ((uint8_t) (n))); 2.4319 + re_bit_count += (n); 2.4320 + } 2.4321 + (s)->bit_count = re_bit_count; 2.4322 + (s)->cache0 = re_cache0; 2.4323 + (s)->cache1 = re_cache1; 2.4324 + (s)->buffer_ptr = re_buffer_ptr; 2.4325 + return (NEG_USR32(sign ^ cache, n) ^ sign) - sign; 2.4326 +} 2.4327 +static inline int get_sbits(GetBitContext *s, int n) 2.4328 +{ 2.4329 + register int tmp; 2.4330 + int re_bit_count = (s)->bit_count; 2.4331 + uint32_t re_cache0 = (s)->cache0; 2.4332 + uint32_t re_cache1 = (s)->cache1; 2.4333 + uint32_t *re_buffer_ptr = (s)->buffer_ptr; 2.4334 + if (re_bit_count > 0) 2.4335 + { 2.4336 + const uint32_t next = bswap_32(*re_buffer_ptr); 2.4337 + re_cache0 |= NEG_USR32(next, re_bit_count); 2.4338 + re_cache1 |= next << re_bit_count; 2.4339 + re_buffer_ptr++; 2.4340 + re_bit_count -= 32; 2.4341 + } 2.4342 + tmp = NEG_SSR32(re_cache0, n); 2.4343 + { 2.4344 + __asm__ ("shldl %2, %1, %0 \n\t""shll %2, %1 \n\t": "+r" (re_cache0), "+r" (re_cache1): "Ic" ((uint8_t) (n))); 2.4345 + re_bit_count += (n); 2.4346 + } 2.4347 + (s)->bit_count = re_bit_count; 2.4348 + (s)->cache0 = re_cache0; 2.4349 + (s)->cache1 = re_cache1; 2.4350 + (s)->buffer_ptr = re_buffer_ptr; 2.4351 + return tmp; 2.4352 +} 2.4353 +static inline unsigned int get_bits(GetBitContext *s, int n) 2.4354 +{ 2.4355 + register int tmp; 2.4356 + int re_bit_count = (s)->bit_count; 2.4357 + uint32_t re_cache0 = (s)->cache0; 2.4358 + uint32_t re_cache1 = (s)->cache1; 2.4359 + uint32_t *re_buffer_ptr = (s)->buffer_ptr; 2.4360 + if (re_bit_count > 0) 2.4361 + { 2.4362 + const uint32_t next = bswap_32(*re_buffer_ptr); 2.4363 + re_cache0 |= NEG_USR32(next, re_bit_count); 2.4364 + re_cache1 |= next << re_bit_count; 2.4365 + re_buffer_ptr++; 2.4366 + re_bit_count -= 32; 2.4367 + } 2.4368 + tmp = NEG_USR32(re_cache0, n); 2.4369 + { 2.4370 + __asm__ ("shldl %2, %1, %0 \n\t""shll %2, %1 \n\t": "+r" (re_cache0), "+r" (re_cache1): "Ic" ((uint8_t) (n))); 2.4371 + re_bit_count += (n); 2.4372 + } 2.4373 + (s)->bit_count = re_bit_count; 2.4374 + (s)->cache0 = re_cache0; 2.4375 + (s)->cache1 = re_cache1; 2.4376 + (s)->buffer_ptr = re_buffer_ptr; 2.4377 + return tmp; 2.4378 +} 2.4379 +static inline unsigned int show_bits(GetBitContext *s, int n) 2.4380 +{ 2.4381 + register int tmp; 2.4382 + int re_bit_count = (s)->bit_count; 2.4383 + uint32_t re_cache0 = (s)->cache0; 2.4384 + uint32_t re_cache1 = (s)->cache1; 2.4385 + uint32_t *re_buffer_ptr = (s)->buffer_ptr; 2.4386 + if (re_bit_count > 0) 2.4387 + { 2.4388 + const uint32_t next = bswap_32(*re_buffer_ptr); 2.4389 + re_cache0 |= NEG_USR32(next, re_bit_count); 2.4390 + re_cache1 |= next << re_bit_count; 2.4391 + re_buffer_ptr++; 2.4392 + re_bit_count -= 32; 2.4393 + } 2.4394 + tmp = NEG_USR32(re_cache0, n); 2.4395 + return tmp; 2.4396 +} 2.4397 +static inline void skip_bits(GetBitContext *s, int n) 2.4398 +{ 2.4399 + int re_bit_count = (s)->bit_count; 2.4400 + uint32_t re_cache0 = (s)->cache0; 2.4401 + uint32_t re_cache1 = (s)->cache1; 2.4402 + uint32_t *re_buffer_ptr = (s)->buffer_ptr; 2.4403 + if (re_bit_count > 0) 2.4404 + { 2.4405 + const uint32_t next = bswap_32(*re_buffer_ptr); 2.4406 + re_cache0 |= NEG_USR32(next, re_bit_count); 2.4407 + re_cache1 |= next << re_bit_count; 2.4408 + re_buffer_ptr++; 2.4409 + re_bit_count -= 32; 2.4410 + } 2.4411 + { 2.4412 + __asm__ ("shldl %2, %1, %0 \n\t""shll %2, %1 \n\t": "+r" (re_cache0), "+r" (re_cache1): "Ic" ((uint8_t) (n))); 2.4413 + re_bit_count += (n); 2.4414 + } 2.4415 + (s)->bit_count = re_bit_count; 2.4416 + (s)->cache0 = re_cache0; 2.4417 + (s)->cache1 = re_cache1; 2.4418 + (s)->buffer_ptr = re_buffer_ptr; 2.4419 +} 2.4420 +static inline unsigned int get_bits1(GetBitContext *s) 2.4421 +{ 2.4422 + return get_bits(s, 1); 2.4423 +} 2.4424 +static inline unsigned int show_bits1(GetBitContext *s) 2.4425 +{ 2.4426 + return show_bits(s, 1); 2.4427 +} 2.4428 +static inline void skip_bits1(GetBitContext *s) 2.4429 +{ 2.4430 + skip_bits(s, 1); 2.4431 +} 2.4432 +static inline unsigned int get_bits_long(GetBitContext *s, int n) 2.4433 +{ 2.4434 + if (n <= 32) 2.4435 + return get_bits(s, n); 2.4436 + else 2.4437 + { 2.4438 + int ret = get_bits(s, 16) << (n - 16); 2.4439 + return ret | get_bits(s, n - 16); 2.4440 + } 2.4441 +} 2.4442 +static inline int get_sbits_long(GetBitContext *s, int n) 2.4443 +{ 2.4444 + return sign_extend(get_bits_long(s, n), n); 2.4445 +} 2.4446 +static inline unsigned int show_bits_long(GetBitContext *s, int n) 2.4447 +{ 2.4448 + if (n <= 32) 2.4449 + return show_bits(s, n); 2.4450 + else 2.4451 + { 2.4452 + GetBitContext gb = *s; 2.4453 + return get_bits_long(&gb, n); 2.4454 + } 2.4455 +} 2.4456 +static inline int check_marker(GetBitContext *s, const char *msg) 2.4457 +{ 2.4458 + int bit = get_bits1(s); 2.4459 + if (!bit) 2.4460 + av_log(32, "Marker bit missing %s\n", msg); 2.4461 + return bit; 2.4462 +} 2.4463 +static inline void init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size) 2.4464 +{ 2.4465 + int buffer_size = (bit_size + 7) >> 3; 2.4466 + if (buffer_size < 0 || bit_size < 0) 2.4467 + { 2.4468 + buffer_size = bit_size = 0; 2.4469 + buffer = ((void *) 0); 2.4470 + } 2.4471 + s->buffer = buffer; 2.4472 + s->size_in_bits = bit_size; 2.4473 + s->buffer_end = buffer + buffer_size; 2.4474 + s->buffer_ptr = (uint32_t *) ((intptr_t) buffer & (~3)); 2.4475 + s->bit_count = 32 + 8 * ((intptr_t) buffer & 3); 2.4476 + skip_bits_long(s, 0); 2.4477 +} 2.4478 +static inline void align_get_bits(GetBitContext *s) 2.4479 +{ 2.4480 + int n = (- get_bits_count(s)) & 7; 2.4481 + if (n) 2.4482 + skip_bits(s, n); 2.4483 +} 2.4484 +static inline int get_bits_left(GetBitContext *gb) 2.4485 +{ 2.4486 + return gb->size_in_bits - get_bits_count(gb); 2.4487 +} 2.4488 +enum 2.4489 +{ 2.4490 + PARSE = 0, 2.4491 + ENTROPY, 2.4492 + REORDER, 2.4493 + REORDER2, 2.4494 + MBDEC, 2.4495 + OUTPUT, 2.4496 + STAGES 2.4497 +}; 2.4498 +enum 2.4499 +{ 2.4500 + TOTAL = 0, 2.4501 + FRONT, 2.4502 + ED, 2.4503 + REC, 2.4504 + PROFILE_STAGES 2.4505 +}; 2.4506 +typedef struct ParserContext 2.4507 +{ 2.4508 + int ifile; 2.4509 + int ofile; 2.4510 + int buffer_size; 2.4511 + int eof_reached; 2.4512 + uint8_t *data; 2.4513 + int size; 2.4514 + uint8_t *cur_ptr; 2.4515 + int cur_len; 2.4516 + int64_t frame_offset; 2.4517 + int64_t cur_offset; 2.4518 + int64_t next_frame_offset; 2.4519 + int pict_type; 2.4520 + int repeat_pict; 2.4521 + int key_frame; 2.4522 + int64_t pos; 2.4523 + int64_t last_pos; 2.4524 + int final_frame; 2.4525 + uint8_t overread[5]; 2.4526 + int overread_cnt; 2.4527 + int index; 2.4528 + int last_index; 2.4529 + int frame_start_found; 2.4530 + uint32_t state; 2.4531 +} ParserContext; 2.4532 +typedef struct NalContext 2.4533 +{ 2.4534 + SPS *sps_buffers[32]; 2.4535 + PPS *pps_buffers[256]; 2.4536 + SPS sps; 2.4537 + PictureInfo picture[16 + 1]; 2.4538 + PictureInfo *release_ref[66]; 2.4539 + PictureInfo *short_ref[32]; 2.4540 + PictureInfo *long_ref[32]; 2.4541 + int long_ref_count; 2.4542 + int short_ref_count; 2.4543 + uint32_t coded_pic_num; 2.4544 + int poc_lsb; 2.4545 + int poc_msb; 2.4546 + uint32_t poc_offset; 2.4547 + int delta_poc; 2.4548 + int frame_num; 2.4549 + int prev_poc_msb; 2.4550 + int prev_poc_lsb; 2.4551 + int frame_num_offset; 2.4552 + int prev_frame_num_offset; 2.4553 + int prev_frame_num; 2.4554 + int max_pic_num; 2.4555 + int redundant_pic_count; 2.4556 + int outputed_poc; 2.4557 + int ip_id; 2.4558 + int b4_stride; 2.4559 + int mb_stride; 2.4560 + int mb_width; 2.4561 + int mb_height; 2.4562 + int width; 2.4563 + int height; 2.4564 + int has_b_frames; 2.4565 + SEI_PicStructType sei_pic_struct; 2.4566 + int sei_ct_type; 2.4567 + int sei_dpb_output_delay; 2.4568 + int sei_cpb_removal_delay; 2.4569 + int sei_recovery_frame_cnt; 2.4570 + int sei_buffering_period_present; 2.4571 + int initial_cpb_removal_delay[32]; 2.4572 +} NalContext; 2.4573 +typedef struct EntropyContext 2.4574 +{ 2.4575 + CABACContext c; 2.4576 + H264Mb *m; 2.4577 + int top_cbp; 2.4578 + int left_cbp; 2.4579 + int neighbor_transform_size; 2.4580 + uint32_t top_type; 2.4581 + uint32_t left_type; 2.4582 + uint32_t topright_type; 2.4583 + uint32_t topleft_type; 2.4584 + int curr_qscale; 2.4585 + int chroma_qp[2]; 2.4586 + int last_qscale_diff; 2.4587 + uint32_t dequant4_buffer[6][52][16]; 2.4588 + uint32_t dequant8_buffer[2][52][64]; 2.4589 + uint32_t (*dequant4_coeff[6])[16]; 2.4590 + uint32_t (*dequant8_coeff[2])[64]; 2.4591 + uint8_t (*non_zero_count_top)[8]; 2.4592 + uint8_t (*non_zero_count)[8]; 2.4593 + uint8_t (*non_zero_count_row[2])[8]; 2.4594 + uint8_t __attribute__((aligned(8))) non_zero_count_left[8]; 2.4595 + uint8_t (*mvd_top[2])[2]; 2.4596 + uint8_t (*mvd[2])[2]; 2.4597 + uint8_t (*mvd_table[2][2])[2]; 2.4598 + uint8_t *direct_top; 2.4599 + uint8_t *direct; 2.4600 + uint8_t *direct_table[2]; 2.4601 + uint8_t *chroma_pred_mode_top; 2.4602 + uint8_t *chroma_pred_mode; 2.4603 + uint8_t *chroma_pred_mode_table[2]; 2.4604 + uint16_t *cbp_top; 2.4605 + uint16_t *cbp; 2.4606 + uint16_t *cbp_table[2]; 2.4607 + int8_t *qscale_top; 2.4608 + int8_t *qscale; 2.4609 + int8_t *qscale_table[2]; 2.4610 + int8_t *ref_index_top[2]; 2.4611 + int8_t *ref_index[2]; 2.4612 + int8_t *ref_index_table[2][2]; 2.4613 + uint32_t *mb_type_top; 2.4614 + uint32_t *mb_type; 2.4615 + uint32_t *mb_type_table[2]; 2.4616 + int b_stride; 2.4617 + int mb_stride; 2.4618 + int mb_width; 2.4619 + int mb_height; 2.4620 + uint8_t *zigzag_scan; 2.4621 + uint8_t *zigzag_scan8x8; 2.4622 + uint8_t direct_cache[5 * 8]; 2.4623 + int8_t __attribute__((aligned(8))) intra4x4_pred_mode_cache[5 * 8]; 2.4624 + int16_t __attribute__((aligned(16))) mv_cache[2][5 * 8][2]; 2.4625 + int8_t __attribute__((aligned(8))) ref_cache[2][5 * 8]; 2.4626 + uint8_t __attribute__((aligned(8))) non_zero_count_cache[6 * 8]; 2.4627 + uint8_t __attribute__((aligned(16))) mvd_cache[2][5 * 8][2]; 2.4628 +} EntropyContext; 2.4629 +typedef struct H264Slice 2.4630 +{ 2.4631 + PPS pps; 2.4632 + PictureInfo *current_picture_info; 2.4633 + DecodedPicture *curr_pic; 2.4634 + int slice_num; 2.4635 + int release_ref_cpn[66]; 2.4636 + int release_cnt; 2.4637 + int qp_thresh; 2.4638 + int use_weight; 2.4639 + int use_weight_chroma; 2.4640 + int luma_log2_weight_denom; 2.4641 + int chroma_log2_weight_denom; 2.4642 + int16_t luma_weight[16][2][2]; 2.4643 + int16_t chroma_weight[16][2][2][2]; 2.4644 + int16_t implicit_weight[16][16][2]; 2.4645 + int ref_list_cpn[2][16]; 2.4646 + PictureInfo *ref_list[2][16]; 2.4647 + DecodedPicture *dp_ref_list[2][16]; 2.4648 + int ref_count[2]; 2.4649 + int slice_type; 2.4650 + int slice_type_nos; 2.4651 + int slice_alpha_c0_offset; 2.4652 + int slice_beta_offset; 2.4653 + int direct_8x8_inference_flag; 2.4654 + uint8_t list_count; 2.4655 + uint32_t coded_pic_num; 2.4656 + int poc; 2.4657 + int key_frame; 2.4658 + int mmco_reset; 2.4659 + int ip_id; 2.4660 + int transform_bypass; 2.4661 + int direct_spatial_mv_pred; 2.4662 + int map_col_to_list0[2][16]; 2.4663 + int dist_scale_factor[16]; 2.4664 + int cabac_init_idc; 2.4665 + int nal_ref_idc; 2.4666 + int nal_unit_type; 2.4667 + int ref2frm[2][64]; 2.4668 + int qscale; 2.4669 +} H264Slice; 2.4670 +typedef struct 2.4671 +{ 2.4672 + H264Slice slice; 2.4673 + H264Mb *mbs; 2.4674 + DecodedPicture *dp; 2.4675 + GetBitContext gb; 2.4676 + int lines_taken; 2.4677 + int lines_total; 2.4678 + int state; 2.4679 + int initialized; 2.4680 +} SliceBufferEntry; 2.4681 +typedef struct RingLineEntry 2.4682 +{ 2.4683 + union 2.4684 + { 2.4685 + volatile int32_t __attribute__((aligned(64))) mb_cnt; 2.4686 + int32_t __attribute__((aligned(64))) pad[16]; 2.4687 + }; 2.4688 + SliceBufferEntry *sbe; 2.4689 + int id; 2.4690 + int line; 2.4691 + TopBorder *top; 2.4692 + struct RingLineEntry *prev_line; 2.4693 +} RingLineEntry; 2.4694 +typedef struct SuperMBTask 2.4695 +{ 2.4696 + int smb_x; 2.4697 + int smb_y; 2.4698 +} SuperMBTask; 2.4699 +typedef struct SuperMBContext 2.4700 +{ 2.4701 + int nsmb_width; 2.4702 + int nsmb_height; 2.4703 + int nsmb_3dheight; 2.4704 + int smb_width; 2.4705 + int smb_height; 2.4706 + int refcount; 2.4707 + int index; 2.4708 + SuperMBTask *smbs[2]; 2.4709 +} SuperMBContext; 2.4710 +typedef struct MBRecState 2.4711 +{ 2.4712 + int8_t *ref_index_top[2]; 2.4713 + int8_t *ref_index[2]; 2.4714 + int16_t (*motion_val_top[2])[2]; 2.4715 + int16_t (*motion_val[2])[2]; 2.4716 + uint32_t *mb_type_top; 2.4717 + uint32_t *mb_type; 2.4718 + int8_t *list1_ref_index[2]; 2.4719 + int16_t (*list1_motion_val[2])[2]; 2.4720 + uint32_t *list1_mb_type; 2.4721 + int8_t *intra4x4_pred_mode_top; 2.4722 + int8_t *intra4x4_pred_mode; 2.4723 + int8_t *non_zero_count_top; 2.4724 + int8_t *non_zero_count; 2.4725 + unsigned int topleft_samples_available; 2.4726 + unsigned int topright_samples_available; 2.4727 + unsigned int top_samples_available; 2.4728 + unsigned int left_samples_available; 2.4729 + int top_type; 2.4730 + int left_type; 2.4731 + int8_t __attribute__((aligned(8))) intra4x4_pred_mode_cache[5 * 8]; 2.4732 + int16_t __attribute__((aligned(16))) mv_cache[2][5 * 8][2]; 2.4733 + int8_t __attribute__((aligned(8))) ref_cache[2][5 * 8]; 2.4734 + uint8_t __attribute__((aligned(8))) non_zero_count_cache[6 * 8]; 2.4735 + uint8_t __attribute__((aligned(16))) mvd_cache[2][5 * 8][2]; 2.4736 + int16_t __attribute__((aligned(8))) bS[2][4][4]; 2.4737 + uint8_t edges[2]; 2.4738 +} MBRecState; 2.4739 +typedef struct MBRecContext 2.4740 +{ 2.4741 + DSPContext dsp; 2.4742 + H264DSPContext hdsp; 2.4743 + H264PredContext hpc; 2.4744 + MBRecState *mrs; 2.4745 + RingLineEntry *rle; 2.4746 + uint8_t *scratchpad_y; 2.4747 + uint8_t *scratchpad_cb; 2.4748 + uint8_t *scratchpad_cr; 2.4749 + int linesize; 2.4750 + int uvlinesize; 2.4751 + int mb_width; 2.4752 + int mb_height; 2.4753 + int mb_stride; 2.4754 + int b_stride; 2.4755 + int width; 2.4756 + int height; 2.4757 + int block_offset[16 + 8]; 2.4758 +} MBRecContext; 2.4759 +typedef struct OutputContext 2.4760 +{ 2.4761 + int bit_buffer_size; 2.4762 + uint8_t *bit_buffer; 2.4763 + uint64_t video_size; 2.4764 + int frame_number; 2.4765 + DecodedPicture *delayed_pic[33]; 2.4766 + int dp_cnt; 2.4767 +} OutputContext; 2.4768 +typedef struct 2.4769 +{ 2.4770 + pthread_mutex_t lock; 2.4771 + pthread_cond_t cond; 2.4772 + SliceBufferEntry **queue; 2.4773 + int size; 2.4774 + int cnt; 2.4775 + int fi; 2.4776 + int fo; 2.4777 +} SliceBufferQueue; 2.4778 +typedef struct 2.4779 +{ 2.4780 + pthread_mutex_t wslock; 2.4781 + pthread_cond_t wscond; 2.4782 + pthread_mutex_t swlock; 2.4783 + pthread_cond_t swcond; 2.4784 + RingLineEntry **queue; 2.4785 + int size; 2.4786 + int ready; 2.4787 + int free; 2.4788 + int fi; 2.4789 + int fo; 2.4790 +} RingLineQueue; 2.4791 +typedef struct H264Context 2.4792 +{ 2.4793 + SliceBufferQueue sb_q[STAGES]; 2.4794 + RingLineQueue rl_q; 2.4795 + pthread_mutex_t lock[STAGES]; 2.4796 + pthread_cond_t cond[STAGES]; 2.4797 + pthread_mutex_t task_lock; 2.4798 + pthread_cond_t task_cond; 2.4799 + pthread_attr_t ed_rec_attr[80]; 2.4800 + pthread_t ed_rec_thr[80]; 2.4801 + int init_threads; 2.4802 + pthread_mutex_t ilock; 2.4803 + pthread_cond_t icond; 2.4804 + const char *file_name; 2.4805 + int profile; 2.4806 + int start; 2.4807 + int touch_start; 2.4808 + int setaff; 2.4809 + int touch_done; 2.4810 + int rl_side_touch; 2.4811 + int statmbd; 2.4812 + pthread_mutex_t slock; 2.4813 + pthread_cond_t scond; 2.4814 + pthread_mutex_t tlock; 2.4815 + pthread_cond_t tcond; 2.4816 + pthread_mutex_t tdlock; 2.4817 + pthread_cond_t tdcond; 2.4818 + int ed_ppe_threads; 2.4819 + int threads; 2.4820 + int smt; 2.4821 + int acdpb_cnt; 2.4822 + int reldpb_cnt; 2.4823 + int sb_size; 2.4824 + SliceBufferEntry *sb; 2.4825 + int free_sb_cnt; 2.4826 + int slice_bufs; 2.4827 + int max_dpb_cnt; 2.4828 + DecodedPicture *dpb; 2.4829 + int free_dpb_cnt; 2.4830 + int ifile; 2.4831 + int ofile; 2.4832 + int frame_width; 2.4833 + int frame_height; 2.4834 + int num_frames; 2.4835 + int width; 2.4836 + int height; 2.4837 + int mb_width; 2.4838 + int mb_height; 2.4839 + int mb_stride; 2.4840 + int b4_stride; 2.4841 + int b_stride; 2.4842 + int smb_height; 2.4843 + int smb_width; 2.4844 + pthread_mutex_t smb_lock; 2.4845 + pthread_cond_t sdl_cond; 2.4846 + pthread_mutex_t sdl_lock; 2.4847 + SuperMBContext *smbc; 2.4848 + int wave_order; 2.4849 + int static_3d; 2.4850 + int pipe_bufs; 2.4851 + uint8_t zigzag_scan[16]; 2.4852 + uint8_t zigzag_scan8x8[64]; 2.4853 + int verbose; 2.4854 + int no_mbd; 2.4855 + int display; 2.4856 + int fullscreen; 2.4857 + int quit; 2.4858 + struct timespec start_time[PROFILE_STAGES]; 2.4859 + struct timespec end_time[PROFILE_STAGES]; 2.4860 + double last_time[PROFILE_STAGES]; 2.4861 + double total_time[PROFILE_STAGES]; 2.4862 +} H264Context; 2.4863 +void av_read_frame_internal(ParserContext *pc, GetBitContext *gb); 2.4864 +ParserContext *get_parse_context(int ifile); 2.4865 +void free_parse_context(ParserContext *pc); 2.4866 +int decode_nal_units(NalContext *n, H264Slice *s, GetBitContext *gb); 2.4867 +NalContext *get_nal_context(int width, int height); 2.4868 +void free_nal_context(NalContext *nc); 2.4869 +int ff_h264_decode_mb_cabac(EntropyContext *ec, H264Slice *s, CABACContext *c); 2.4870 +void ff_h264_init_cabac_states(EntropyContext *ec, H264Slice *s, CABACContext *c); 2.4871 +int init_entropy_buf(EntropyContext *ec, H264Slice *s, int line); 2.4872 +EntropyContext *get_entropy_context(H264Context *h); 2.4873 +void init_dequant_tables(H264Slice *s, EntropyContext *ec); 2.4874 +void free_entropy_context(EntropyContext *ec); 2.4875 +MBRecContext *get_mbrec_context(H264Context *h); 2.4876 +void free_mbrec_context(MBRecContext *d); 2.4877 +void h264_decode_mb_internal(MBRecContext *d, MBRecState *mrs, H264Slice *s, H264Mb *m); 2.4878 +void init_mbrec_context(MBRecContext *mrc, MBRecState *mrs, H264Slice *s, int line); 2.4879 +void ff_h264_pred_direct_motion_rec(MBRecContext *mrc, MBRecState *mrs, H264Slice *s, int *mb_type); 2.4880 +int pred_motion_mb_rec(MBRecContext *mrc, MBRecState *mrs, H264Slice *s, H264Mb *m); 2.4881 +void start_timer(H264Context *h, int stage); 2.4882 +void stop_timer(H264Context *h, int stage); 2.4883 +void init_sb_entry(H264Context *h, SliceBufferEntry *sbe); 2.4884 +void free_sb_entry(SliceBufferEntry *sb); 2.4885 +SliceBufferEntry *get_sb_entry(H264Context *h); 2.4886 +void release_sb_entry(H264Context *h, SliceBufferEntry *sb); 2.4887 +DecodedPicture *get_dpb_entry(H264Context *h, H264Slice *s); 2.4888 +void release_dpb_entry(H264Context *h, DecodedPicture *pic, int mode); 2.4889 +void draw_edges(MBRecContext *d, H264Slice *s, int line); 2.4890 +int ff_init_slice(NalContext *n, H264Slice *s); 2.4891 +void free_picture(PictureInfo *pic); 2.4892 +void free_dp(DecodedPicture *pic); 2.4893 +void av_start_timer(); 2.4894 +int copyEDtoH264Slice(H264Slice *ms, H264Slice *es); 2.4895 +void print_report(int frame_number, uint64_t video_size, int is_last_report, int verbose); 2.4896 +int ff_alloc_picture_info(NalContext *n, H264Slice *s, PictureInfo *pic); 2.4897 +DecodedPicture *output_frame(H264Context *h, OutputContext *oc, DecodedPicture *pic, int fd, int frame_width, int frame_height); 2.4898 +OutputContext *get_output_context(H264Context *h); 2.4899 +void free_output_context(OutputContext *oc); 2.4900 +void freeSuperMBContext(SuperMBContext *smbc); 2.4901 +SuperMBContext *getSuperMBContext(H264Context *h, int smb_width, int smb_height); 2.4902 +void release_smbc(H264Context *h, SuperMBContext *smbc); 2.4903 +SuperMBContext *acquire_smbc(H264Context *h); 2.4904 +static inline int get_chroma_qp(H264Slice *s, int t, int qscale) 2.4905 +{ 2.4906 + return s->pps.chroma_qp_table[t][qscale]; 2.4907 +} 2.4908 +static void parse_task(H264Context *h, ParserContext *pc, NalContext *nc, SliceBufferEntry *sbe) 2.4909 +{ 2.4910 + H264Slice *s; 2.4911 + if (!sbe->initialized) 2.4912 + { 2.4913 + init_sb_entry(h, sbe); 2.4914 + sbe->lines_total = h->mb_height; 2.4915 + } 2.4916 + av_read_frame_internal(pc, &sbe->gb); 2.4917 + s = &sbe->slice; 2.4918 + decode_nal_units(nc, s, &sbe->gb); 2.4919 +} 2.4920 +static void decode_slice_entropy_task(H264Context *h, EntropyContext *ec, SliceBufferEntry *sbe) 2.4921 +{ 2.4922 + int i, j; 2.4923 + H264Slice *s = &sbe->slice; 2.4924 + GetBitContext *gb = &sbe->gb; 2.4925 + H264Mb *mbs = sbe->mbs; 2.4926 + CABACContext *c = &ec->c; 2.4927 + if (!s->pps.cabac) 2.4928 + { 2.4929 + av_log(16, "Only cabac encoded streams are supported\n"); 2.4930 + return; 2.4931 + } 2.4932 + init_dequant_tables(s, ec); 2.4933 + ec->curr_qscale = s->qscale; 2.4934 + ec->last_qscale_diff = 0; 2.4935 + ec->chroma_qp[0] = get_chroma_qp((H264Slice *) s, 0, s->qscale); 2.4936 + ec->chroma_qp[1] = get_chroma_qp((H264Slice *) s, 1, s->qscale); 2.4937 + align_get_bits(gb); 2.4938 + ff_init_cabac_decoder(c, gb->buffer + get_bits_count(gb) / 8, (get_bits_left(gb) + 7) / 8); 2.4939 + ff_h264_init_cabac_states(ec, s, c); 2.4940 + for (j = 0; 2.4941 + j < ec->mb_height; 2.4942 + j++) 2.4943 + { 2.4944 + init_entropy_buf(ec, s, j); 2.4945 + for (i = 0; 2.4946 + i < ec->mb_width; 2.4947 + i++) 2.4948 + { 2.4949 + int eos, ret; 2.4950 + H264Mb *m = &mbs[i + j * ec->mb_width]; 2.4951 + m->mb_x = i; 2.4952 + m->mb_y = j; 2.4953 + ec->m = m; 2.4954 + ret = ff_h264_decode_mb_cabac(ec, s, c); 2.4955 + eos = get_cabac_terminate(c); 2.4956 + (void) eos; 2.4957 + if (ret < 0 || c->bytestream > c->bytestream_end + 2) 2.4958 + { 2.4959 + av_log(16, "error while decoding MB %d %d, bytestream (%td)\n", m->mb_x, m->mb_y, c->bytestream_end - c->bytestream); 2.4960 + return; 2.4961 + } 2.4962 + } 2.4963 + } 2.4964 +} 2.4965 +static void decode_super_mb_block(MBRecContext *d, H264Slice *s, SuperMBContext *smbc, H264Mb *mbs, int smb_x, int smb_y) 2.4966 +{ 2.4967 + MBRecState mrs; 2.4968 + for (int k = 0, i = smb_y; 2.4969 + i < smb_y + smbc->smb_height; 2.4970 + i++ , k++) 2.4971 + { 2.4972 + init_mbrec_context(d, &mrs, s, i); 2.4973 + for (int j = smb_x - k; 2.4974 + j < smb_x - k + smbc->smb_width; 2.4975 + j++) 2.4976 + { 2.4977 + if (i < d->mb_height && j >= 0 && j < d->mb_width) 2.4978 + { 2.4979 + h264_decode_mb_internal(d, &mrs, s, &mbs[i * d->mb_width + j]); 2.4980 + } 2.4981 + } 2.4982 + } 2.4983 +} 2.4984 +static void decode_super_mb_task(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, SuperMBTask *ml, SuperMBTask *mur, SuperMBTask *m) 2.4985 +{ 2.4986 + H264Slice *s = &sbe->slice; 2.4987 + H264Mb *mbs = sbe->mbs; 2.4988 + decode_super_mb_block(d, s, smbc, mbs, m->smb_x, m->smb_y); 2.4989 +} 2.4990 +static void draw_edges_task(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, SuperMBTask *sm, int line) 2.4991 +{ 2.4992 + H264Slice *s = &sbe->slice; 2.4993 + for (int i = line * smbc->smb_height; 2.4994 + i < (line + 1) * smbc->smb_height && i < d->mb_height; 2.4995 + i++) 2.4996 + draw_edges(d, s, i); 2.4997 +} 2.4998 +typedef struct _nx_data_env_0_t_tag 2.4999 +{ 2.5000 + struct MBRecContext *__tmp_0_0; 2.5001 + SliceBufferEntry *__tmp_1_0; 2.5002 + struct SuperMBContext *__tmp_2_0; 2.5003 + struct SuperMBTask *__tmp_3_0; 2.5004 + struct SuperMBTask *__tmp_4_0; 2.5005 + struct SuperMBTask *__tmp_5_0; 2.5006 +} _nx_data_env_0_t; 2.5007 +static void decode_mb_in_slice(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe); 2.5008 +static void _smp__ol_decode_mb_in_slice_0(_nx_data_env_0_t *const __restrict__ _args) 2.5009 +{ 2.5010 + struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0; 2.5011 + SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0; 2.5012 + struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0; 2.5013 + struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0; 2.5014 + struct SuperMBTask *___tmp_4_0 = _args->__tmp_4_0; 2.5015 + struct SuperMBTask *___tmp_5_0 = _args->__tmp_5_0; 2.5016 + /* Translation is done by the runtime */ 2.5017 + { 2.5018 + decode_super_mb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0), (___tmp_5_0)); 2.5019 + } 2.5020 +} 2.5021 +typedef struct _nx_data_env_1_t_tag 2.5022 +{ 2.5023 + struct MBRecContext *__tmp_0_0; 2.5024 + SliceBufferEntry *__tmp_1_0; 2.5025 + struct SuperMBContext *__tmp_2_0; 2.5026 + struct SuperMBTask *__tmp_3_0; 2.5027 + int __tmp_4_0; 2.5028 +} _nx_data_env_1_t; 2.5029 +static void decode_mb_in_slice(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe); 2.5030 +static void _smp__ol_decode_mb_in_slice_1(_nx_data_env_1_t *const __restrict__ _args) 2.5031 +{ 2.5032 + struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0; 2.5033 + SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0; 2.5034 + struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0; 2.5035 + struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0; 2.5036 + int ___tmp_4_0 = _args->__tmp_4_0; 2.5037 + /* Translation is done by the runtime */ 2.5038 + { 2.5039 + draw_edges_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0)); 2.5040 + } 2.5041 +} 2.5042 +static void decode_mb_in_slice(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe) 2.5043 +{ 2.5044 + int i, j; 2.5045 + SuperMBContext *smbc = acquire_smbc(h); 2.5046 + int smb_height = smbc->nsmb_height, smb_width = smbc->nsmb_width; 2.5047 + SuperMBTask *smbs = smbc->smbs[0]; 2.5048 + SuperMBTask *sm = ((void *) 0), *sml, *smur; 2.5049 + for (j = 0; 2.5050 + j < smb_height; 2.5051 + j++) 2.5052 + { 2.5053 + for (i = 0; 2.5054 + i < smb_width; 2.5055 + i++) 2.5056 + { 2.5057 + sm = smbs + j * smb_width + i; 2.5058 + sml = sm - ((i > 0) ? 1 : 0); 2.5059 + smur = sm + (((i < smb_width - 1) && (j > 0)) ? - smb_width + 1 : 0); 2.5060 + { 2.5061 + struct MBRecContext *__tmp_0 = d; 2.5062 + SliceBufferEntry *__tmp_1 = sbe; 2.5063 + struct SuperMBContext *__tmp_2 = smbc; 2.5064 + struct SuperMBTask *__tmp_3 = sml; 2.5065 + struct SuperMBTask *__tmp_4 = smur; 2.5066 + struct SuperMBTask *__tmp_5 = sm; 2.5067 + { 2.5068 + /* SMP device descriptor */ 2.5069 + static nanos_smp_args_t _ol_decode_mb_in_slice_0_smp_args = {(void (*)(void *)) _smp__ol_decode_mb_in_slice_0}; 2.5070 + _nx_data_env_0_t *ol_args = (_nx_data_env_0_t *) 0; 2.5071 + nanos_wd_t wd = (nanos_wd_t) 0; 2.5072 + struct nanos_const_wd_definition_local_t 2.5073 + { 2.5074 + nanos_const_wd_definition_t base; 2.5075 + nanos_device_t devices[1]; 2.5076 + }; 2.5077 + static struct nanos_const_wd_definition_local_t _const_def = { 2.5078 + { 2.5079 + { 2.5080 + 0, 2.5081 + 1, 2.5082 + 0, 2.5083 + 0, 2.5084 + 0, 2.5085 + 0, 2.5086 + 0, 2.5087 + 0 2.5088 + }, 2.5089 + __alignof__(_nx_data_env_0_t), 2.5090 + 0, 2.5091 + 1 2.5092 + }, 2.5093 + {{ 2.5094 + nanos_smp_factory, 2.5095 + &_ol_decode_mb_in_slice_0_smp_args 2.5096 + }} 2.5097 + }; 2.5098 + nanos_wd_dyn_props_t dyn_props = {0}; 2.5099 + nanos_err_t err; 2.5100 + dyn_props.priority = 0; 2.5101 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_0_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.5102 + if (err != NANOS_OK) 2.5103 + nanos_handle_error(err); 2.5104 + if (wd != (nanos_wd_t) 0) 2.5105 + { 2.5106 + ol_args->__tmp_0_0 = __tmp_0; 2.5107 + ol_args->__tmp_1_0 = __tmp_1; 2.5108 + ol_args->__tmp_2_0 = __tmp_2; 2.5109 + ol_args->__tmp_3_0 = __tmp_3; 2.5110 + ol_args->__tmp_4_0 = __tmp_4; 2.5111 + ol_args->__tmp_5_0 = __tmp_5; 2.5112 + nanos_dependence_t _dependences[5] = { 2.5113 + { 2.5114 + (void **) &ol_args->__tmp_0_0, 2.5115 + ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0), 2.5116 + { 2.5117 + 1, 2.5118 + 0, 2.5119 + 1, 2.5120 + 0 2.5121 + }, 2.5122 + sizeof(struct MBRecContext) 2.5123 + }, 2.5124 + { 2.5125 + (void **) &ol_args->__tmp_1_0, 2.5126 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.5127 + { 2.5128 + 1, 2.5129 + 0, 2.5130 + 1, 2.5131 + 0 2.5132 + }, 2.5133 + sizeof(SliceBufferEntry) 2.5134 + }, 2.5135 + { 2.5136 + (void **) &ol_args->__tmp_3_0, 2.5137 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.5138 + { 2.5139 + 1, 2.5140 + 0, 2.5141 + 1, 2.5142 + 0 2.5143 + }, 2.5144 + sizeof(struct SuperMBTask) 2.5145 + }, 2.5146 + { 2.5147 + (void **) &ol_args->__tmp_4_0, 2.5148 + ((char *) ((__tmp_4)) - (char *) ol_args->__tmp_4_0), 2.5149 + { 2.5150 + 1, 2.5151 + 0, 2.5152 + 1, 2.5153 + 0 2.5154 + }, 2.5155 + sizeof(struct SuperMBTask) 2.5156 + }, 2.5157 + { 2.5158 + (void **) &ol_args->__tmp_5_0, 2.5159 + ((char *) ((__tmp_5)) - (char *) ol_args->__tmp_5_0), 2.5160 + { 2.5161 + 1, 2.5162 + 1, 2.5163 + 1, 2.5164 + 0 2.5165 + }, 2.5166 + sizeof(struct SuperMBTask) 2.5167 + } 2.5168 + }; 2.5169 + err = nanos_submit(wd, 5, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.5170 + if (err != NANOS_OK) 2.5171 + nanos_handle_error(err); 2.5172 + } 2.5173 + else 2.5174 + { 2.5175 + _nx_data_env_0_t imm_args; 2.5176 + imm_args.__tmp_0_0 = __tmp_0; 2.5177 + imm_args.__tmp_1_0 = __tmp_1; 2.5178 + imm_args.__tmp_2_0 = __tmp_2; 2.5179 + imm_args.__tmp_3_0 = __tmp_3; 2.5180 + imm_args.__tmp_4_0 = __tmp_4; 2.5181 + imm_args.__tmp_5_0 = __tmp_5; 2.5182 + nanos_dependence_t _dependences[5] = { 2.5183 + { 2.5184 + (void **) &imm_args.__tmp_0_0, 2.5185 + ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0), 2.5186 + { 2.5187 + 1, 2.5188 + 0, 2.5189 + 1, 2.5190 + 0 2.5191 + }, 2.5192 + sizeof(struct MBRecContext) 2.5193 + }, 2.5194 + { 2.5195 + (void **) &imm_args.__tmp_1_0, 2.5196 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.5197 + { 2.5198 + 1, 2.5199 + 0, 2.5200 + 1, 2.5201 + 0 2.5202 + }, 2.5203 + sizeof(SliceBufferEntry) 2.5204 + }, 2.5205 + { 2.5206 + (void **) &imm_args.__tmp_3_0, 2.5207 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.5208 + { 2.5209 + 1, 2.5210 + 0, 2.5211 + 1, 2.5212 + 0 2.5213 + }, 2.5214 + sizeof(struct SuperMBTask) 2.5215 + }, 2.5216 + { 2.5217 + (void **) &imm_args.__tmp_4_0, 2.5218 + ((char *) ((__tmp_4)) - (char *) imm_args.__tmp_4_0), 2.5219 + { 2.5220 + 1, 2.5221 + 0, 2.5222 + 1, 2.5223 + 0 2.5224 + }, 2.5225 + sizeof(struct SuperMBTask) 2.5226 + }, 2.5227 + { 2.5228 + (void **) &imm_args.__tmp_5_0, 2.5229 + ((char *) ((__tmp_5)) - (char *) imm_args.__tmp_5_0), 2.5230 + { 2.5231 + 1, 2.5232 + 1, 2.5233 + 1, 2.5234 + 0 2.5235 + }, 2.5236 + sizeof(struct SuperMBTask) 2.5237 + } 2.5238 + }; 2.5239 + dyn_props.priority = 0; 2.5240 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_0_t), &imm_args, 5, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.5241 + if (err != NANOS_OK) 2.5242 + nanos_handle_error(err); 2.5243 + } 2.5244 + } 2.5245 + ; 2.5246 + } 2.5247 + } 2.5248 + { 2.5249 + struct MBRecContext *__tmp_0 = d; 2.5250 + SliceBufferEntry *__tmp_1 = sbe; 2.5251 + struct SuperMBContext *__tmp_2 = smbc; 2.5252 + struct SuperMBTask *__tmp_3 = sm; 2.5253 + int __tmp_4 = j; 2.5254 + { 2.5255 + /* SMP device descriptor */ 2.5256 + static nanos_smp_args_t _ol_decode_mb_in_slice_1_smp_args = {(void (*)(void *)) _smp__ol_decode_mb_in_slice_1}; 2.5257 + _nx_data_env_1_t *ol_args = (_nx_data_env_1_t *) 0; 2.5258 + nanos_wd_t wd = (nanos_wd_t) 0; 2.5259 + struct nanos_const_wd_definition_local_t 2.5260 + { 2.5261 + nanos_const_wd_definition_t base; 2.5262 + nanos_device_t devices[1]; 2.5263 + }; 2.5264 + static struct nanos_const_wd_definition_local_t _const_def = { 2.5265 + { 2.5266 + { 2.5267 + 0, 2.5268 + 1, 2.5269 + 0, 2.5270 + 0, 2.5271 + 0, 2.5272 + 0, 2.5273 + 0, 2.5274 + 0 2.5275 + }, 2.5276 + __alignof__(_nx_data_env_1_t), 2.5277 + 0, 2.5278 + 1 2.5279 + }, 2.5280 + {{ 2.5281 + nanos_smp_factory, 2.5282 + &_ol_decode_mb_in_slice_1_smp_args 2.5283 + }} 2.5284 + }; 2.5285 + nanos_wd_dyn_props_t dyn_props = {0}; 2.5286 + nanos_err_t err; 2.5287 + dyn_props.priority = 0; 2.5288 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_1_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.5289 + if (err != NANOS_OK) 2.5290 + nanos_handle_error(err); 2.5291 + if (wd != (nanos_wd_t) 0) 2.5292 + { 2.5293 + ol_args->__tmp_0_0 = __tmp_0; 2.5294 + ol_args->__tmp_1_0 = __tmp_1; 2.5295 + ol_args->__tmp_2_0 = __tmp_2; 2.5296 + ol_args->__tmp_3_0 = __tmp_3; 2.5297 + ol_args->__tmp_4_0 = __tmp_4; 2.5298 + nanos_dependence_t _dependences[3] = { 2.5299 + { 2.5300 + (void **) &ol_args->__tmp_0_0, 2.5301 + ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0), 2.5302 + { 2.5303 + 1, 2.5304 + 0, 2.5305 + 1, 2.5306 + 0 2.5307 + }, 2.5308 + sizeof(struct MBRecContext) 2.5309 + }, 2.5310 + { 2.5311 + (void **) &ol_args->__tmp_1_0, 2.5312 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.5313 + { 2.5314 + 1, 2.5315 + 0, 2.5316 + 1, 2.5317 + 0 2.5318 + }, 2.5319 + sizeof(SliceBufferEntry) 2.5320 + }, 2.5321 + { 2.5322 + (void **) &ol_args->__tmp_3_0, 2.5323 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.5324 + { 2.5325 + 1, 2.5326 + 1, 2.5327 + 1, 2.5328 + 0 2.5329 + }, 2.5330 + sizeof(struct SuperMBTask) 2.5331 + } 2.5332 + }; 2.5333 + err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.5334 + if (err != NANOS_OK) 2.5335 + nanos_handle_error(err); 2.5336 + } 2.5337 + else 2.5338 + { 2.5339 + _nx_data_env_1_t imm_args; 2.5340 + imm_args.__tmp_0_0 = __tmp_0; 2.5341 + imm_args.__tmp_1_0 = __tmp_1; 2.5342 + imm_args.__tmp_2_0 = __tmp_2; 2.5343 + imm_args.__tmp_3_0 = __tmp_3; 2.5344 + imm_args.__tmp_4_0 = __tmp_4; 2.5345 + nanos_dependence_t _dependences[3] = { 2.5346 + { 2.5347 + (void **) &imm_args.__tmp_0_0, 2.5348 + ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0), 2.5349 + { 2.5350 + 1, 2.5351 + 0, 2.5352 + 1, 2.5353 + 0 2.5354 + }, 2.5355 + sizeof(struct MBRecContext) 2.5356 + }, 2.5357 + { 2.5358 + (void **) &imm_args.__tmp_1_0, 2.5359 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.5360 + { 2.5361 + 1, 2.5362 + 0, 2.5363 + 1, 2.5364 + 0 2.5365 + }, 2.5366 + sizeof(SliceBufferEntry) 2.5367 + }, 2.5368 + { 2.5369 + (void **) &imm_args.__tmp_3_0, 2.5370 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.5371 + { 2.5372 + 1, 2.5373 + 1, 2.5374 + 1, 2.5375 + 0 2.5376 + }, 2.5377 + sizeof(struct SuperMBTask) 2.5378 + } 2.5379 + }; 2.5380 + dyn_props.priority = 0; 2.5381 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_1_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.5382 + if (err != NANOS_OK) 2.5383 + nanos_handle_error(err); 2.5384 + } 2.5385 + } 2.5386 + ; 2.5387 + } 2.5388 + } 2.5389 + { 2.5390 + struct _dependence_holder 2.5391 + { 2.5392 + struct SuperMBTask *dep_0; 2.5393 + } _dep_holder = {&(*sm)}; 2.5394 + nanos_dependence_t _wait_dependences[1] = {{ 2.5395 + (void **) &_dep_holder.dep_0, 2.5396 + ((char *) ((sm)) - (char *) _dep_holder.dep_0), 2.5397 + { 2.5398 + 1, 2.5399 + 0, 2.5400 + 0, 2.5401 + 0 2.5402 + }, 2.5403 + sizeof (*sm) 2.5404 + }}; 2.5405 + nanos_wait_on(1, _wait_dependences); 2.5406 + } 2.5407 + release_smbc(h, smbc); 2.5408 +} 2.5409 +__attribute__((weak)) nanos_lock_t _nx_u_dpb_critical_lock = {NANOS_LOCK_FREE}; 2.5410 +static void decode_slice_mb_task(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe) 2.5411 +{ 2.5412 + H264Slice *s = &sbe->slice; 2.5413 + for (int i = 0; 2.5414 + i < 2; 2.5415 + i++) 2.5416 + { 2.5417 + for (int j = 0; 2.5418 + j < s->ref_count[i]; 2.5419 + j++) 2.5420 + { 2.5421 + if (s->ref_list_cpn[i][j] == - 1) 2.5422 + continue; 2.5423 + int k; 2.5424 + for (k = 0; 2.5425 + k < h->max_dpb_cnt; 2.5426 + k++) 2.5427 + { 2.5428 + if (h->dpb[k].reference >= 2 && h->dpb[k].cpn == s->ref_list_cpn[i][j]) 2.5429 + { 2.5430 + s->dp_ref_list[i][j] = &h->dpb[k]; 2.5431 + break; 2.5432 + } 2.5433 + } 2.5434 + } 2.5435 + } 2.5436 + { 2.5437 + nanos_set_lock(&_nx_u_dpb_critical_lock); 2.5438 + get_dpb_entry(h, s); 2.5439 + nanos_unset_lock(&_nx_u_dpb_critical_lock); 2.5440 + } 2.5441 + if (!h->no_mbd) 2.5442 + { 2.5443 + decode_mb_in_slice(h, d, sbe); 2.5444 + } 2.5445 + for (int i = 0; 2.5446 + i < s->release_cnt; 2.5447 + i++) 2.5448 + { 2.5449 + for (int j = 0; 2.5450 + j < h->max_dpb_cnt; 2.5451 + j++) 2.5452 + { 2.5453 + if (h->dpb[j].cpn == s->release_ref_cpn[i]) 2.5454 + { 2.5455 + { 2.5456 + nanos_set_lock(&_nx_u_dpb_critical_lock); 2.5457 + release_dpb_entry(h, &h->dpb[j], 2); 2.5458 + nanos_unset_lock(&_nx_u_dpb_critical_lock); 2.5459 + } 2.5460 + break; 2.5461 + } 2.5462 + } 2.5463 + } 2.5464 + s->release_cnt = 0; 2.5465 +} 2.5466 +static void decode_3dwave_super_mb_task(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, SuperMBTask *ml, SuperMBTask *mur, SuperMBTask *mprev, SuperMBTask *m) 2.5467 +{ 2.5468 + H264Slice *s = &sbe->slice; 2.5469 + H264Mb *mbs = sbe->mbs; 2.5470 + decode_super_mb_block(d, s, smbc, mbs, m->smb_x, m->smb_y); 2.5471 +} 2.5472 +static void init_ref_list_and_get_dpb_task(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe, int *init) 2.5473 +{ 2.5474 + H264Slice *s = &sbe->slice; 2.5475 + for (int i = 0; 2.5476 + i < 2; 2.5477 + i++) 2.5478 + { 2.5479 + for (int j = 0; 2.5480 + j < s->ref_count[i]; 2.5481 + j++) 2.5482 + { 2.5483 + if (s->ref_list_cpn[i][j] == - 1) 2.5484 + continue; 2.5485 + int k; 2.5486 + for (k = 0; 2.5487 + k < h->max_dpb_cnt; 2.5488 + k++) 2.5489 + { 2.5490 + if (h->dpb[k].reference >= 2 && h->dpb[k].cpn == s->ref_list_cpn[i][j]) 2.5491 + { 2.5492 + s->dp_ref_list[i][j] = &h->dpb[k]; 2.5493 + break; 2.5494 + } 2.5495 + } 2.5496 + } 2.5497 + } 2.5498 + { 2.5499 + nanos_set_lock(&_nx_u_dpb_critical_lock); 2.5500 + get_dpb_entry(h, s); 2.5501 + nanos_unset_lock(&_nx_u_dpb_critical_lock); 2.5502 + } 2.5503 +} 2.5504 +typedef struct _nx_data_env_2_t_tag 2.5505 +{ 2.5506 + struct MBRecContext *__tmp_0_0; 2.5507 + SliceBufferEntry *__tmp_1_0; 2.5508 + struct SuperMBContext *__tmp_2_0; 2.5509 + struct SuperMBTask *__tmp_3_0; 2.5510 + struct SuperMBTask *__tmp_4_0; 2.5511 + struct SuperMBTask *__tmp_5_0; 2.5512 + struct SuperMBTask *__tmp_6_0; 2.5513 +} _nx_data_env_2_t; 2.5514 +static SuperMBTask *add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc); 2.5515 +static void _smp__ol_add_decode_slice_3dwave_tasks_2(_nx_data_env_2_t *const __restrict__ _args) 2.5516 +{ 2.5517 + struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0; 2.5518 + SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0; 2.5519 + struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0; 2.5520 + struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0; 2.5521 + struct SuperMBTask *___tmp_4_0 = _args->__tmp_4_0; 2.5522 + struct SuperMBTask *___tmp_5_0 = _args->__tmp_5_0; 2.5523 + struct SuperMBTask *___tmp_6_0 = _args->__tmp_6_0; 2.5524 + /* Translation is done by the runtime */ 2.5525 + { 2.5526 + decode_3dwave_super_mb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0), (___tmp_5_0), (___tmp_6_0)); 2.5527 + } 2.5528 +} 2.5529 +typedef struct _nx_data_env_3_t_tag 2.5530 +{ 2.5531 + struct MBRecContext *__tmp_0_0; 2.5532 + SliceBufferEntry *__tmp_1_0; 2.5533 + struct SuperMBContext *__tmp_2_0; 2.5534 + struct SuperMBTask *__tmp_3_0; 2.5535 + int __tmp_4_0; 2.5536 +} _nx_data_env_3_t; 2.5537 +static SuperMBTask *add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc); 2.5538 +static void _smp__ol_add_decode_slice_3dwave_tasks_3(_nx_data_env_3_t *const __restrict__ _args) 2.5539 +{ 2.5540 + struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0; 2.5541 + SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0; 2.5542 + struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0; 2.5543 + struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0; 2.5544 + int ___tmp_4_0 = _args->__tmp_4_0; 2.5545 + /* Translation is done by the runtime */ 2.5546 + { 2.5547 + draw_edges_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0)); 2.5548 + } 2.5549 +} 2.5550 +typedef struct _nx_data_env_4_t_tag 2.5551 +{ 2.5552 + struct MBRecContext *__tmp_0_0; 2.5553 + SliceBufferEntry *__tmp_1_0; 2.5554 + struct SuperMBContext *__tmp_2_0; 2.5555 + struct SuperMBTask *__tmp_3_0; 2.5556 + struct SuperMBTask *__tmp_4_0; 2.5557 + struct SuperMBTask *__tmp_5_0; 2.5558 +} _nx_data_env_4_t; 2.5559 +static SuperMBTask *add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc); 2.5560 +static void _smp__ol_add_decode_slice_3dwave_tasks_4(_nx_data_env_4_t *const __restrict__ _args) 2.5561 +{ 2.5562 + struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0; 2.5563 + SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0; 2.5564 + struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0; 2.5565 + struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0; 2.5566 + struct SuperMBTask *___tmp_4_0 = _args->__tmp_4_0; 2.5567 + struct SuperMBTask *___tmp_5_0 = _args->__tmp_5_0; 2.5568 + /* Translation is done by the runtime */ 2.5569 + { 2.5570 + decode_super_mb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0), (___tmp_5_0)); 2.5571 + } 2.5572 +} 2.5573 +typedef struct _nx_data_env_5_t_tag 2.5574 +{ 2.5575 + struct MBRecContext *__tmp_0_0; 2.5576 + SliceBufferEntry *__tmp_1_0; 2.5577 + struct SuperMBContext *__tmp_2_0; 2.5578 + struct SuperMBTask *__tmp_3_0; 2.5579 + int __tmp_4_0; 2.5580 +} _nx_data_env_5_t; 2.5581 +static SuperMBTask *add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc); 2.5582 +static void _smp__ol_add_decode_slice_3dwave_tasks_5(_nx_data_env_5_t *const __restrict__ _args) 2.5583 +{ 2.5584 + struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0; 2.5585 + SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0; 2.5586 + struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0; 2.5587 + struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0; 2.5588 + int ___tmp_4_0 = _args->__tmp_4_0; 2.5589 + /* Translation is done by the runtime */ 2.5590 + { 2.5591 + draw_edges_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0)); 2.5592 + } 2.5593 +} 2.5594 +static SuperMBTask *add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc) 2.5595 +{ 2.5596 + int i, j; 2.5597 + int smb_3d_height = smbc->nsmb_3dheight; 2.5598 + int smb_height = smbc->nsmb_height, smb_width = smbc->nsmb_width; 2.5599 + int smb_diff_prev = smb_height - smb_3d_height; 2.5600 + SuperMBTask *sm = ((void *) 0), *sml, *smur, *smprev; 2.5601 + SuperMBTask *smbs = smbc->smbs[smbc->index++]; 2.5602 + smbc->index %= 2; 2.5603 + SuperMBTask *smbs_prev = smbc->smbs[smbc->index]; 2.5604 + for (j = 0; 2.5605 + j < smb_3d_height; 2.5606 + j++) 2.5607 + { 2.5608 + for (i = 0; 2.5609 + i < smb_width; 2.5610 + i++) 2.5611 + { 2.5612 + sm = smbs + j * smb_width + i; 2.5613 + sml = sm - ((i > 0) ? 1 : 0); 2.5614 + smur = sm + (((i < smb_width - 1) && (j > 0)) ? - smb_width + 1 : 0); 2.5615 + smprev = smbs_prev + (j + smb_diff_prev + 1) * smb_width - 1; 2.5616 + { 2.5617 + struct MBRecContext *__tmp_0 = d; 2.5618 + SliceBufferEntry *__tmp_1 = sbe; 2.5619 + struct SuperMBContext *__tmp_2 = smbc; 2.5620 + struct SuperMBTask *__tmp_3 = sml; 2.5621 + struct SuperMBTask *__tmp_4 = smur; 2.5622 + struct SuperMBTask *__tmp_5 = smprev; 2.5623 + struct SuperMBTask *__tmp_6 = sm; 2.5624 + { 2.5625 + /* SMP device descriptor */ 2.5626 + static nanos_smp_args_t _ol_add_decode_slice_3dwave_tasks_2_smp_args = {(void (*)(void *)) _smp__ol_add_decode_slice_3dwave_tasks_2}; 2.5627 + _nx_data_env_2_t *ol_args = (_nx_data_env_2_t *) 0; 2.5628 + nanos_wd_t wd = (nanos_wd_t) 0; 2.5629 + struct nanos_const_wd_definition_local_t 2.5630 + { 2.5631 + nanos_const_wd_definition_t base; 2.5632 + nanos_device_t devices[1]; 2.5633 + }; 2.5634 + static struct nanos_const_wd_definition_local_t _const_def = { 2.5635 + { 2.5636 + { 2.5637 + 0, 2.5638 + 1, 2.5639 + 0, 2.5640 + 0, 2.5641 + 0, 2.5642 + 0, 2.5643 + 0, 2.5644 + 0 2.5645 + }, 2.5646 + __alignof__(_nx_data_env_2_t), 2.5647 + 0, 2.5648 + 1 2.5649 + }, 2.5650 + {{ 2.5651 + nanos_smp_factory, 2.5652 + &_ol_add_decode_slice_3dwave_tasks_2_smp_args 2.5653 + }} 2.5654 + }; 2.5655 + nanos_wd_dyn_props_t dyn_props = {0}; 2.5656 + nanos_err_t err; 2.5657 + dyn_props.priority = 0; 2.5658 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_2_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.5659 + if (err != NANOS_OK) 2.5660 + nanos_handle_error(err); 2.5661 + if (wd != (nanos_wd_t) 0) 2.5662 + { 2.5663 + ol_args->__tmp_0_0 = __tmp_0; 2.5664 + ol_args->__tmp_1_0 = __tmp_1; 2.5665 + ol_args->__tmp_2_0 = __tmp_2; 2.5666 + ol_args->__tmp_3_0 = __tmp_3; 2.5667 + ol_args->__tmp_4_0 = __tmp_4; 2.5668 + ol_args->__tmp_5_0 = __tmp_5; 2.5669 + ol_args->__tmp_6_0 = __tmp_6; 2.5670 + nanos_dependence_t _dependences[6] = { 2.5671 + { 2.5672 + (void **) &ol_args->__tmp_0_0, 2.5673 + ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0), 2.5674 + { 2.5675 + 1, 2.5676 + 0, 2.5677 + 1, 2.5678 + 0 2.5679 + }, 2.5680 + sizeof(struct MBRecContext) 2.5681 + }, 2.5682 + { 2.5683 + (void **) &ol_args->__tmp_1_0, 2.5684 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.5685 + { 2.5686 + 1, 2.5687 + 0, 2.5688 + 1, 2.5689 + 0 2.5690 + }, 2.5691 + sizeof(SliceBufferEntry) 2.5692 + }, 2.5693 + { 2.5694 + (void **) &ol_args->__tmp_3_0, 2.5695 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.5696 + { 2.5697 + 1, 2.5698 + 0, 2.5699 + 1, 2.5700 + 0 2.5701 + }, 2.5702 + sizeof(struct SuperMBTask) 2.5703 + }, 2.5704 + { 2.5705 + (void **) &ol_args->__tmp_4_0, 2.5706 + ((char *) ((__tmp_4)) - (char *) ol_args->__tmp_4_0), 2.5707 + { 2.5708 + 1, 2.5709 + 0, 2.5710 + 1, 2.5711 + 0 2.5712 + }, 2.5713 + sizeof(struct SuperMBTask) 2.5714 + }, 2.5715 + { 2.5716 + (void **) &ol_args->__tmp_5_0, 2.5717 + ((char *) ((__tmp_5)) - (char *) ol_args->__tmp_5_0), 2.5718 + { 2.5719 + 1, 2.5720 + 0, 2.5721 + 1, 2.5722 + 0 2.5723 + }, 2.5724 + sizeof(struct SuperMBTask) 2.5725 + }, 2.5726 + { 2.5727 + (void **) &ol_args->__tmp_6_0, 2.5728 + ((char *) ((__tmp_6)) - (char *) ol_args->__tmp_6_0), 2.5729 + { 2.5730 + 1, 2.5731 + 1, 2.5732 + 1, 2.5733 + 0 2.5734 + }, 2.5735 + sizeof(struct SuperMBTask) 2.5736 + } 2.5737 + }; 2.5738 + err = nanos_submit(wd, 6, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.5739 + if (err != NANOS_OK) 2.5740 + nanos_handle_error(err); 2.5741 + } 2.5742 + else 2.5743 + { 2.5744 + _nx_data_env_2_t imm_args; 2.5745 + imm_args.__tmp_0_0 = __tmp_0; 2.5746 + imm_args.__tmp_1_0 = __tmp_1; 2.5747 + imm_args.__tmp_2_0 = __tmp_2; 2.5748 + imm_args.__tmp_3_0 = __tmp_3; 2.5749 + imm_args.__tmp_4_0 = __tmp_4; 2.5750 + imm_args.__tmp_5_0 = __tmp_5; 2.5751 + imm_args.__tmp_6_0 = __tmp_6; 2.5752 + nanos_dependence_t _dependences[6] = { 2.5753 + { 2.5754 + (void **) &imm_args.__tmp_0_0, 2.5755 + ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0), 2.5756 + { 2.5757 + 1, 2.5758 + 0, 2.5759 + 1, 2.5760 + 0 2.5761 + }, 2.5762 + sizeof(struct MBRecContext) 2.5763 + }, 2.5764 + { 2.5765 + (void **) &imm_args.__tmp_1_0, 2.5766 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.5767 + { 2.5768 + 1, 2.5769 + 0, 2.5770 + 1, 2.5771 + 0 2.5772 + }, 2.5773 + sizeof(SliceBufferEntry) 2.5774 + }, 2.5775 + { 2.5776 + (void **) &imm_args.__tmp_3_0, 2.5777 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.5778 + { 2.5779 + 1, 2.5780 + 0, 2.5781 + 1, 2.5782 + 0 2.5783 + }, 2.5784 + sizeof(struct SuperMBTask) 2.5785 + }, 2.5786 + { 2.5787 + (void **) &imm_args.__tmp_4_0, 2.5788 + ((char *) ((__tmp_4)) - (char *) imm_args.__tmp_4_0), 2.5789 + { 2.5790 + 1, 2.5791 + 0, 2.5792 + 1, 2.5793 + 0 2.5794 + }, 2.5795 + sizeof(struct SuperMBTask) 2.5796 + }, 2.5797 + { 2.5798 + (void **) &imm_args.__tmp_5_0, 2.5799 + ((char *) ((__tmp_5)) - (char *) imm_args.__tmp_5_0), 2.5800 + { 2.5801 + 1, 2.5802 + 0, 2.5803 + 1, 2.5804 + 0 2.5805 + }, 2.5806 + sizeof(struct SuperMBTask) 2.5807 + }, 2.5808 + { 2.5809 + (void **) &imm_args.__tmp_6_0, 2.5810 + ((char *) ((__tmp_6)) - (char *) imm_args.__tmp_6_0), 2.5811 + { 2.5812 + 1, 2.5813 + 1, 2.5814 + 1, 2.5815 + 0 2.5816 + }, 2.5817 + sizeof(struct SuperMBTask) 2.5818 + } 2.5819 + }; 2.5820 + dyn_props.priority = 0; 2.5821 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_2_t), &imm_args, 6, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.5822 + if (err != NANOS_OK) 2.5823 + nanos_handle_error(err); 2.5824 + } 2.5825 + } 2.5826 + ; 2.5827 + } 2.5828 + } 2.5829 + { 2.5830 + struct MBRecContext *__tmp_0 = d; 2.5831 + SliceBufferEntry *__tmp_1 = sbe; 2.5832 + struct SuperMBContext *__tmp_2 = smbc; 2.5833 + struct SuperMBTask *__tmp_3 = sm; 2.5834 + int __tmp_4 = j; 2.5835 + { 2.5836 + /* SMP device descriptor */ 2.5837 + static nanos_smp_args_t _ol_add_decode_slice_3dwave_tasks_3_smp_args = {(void (*)(void *)) _smp__ol_add_decode_slice_3dwave_tasks_3}; 2.5838 + _nx_data_env_3_t *ol_args = (_nx_data_env_3_t *) 0; 2.5839 + nanos_wd_t wd = (nanos_wd_t) 0; 2.5840 + struct nanos_const_wd_definition_local_t 2.5841 + { 2.5842 + nanos_const_wd_definition_t base; 2.5843 + nanos_device_t devices[1]; 2.5844 + }; 2.5845 + static struct nanos_const_wd_definition_local_t _const_def = { 2.5846 + { 2.5847 + { 2.5848 + 0, 2.5849 + 1, 2.5850 + 0, 2.5851 + 0, 2.5852 + 0, 2.5853 + 0, 2.5854 + 0, 2.5855 + 0 2.5856 + }, 2.5857 + __alignof__(_nx_data_env_3_t), 2.5858 + 0, 2.5859 + 1 2.5860 + }, 2.5861 + {{ 2.5862 + nanos_smp_factory, 2.5863 + &_ol_add_decode_slice_3dwave_tasks_3_smp_args 2.5864 + }} 2.5865 + }; 2.5866 + nanos_wd_dyn_props_t dyn_props = {0}; 2.5867 + nanos_err_t err; 2.5868 + dyn_props.priority = 0; 2.5869 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_3_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.5870 + if (err != NANOS_OK) 2.5871 + nanos_handle_error(err); 2.5872 + if (wd != (nanos_wd_t) 0) 2.5873 + { 2.5874 + ol_args->__tmp_0_0 = __tmp_0; 2.5875 + ol_args->__tmp_1_0 = __tmp_1; 2.5876 + ol_args->__tmp_2_0 = __tmp_2; 2.5877 + ol_args->__tmp_3_0 = __tmp_3; 2.5878 + ol_args->__tmp_4_0 = __tmp_4; 2.5879 + nanos_dependence_t _dependences[3] = { 2.5880 + { 2.5881 + (void **) &ol_args->__tmp_0_0, 2.5882 + ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0), 2.5883 + { 2.5884 + 1, 2.5885 + 0, 2.5886 + 1, 2.5887 + 0 2.5888 + }, 2.5889 + sizeof(struct MBRecContext) 2.5890 + }, 2.5891 + { 2.5892 + (void **) &ol_args->__tmp_1_0, 2.5893 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.5894 + { 2.5895 + 1, 2.5896 + 0, 2.5897 + 1, 2.5898 + 0 2.5899 + }, 2.5900 + sizeof(SliceBufferEntry) 2.5901 + }, 2.5902 + { 2.5903 + (void **) &ol_args->__tmp_3_0, 2.5904 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.5905 + { 2.5906 + 1, 2.5907 + 1, 2.5908 + 1, 2.5909 + 0 2.5910 + }, 2.5911 + sizeof(struct SuperMBTask) 2.5912 + } 2.5913 + }; 2.5914 + err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.5915 + if (err != NANOS_OK) 2.5916 + nanos_handle_error(err); 2.5917 + } 2.5918 + else 2.5919 + { 2.5920 + _nx_data_env_3_t imm_args; 2.5921 + imm_args.__tmp_0_0 = __tmp_0; 2.5922 + imm_args.__tmp_1_0 = __tmp_1; 2.5923 + imm_args.__tmp_2_0 = __tmp_2; 2.5924 + imm_args.__tmp_3_0 = __tmp_3; 2.5925 + imm_args.__tmp_4_0 = __tmp_4; 2.5926 + nanos_dependence_t _dependences[3] = { 2.5927 + { 2.5928 + (void **) &imm_args.__tmp_0_0, 2.5929 + ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0), 2.5930 + { 2.5931 + 1, 2.5932 + 0, 2.5933 + 1, 2.5934 + 0 2.5935 + }, 2.5936 + sizeof(struct MBRecContext) 2.5937 + }, 2.5938 + { 2.5939 + (void **) &imm_args.__tmp_1_0, 2.5940 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.5941 + { 2.5942 + 1, 2.5943 + 0, 2.5944 + 1, 2.5945 + 0 2.5946 + }, 2.5947 + sizeof(SliceBufferEntry) 2.5948 + }, 2.5949 + { 2.5950 + (void **) &imm_args.__tmp_3_0, 2.5951 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.5952 + { 2.5953 + 1, 2.5954 + 1, 2.5955 + 1, 2.5956 + 0 2.5957 + }, 2.5958 + sizeof(struct SuperMBTask) 2.5959 + } 2.5960 + }; 2.5961 + dyn_props.priority = 0; 2.5962 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_3_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.5963 + if (err != NANOS_OK) 2.5964 + nanos_handle_error(err); 2.5965 + } 2.5966 + } 2.5967 + ; 2.5968 + } 2.5969 + } 2.5970 + for (; 2.5971 + j < smb_height; 2.5972 + j++) 2.5973 + { 2.5974 + for (i = 0; 2.5975 + i < smb_width; 2.5976 + i++) 2.5977 + { 2.5978 + sm = smbs + j * smb_width + i; 2.5979 + sml = sm - ((i > 0) ? 1 : 0); 2.5980 + smur = sm + (((i < smb_width - 1) && (j > 0)) ? - smb_width + 1 : 0); 2.5981 + { 2.5982 + struct MBRecContext *__tmp_0 = d; 2.5983 + SliceBufferEntry *__tmp_1 = sbe; 2.5984 + struct SuperMBContext *__tmp_2 = smbc; 2.5985 + struct SuperMBTask *__tmp_3 = sml; 2.5986 + struct SuperMBTask *__tmp_4 = smur; 2.5987 + struct SuperMBTask *__tmp_5 = sm; 2.5988 + { 2.5989 + /* SMP device descriptor */ 2.5990 + static nanos_smp_args_t _ol_add_decode_slice_3dwave_tasks_4_smp_args = {(void (*)(void *)) _smp__ol_add_decode_slice_3dwave_tasks_4}; 2.5991 + _nx_data_env_4_t *ol_args = (_nx_data_env_4_t *) 0; 2.5992 + nanos_wd_t wd = (nanos_wd_t) 0; 2.5993 + struct nanos_const_wd_definition_local_t 2.5994 + { 2.5995 + nanos_const_wd_definition_t base; 2.5996 + nanos_device_t devices[1]; 2.5997 + }; 2.5998 + static struct nanos_const_wd_definition_local_t _const_def = { 2.5999 + { 2.6000 + { 2.6001 + 0, 2.6002 + 1, 2.6003 + 0, 2.6004 + 0, 2.6005 + 0, 2.6006 + 0, 2.6007 + 0, 2.6008 + 0 2.6009 + }, 2.6010 + __alignof__(_nx_data_env_4_t), 2.6011 + 0, 2.6012 + 1 2.6013 + }, 2.6014 + {{ 2.6015 + nanos_smp_factory, 2.6016 + &_ol_add_decode_slice_3dwave_tasks_4_smp_args 2.6017 + }} 2.6018 + }; 2.6019 + nanos_wd_dyn_props_t dyn_props = {0}; 2.6020 + nanos_err_t err; 2.6021 + dyn_props.priority = 0; 2.6022 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_4_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.6023 + if (err != NANOS_OK) 2.6024 + nanos_handle_error(err); 2.6025 + if (wd != (nanos_wd_t) 0) 2.6026 + { 2.6027 + ol_args->__tmp_0_0 = __tmp_0; 2.6028 + ol_args->__tmp_1_0 = __tmp_1; 2.6029 + ol_args->__tmp_2_0 = __tmp_2; 2.6030 + ol_args->__tmp_3_0 = __tmp_3; 2.6031 + ol_args->__tmp_4_0 = __tmp_4; 2.6032 + ol_args->__tmp_5_0 = __tmp_5; 2.6033 + nanos_dependence_t _dependences[5] = { 2.6034 + { 2.6035 + (void **) &ol_args->__tmp_0_0, 2.6036 + ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0), 2.6037 + { 2.6038 + 1, 2.6039 + 0, 2.6040 + 1, 2.6041 + 0 2.6042 + }, 2.6043 + sizeof(struct MBRecContext) 2.6044 + }, 2.6045 + { 2.6046 + (void **) &ol_args->__tmp_1_0, 2.6047 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.6048 + { 2.6049 + 1, 2.6050 + 0, 2.6051 + 1, 2.6052 + 0 2.6053 + }, 2.6054 + sizeof(SliceBufferEntry) 2.6055 + }, 2.6056 + { 2.6057 + (void **) &ol_args->__tmp_3_0, 2.6058 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.6059 + { 2.6060 + 1, 2.6061 + 0, 2.6062 + 1, 2.6063 + 0 2.6064 + }, 2.6065 + sizeof(struct SuperMBTask) 2.6066 + }, 2.6067 + { 2.6068 + (void **) &ol_args->__tmp_4_0, 2.6069 + ((char *) ((__tmp_4)) - (char *) ol_args->__tmp_4_0), 2.6070 + { 2.6071 + 1, 2.6072 + 0, 2.6073 + 1, 2.6074 + 0 2.6075 + }, 2.6076 + sizeof(struct SuperMBTask) 2.6077 + }, 2.6078 + { 2.6079 + (void **) &ol_args->__tmp_5_0, 2.6080 + ((char *) ((__tmp_5)) - (char *) ol_args->__tmp_5_0), 2.6081 + { 2.6082 + 1, 2.6083 + 1, 2.6084 + 1, 2.6085 + 0 2.6086 + }, 2.6087 + sizeof(struct SuperMBTask) 2.6088 + } 2.6089 + }; 2.6090 + err = nanos_submit(wd, 5, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.6091 + if (err != NANOS_OK) 2.6092 + nanos_handle_error(err); 2.6093 + } 2.6094 + else 2.6095 + { 2.6096 + _nx_data_env_4_t imm_args; 2.6097 + imm_args.__tmp_0_0 = __tmp_0; 2.6098 + imm_args.__tmp_1_0 = __tmp_1; 2.6099 + imm_args.__tmp_2_0 = __tmp_2; 2.6100 + imm_args.__tmp_3_0 = __tmp_3; 2.6101 + imm_args.__tmp_4_0 = __tmp_4; 2.6102 + imm_args.__tmp_5_0 = __tmp_5; 2.6103 + nanos_dependence_t _dependences[5] = { 2.6104 + { 2.6105 + (void **) &imm_args.__tmp_0_0, 2.6106 + ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0), 2.6107 + { 2.6108 + 1, 2.6109 + 0, 2.6110 + 1, 2.6111 + 0 2.6112 + }, 2.6113 + sizeof(struct MBRecContext) 2.6114 + }, 2.6115 + { 2.6116 + (void **) &imm_args.__tmp_1_0, 2.6117 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.6118 + { 2.6119 + 1, 2.6120 + 0, 2.6121 + 1, 2.6122 + 0 2.6123 + }, 2.6124 + sizeof(SliceBufferEntry) 2.6125 + }, 2.6126 + { 2.6127 + (void **) &imm_args.__tmp_3_0, 2.6128 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.6129 + { 2.6130 + 1, 2.6131 + 0, 2.6132 + 1, 2.6133 + 0 2.6134 + }, 2.6135 + sizeof(struct SuperMBTask) 2.6136 + }, 2.6137 + { 2.6138 + (void **) &imm_args.__tmp_4_0, 2.6139 + ((char *) ((__tmp_4)) - (char *) imm_args.__tmp_4_0), 2.6140 + { 2.6141 + 1, 2.6142 + 0, 2.6143 + 1, 2.6144 + 0 2.6145 + }, 2.6146 + sizeof(struct SuperMBTask) 2.6147 + }, 2.6148 + { 2.6149 + (void **) &imm_args.__tmp_5_0, 2.6150 + ((char *) ((__tmp_5)) - (char *) imm_args.__tmp_5_0), 2.6151 + { 2.6152 + 1, 2.6153 + 1, 2.6154 + 1, 2.6155 + 0 2.6156 + }, 2.6157 + sizeof(struct SuperMBTask) 2.6158 + } 2.6159 + }; 2.6160 + dyn_props.priority = 0; 2.6161 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_4_t), &imm_args, 5, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.6162 + if (err != NANOS_OK) 2.6163 + nanos_handle_error(err); 2.6164 + } 2.6165 + } 2.6166 + ; 2.6167 + } 2.6168 + } 2.6169 + { 2.6170 + struct MBRecContext *__tmp_0 = d; 2.6171 + SliceBufferEntry *__tmp_1 = sbe; 2.6172 + struct SuperMBContext *__tmp_2 = smbc; 2.6173 + struct SuperMBTask *__tmp_3 = sm; 2.6174 + int __tmp_4 = j; 2.6175 + { 2.6176 + /* SMP device descriptor */ 2.6177 + static nanos_smp_args_t _ol_add_decode_slice_3dwave_tasks_5_smp_args = {(void (*)(void *)) _smp__ol_add_decode_slice_3dwave_tasks_5}; 2.6178 + _nx_data_env_5_t *ol_args = (_nx_data_env_5_t *) 0; 2.6179 + nanos_wd_t wd = (nanos_wd_t) 0; 2.6180 + struct nanos_const_wd_definition_local_t 2.6181 + { 2.6182 + nanos_const_wd_definition_t base; 2.6183 + nanos_device_t devices[1]; 2.6184 + }; 2.6185 + static struct nanos_const_wd_definition_local_t _const_def = { 2.6186 + { 2.6187 + { 2.6188 + 0, 2.6189 + 1, 2.6190 + 0, 2.6191 + 0, 2.6192 + 0, 2.6193 + 0, 2.6194 + 0, 2.6195 + 0 2.6196 + }, 2.6197 + __alignof__(_nx_data_env_5_t), 2.6198 + 0, 2.6199 + 1 2.6200 + }, 2.6201 + {{ 2.6202 + nanos_smp_factory, 2.6203 + &_ol_add_decode_slice_3dwave_tasks_5_smp_args 2.6204 + }} 2.6205 + }; 2.6206 + nanos_wd_dyn_props_t dyn_props = {0}; 2.6207 + nanos_err_t err; 2.6208 + dyn_props.priority = 0; 2.6209 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_5_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.6210 + if (err != NANOS_OK) 2.6211 + nanos_handle_error(err); 2.6212 + if (wd != (nanos_wd_t) 0) 2.6213 + { 2.6214 + ol_args->__tmp_0_0 = __tmp_0; 2.6215 + ol_args->__tmp_1_0 = __tmp_1; 2.6216 + ol_args->__tmp_2_0 = __tmp_2; 2.6217 + ol_args->__tmp_3_0 = __tmp_3; 2.6218 + ol_args->__tmp_4_0 = __tmp_4; 2.6219 + nanos_dependence_t _dependences[3] = { 2.6220 + { 2.6221 + (void **) &ol_args->__tmp_0_0, 2.6222 + ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0), 2.6223 + { 2.6224 + 1, 2.6225 + 0, 2.6226 + 1, 2.6227 + 0 2.6228 + }, 2.6229 + sizeof(struct MBRecContext) 2.6230 + }, 2.6231 + { 2.6232 + (void **) &ol_args->__tmp_1_0, 2.6233 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.6234 + { 2.6235 + 1, 2.6236 + 0, 2.6237 + 1, 2.6238 + 0 2.6239 + }, 2.6240 + sizeof(SliceBufferEntry) 2.6241 + }, 2.6242 + { 2.6243 + (void **) &ol_args->__tmp_3_0, 2.6244 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.6245 + { 2.6246 + 1, 2.6247 + 1, 2.6248 + 1, 2.6249 + 0 2.6250 + }, 2.6251 + sizeof(struct SuperMBTask) 2.6252 + } 2.6253 + }; 2.6254 + err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.6255 + if (err != NANOS_OK) 2.6256 + nanos_handle_error(err); 2.6257 + } 2.6258 + else 2.6259 + { 2.6260 + _nx_data_env_5_t imm_args; 2.6261 + imm_args.__tmp_0_0 = __tmp_0; 2.6262 + imm_args.__tmp_1_0 = __tmp_1; 2.6263 + imm_args.__tmp_2_0 = __tmp_2; 2.6264 + imm_args.__tmp_3_0 = __tmp_3; 2.6265 + imm_args.__tmp_4_0 = __tmp_4; 2.6266 + nanos_dependence_t _dependences[3] = { 2.6267 + { 2.6268 + (void **) &imm_args.__tmp_0_0, 2.6269 + ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0), 2.6270 + { 2.6271 + 1, 2.6272 + 0, 2.6273 + 1, 2.6274 + 0 2.6275 + }, 2.6276 + sizeof(struct MBRecContext) 2.6277 + }, 2.6278 + { 2.6279 + (void **) &imm_args.__tmp_1_0, 2.6280 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.6281 + { 2.6282 + 1, 2.6283 + 0, 2.6284 + 1, 2.6285 + 0 2.6286 + }, 2.6287 + sizeof(SliceBufferEntry) 2.6288 + }, 2.6289 + { 2.6290 + (void **) &imm_args.__tmp_3_0, 2.6291 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.6292 + { 2.6293 + 1, 2.6294 + 1, 2.6295 + 1, 2.6296 + 0 2.6297 + }, 2.6298 + sizeof(struct SuperMBTask) 2.6299 + } 2.6300 + }; 2.6301 + dyn_props.priority = 0; 2.6302 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_5_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.6303 + if (err != NANOS_OK) 2.6304 + nanos_handle_error(err); 2.6305 + } 2.6306 + } 2.6307 + ; 2.6308 + } 2.6309 + } 2.6310 + return sm; 2.6311 +} 2.6312 +static void release_ref_list_task(H264Context *h, SuperMBContext *smbc, MBRecContext *d, SliceBufferEntry *sbe, SuperMBTask *lastsmb, int *release) 2.6313 +{ 2.6314 + H264Slice *s = &sbe->slice; 2.6315 + for (int i = 0; 2.6316 + i < s->release_cnt; 2.6317 + i++) 2.6318 + { 2.6319 + for (int j = 0; 2.6320 + j < h->max_dpb_cnt; 2.6321 + j++) 2.6322 + { 2.6323 + if (h->dpb[j].cpn == s->release_ref_cpn[i]) 2.6324 + { 2.6325 + { 2.6326 + nanos_set_lock(&_nx_u_dpb_critical_lock); 2.6327 + release_dpb_entry(h, &h->dpb[j], 2); 2.6328 + nanos_unset_lock(&_nx_u_dpb_critical_lock); 2.6329 + } 2.6330 + break; 2.6331 + } 2.6332 + } 2.6333 + } 2.6334 + s->release_cnt = 0; 2.6335 + release_smbc(h, smbc); 2.6336 +} 2.6337 +static void output_task(H264Context *h, OutputContext *oc, SliceBufferEntry *sbe) 2.6338 +{ 2.6339 + DecodedPicture *out = output_frame(h, oc, sbe->slice.curr_pic, h->ofile, h->frame_width, h->frame_height); 2.6340 + if (out) 2.6341 + { 2.6342 + { 2.6343 + nanos_set_lock(&_nx_u_dpb_critical_lock); 2.6344 + release_dpb_entry(h, out, 1); 2.6345 + nanos_unset_lock(&_nx_u_dpb_critical_lock); 2.6346 + } 2.6347 + } 2.6348 +} 2.6349 +typedef struct _nx_data_env_6_t_tag 2.6350 +{ 2.6351 + struct H264Context *__tmp_0_0; 2.6352 + struct ParserContext *__tmp_1_0; 2.6353 + struct NalContext *__tmp_2_0; 2.6354 + SliceBufferEntry *__tmp_3_0; 2.6355 +} _nx_data_env_6_t; 2.6356 +int h264_decode_ompss(H264Context *h); 2.6357 +static void _smp__ol_h264_decode_ompss_6(_nx_data_env_6_t *const __restrict__ _args) 2.6358 +{ 2.6359 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6360 + struct ParserContext *___tmp_1_0 = _args->__tmp_1_0; 2.6361 + struct NalContext *___tmp_2_0 = _args->__tmp_2_0; 2.6362 + SliceBufferEntry *___tmp_3_0 = _args->__tmp_3_0; 2.6363 + /* Translation is done by the runtime */ 2.6364 + { 2.6365 + parse_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0)); 2.6366 + } 2.6367 +} 2.6368 +typedef struct _nx_data_env_7_t_tag 2.6369 +{ 2.6370 + struct H264Context *__tmp_0_0; 2.6371 + struct EntropyContext *__tmp_1_0; 2.6372 + SliceBufferEntry *__tmp_2_0; 2.6373 +} _nx_data_env_7_t; 2.6374 +int h264_decode_ompss(H264Context *h); 2.6375 +static void _smp__ol_h264_decode_ompss_7(_nx_data_env_7_t *const __restrict__ _args) 2.6376 +{ 2.6377 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6378 + struct EntropyContext *___tmp_1_0 = _args->__tmp_1_0; 2.6379 + SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0; 2.6380 + /* Translation is done by the runtime */ 2.6381 + { 2.6382 + decode_slice_entropy_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0)); 2.6383 + } 2.6384 +} 2.6385 +typedef struct _nx_data_env_8_t_tag 2.6386 +{ 2.6387 + struct H264Context *__tmp_0_0; 2.6388 + struct ParserContext *__tmp_1_0; 2.6389 + struct NalContext *__tmp_2_0; 2.6390 + SliceBufferEntry *__tmp_3_0; 2.6391 +} _nx_data_env_8_t; 2.6392 +int h264_decode_ompss(H264Context *h); 2.6393 +static void _smp__ol_h264_decode_ompss_8(_nx_data_env_8_t *const __restrict__ _args) 2.6394 +{ 2.6395 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6396 + struct ParserContext *___tmp_1_0 = _args->__tmp_1_0; 2.6397 + struct NalContext *___tmp_2_0 = _args->__tmp_2_0; 2.6398 + SliceBufferEntry *___tmp_3_0 = _args->__tmp_3_0; 2.6399 + /* Translation is done by the runtime */ 2.6400 + { 2.6401 + parse_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0)); 2.6402 + } 2.6403 +} 2.6404 +typedef struct _nx_data_env_9_t_tag 2.6405 +{ 2.6406 + struct H264Context *__tmp_0_0; 2.6407 + struct EntropyContext *__tmp_1_0; 2.6408 + SliceBufferEntry *__tmp_2_0; 2.6409 +} _nx_data_env_9_t; 2.6410 +int h264_decode_ompss(H264Context *h); 2.6411 +static void _smp__ol_h264_decode_ompss_9(_nx_data_env_9_t *const __restrict__ _args) 2.6412 +{ 2.6413 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6414 + struct EntropyContext *___tmp_1_0 = _args->__tmp_1_0; 2.6415 + SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0; 2.6416 + /* Translation is done by the runtime */ 2.6417 + { 2.6418 + decode_slice_entropy_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0)); 2.6419 + } 2.6420 +} 2.6421 +typedef struct _nx_data_env_10_t_tag 2.6422 +{ 2.6423 + struct H264Context *__tmp_0_0; 2.6424 + struct MBRecContext *__tmp_1_0; 2.6425 + SliceBufferEntry *__tmp_2_0; 2.6426 + int *__tmp_3_0; 2.6427 +} _nx_data_env_10_t; 2.6428 +int h264_decode_ompss(H264Context *h); 2.6429 +static void _smp__ol_h264_decode_ompss_10(_nx_data_env_10_t *const __restrict__ _args) 2.6430 +{ 2.6431 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6432 + struct MBRecContext *___tmp_1_0 = _args->__tmp_1_0; 2.6433 + SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0; 2.6434 + int *___tmp_3_0 = _args->__tmp_3_0; 2.6435 + /* Translation is done by the runtime */ 2.6436 + { 2.6437 + init_ref_list_and_get_dpb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0)); 2.6438 + } 2.6439 +} 2.6440 +typedef struct _nx_data_env_11_t_tag 2.6441 +{ 2.6442 + struct H264Context *__tmp_0_0; 2.6443 + struct SuperMBContext *__tmp_1_0; 2.6444 + struct MBRecContext *__tmp_2_0; 2.6445 + SliceBufferEntry *__tmp_3_0; 2.6446 + struct SuperMBTask *__tmp_4_0; 2.6447 + int *__tmp_5_0; 2.6448 +} _nx_data_env_11_t; 2.6449 +int h264_decode_ompss(H264Context *h); 2.6450 +static void _smp__ol_h264_decode_ompss_11(_nx_data_env_11_t *const __restrict__ _args) 2.6451 +{ 2.6452 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6453 + struct SuperMBContext *___tmp_1_0 = _args->__tmp_1_0; 2.6454 + struct MBRecContext *___tmp_2_0 = _args->__tmp_2_0; 2.6455 + SliceBufferEntry *___tmp_3_0 = _args->__tmp_3_0; 2.6456 + struct SuperMBTask *___tmp_4_0 = _args->__tmp_4_0; 2.6457 + int *___tmp_5_0 = _args->__tmp_5_0; 2.6458 + /* Translation is done by the runtime */ 2.6459 + { 2.6460 + release_ref_list_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0), (___tmp_5_0)); 2.6461 + } 2.6462 +} 2.6463 +typedef struct _nx_data_env_12_t_tag 2.6464 +{ 2.6465 + struct H264Context *__tmp_0_0; 2.6466 + struct OutputContext *__tmp_1_0; 2.6467 + SliceBufferEntry *__tmp_2_0; 2.6468 +} _nx_data_env_12_t; 2.6469 +int h264_decode_ompss(H264Context *h); 2.6470 +static void _smp__ol_h264_decode_ompss_12(_nx_data_env_12_t *const __restrict__ _args) 2.6471 +{ 2.6472 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6473 + struct OutputContext *___tmp_1_0 = _args->__tmp_1_0; 2.6474 + SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0; 2.6475 + /* Translation is done by the runtime */ 2.6476 + { 2.6477 + output_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0)); 2.6478 + } 2.6479 +} 2.6480 +typedef struct _nx_data_env_13_t_tag 2.6481 +{ 2.6482 + struct H264Context *__tmp_0_0; 2.6483 + struct MBRecContext *__tmp_1_0; 2.6484 + SliceBufferEntry *__tmp_2_0; 2.6485 + int *__tmp_3_0; 2.6486 +} _nx_data_env_13_t; 2.6487 +int h264_decode_ompss(H264Context *h); 2.6488 +static void _smp__ol_h264_decode_ompss_13(_nx_data_env_13_t *const __restrict__ _args) 2.6489 +{ 2.6490 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6491 + struct MBRecContext *___tmp_1_0 = _args->__tmp_1_0; 2.6492 + SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0; 2.6493 + int *___tmp_3_0 = _args->__tmp_3_0; 2.6494 + /* Translation is done by the runtime */ 2.6495 + { 2.6496 + init_ref_list_and_get_dpb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0)); 2.6497 + } 2.6498 +} 2.6499 +typedef struct _nx_data_env_14_t_tag 2.6500 +{ 2.6501 + struct H264Context *__tmp_0_0; 2.6502 + struct SuperMBContext *__tmp_1_0; 2.6503 + struct MBRecContext *__tmp_2_0; 2.6504 + SliceBufferEntry *__tmp_3_0; 2.6505 + struct SuperMBTask *__tmp_4_0; 2.6506 + int *__tmp_5_0; 2.6507 +} _nx_data_env_14_t; 2.6508 +int h264_decode_ompss(H264Context *h); 2.6509 +static void _smp__ol_h264_decode_ompss_14(_nx_data_env_14_t *const __restrict__ _args) 2.6510 +{ 2.6511 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6512 + struct SuperMBContext *___tmp_1_0 = _args->__tmp_1_0; 2.6513 + struct MBRecContext *___tmp_2_0 = _args->__tmp_2_0; 2.6514 + SliceBufferEntry *___tmp_3_0 = _args->__tmp_3_0; 2.6515 + struct SuperMBTask *___tmp_4_0 = _args->__tmp_4_0; 2.6516 + int *___tmp_5_0 = _args->__tmp_5_0; 2.6517 + /* Translation is done by the runtime */ 2.6518 + { 2.6519 + release_ref_list_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0), (___tmp_5_0)); 2.6520 + } 2.6521 +} 2.6522 +typedef struct _nx_data_env_15_t_tag 2.6523 +{ 2.6524 + struct H264Context *__tmp_0_0; 2.6525 + struct OutputContext *__tmp_1_0; 2.6526 + SliceBufferEntry *__tmp_2_0; 2.6527 +} _nx_data_env_15_t; 2.6528 +int h264_decode_ompss(H264Context *h); 2.6529 +static void _smp__ol_h264_decode_ompss_15(_nx_data_env_15_t *const __restrict__ _args) 2.6530 +{ 2.6531 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6532 + struct OutputContext *___tmp_1_0 = _args->__tmp_1_0; 2.6533 + SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0; 2.6534 + /* Translation is done by the runtime */ 2.6535 + { 2.6536 + output_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0)); 2.6537 + } 2.6538 +} 2.6539 +typedef struct _nx_data_env_16_t_tag 2.6540 +{ 2.6541 + struct H264Context *__tmp_0_0; 2.6542 + struct ParserContext *__tmp_1_0; 2.6543 + struct NalContext *__tmp_2_0; 2.6544 + SliceBufferEntry *__tmp_3_0; 2.6545 +} _nx_data_env_16_t; 2.6546 +int h264_decode_ompss(H264Context *h); 2.6547 +static void _smp__ol_h264_decode_ompss_16(_nx_data_env_16_t *const __restrict__ _args) 2.6548 +{ 2.6549 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6550 + struct ParserContext *___tmp_1_0 = _args->__tmp_1_0; 2.6551 + struct NalContext *___tmp_2_0 = _args->__tmp_2_0; 2.6552 + SliceBufferEntry *___tmp_3_0 = _args->__tmp_3_0; 2.6553 + /* Translation is done by the runtime */ 2.6554 + { 2.6555 + parse_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0)); 2.6556 + } 2.6557 +} 2.6558 +typedef struct _nx_data_env_17_t_tag 2.6559 +{ 2.6560 + struct H264Context *__tmp_0_0; 2.6561 + struct EntropyContext *__tmp_1_0; 2.6562 + SliceBufferEntry *__tmp_2_0; 2.6563 +} _nx_data_env_17_t; 2.6564 +int h264_decode_ompss(H264Context *h); 2.6565 +static void _smp__ol_h264_decode_ompss_17(_nx_data_env_17_t *const __restrict__ _args) 2.6566 +{ 2.6567 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6568 + struct EntropyContext *___tmp_1_0 = _args->__tmp_1_0; 2.6569 + SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0; 2.6570 + /* Translation is done by the runtime */ 2.6571 + { 2.6572 + decode_slice_entropy_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0)); 2.6573 + } 2.6574 +} 2.6575 +typedef struct _nx_data_env_18_t_tag 2.6576 +{ 2.6577 + struct H264Context *__tmp_0_0; 2.6578 + struct MBRecContext *__tmp_1_0; 2.6579 + SliceBufferEntry *__tmp_2_0; 2.6580 +} _nx_data_env_18_t; 2.6581 +int h264_decode_ompss(H264Context *h); 2.6582 +static void _smp__ol_h264_decode_ompss_18(_nx_data_env_18_t *const __restrict__ _args) 2.6583 +{ 2.6584 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6585 + struct MBRecContext *___tmp_1_0 = _args->__tmp_1_0; 2.6586 + SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0; 2.6587 + /* Translation is done by the runtime */ 2.6588 + { 2.6589 + decode_slice_mb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0)); 2.6590 + } 2.6591 +} 2.6592 +typedef struct _nx_data_env_19_t_tag 2.6593 +{ 2.6594 + struct H264Context *__tmp_0_0; 2.6595 + struct OutputContext *__tmp_1_0; 2.6596 + SliceBufferEntry *__tmp_2_0; 2.6597 +} _nx_data_env_19_t; 2.6598 +int h264_decode_ompss(H264Context *h); 2.6599 +static void _smp__ol_h264_decode_ompss_19(_nx_data_env_19_t *const __restrict__ _args) 2.6600 +{ 2.6601 + struct H264Context *___tmp_0_0 = _args->__tmp_0_0; 2.6602 + struct OutputContext *___tmp_1_0 = _args->__tmp_1_0; 2.6603 + SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0; 2.6604 + /* Translation is done by the runtime */ 2.6605 + { 2.6606 + output_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0)); 2.6607 + } 2.6608 +} 2.6609 +int h264_decode_ompss(H264Context *h) 2.6610 +{ 2.6611 + const int bufs = h->pipe_bufs; 2.6612 + ParserContext *pc; 2.6613 + NalContext *nc; 2.6614 + EntropyContext *ec[bufs]; 2.6615 + MBRecContext *rc[2]; 2.6616 + OutputContext *oc; 2.6617 + SliceBufferEntry *sbe; 2.6618 + SuperMBContext *smbc; 2.6619 + DecodedPicture *out; 2.6620 + int frames = 0; 2.6621 + sbe = av_mallocz(sizeof(SliceBufferEntry) * bufs); 2.6622 + pc = get_parse_context(h->ifile); 2.6623 + nc = get_nal_context(h->width, h->height); 2.6624 + for (int i = 0; 2.6625 + i < bufs; 2.6626 + i++) 2.6627 + { 2.6628 + ec[i] = get_entropy_context(h); 2.6629 + } 2.6630 + for (int i = 0; 2.6631 + i < 2; 2.6632 + i++) 2.6633 + { 2.6634 + rc[i] = get_mbrec_context(h); 2.6635 + } 2.6636 + oc = get_output_context(h); 2.6637 + av_start_timer(); 2.6638 + int k = 0; 2.6639 + int init, release; 2.6640 + if (h->static_3d && bufs < h->num_frames) 2.6641 + { 2.6642 + int num_pre_ed = 0; 2.6643 + for (num_pre_ed = 0; 2.6644 + num_pre_ed < bufs - 1 && !pc->final_frame; 2.6645 + num_pre_ed++) 2.6646 + { 2.6647 + { 2.6648 + struct H264Context *__tmp_0 = h; 2.6649 + struct ParserContext *__tmp_1 = pc; 2.6650 + struct NalContext *__tmp_2 = nc; 2.6651 + SliceBufferEntry *__tmp_3 = &sbe[k % bufs]; 2.6652 + { 2.6653 + /* SMP device descriptor */ 2.6654 + static nanos_smp_args_t _ol_h264_decode_ompss_6_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_6}; 2.6655 + _nx_data_env_6_t *ol_args = (_nx_data_env_6_t *) 0; 2.6656 + nanos_wd_t wd = (nanos_wd_t) 0; 2.6657 + struct nanos_const_wd_definition_local_t 2.6658 + { 2.6659 + nanos_const_wd_definition_t base; 2.6660 + nanos_device_t devices[1]; 2.6661 + }; 2.6662 + static struct nanos_const_wd_definition_local_t _const_def = { 2.6663 + { 2.6664 + { 2.6665 + 0, 2.6666 + 1, 2.6667 + 0, 2.6668 + 0, 2.6669 + 0, 2.6670 + 0, 2.6671 + 0, 2.6672 + 0 2.6673 + }, 2.6674 + __alignof__(_nx_data_env_6_t), 2.6675 + 0, 2.6676 + 1 2.6677 + }, 2.6678 + {{ 2.6679 + nanos_smp_factory, 2.6680 + &_ol_h264_decode_ompss_6_smp_args 2.6681 + }} 2.6682 + }; 2.6683 + nanos_wd_dyn_props_t dyn_props = {0}; 2.6684 + nanos_err_t err; 2.6685 + dyn_props.priority = 0; 2.6686 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_6_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.6687 + if (err != NANOS_OK) 2.6688 + nanos_handle_error(err); 2.6689 + if (wd != (nanos_wd_t) 0) 2.6690 + { 2.6691 + ol_args->__tmp_0_0 = __tmp_0; 2.6692 + ol_args->__tmp_1_0 = __tmp_1; 2.6693 + ol_args->__tmp_2_0 = __tmp_2; 2.6694 + ol_args->__tmp_3_0 = __tmp_3; 2.6695 + nanos_dependence_t _dependences[3] = { 2.6696 + { 2.6697 + (void **) &ol_args->__tmp_3_0, 2.6698 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.6699 + { 2.6700 + 0, 2.6701 + 1, 2.6702 + 1, 2.6703 + 0 2.6704 + }, 2.6705 + sizeof(SliceBufferEntry) 2.6706 + }, 2.6707 + { 2.6708 + (void **) &ol_args->__tmp_1_0, 2.6709 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.6710 + { 2.6711 + 1, 2.6712 + 1, 2.6713 + 1, 2.6714 + 0 2.6715 + }, 2.6716 + sizeof(struct ParserContext) 2.6717 + }, 2.6718 + { 2.6719 + (void **) &ol_args->__tmp_2_0, 2.6720 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.6721 + { 2.6722 + 1, 2.6723 + 1, 2.6724 + 1, 2.6725 + 0 2.6726 + }, 2.6727 + sizeof(struct NalContext) 2.6728 + } 2.6729 + }; 2.6730 + err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.6731 + if (err != NANOS_OK) 2.6732 + nanos_handle_error(err); 2.6733 + } 2.6734 + else 2.6735 + { 2.6736 + _nx_data_env_6_t imm_args; 2.6737 + imm_args.__tmp_0_0 = __tmp_0; 2.6738 + imm_args.__tmp_1_0 = __tmp_1; 2.6739 + imm_args.__tmp_2_0 = __tmp_2; 2.6740 + imm_args.__tmp_3_0 = __tmp_3; 2.6741 + nanos_dependence_t _dependences[3] = { 2.6742 + { 2.6743 + (void **) &imm_args.__tmp_3_0, 2.6744 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.6745 + { 2.6746 + 0, 2.6747 + 1, 2.6748 + 1, 2.6749 + 0 2.6750 + }, 2.6751 + sizeof(SliceBufferEntry) 2.6752 + }, 2.6753 + { 2.6754 + (void **) &imm_args.__tmp_1_0, 2.6755 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.6756 + { 2.6757 + 1, 2.6758 + 1, 2.6759 + 1, 2.6760 + 0 2.6761 + }, 2.6762 + sizeof(struct ParserContext) 2.6763 + }, 2.6764 + { 2.6765 + (void **) &imm_args.__tmp_2_0, 2.6766 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.6767 + { 2.6768 + 1, 2.6769 + 1, 2.6770 + 1, 2.6771 + 0 2.6772 + }, 2.6773 + sizeof(struct NalContext) 2.6774 + } 2.6775 + }; 2.6776 + dyn_props.priority = 0; 2.6777 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_6_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.6778 + if (err != NANOS_OK) 2.6779 + nanos_handle_error(err); 2.6780 + } 2.6781 + } 2.6782 + ; 2.6783 + } 2.6784 + { 2.6785 + struct H264Context *__tmp_0 = h; 2.6786 + struct EntropyContext *__tmp_1 = ec[k % bufs]; 2.6787 + SliceBufferEntry *__tmp_2 = &sbe[k % bufs]; 2.6788 + { 2.6789 + /* SMP device descriptor */ 2.6790 + static nanos_smp_args_t _ol_h264_decode_ompss_7_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_7}; 2.6791 + _nx_data_env_7_t *ol_args = (_nx_data_env_7_t *) 0; 2.6792 + nanos_wd_t wd = (nanos_wd_t) 0; 2.6793 + struct nanos_const_wd_definition_local_t 2.6794 + { 2.6795 + nanos_const_wd_definition_t base; 2.6796 + nanos_device_t devices[1]; 2.6797 + }; 2.6798 + static struct nanos_const_wd_definition_local_t _const_def = { 2.6799 + { 2.6800 + { 2.6801 + 0, 2.6802 + 1, 2.6803 + 0, 2.6804 + 0, 2.6805 + 0, 2.6806 + 0, 2.6807 + 0, 2.6808 + 0 2.6809 + }, 2.6810 + __alignof__(_nx_data_env_7_t), 2.6811 + 0, 2.6812 + 1 2.6813 + }, 2.6814 + {{ 2.6815 + nanos_smp_factory, 2.6816 + &_ol_h264_decode_ompss_7_smp_args 2.6817 + }} 2.6818 + }; 2.6819 + nanos_wd_dyn_props_t dyn_props = {0}; 2.6820 + nanos_err_t err; 2.6821 + dyn_props.priority = 0; 2.6822 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_7_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.6823 + if (err != NANOS_OK) 2.6824 + nanos_handle_error(err); 2.6825 + if (wd != (nanos_wd_t) 0) 2.6826 + { 2.6827 + ol_args->__tmp_0_0 = __tmp_0; 2.6828 + ol_args->__tmp_1_0 = __tmp_1; 2.6829 + ol_args->__tmp_2_0 = __tmp_2; 2.6830 + nanos_dependence_t _dependences[2] = { 2.6831 + { 2.6832 + (void **) &ol_args->__tmp_1_0, 2.6833 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.6834 + { 2.6835 + 1, 2.6836 + 1, 2.6837 + 1, 2.6838 + 0 2.6839 + }, 2.6840 + sizeof(struct EntropyContext) 2.6841 + }, 2.6842 + { 2.6843 + (void **) &ol_args->__tmp_2_0, 2.6844 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.6845 + { 2.6846 + 1, 2.6847 + 1, 2.6848 + 1, 2.6849 + 0 2.6850 + }, 2.6851 + sizeof(SliceBufferEntry) 2.6852 + } 2.6853 + }; 2.6854 + err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.6855 + if (err != NANOS_OK) 2.6856 + nanos_handle_error(err); 2.6857 + } 2.6858 + else 2.6859 + { 2.6860 + _nx_data_env_7_t imm_args; 2.6861 + imm_args.__tmp_0_0 = __tmp_0; 2.6862 + imm_args.__tmp_1_0 = __tmp_1; 2.6863 + imm_args.__tmp_2_0 = __tmp_2; 2.6864 + nanos_dependence_t _dependences[2] = { 2.6865 + { 2.6866 + (void **) &imm_args.__tmp_1_0, 2.6867 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.6868 + { 2.6869 + 1, 2.6870 + 1, 2.6871 + 1, 2.6872 + 0 2.6873 + }, 2.6874 + sizeof(struct EntropyContext) 2.6875 + }, 2.6876 + { 2.6877 + (void **) &imm_args.__tmp_2_0, 2.6878 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.6879 + { 2.6880 + 1, 2.6881 + 1, 2.6882 + 1, 2.6883 + 0 2.6884 + }, 2.6885 + sizeof(SliceBufferEntry) 2.6886 + } 2.6887 + }; 2.6888 + dyn_props.priority = 0; 2.6889 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_7_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.6890 + if (err != NANOS_OK) 2.6891 + nanos_handle_error(err); 2.6892 + } 2.6893 + } 2.6894 + ; 2.6895 + } 2.6896 + { 2.6897 + struct _dependence_holder 2.6898 + { 2.6899 + struct ParserContext *dep_0; 2.6900 + } _dep_holder = {&(*pc)}; 2.6901 + nanos_dependence_t _wait_dependences[1] = {{ 2.6902 + (void **) &_dep_holder.dep_0, 2.6903 + ((char *) ((pc)) - (char *) _dep_holder.dep_0), 2.6904 + { 2.6905 + 1, 2.6906 + 0, 2.6907 + 0, 2.6908 + 0 2.6909 + }, 2.6910 + sizeof (*pc) 2.6911 + }}; 2.6912 + nanos_wait_on(1, _wait_dependences); 2.6913 + } 2.6914 + k++; 2.6915 + } 2.6916 + while (!pc->final_frame && frames++ < h->num_frames && !h->quit) 2.6917 + { 2.6918 + { 2.6919 + struct H264Context *__tmp_0 = h; 2.6920 + struct ParserContext *__tmp_1 = pc; 2.6921 + struct NalContext *__tmp_2 = nc; 2.6922 + SliceBufferEntry *__tmp_3 = &sbe[k % bufs]; 2.6923 + { 2.6924 + /* SMP device descriptor */ 2.6925 + static nanos_smp_args_t _ol_h264_decode_ompss_8_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_8}; 2.6926 + _nx_data_env_8_t *ol_args = (_nx_data_env_8_t *) 0; 2.6927 + nanos_wd_t wd = (nanos_wd_t) 0; 2.6928 + struct nanos_const_wd_definition_local_t 2.6929 + { 2.6930 + nanos_const_wd_definition_t base; 2.6931 + nanos_device_t devices[1]; 2.6932 + }; 2.6933 + static struct nanos_const_wd_definition_local_t _const_def = { 2.6934 + { 2.6935 + { 2.6936 + 0, 2.6937 + 1, 2.6938 + 0, 2.6939 + 0, 2.6940 + 0, 2.6941 + 0, 2.6942 + 0, 2.6943 + 0 2.6944 + }, 2.6945 + __alignof__(_nx_data_env_8_t), 2.6946 + 0, 2.6947 + 1 2.6948 + }, 2.6949 + {{ 2.6950 + nanos_smp_factory, 2.6951 + &_ol_h264_decode_ompss_8_smp_args 2.6952 + }} 2.6953 + }; 2.6954 + nanos_wd_dyn_props_t dyn_props = {0}; 2.6955 + nanos_err_t err; 2.6956 + dyn_props.priority = 0; 2.6957 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_8_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.6958 + if (err != NANOS_OK) 2.6959 + nanos_handle_error(err); 2.6960 + if (wd != (nanos_wd_t) 0) 2.6961 + { 2.6962 + ol_args->__tmp_0_0 = __tmp_0; 2.6963 + ol_args->__tmp_1_0 = __tmp_1; 2.6964 + ol_args->__tmp_2_0 = __tmp_2; 2.6965 + ol_args->__tmp_3_0 = __tmp_3; 2.6966 + nanos_dependence_t _dependences[3] = { 2.6967 + { 2.6968 + (void **) &ol_args->__tmp_3_0, 2.6969 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.6970 + { 2.6971 + 0, 2.6972 + 1, 2.6973 + 1, 2.6974 + 0 2.6975 + }, 2.6976 + sizeof(SliceBufferEntry) 2.6977 + }, 2.6978 + { 2.6979 + (void **) &ol_args->__tmp_1_0, 2.6980 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.6981 + { 2.6982 + 1, 2.6983 + 1, 2.6984 + 1, 2.6985 + 0 2.6986 + }, 2.6987 + sizeof(struct ParserContext) 2.6988 + }, 2.6989 + { 2.6990 + (void **) &ol_args->__tmp_2_0, 2.6991 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.6992 + { 2.6993 + 1, 2.6994 + 1, 2.6995 + 1, 2.6996 + 0 2.6997 + }, 2.6998 + sizeof(struct NalContext) 2.6999 + } 2.7000 + }; 2.7001 + err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.7002 + if (err != NANOS_OK) 2.7003 + nanos_handle_error(err); 2.7004 + } 2.7005 + else 2.7006 + { 2.7007 + _nx_data_env_8_t imm_args; 2.7008 + imm_args.__tmp_0_0 = __tmp_0; 2.7009 + imm_args.__tmp_1_0 = __tmp_1; 2.7010 + imm_args.__tmp_2_0 = __tmp_2; 2.7011 + imm_args.__tmp_3_0 = __tmp_3; 2.7012 + nanos_dependence_t _dependences[3] = { 2.7013 + { 2.7014 + (void **) &imm_args.__tmp_3_0, 2.7015 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.7016 + { 2.7017 + 0, 2.7018 + 1, 2.7019 + 1, 2.7020 + 0 2.7021 + }, 2.7022 + sizeof(SliceBufferEntry) 2.7023 + }, 2.7024 + { 2.7025 + (void **) &imm_args.__tmp_1_0, 2.7026 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.7027 + { 2.7028 + 1, 2.7029 + 1, 2.7030 + 1, 2.7031 + 0 2.7032 + }, 2.7033 + sizeof(struct ParserContext) 2.7034 + }, 2.7035 + { 2.7036 + (void **) &imm_args.__tmp_2_0, 2.7037 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.7038 + { 2.7039 + 1, 2.7040 + 1, 2.7041 + 1, 2.7042 + 0 2.7043 + }, 2.7044 + sizeof(struct NalContext) 2.7045 + } 2.7046 + }; 2.7047 + dyn_props.priority = 0; 2.7048 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_8_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.7049 + if (err != NANOS_OK) 2.7050 + nanos_handle_error(err); 2.7051 + } 2.7052 + } 2.7053 + ; 2.7054 + } 2.7055 + { 2.7056 + struct H264Context *__tmp_0 = h; 2.7057 + struct EntropyContext *__tmp_1 = ec[k % bufs]; 2.7058 + SliceBufferEntry *__tmp_2 = &sbe[k % bufs]; 2.7059 + { 2.7060 + /* SMP device descriptor */ 2.7061 + static nanos_smp_args_t _ol_h264_decode_ompss_9_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_9}; 2.7062 + _nx_data_env_9_t *ol_args = (_nx_data_env_9_t *) 0; 2.7063 + nanos_wd_t wd = (nanos_wd_t) 0; 2.7064 + struct nanos_const_wd_definition_local_t 2.7065 + { 2.7066 + nanos_const_wd_definition_t base; 2.7067 + nanos_device_t devices[1]; 2.7068 + }; 2.7069 + static struct nanos_const_wd_definition_local_t _const_def = { 2.7070 + { 2.7071 + { 2.7072 + 0, 2.7073 + 1, 2.7074 + 0, 2.7075 + 0, 2.7076 + 0, 2.7077 + 0, 2.7078 + 0, 2.7079 + 0 2.7080 + }, 2.7081 + __alignof__(_nx_data_env_9_t), 2.7082 + 0, 2.7083 + 1 2.7084 + }, 2.7085 + {{ 2.7086 + nanos_smp_factory, 2.7087 + &_ol_h264_decode_ompss_9_smp_args 2.7088 + }} 2.7089 + }; 2.7090 + nanos_wd_dyn_props_t dyn_props = {0}; 2.7091 + nanos_err_t err; 2.7092 + dyn_props.priority = 0; 2.7093 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_9_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.7094 + if (err != NANOS_OK) 2.7095 + nanos_handle_error(err); 2.7096 + if (wd != (nanos_wd_t) 0) 2.7097 + { 2.7098 + ol_args->__tmp_0_0 = __tmp_0; 2.7099 + ol_args->__tmp_1_0 = __tmp_1; 2.7100 + ol_args->__tmp_2_0 = __tmp_2; 2.7101 + nanos_dependence_t _dependences[2] = { 2.7102 + { 2.7103 + (void **) &ol_args->__tmp_1_0, 2.7104 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.7105 + { 2.7106 + 1, 2.7107 + 1, 2.7108 + 1, 2.7109 + 0 2.7110 + }, 2.7111 + sizeof(struct EntropyContext) 2.7112 + }, 2.7113 + { 2.7114 + (void **) &ol_args->__tmp_2_0, 2.7115 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.7116 + { 2.7117 + 1, 2.7118 + 1, 2.7119 + 1, 2.7120 + 0 2.7121 + }, 2.7122 + sizeof(SliceBufferEntry) 2.7123 + } 2.7124 + }; 2.7125 + err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.7126 + if (err != NANOS_OK) 2.7127 + nanos_handle_error(err); 2.7128 + } 2.7129 + else 2.7130 + { 2.7131 + _nx_data_env_9_t imm_args; 2.7132 + imm_args.__tmp_0_0 = __tmp_0; 2.7133 + imm_args.__tmp_1_0 = __tmp_1; 2.7134 + imm_args.__tmp_2_0 = __tmp_2; 2.7135 + nanos_dependence_t _dependences[2] = { 2.7136 + { 2.7137 + (void **) &imm_args.__tmp_1_0, 2.7138 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.7139 + { 2.7140 + 1, 2.7141 + 1, 2.7142 + 1, 2.7143 + 0 2.7144 + }, 2.7145 + sizeof(struct EntropyContext) 2.7146 + }, 2.7147 + { 2.7148 + (void **) &imm_args.__tmp_2_0, 2.7149 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.7150 + { 2.7151 + 1, 2.7152 + 1, 2.7153 + 1, 2.7154 + 0 2.7155 + }, 2.7156 + sizeof(SliceBufferEntry) 2.7157 + } 2.7158 + }; 2.7159 + dyn_props.priority = 0; 2.7160 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_9_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.7161 + if (err != NANOS_OK) 2.7162 + nanos_handle_error(err); 2.7163 + } 2.7164 + } 2.7165 + ; 2.7166 + } 2.7167 + k++; 2.7168 + { 2.7169 + struct H264Context *__tmp_0 = h; 2.7170 + struct MBRecContext *__tmp_1 = rc[k % 2]; 2.7171 + SliceBufferEntry *__tmp_2 = &sbe[k % bufs]; 2.7172 + int *__tmp_3 = &init; 2.7173 + { 2.7174 + /* SMP device descriptor */ 2.7175 + static nanos_smp_args_t _ol_h264_decode_ompss_10_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_10}; 2.7176 + _nx_data_env_10_t *ol_args = (_nx_data_env_10_t *) 0; 2.7177 + nanos_wd_t wd = (nanos_wd_t) 0; 2.7178 + struct nanos_const_wd_definition_local_t 2.7179 + { 2.7180 + nanos_const_wd_definition_t base; 2.7181 + nanos_device_t devices[1]; 2.7182 + }; 2.7183 + static struct nanos_const_wd_definition_local_t _const_def = { 2.7184 + { 2.7185 + { 2.7186 + 0, 2.7187 + 1, 2.7188 + 0, 2.7189 + 0, 2.7190 + 0, 2.7191 + 0, 2.7192 + 0, 2.7193 + 0 2.7194 + }, 2.7195 + __alignof__(_nx_data_env_10_t), 2.7196 + 0, 2.7197 + 1 2.7198 + }, 2.7199 + {{ 2.7200 + nanos_smp_factory, 2.7201 + &_ol_h264_decode_ompss_10_smp_args 2.7202 + }} 2.7203 + }; 2.7204 + nanos_wd_dyn_props_t dyn_props = {0}; 2.7205 + nanos_err_t err; 2.7206 + dyn_props.priority = 0; 2.7207 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_10_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.7208 + if (err != NANOS_OK) 2.7209 + nanos_handle_error(err); 2.7210 + if (wd != (nanos_wd_t) 0) 2.7211 + { 2.7212 + ol_args->__tmp_0_0 = __tmp_0; 2.7213 + ol_args->__tmp_1_0 = __tmp_1; 2.7214 + ol_args->__tmp_2_0 = __tmp_2; 2.7215 + ol_args->__tmp_3_0 = __tmp_3; 2.7216 + nanos_dependence_t _dependences[3] = { 2.7217 + { 2.7218 + (void **) &ol_args->__tmp_1_0, 2.7219 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.7220 + { 2.7221 + 1, 2.7222 + 1, 2.7223 + 1, 2.7224 + 0 2.7225 + }, 2.7226 + sizeof(struct MBRecContext) 2.7227 + }, 2.7228 + { 2.7229 + (void **) &ol_args->__tmp_2_0, 2.7230 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.7231 + { 2.7232 + 1, 2.7233 + 1, 2.7234 + 1, 2.7235 + 0 2.7236 + }, 2.7237 + sizeof(SliceBufferEntry) 2.7238 + }, 2.7239 + { 2.7240 + (void **) &ol_args->__tmp_3_0, 2.7241 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.7242 + { 2.7243 + 1, 2.7244 + 1, 2.7245 + 1, 2.7246 + 0 2.7247 + }, 2.7248 + sizeof(int) 2.7249 + } 2.7250 + }; 2.7251 + err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.7252 + if (err != NANOS_OK) 2.7253 + nanos_handle_error(err); 2.7254 + } 2.7255 + else 2.7256 + { 2.7257 + _nx_data_env_10_t imm_args; 2.7258 + imm_args.__tmp_0_0 = __tmp_0; 2.7259 + imm_args.__tmp_1_0 = __tmp_1; 2.7260 + imm_args.__tmp_2_0 = __tmp_2; 2.7261 + imm_args.__tmp_3_0 = __tmp_3; 2.7262 + nanos_dependence_t _dependences[3] = { 2.7263 + { 2.7264 + (void **) &imm_args.__tmp_1_0, 2.7265 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.7266 + { 2.7267 + 1, 2.7268 + 1, 2.7269 + 1, 2.7270 + 0 2.7271 + }, 2.7272 + sizeof(struct MBRecContext) 2.7273 + }, 2.7274 + { 2.7275 + (void **) &imm_args.__tmp_2_0, 2.7276 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.7277 + { 2.7278 + 1, 2.7279 + 1, 2.7280 + 1, 2.7281 + 0 2.7282 + }, 2.7283 + sizeof(SliceBufferEntry) 2.7284 + }, 2.7285 + { 2.7286 + (void **) &imm_args.__tmp_3_0, 2.7287 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.7288 + { 2.7289 + 1, 2.7290 + 1, 2.7291 + 1, 2.7292 + 0 2.7293 + }, 2.7294 + sizeof(int) 2.7295 + } 2.7296 + }; 2.7297 + dyn_props.priority = 0; 2.7298 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_10_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.7299 + if (err != NANOS_OK) 2.7300 + nanos_handle_error(err); 2.7301 + } 2.7302 + } 2.7303 + ; 2.7304 + } 2.7305 + smbc = acquire_smbc(h); 2.7306 + SuperMBTask *lastsmb = add_decode_slice_3dwave_tasks(rc[k % 2], &sbe[k % bufs], smbc); 2.7307 + { 2.7308 + struct H264Context *__tmp_0 = h; 2.7309 + struct SuperMBContext *__tmp_1 = smbc; 2.7310 + struct MBRecContext *__tmp_2 = rc[k % 2]; 2.7311 + SliceBufferEntry *__tmp_3 = &sbe[k % bufs]; 2.7312 + struct SuperMBTask *__tmp_4 = lastsmb; 2.7313 + int *__tmp_5 = &release; 2.7314 + { 2.7315 + /* SMP device descriptor */ 2.7316 + static nanos_smp_args_t _ol_h264_decode_ompss_11_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_11}; 2.7317 + _nx_data_env_11_t *ol_args = (_nx_data_env_11_t *) 0; 2.7318 + nanos_wd_t wd = (nanos_wd_t) 0; 2.7319 + struct nanos_const_wd_definition_local_t 2.7320 + { 2.7321 + nanos_const_wd_definition_t base; 2.7322 + nanos_device_t devices[1]; 2.7323 + }; 2.7324 + static struct nanos_const_wd_definition_local_t _const_def = { 2.7325 + { 2.7326 + { 2.7327 + 0, 2.7328 + 1, 2.7329 + 0, 2.7330 + 0, 2.7331 + 0, 2.7332 + 0, 2.7333 + 0, 2.7334 + 0 2.7335 + }, 2.7336 + __alignof__(_nx_data_env_11_t), 2.7337 + 0, 2.7338 + 1 2.7339 + }, 2.7340 + {{ 2.7341 + nanos_smp_factory, 2.7342 + &_ol_h264_decode_ompss_11_smp_args 2.7343 + }} 2.7344 + }; 2.7345 + nanos_wd_dyn_props_t dyn_props = {0}; 2.7346 + nanos_err_t err; 2.7347 + dyn_props.priority = 0; 2.7348 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_11_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.7349 + if (err != NANOS_OK) 2.7350 + nanos_handle_error(err); 2.7351 + if (wd != (nanos_wd_t) 0) 2.7352 + { 2.7353 + ol_args->__tmp_0_0 = __tmp_0; 2.7354 + ol_args->__tmp_1_0 = __tmp_1; 2.7355 + ol_args->__tmp_2_0 = __tmp_2; 2.7356 + ol_args->__tmp_3_0 = __tmp_3; 2.7357 + ol_args->__tmp_4_0 = __tmp_4; 2.7358 + ol_args->__tmp_5_0 = __tmp_5; 2.7359 + nanos_dependence_t _dependences[4] = { 2.7360 + { 2.7361 + (void **) &ol_args->__tmp_4_0, 2.7362 + ((char *) ((__tmp_4)) - (char *) ol_args->__tmp_4_0), 2.7363 + { 2.7364 + 1, 2.7365 + 0, 2.7366 + 1, 2.7367 + 0 2.7368 + }, 2.7369 + sizeof(struct SuperMBTask) 2.7370 + }, 2.7371 + { 2.7372 + (void **) &ol_args->__tmp_2_0, 2.7373 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.7374 + { 2.7375 + 1, 2.7376 + 1, 2.7377 + 1, 2.7378 + 0 2.7379 + }, 2.7380 + sizeof(struct MBRecContext) 2.7381 + }, 2.7382 + { 2.7383 + (void **) &ol_args->__tmp_3_0, 2.7384 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.7385 + { 2.7386 + 1, 2.7387 + 1, 2.7388 + 1, 2.7389 + 0 2.7390 + }, 2.7391 + sizeof(SliceBufferEntry) 2.7392 + }, 2.7393 + { 2.7394 + (void **) &ol_args->__tmp_5_0, 2.7395 + ((char *) ((__tmp_5)) - (char *) ol_args->__tmp_5_0), 2.7396 + { 2.7397 + 1, 2.7398 + 1, 2.7399 + 1, 2.7400 + 0 2.7401 + }, 2.7402 + sizeof(int) 2.7403 + } 2.7404 + }; 2.7405 + err = nanos_submit(wd, 4, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.7406 + if (err != NANOS_OK) 2.7407 + nanos_handle_error(err); 2.7408 + } 2.7409 + else 2.7410 + { 2.7411 + _nx_data_env_11_t imm_args; 2.7412 + imm_args.__tmp_0_0 = __tmp_0; 2.7413 + imm_args.__tmp_1_0 = __tmp_1; 2.7414 + imm_args.__tmp_2_0 = __tmp_2; 2.7415 + imm_args.__tmp_3_0 = __tmp_3; 2.7416 + imm_args.__tmp_4_0 = __tmp_4; 2.7417 + imm_args.__tmp_5_0 = __tmp_5; 2.7418 + nanos_dependence_t _dependences[4] = { 2.7419 + { 2.7420 + (void **) &imm_args.__tmp_4_0, 2.7421 + ((char *) ((__tmp_4)) - (char *) imm_args.__tmp_4_0), 2.7422 + { 2.7423 + 1, 2.7424 + 0, 2.7425 + 1, 2.7426 + 0 2.7427 + }, 2.7428 + sizeof(struct SuperMBTask) 2.7429 + }, 2.7430 + { 2.7431 + (void **) &imm_args.__tmp_2_0, 2.7432 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.7433 + { 2.7434 + 1, 2.7435 + 1, 2.7436 + 1, 2.7437 + 0 2.7438 + }, 2.7439 + sizeof(struct MBRecContext) 2.7440 + }, 2.7441 + { 2.7442 + (void **) &imm_args.__tmp_3_0, 2.7443 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.7444 + { 2.7445 + 1, 2.7446 + 1, 2.7447 + 1, 2.7448 + 0 2.7449 + }, 2.7450 + sizeof(SliceBufferEntry) 2.7451 + }, 2.7452 + { 2.7453 + (void **) &imm_args.__tmp_5_0, 2.7454 + ((char *) ((__tmp_5)) - (char *) imm_args.__tmp_5_0), 2.7455 + { 2.7456 + 1, 2.7457 + 1, 2.7458 + 1, 2.7459 + 0 2.7460 + }, 2.7461 + sizeof(int) 2.7462 + } 2.7463 + }; 2.7464 + dyn_props.priority = 0; 2.7465 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_11_t), &imm_args, 4, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.7466 + if (err != NANOS_OK) 2.7467 + nanos_handle_error(err); 2.7468 + } 2.7469 + } 2.7470 + ; 2.7471 + } 2.7472 + { 2.7473 + struct H264Context *__tmp_0 = h; 2.7474 + struct OutputContext *__tmp_1 = oc; 2.7475 + SliceBufferEntry *__tmp_2 = &sbe[k % bufs]; 2.7476 + { 2.7477 + /* SMP device descriptor */ 2.7478 + static nanos_smp_args_t _ol_h264_decode_ompss_12_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_12}; 2.7479 + _nx_data_env_12_t *ol_args = (_nx_data_env_12_t *) 0; 2.7480 + nanos_wd_t wd = (nanos_wd_t) 0; 2.7481 + struct nanos_const_wd_definition_local_t 2.7482 + { 2.7483 + nanos_const_wd_definition_t base; 2.7484 + nanos_device_t devices[1]; 2.7485 + }; 2.7486 + static struct nanos_const_wd_definition_local_t _const_def = { 2.7487 + { 2.7488 + { 2.7489 + 0, 2.7490 + 1, 2.7491 + 0, 2.7492 + 0, 2.7493 + 0, 2.7494 + 0, 2.7495 + 0, 2.7496 + 0 2.7497 + }, 2.7498 + __alignof__(_nx_data_env_12_t), 2.7499 + 0, 2.7500 + 1 2.7501 + }, 2.7502 + {{ 2.7503 + nanos_smp_factory, 2.7504 + &_ol_h264_decode_ompss_12_smp_args 2.7505 + }} 2.7506 + }; 2.7507 + nanos_wd_dyn_props_t dyn_props = {0}; 2.7508 + nanos_err_t err; 2.7509 + dyn_props.priority = 0; 2.7510 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_12_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.7511 + if (err != NANOS_OK) 2.7512 + nanos_handle_error(err); 2.7513 + if (wd != (nanos_wd_t) 0) 2.7514 + { 2.7515 + ol_args->__tmp_0_0 = __tmp_0; 2.7516 + ol_args->__tmp_1_0 = __tmp_1; 2.7517 + ol_args->__tmp_2_0 = __tmp_2; 2.7518 + nanos_dependence_t _dependences[2] = { 2.7519 + { 2.7520 + (void **) &ol_args->__tmp_2_0, 2.7521 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.7522 + { 2.7523 + 1, 2.7524 + 0, 2.7525 + 1, 2.7526 + 0 2.7527 + }, 2.7528 + sizeof(SliceBufferEntry) 2.7529 + }, 2.7530 + { 2.7531 + (void **) &ol_args->__tmp_1_0, 2.7532 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.7533 + { 2.7534 + 1, 2.7535 + 1, 2.7536 + 1, 2.7537 + 0 2.7538 + }, 2.7539 + sizeof(struct OutputContext) 2.7540 + } 2.7541 + }; 2.7542 + err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.7543 + if (err != NANOS_OK) 2.7544 + nanos_handle_error(err); 2.7545 + } 2.7546 + else 2.7547 + { 2.7548 + _nx_data_env_12_t imm_args; 2.7549 + imm_args.__tmp_0_0 = __tmp_0; 2.7550 + imm_args.__tmp_1_0 = __tmp_1; 2.7551 + imm_args.__tmp_2_0 = __tmp_2; 2.7552 + nanos_dependence_t _dependences[2] = { 2.7553 + { 2.7554 + (void **) &imm_args.__tmp_2_0, 2.7555 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.7556 + { 2.7557 + 1, 2.7558 + 0, 2.7559 + 1, 2.7560 + 0 2.7561 + }, 2.7562 + sizeof(SliceBufferEntry) 2.7563 + }, 2.7564 + { 2.7565 + (void **) &imm_args.__tmp_1_0, 2.7566 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.7567 + { 2.7568 + 1, 2.7569 + 1, 2.7570 + 1, 2.7571 + 0 2.7572 + }, 2.7573 + sizeof(struct OutputContext) 2.7574 + } 2.7575 + }; 2.7576 + dyn_props.priority = 0; 2.7577 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_12_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.7578 + if (err != NANOS_OK) 2.7579 + nanos_handle_error(err); 2.7580 + } 2.7581 + } 2.7582 + ; 2.7583 + } 2.7584 + { 2.7585 + struct _dependence_holder 2.7586 + { 2.7587 + struct ParserContext *dep_0; 2.7588 + } _dep_holder = {&(*pc)}; 2.7589 + nanos_dependence_t _wait_dependences[1] = {{ 2.7590 + (void **) &_dep_holder.dep_0, 2.7591 + ((char *) ((pc)) - (char *) _dep_holder.dep_0), 2.7592 + { 2.7593 + 1, 2.7594 + 0, 2.7595 + 0, 2.7596 + 0 2.7597 + }, 2.7598 + sizeof (*pc) 2.7599 + }}; 2.7600 + nanos_wait_on(1, _wait_dependences); 2.7601 + } 2.7602 + } 2.7603 + for (int i = 0; 2.7604 + i < num_pre_ed; 2.7605 + i++) 2.7606 + { 2.7607 + k++; 2.7608 + { 2.7609 + struct H264Context *__tmp_0 = h; 2.7610 + struct MBRecContext *__tmp_1 = rc[k % 2]; 2.7611 + SliceBufferEntry *__tmp_2 = &sbe[k % bufs]; 2.7612 + int *__tmp_3 = &init; 2.7613 + { 2.7614 + /* SMP device descriptor */ 2.7615 + static nanos_smp_args_t _ol_h264_decode_ompss_13_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_13}; 2.7616 + _nx_data_env_13_t *ol_args = (_nx_data_env_13_t *) 0; 2.7617 + nanos_wd_t wd = (nanos_wd_t) 0; 2.7618 + struct nanos_const_wd_definition_local_t 2.7619 + { 2.7620 + nanos_const_wd_definition_t base; 2.7621 + nanos_device_t devices[1]; 2.7622 + }; 2.7623 + static struct nanos_const_wd_definition_local_t _const_def = { 2.7624 + { 2.7625 + { 2.7626 + 0, 2.7627 + 1, 2.7628 + 0, 2.7629 + 0, 2.7630 + 0, 2.7631 + 0, 2.7632 + 0, 2.7633 + 0 2.7634 + }, 2.7635 + __alignof__(_nx_data_env_13_t), 2.7636 + 0, 2.7637 + 1 2.7638 + }, 2.7639 + {{ 2.7640 + nanos_smp_factory, 2.7641 + &_ol_h264_decode_ompss_13_smp_args 2.7642 + }} 2.7643 + }; 2.7644 + nanos_wd_dyn_props_t dyn_props = {0}; 2.7645 + nanos_err_t err; 2.7646 + dyn_props.priority = 0; 2.7647 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_13_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.7648 + if (err != NANOS_OK) 2.7649 + nanos_handle_error(err); 2.7650 + if (wd != (nanos_wd_t) 0) 2.7651 + { 2.7652 + ol_args->__tmp_0_0 = __tmp_0; 2.7653 + ol_args->__tmp_1_0 = __tmp_1; 2.7654 + ol_args->__tmp_2_0 = __tmp_2; 2.7655 + ol_args->__tmp_3_0 = __tmp_3; 2.7656 + nanos_dependence_t _dependences[3] = { 2.7657 + { 2.7658 + (void **) &ol_args->__tmp_1_0, 2.7659 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.7660 + { 2.7661 + 1, 2.7662 + 1, 2.7663 + 1, 2.7664 + 0 2.7665 + }, 2.7666 + sizeof(struct MBRecContext) 2.7667 + }, 2.7668 + { 2.7669 + (void **) &ol_args->__tmp_2_0, 2.7670 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.7671 + { 2.7672 + 1, 2.7673 + 1, 2.7674 + 1, 2.7675 + 0 2.7676 + }, 2.7677 + sizeof(SliceBufferEntry) 2.7678 + }, 2.7679 + { 2.7680 + (void **) &ol_args->__tmp_3_0, 2.7681 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.7682 + { 2.7683 + 1, 2.7684 + 1, 2.7685 + 1, 2.7686 + 0 2.7687 + }, 2.7688 + sizeof(int) 2.7689 + } 2.7690 + }; 2.7691 + err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.7692 + if (err != NANOS_OK) 2.7693 + nanos_handle_error(err); 2.7694 + } 2.7695 + else 2.7696 + { 2.7697 + _nx_data_env_13_t imm_args; 2.7698 + imm_args.__tmp_0_0 = __tmp_0; 2.7699 + imm_args.__tmp_1_0 = __tmp_1; 2.7700 + imm_args.__tmp_2_0 = __tmp_2; 2.7701 + imm_args.__tmp_3_0 = __tmp_3; 2.7702 + nanos_dependence_t _dependences[3] = { 2.7703 + { 2.7704 + (void **) &imm_args.__tmp_1_0, 2.7705 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.7706 + { 2.7707 + 1, 2.7708 + 1, 2.7709 + 1, 2.7710 + 0 2.7711 + }, 2.7712 + sizeof(struct MBRecContext) 2.7713 + }, 2.7714 + { 2.7715 + (void **) &imm_args.__tmp_2_0, 2.7716 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.7717 + { 2.7718 + 1, 2.7719 + 1, 2.7720 + 1, 2.7721 + 0 2.7722 + }, 2.7723 + sizeof(SliceBufferEntry) 2.7724 + }, 2.7725 + { 2.7726 + (void **) &imm_args.__tmp_3_0, 2.7727 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.7728 + { 2.7729 + 1, 2.7730 + 1, 2.7731 + 1, 2.7732 + 0 2.7733 + }, 2.7734 + sizeof(int) 2.7735 + } 2.7736 + }; 2.7737 + dyn_props.priority = 0; 2.7738 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_13_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.7739 + if (err != NANOS_OK) 2.7740 + nanos_handle_error(err); 2.7741 + } 2.7742 + } 2.7743 + ; 2.7744 + } 2.7745 + smbc = acquire_smbc(h); 2.7746 + SuperMBTask *lastsmb = add_decode_slice_3dwave_tasks(rc[k % 2], &sbe[k % bufs], smbc); 2.7747 + { 2.7748 + struct H264Context *__tmp_0 = h; 2.7749 + struct SuperMBContext *__tmp_1 = smbc; 2.7750 + struct MBRecContext *__tmp_2 = rc[k % 2]; 2.7751 + SliceBufferEntry *__tmp_3 = &sbe[k % bufs]; 2.7752 + struct SuperMBTask *__tmp_4 = lastsmb; 2.7753 + int *__tmp_5 = &release; 2.7754 + { 2.7755 + /* SMP device descriptor */ 2.7756 + static nanos_smp_args_t _ol_h264_decode_ompss_14_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_14}; 2.7757 + _nx_data_env_14_t *ol_args = (_nx_data_env_14_t *) 0; 2.7758 + nanos_wd_t wd = (nanos_wd_t) 0; 2.7759 + struct nanos_const_wd_definition_local_t 2.7760 + { 2.7761 + nanos_const_wd_definition_t base; 2.7762 + nanos_device_t devices[1]; 2.7763 + }; 2.7764 + static struct nanos_const_wd_definition_local_t _const_def = { 2.7765 + { 2.7766 + { 2.7767 + 0, 2.7768 + 1, 2.7769 + 0, 2.7770 + 0, 2.7771 + 0, 2.7772 + 0, 2.7773 + 0, 2.7774 + 0 2.7775 + }, 2.7776 + __alignof__(_nx_data_env_14_t), 2.7777 + 0, 2.7778 + 1 2.7779 + }, 2.7780 + {{ 2.7781 + nanos_smp_factory, 2.7782 + &_ol_h264_decode_ompss_14_smp_args 2.7783 + }} 2.7784 + }; 2.7785 + nanos_wd_dyn_props_t dyn_props = {0}; 2.7786 + nanos_err_t err; 2.7787 + dyn_props.priority = 0; 2.7788 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_14_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.7789 + if (err != NANOS_OK) 2.7790 + nanos_handle_error(err); 2.7791 + if (wd != (nanos_wd_t) 0) 2.7792 + { 2.7793 + ol_args->__tmp_0_0 = __tmp_0; 2.7794 + ol_args->__tmp_1_0 = __tmp_1; 2.7795 + ol_args->__tmp_2_0 = __tmp_2; 2.7796 + ol_args->__tmp_3_0 = __tmp_3; 2.7797 + ol_args->__tmp_4_0 = __tmp_4; 2.7798 + ol_args->__tmp_5_0 = __tmp_5; 2.7799 + nanos_dependence_t _dependences[4] = { 2.7800 + { 2.7801 + (void **) &ol_args->__tmp_4_0, 2.7802 + ((char *) ((__tmp_4)) - (char *) ol_args->__tmp_4_0), 2.7803 + { 2.7804 + 1, 2.7805 + 0, 2.7806 + 1, 2.7807 + 0 2.7808 + }, 2.7809 + sizeof(struct SuperMBTask) 2.7810 + }, 2.7811 + { 2.7812 + (void **) &ol_args->__tmp_2_0, 2.7813 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.7814 + { 2.7815 + 1, 2.7816 + 1, 2.7817 + 1, 2.7818 + 0 2.7819 + }, 2.7820 + sizeof(struct MBRecContext) 2.7821 + }, 2.7822 + { 2.7823 + (void **) &ol_args->__tmp_3_0, 2.7824 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.7825 + { 2.7826 + 1, 2.7827 + 1, 2.7828 + 1, 2.7829 + 0 2.7830 + }, 2.7831 + sizeof(SliceBufferEntry) 2.7832 + }, 2.7833 + { 2.7834 + (void **) &ol_args->__tmp_5_0, 2.7835 + ((char *) ((__tmp_5)) - (char *) ol_args->__tmp_5_0), 2.7836 + { 2.7837 + 1, 2.7838 + 1, 2.7839 + 1, 2.7840 + 0 2.7841 + }, 2.7842 + sizeof(int) 2.7843 + } 2.7844 + }; 2.7845 + err = nanos_submit(wd, 4, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.7846 + if (err != NANOS_OK) 2.7847 + nanos_handle_error(err); 2.7848 + } 2.7849 + else 2.7850 + { 2.7851 + _nx_data_env_14_t imm_args; 2.7852 + imm_args.__tmp_0_0 = __tmp_0; 2.7853 + imm_args.__tmp_1_0 = __tmp_1; 2.7854 + imm_args.__tmp_2_0 = __tmp_2; 2.7855 + imm_args.__tmp_3_0 = __tmp_3; 2.7856 + imm_args.__tmp_4_0 = __tmp_4; 2.7857 + imm_args.__tmp_5_0 = __tmp_5; 2.7858 + nanos_dependence_t _dependences[4] = { 2.7859 + { 2.7860 + (void **) &imm_args.__tmp_4_0, 2.7861 + ((char *) ((__tmp_4)) - (char *) imm_args.__tmp_4_0), 2.7862 + { 2.7863 + 1, 2.7864 + 0, 2.7865 + 1, 2.7866 + 0 2.7867 + }, 2.7868 + sizeof(struct SuperMBTask) 2.7869 + }, 2.7870 + { 2.7871 + (void **) &imm_args.__tmp_2_0, 2.7872 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.7873 + { 2.7874 + 1, 2.7875 + 1, 2.7876 + 1, 2.7877 + 0 2.7878 + }, 2.7879 + sizeof(struct MBRecContext) 2.7880 + }, 2.7881 + { 2.7882 + (void **) &imm_args.__tmp_3_0, 2.7883 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.7884 + { 2.7885 + 1, 2.7886 + 1, 2.7887 + 1, 2.7888 + 0 2.7889 + }, 2.7890 + sizeof(SliceBufferEntry) 2.7891 + }, 2.7892 + { 2.7893 + (void **) &imm_args.__tmp_5_0, 2.7894 + ((char *) ((__tmp_5)) - (char *) imm_args.__tmp_5_0), 2.7895 + { 2.7896 + 1, 2.7897 + 1, 2.7898 + 1, 2.7899 + 0 2.7900 + }, 2.7901 + sizeof(int) 2.7902 + } 2.7903 + }; 2.7904 + dyn_props.priority = 0; 2.7905 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_14_t), &imm_args, 4, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.7906 + if (err != NANOS_OK) 2.7907 + nanos_handle_error(err); 2.7908 + } 2.7909 + } 2.7910 + ; 2.7911 + } 2.7912 + { 2.7913 + struct H264Context *__tmp_0 = h; 2.7914 + struct OutputContext *__tmp_1 = oc; 2.7915 + SliceBufferEntry *__tmp_2 = &sbe[k % bufs]; 2.7916 + { 2.7917 + /* SMP device descriptor */ 2.7918 + static nanos_smp_args_t _ol_h264_decode_ompss_15_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_15}; 2.7919 + _nx_data_env_15_t *ol_args = (_nx_data_env_15_t *) 0; 2.7920 + nanos_wd_t wd = (nanos_wd_t) 0; 2.7921 + struct nanos_const_wd_definition_local_t 2.7922 + { 2.7923 + nanos_const_wd_definition_t base; 2.7924 + nanos_device_t devices[1]; 2.7925 + }; 2.7926 + static struct nanos_const_wd_definition_local_t _const_def = { 2.7927 + { 2.7928 + { 2.7929 + 0, 2.7930 + 1, 2.7931 + 0, 2.7932 + 0, 2.7933 + 0, 2.7934 + 0, 2.7935 + 0, 2.7936 + 0 2.7937 + }, 2.7938 + __alignof__(_nx_data_env_15_t), 2.7939 + 0, 2.7940 + 1 2.7941 + }, 2.7942 + {{ 2.7943 + nanos_smp_factory, 2.7944 + &_ol_h264_decode_ompss_15_smp_args 2.7945 + }} 2.7946 + }; 2.7947 + nanos_wd_dyn_props_t dyn_props = {0}; 2.7948 + nanos_err_t err; 2.7949 + dyn_props.priority = 0; 2.7950 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_15_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.7951 + if (err != NANOS_OK) 2.7952 + nanos_handle_error(err); 2.7953 + if (wd != (nanos_wd_t) 0) 2.7954 + { 2.7955 + ol_args->__tmp_0_0 = __tmp_0; 2.7956 + ol_args->__tmp_1_0 = __tmp_1; 2.7957 + ol_args->__tmp_2_0 = __tmp_2; 2.7958 + nanos_dependence_t _dependences[2] = { 2.7959 + { 2.7960 + (void **) &ol_args->__tmp_2_0, 2.7961 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.7962 + { 2.7963 + 1, 2.7964 + 0, 2.7965 + 1, 2.7966 + 0 2.7967 + }, 2.7968 + sizeof(SliceBufferEntry) 2.7969 + }, 2.7970 + { 2.7971 + (void **) &ol_args->__tmp_1_0, 2.7972 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.7973 + { 2.7974 + 1, 2.7975 + 1, 2.7976 + 1, 2.7977 + 0 2.7978 + }, 2.7979 + sizeof(struct OutputContext) 2.7980 + } 2.7981 + }; 2.7982 + err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.7983 + if (err != NANOS_OK) 2.7984 + nanos_handle_error(err); 2.7985 + } 2.7986 + else 2.7987 + { 2.7988 + _nx_data_env_15_t imm_args; 2.7989 + imm_args.__tmp_0_0 = __tmp_0; 2.7990 + imm_args.__tmp_1_0 = __tmp_1; 2.7991 + imm_args.__tmp_2_0 = __tmp_2; 2.7992 + nanos_dependence_t _dependences[2] = { 2.7993 + { 2.7994 + (void **) &imm_args.__tmp_2_0, 2.7995 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.7996 + { 2.7997 + 1, 2.7998 + 0, 2.7999 + 1, 2.8000 + 0 2.8001 + }, 2.8002 + sizeof(SliceBufferEntry) 2.8003 + }, 2.8004 + { 2.8005 + (void **) &imm_args.__tmp_1_0, 2.8006 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.8007 + { 2.8008 + 1, 2.8009 + 1, 2.8010 + 1, 2.8011 + 0 2.8012 + }, 2.8013 + sizeof(struct OutputContext) 2.8014 + } 2.8015 + }; 2.8016 + dyn_props.priority = 0; 2.8017 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_15_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.8018 + if (err != NANOS_OK) 2.8019 + nanos_handle_error(err); 2.8020 + } 2.8021 + } 2.8022 + ; 2.8023 + } 2.8024 + } 2.8025 + } 2.8026 + else 2.8027 + { 2.8028 + while (!pc->final_frame && frames++ < h->num_frames && !h->quit) 2.8029 + { 2.8030 + { 2.8031 + struct H264Context *__tmp_0 = h; 2.8032 + struct ParserContext *__tmp_1 = pc; 2.8033 + struct NalContext *__tmp_2 = nc; 2.8034 + SliceBufferEntry *__tmp_3 = &sbe[k % bufs]; 2.8035 + { 2.8036 + /* SMP device descriptor */ 2.8037 + static nanos_smp_args_t _ol_h264_decode_ompss_16_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_16}; 2.8038 + _nx_data_env_16_t *ol_args = (_nx_data_env_16_t *) 0; 2.8039 + nanos_wd_t wd = (nanos_wd_t) 0; 2.8040 + struct nanos_const_wd_definition_local_t 2.8041 + { 2.8042 + nanos_const_wd_definition_t base; 2.8043 + nanos_device_t devices[1]; 2.8044 + }; 2.8045 + static struct nanos_const_wd_definition_local_t _const_def = { 2.8046 + { 2.8047 + { 2.8048 + 0, 2.8049 + 1, 2.8050 + 0, 2.8051 + 0, 2.8052 + 0, 2.8053 + 0, 2.8054 + 0, 2.8055 + 0 2.8056 + }, 2.8057 + __alignof__(_nx_data_env_16_t), 2.8058 + 0, 2.8059 + 1 2.8060 + }, 2.8061 + {{ 2.8062 + nanos_smp_factory, 2.8063 + &_ol_h264_decode_ompss_16_smp_args 2.8064 + }} 2.8065 + }; 2.8066 + nanos_wd_dyn_props_t dyn_props = {0}; 2.8067 + nanos_err_t err; 2.8068 + dyn_props.priority = 0; 2.8069 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_16_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.8070 + if (err != NANOS_OK) 2.8071 + nanos_handle_error(err); 2.8072 + if (wd != (nanos_wd_t) 0) 2.8073 + { 2.8074 + ol_args->__tmp_0_0 = __tmp_0; 2.8075 + ol_args->__tmp_1_0 = __tmp_1; 2.8076 + ol_args->__tmp_2_0 = __tmp_2; 2.8077 + ol_args->__tmp_3_0 = __tmp_3; 2.8078 + nanos_dependence_t _dependences[3] = { 2.8079 + { 2.8080 + (void **) &ol_args->__tmp_3_0, 2.8081 + ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0), 2.8082 + { 2.8083 + 0, 2.8084 + 1, 2.8085 + 1, 2.8086 + 0 2.8087 + }, 2.8088 + sizeof(SliceBufferEntry) 2.8089 + }, 2.8090 + { 2.8091 + (void **) &ol_args->__tmp_1_0, 2.8092 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.8093 + { 2.8094 + 1, 2.8095 + 1, 2.8096 + 1, 2.8097 + 0 2.8098 + }, 2.8099 + sizeof(struct ParserContext) 2.8100 + }, 2.8101 + { 2.8102 + (void **) &ol_args->__tmp_2_0, 2.8103 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.8104 + { 2.8105 + 1, 2.8106 + 1, 2.8107 + 1, 2.8108 + 0 2.8109 + }, 2.8110 + sizeof(struct NalContext) 2.8111 + } 2.8112 + }; 2.8113 + err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.8114 + if (err != NANOS_OK) 2.8115 + nanos_handle_error(err); 2.8116 + } 2.8117 + else 2.8118 + { 2.8119 + _nx_data_env_16_t imm_args; 2.8120 + imm_args.__tmp_0_0 = __tmp_0; 2.8121 + imm_args.__tmp_1_0 = __tmp_1; 2.8122 + imm_args.__tmp_2_0 = __tmp_2; 2.8123 + imm_args.__tmp_3_0 = __tmp_3; 2.8124 + nanos_dependence_t _dependences[3] = { 2.8125 + { 2.8126 + (void **) &imm_args.__tmp_3_0, 2.8127 + ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0), 2.8128 + { 2.8129 + 0, 2.8130 + 1, 2.8131 + 1, 2.8132 + 0 2.8133 + }, 2.8134 + sizeof(SliceBufferEntry) 2.8135 + }, 2.8136 + { 2.8137 + (void **) &imm_args.__tmp_1_0, 2.8138 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.8139 + { 2.8140 + 1, 2.8141 + 1, 2.8142 + 1, 2.8143 + 0 2.8144 + }, 2.8145 + sizeof(struct ParserContext) 2.8146 + }, 2.8147 + { 2.8148 + (void **) &imm_args.__tmp_2_0, 2.8149 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.8150 + { 2.8151 + 1, 2.8152 + 1, 2.8153 + 1, 2.8154 + 0 2.8155 + }, 2.8156 + sizeof(struct NalContext) 2.8157 + } 2.8158 + }; 2.8159 + dyn_props.priority = 0; 2.8160 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_16_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.8161 + if (err != NANOS_OK) 2.8162 + nanos_handle_error(err); 2.8163 + } 2.8164 + } 2.8165 + ; 2.8166 + } 2.8167 + { 2.8168 + struct H264Context *__tmp_0 = h; 2.8169 + struct EntropyContext *__tmp_1 = ec[k % bufs]; 2.8170 + SliceBufferEntry *__tmp_2 = &sbe[k % bufs]; 2.8171 + { 2.8172 + /* SMP device descriptor */ 2.8173 + static nanos_smp_args_t _ol_h264_decode_ompss_17_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_17}; 2.8174 + _nx_data_env_17_t *ol_args = (_nx_data_env_17_t *) 0; 2.8175 + nanos_wd_t wd = (nanos_wd_t) 0; 2.8176 + struct nanos_const_wd_definition_local_t 2.8177 + { 2.8178 + nanos_const_wd_definition_t base; 2.8179 + nanos_device_t devices[1]; 2.8180 + }; 2.8181 + static struct nanos_const_wd_definition_local_t _const_def = { 2.8182 + { 2.8183 + { 2.8184 + 0, 2.8185 + 1, 2.8186 + 0, 2.8187 + 0, 2.8188 + 0, 2.8189 + 0, 2.8190 + 0, 2.8191 + 0 2.8192 + }, 2.8193 + __alignof__(_nx_data_env_17_t), 2.8194 + 0, 2.8195 + 1 2.8196 + }, 2.8197 + {{ 2.8198 + nanos_smp_factory, 2.8199 + &_ol_h264_decode_ompss_17_smp_args 2.8200 + }} 2.8201 + }; 2.8202 + nanos_wd_dyn_props_t dyn_props = {0}; 2.8203 + nanos_err_t err; 2.8204 + dyn_props.priority = 0; 2.8205 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_17_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.8206 + if (err != NANOS_OK) 2.8207 + nanos_handle_error(err); 2.8208 + if (wd != (nanos_wd_t) 0) 2.8209 + { 2.8210 + ol_args->__tmp_0_0 = __tmp_0; 2.8211 + ol_args->__tmp_1_0 = __tmp_1; 2.8212 + ol_args->__tmp_2_0 = __tmp_2; 2.8213 + nanos_dependence_t _dependences[2] = { 2.8214 + { 2.8215 + (void **) &ol_args->__tmp_1_0, 2.8216 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.8217 + { 2.8218 + 1, 2.8219 + 1, 2.8220 + 1, 2.8221 + 0 2.8222 + }, 2.8223 + sizeof(struct EntropyContext) 2.8224 + }, 2.8225 + { 2.8226 + (void **) &ol_args->__tmp_2_0, 2.8227 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.8228 + { 2.8229 + 1, 2.8230 + 1, 2.8231 + 1, 2.8232 + 0 2.8233 + }, 2.8234 + sizeof(SliceBufferEntry) 2.8235 + } 2.8236 + }; 2.8237 + err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.8238 + if (err != NANOS_OK) 2.8239 + nanos_handle_error(err); 2.8240 + } 2.8241 + else 2.8242 + { 2.8243 + _nx_data_env_17_t imm_args; 2.8244 + imm_args.__tmp_0_0 = __tmp_0; 2.8245 + imm_args.__tmp_1_0 = __tmp_1; 2.8246 + imm_args.__tmp_2_0 = __tmp_2; 2.8247 + nanos_dependence_t _dependences[2] = { 2.8248 + { 2.8249 + (void **) &imm_args.__tmp_1_0, 2.8250 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.8251 + { 2.8252 + 1, 2.8253 + 1, 2.8254 + 1, 2.8255 + 0 2.8256 + }, 2.8257 + sizeof(struct EntropyContext) 2.8258 + }, 2.8259 + { 2.8260 + (void **) &imm_args.__tmp_2_0, 2.8261 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.8262 + { 2.8263 + 1, 2.8264 + 1, 2.8265 + 1, 2.8266 + 0 2.8267 + }, 2.8268 + sizeof(SliceBufferEntry) 2.8269 + } 2.8270 + }; 2.8271 + dyn_props.priority = 0; 2.8272 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_17_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.8273 + if (err != NANOS_OK) 2.8274 + nanos_handle_error(err); 2.8275 + } 2.8276 + } 2.8277 + ; 2.8278 + } 2.8279 + { 2.8280 + struct H264Context *__tmp_0 = h; 2.8281 + struct MBRecContext *__tmp_1 = rc[0]; 2.8282 + SliceBufferEntry *__tmp_2 = &sbe[k % bufs]; 2.8283 + { 2.8284 + /* SMP device descriptor */ 2.8285 + static nanos_smp_args_t _ol_h264_decode_ompss_18_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_18}; 2.8286 + _nx_data_env_18_t *ol_args = (_nx_data_env_18_t *) 0; 2.8287 + nanos_wd_t wd = (nanos_wd_t) 0; 2.8288 + struct nanos_const_wd_definition_local_t 2.8289 + { 2.8290 + nanos_const_wd_definition_t base; 2.8291 + nanos_device_t devices[1]; 2.8292 + }; 2.8293 + static struct nanos_const_wd_definition_local_t _const_def = { 2.8294 + { 2.8295 + { 2.8296 + 0, 2.8297 + 1, 2.8298 + 0, 2.8299 + 0, 2.8300 + 0, 2.8301 + 0, 2.8302 + 0, 2.8303 + 0 2.8304 + }, 2.8305 + __alignof__(_nx_data_env_18_t), 2.8306 + 0, 2.8307 + 1 2.8308 + }, 2.8309 + {{ 2.8310 + nanos_smp_factory, 2.8311 + &_ol_h264_decode_ompss_18_smp_args 2.8312 + }} 2.8313 + }; 2.8314 + nanos_wd_dyn_props_t dyn_props = {0}; 2.8315 + nanos_err_t err; 2.8316 + dyn_props.priority = 0; 2.8317 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_18_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.8318 + if (err != NANOS_OK) 2.8319 + nanos_handle_error(err); 2.8320 + if (wd != (nanos_wd_t) 0) 2.8321 + { 2.8322 + ol_args->__tmp_0_0 = __tmp_0; 2.8323 + ol_args->__tmp_1_0 = __tmp_1; 2.8324 + ol_args->__tmp_2_0 = __tmp_2; 2.8325 + nanos_dependence_t _dependences[2] = { 2.8326 + { 2.8327 + (void **) &ol_args->__tmp_1_0, 2.8328 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.8329 + { 2.8330 + 1, 2.8331 + 1, 2.8332 + 1, 2.8333 + 0 2.8334 + }, 2.8335 + sizeof(struct MBRecContext) 2.8336 + }, 2.8337 + { 2.8338 + (void **) &ol_args->__tmp_2_0, 2.8339 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.8340 + { 2.8341 + 1, 2.8342 + 1, 2.8343 + 1, 2.8344 + 0 2.8345 + }, 2.8346 + sizeof(SliceBufferEntry) 2.8347 + } 2.8348 + }; 2.8349 + err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.8350 + if (err != NANOS_OK) 2.8351 + nanos_handle_error(err); 2.8352 + } 2.8353 + else 2.8354 + { 2.8355 + _nx_data_env_18_t imm_args; 2.8356 + imm_args.__tmp_0_0 = __tmp_0; 2.8357 + imm_args.__tmp_1_0 = __tmp_1; 2.8358 + imm_args.__tmp_2_0 = __tmp_2; 2.8359 + nanos_dependence_t _dependences[2] = { 2.8360 + { 2.8361 + (void **) &imm_args.__tmp_1_0, 2.8362 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.8363 + { 2.8364 + 1, 2.8365 + 1, 2.8366 + 1, 2.8367 + 0 2.8368 + }, 2.8369 + sizeof(struct MBRecContext) 2.8370 + }, 2.8371 + { 2.8372 + (void **) &imm_args.__tmp_2_0, 2.8373 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.8374 + { 2.8375 + 1, 2.8376 + 1, 2.8377 + 1, 2.8378 + 0 2.8379 + }, 2.8380 + sizeof(SliceBufferEntry) 2.8381 + } 2.8382 + }; 2.8383 + dyn_props.priority = 0; 2.8384 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_18_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.8385 + if (err != NANOS_OK) 2.8386 + nanos_handle_error(err); 2.8387 + } 2.8388 + } 2.8389 + ; 2.8390 + } 2.8391 + { 2.8392 + struct H264Context *__tmp_0 = h; 2.8393 + struct OutputContext *__tmp_1 = oc; 2.8394 + SliceBufferEntry *__tmp_2 = &sbe[k % bufs]; 2.8395 + { 2.8396 + /* SMP device descriptor */ 2.8397 + static nanos_smp_args_t _ol_h264_decode_ompss_19_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_19}; 2.8398 + _nx_data_env_19_t *ol_args = (_nx_data_env_19_t *) 0; 2.8399 + nanos_wd_t wd = (nanos_wd_t) 0; 2.8400 + struct nanos_const_wd_definition_local_t 2.8401 + { 2.8402 + nanos_const_wd_definition_t base; 2.8403 + nanos_device_t devices[1]; 2.8404 + }; 2.8405 + static struct nanos_const_wd_definition_local_t _const_def = { 2.8406 + { 2.8407 + { 2.8408 + 0, 2.8409 + 1, 2.8410 + 0, 2.8411 + 0, 2.8412 + 0, 2.8413 + 0, 2.8414 + 0, 2.8415 + 0 2.8416 + }, 2.8417 + __alignof__(_nx_data_env_19_t), 2.8418 + 0, 2.8419 + 1 2.8420 + }, 2.8421 + {{ 2.8422 + nanos_smp_factory, 2.8423 + &_ol_h264_decode_ompss_19_smp_args 2.8424 + }} 2.8425 + }; 2.8426 + nanos_wd_dyn_props_t dyn_props = {0}; 2.8427 + nanos_err_t err; 2.8428 + dyn_props.priority = 0; 2.8429 + err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_19_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0); 2.8430 + if (err != NANOS_OK) 2.8431 + nanos_handle_error(err); 2.8432 + if (wd != (nanos_wd_t) 0) 2.8433 + { 2.8434 + ol_args->__tmp_0_0 = __tmp_0; 2.8435 + ol_args->__tmp_1_0 = __tmp_1; 2.8436 + ol_args->__tmp_2_0 = __tmp_2; 2.8437 + nanos_dependence_t _dependences[2] = { 2.8438 + { 2.8439 + (void **) &ol_args->__tmp_2_0, 2.8440 + ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0), 2.8441 + { 2.8442 + 1, 2.8443 + 0, 2.8444 + 1, 2.8445 + 0 2.8446 + }, 2.8447 + sizeof(SliceBufferEntry) 2.8448 + }, 2.8449 + { 2.8450 + (void **) &ol_args->__tmp_1_0, 2.8451 + ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0), 2.8452 + { 2.8453 + 1, 2.8454 + 1, 2.8455 + 1, 2.8456 + 0 2.8457 + }, 2.8458 + sizeof(struct OutputContext) 2.8459 + } 2.8460 + }; 2.8461 + err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0); 2.8462 + if (err != NANOS_OK) 2.8463 + nanos_handle_error(err); 2.8464 + } 2.8465 + else 2.8466 + { 2.8467 + _nx_data_env_19_t imm_args; 2.8468 + imm_args.__tmp_0_0 = __tmp_0; 2.8469 + imm_args.__tmp_1_0 = __tmp_1; 2.8470 + imm_args.__tmp_2_0 = __tmp_2; 2.8471 + nanos_dependence_t _dependences[2] = { 2.8472 + { 2.8473 + (void **) &imm_args.__tmp_2_0, 2.8474 + ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0), 2.8475 + { 2.8476 + 1, 2.8477 + 0, 2.8478 + 1, 2.8479 + 0 2.8480 + }, 2.8481 + sizeof(SliceBufferEntry) 2.8482 + }, 2.8483 + { 2.8484 + (void **) &imm_args.__tmp_1_0, 2.8485 + ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0), 2.8486 + { 2.8487 + 1, 2.8488 + 1, 2.8489 + 1, 2.8490 + 0 2.8491 + }, 2.8492 + sizeof(struct OutputContext) 2.8493 + } 2.8494 + }; 2.8495 + dyn_props.priority = 0; 2.8496 + err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_19_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0); 2.8497 + if (err != NANOS_OK) 2.8498 + nanos_handle_error(err); 2.8499 + } 2.8500 + } 2.8501 + ; 2.8502 + } 2.8503 + { 2.8504 + struct _dependence_holder 2.8505 + { 2.8506 + struct ParserContext *dep_0; 2.8507 + } _dep_holder = {&(*pc)}; 2.8508 + nanos_dependence_t _wait_dependences[1] = {{ 2.8509 + (void **) &_dep_holder.dep_0, 2.8510 + ((char *) ((pc)) - (char *) _dep_holder.dep_0), 2.8511 + { 2.8512 + 1, 2.8513 + 0, 2.8514 + 0, 2.8515 + 0 2.8516 + }, 2.8517 + sizeof (*pc) 2.8518 + }}; 2.8519 + nanos_wait_on(1, _wait_dependences); 2.8520 + } 2.8521 + k++; 2.8522 + } 2.8523 + } 2.8524 + nanos_wg_wait_completion(nanos_current_wd(), 0); 2.8525 + while ((out = output_frame(h, oc, ((void *) 0), h->ofile, h->frame_width, h->frame_height))) 2.8526 + ; 2.8527 + h->num_frames = oc->frame_number; 2.8528 + free_parse_context(pc); 2.8529 + free_nal_context(nc); 2.8530 + free_output_context(oc); 2.8531 + for (int i = 0; 2.8532 + i < bufs; 2.8533 + i++) 2.8534 + { 2.8535 + free_sb_entry(&sbe[i]); 2.8536 + free_entropy_context(ec[i]); 2.8537 + } 2.8538 + av_free(sbe); 2.8539 + for (int i = 0; 2.8540 + i < 2; 2.8541 + i++) 2.8542 + { 2.8543 + free_mbrec_context(rc[i]); 2.8544 + } 2.8545 + return 0; 2.8546 +} 2.8547 +__attribute__((weak, section("nanos_init"))) nanos_init_desc_t __section__nanos_init = { 2.8548 + nanos_omp_set_interface, 2.8549 + (void *) 0 2.8550 +};
