comparison libavcodec/h264_ompss.c @ 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
comparison
equal deleted inserted replaced
6:d4d9503bce2b 7:3e3b3d3252c4
34 NalContext *nc; 34 NalContext *nc;
35 SliceBufferEntry *sbe; 35 SliceBufferEntry *sbe;
36 H264Context *h; 36 H264Context *h;
37 } parse_taskArgs; 37 } parse_taskArgs;
38 38
39 int32 parse_taskArgTypes[4] = {INOUT, INOUT, OUTPUT, NONCTLD}; 39 int32 parse_taskArgTypes[3] = {INOUT, INOUT, OUTPUT};
40 int32 parse_taskArgSizes[4] = {sizeof(ParserContext), sizeof(NalContext), sizeof(SliceBufferEntry), sizeof(H264Context)}; 40 size_t parse_taskArgSizes[3] = {sizeof(ParserContext), sizeof(NalContext), sizeof(SliceBufferEntry)};
41 41
42 //#pragma omp task inout(*pc, *nc) output(*sbe) 42 //#pragma omp task inout(*pc, *nc) output(*sbe)
43 static void parse_task(void *_data){ 43 static void parse_task(void *_data){
44 parse_taskArgs* args = (parse_taskArgs*) _data; 44 parse_taskArgs* args = (parse_taskArgs*) _data;
45 ParserContext *pc = args->pc; 45 ParserContext *pc = args->pc;
61 return; 61 return;
62 } 62 }
63 63
64 VSsTaskType parse_taskType = { 64 VSsTaskType parse_taskType = {
65 .fn = &parse_task, 65 .fn = &parse_task,
66 .numCtldArgs = 3, 66 .numDeps = 3,
67 .numTotalArgs = 4,
68 .sizeOfArgs = sizeof(parse_taskArgs), 67 .sizeOfArgs = sizeof(parse_taskArgs),
69 .argTypes = parse_taskArgTypes, 68 .depsTypes = parse_taskArgTypes,
70 .argSizes = parse_taskArgSizes}; 69 .depsSizes = parse_taskArgSizes};
71 70
72 71
73 typedef struct{ 72 typedef struct{
74 EntropyContext *ec; 73 EntropyContext *ec;
75 SliceBufferEntry *sbe; 74 SliceBufferEntry *sbe;
76 H264Context *h; 75 H264Context *h;
77 } decode_slice_entropy_taskArgs; 76 } decode_slice_entropy_taskArgs;
78 77
79 int32 decode_slice_entropy_taskArgTypes[3] = {INOUT, INOUT, NONCTLD}; 78 int32 decode_slice_entropy_taskArgTypes[2] = {INOUT, INOUT};
80 int32 decode_slice_entropy_taskArgSizes[3] = {sizeof(EntropyContext), sizeof(SliceBufferEntry), sizeof(H264Context)}; 79 size_t decode_slice_entropy_taskArgSizes[2] = {sizeof(EntropyContext), sizeof(SliceBufferEntry)};
81 80
82 //#pragma omp task inout(*ec) inout(*sbe) 81 //#pragma omp task inout(*ec) inout(*sbe)
83 static void decode_slice_entropy_task(void *_data){ 82 static void decode_slice_entropy_task(void *_data){
84 decode_slice_entropy_taskArgs* args = (decode_slice_entropy_taskArgs*) _data; 83 decode_slice_entropy_taskArgs* args = (decode_slice_entropy_taskArgs*) _data;
85 EntropyContext *ec = args->ec; 84 EntropyContext *ec = args->ec;
131 return; 130 return;
132 } 131 }
133 132
134 VSsTaskType decode_slice_entropy_taskType = { 133 VSsTaskType decode_slice_entropy_taskType = {
135 .fn = &decode_slice_entropy_task, 134 .fn = &decode_slice_entropy_task,
136 .numCtldArgs = 2, 135 .numDeps = 2,
137 .numTotalArgs = 3,
138 .sizeOfArgs = sizeof(decode_slice_entropy_taskArgs), 136 .sizeOfArgs = sizeof(decode_slice_entropy_taskArgs),
139 .argTypes = decode_slice_entropy_taskArgTypes, 137 .depsTypes = decode_slice_entropy_taskArgTypes,
140 .argSizes = decode_slice_entropy_taskArgSizes}; 138 .depsSizes = decode_slice_entropy_taskArgSizes};
141 139
142 140
143 static void decode_super_mb_block(MBRecContext *d, H264Slice *s, SuperMBContext *smbc, H264Mb *mbs, int smb_x, int smb_y){ 141 static void decode_super_mb_block(MBRecContext *d, H264Slice *s, SuperMBContext *smbc, H264Mb *mbs, int smb_x, int smb_y){
144 MBRecState mrs; 142 MBRecState mrs;
145 // memset(&mrs, 0, sizeof(MBRecState)); 143 // memset(&mrs, 0, sizeof(MBRecState));
161 SuperMBTask *mur; 159 SuperMBTask *mur;
162 SuperMBTask *m; 160 SuperMBTask *m;
163 SuperMBContext *smbc; 161 SuperMBContext *smbc;
164 } decode_super_mb_taskArgs; 162 } decode_super_mb_taskArgs;
165 163
166 int32 decode_super_mb_taskArgTypes[6] = {IN, IN, IN, IN, INOUT, NONCTLD}; 164 int32 decode_super_mb_taskArgTypes[5] = {IN, IN, IN, IN, INOUT};
167 int32 decode_super_mb_taskArgSizes[6] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBContext)}; 165 size_t decode_super_mb_taskArgSizes[5] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask)};
168 166
169 //#pragma omp task input(*d, *sbe, *ml, *mur) inout(*m) 167 //#pragma omp task input(*d, *sbe, *ml, *mur) inout(*m)
170 static void decode_super_mb_task(void *_data){ 168 static void decode_super_mb_task(void *_data){
171 decode_super_mb_taskArgs* args = (decode_super_mb_taskArgs*) _data; 169 decode_super_mb_taskArgs* args = (decode_super_mb_taskArgs*) _data;
172 MBRecContext *d = args->d; 170 MBRecContext *d = args->d;
181 return; 179 return;
182 } 180 }
183 181
184 VSsTaskType decode_super_mb_taskType = { 182 VSsTaskType decode_super_mb_taskType = {
185 .fn = &decode_super_mb_task, 183 .fn = &decode_super_mb_task,
186 .numCtldArgs = 5, 184 .numDeps = 5,
187 .numTotalArgs = 6,
188 .sizeOfArgs = sizeof(decode_super_mb_taskArgs), 185 .sizeOfArgs = sizeof(decode_super_mb_taskArgs),
189 .argTypes = decode_super_mb_taskArgTypes, 186 .depsTypes = decode_super_mb_taskArgTypes,
190 .argSizes = decode_super_mb_taskArgSizes}; 187 .depsSizes = decode_super_mb_taskArgSizes};
191 188
192 189
193 190
194 typedef struct{ 191 typedef struct{
195 MBRecContext *d; 192 MBRecContext *d;
197 SuperMBTask *sm; 194 SuperMBTask *sm;
198 SuperMBContext *smbc; 195 SuperMBContext *smbc;
199 int* line; 196 int* line;
200 } draw_edges_taskArgs; 197 } draw_edges_taskArgs;
201 198
202 int32 draw_edges_taskArgTypes[5] = {IN, IN, INOUT, NONCTLD, NONCTLD}; 199 int32 draw_edges_taskArgTypes[3] = {IN, IN, INOUT};
203 int32 draw_edges_taskArgSizes[5] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask),sizeof(SuperMBContext),sizeof(int)}; 200 size_t draw_edges_taskArgSizes[3] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask)};
204 201
205 //#pragma omp task input(*d, *sbe) inout(*sm) 202 //#pragma omp task input(*d, *sbe) inout(*sm)
206 static void draw_edges_task(void *_data){ 203 static void draw_edges_task(void *_data){
207 draw_edges_taskArgs* args = (draw_edges_taskArgs*) _data; 204 draw_edges_taskArgs* args = (draw_edges_taskArgs*) _data;
208 MBRecContext *d = args->d; 205 MBRecContext *d = args->d;
216 VMS_App__free(args->line); 213 VMS_App__free(args->line);
217 return; 214 return;
218 } 215 }
219 VSsTaskType draw_edges_taskType = { 216 VSsTaskType draw_edges_taskType = {
220 .fn = &draw_edges_task, 217 .fn = &draw_edges_task,
221 .numCtldArgs = 3, 218 .numDeps = 3,
222 .numTotalArgs = 5,
223 .sizeOfArgs = sizeof(draw_edges_taskArgs), 219 .sizeOfArgs = sizeof(draw_edges_taskArgs),
224 .argTypes = draw_edges_taskArgTypes, 220 .depsTypes = draw_edges_taskArgTypes,
225 .argSizes = draw_edges_taskArgSizes}; 221 .depsSizes = draw_edges_taskArgSizes};
226 222
227 223
228 static void decode_mb_in_slice(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe){ 224 static void decode_mb_in_slice(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe){
229 int i,j; 225 int i,j;
230 226
243 decode_super_mb_task_args.sbe = sbe; 239 decode_super_mb_task_args.sbe = sbe;
244 decode_super_mb_task_args.smbc = smbc; 240 decode_super_mb_task_args.smbc = smbc;
245 decode_super_mb_task_args.ml = sml; 241 decode_super_mb_task_args.ml = sml;
246 decode_super_mb_task_args.mur = smur; 242 decode_super_mb_task_args.mur = smur;
247 decode_super_mb_task_args.m = sm; 243 decode_super_mb_task_args.m = sm;
248 VSs__submit_task(&decode_super_mb_taskType, &decode_super_mb_task_args); 244 void** depsAddrs = malloc(decode_super_mb_taskType.numDeps * sizeof(void*));
245 /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask)*/
246 depsAddrs[0] = d;
247 depsAddrs[1] = sbe;
248 depsAddrs[2] = sml;
249 depsAddrs[3] = smur;
250 depsAddrs[4] = sm;
251 VSs__submit_task(&decode_super_mb_taskType, &decode_super_mb_task_args, depsAddrs);
249 } 252 }
250 draw_edges_taskArgs draw_edges_task_args; 253 draw_edges_taskArgs draw_edges_task_args;
251 draw_edges_task_args.d = d; 254 draw_edges_task_args.d = d;
252 draw_edges_task_args.sbe = sbe; 255 draw_edges_task_args.sbe = sbe;
253 draw_edges_task_args.sm = sm; 256 draw_edges_task_args.sm = sm;
254 draw_edges_task_args.smbc = smbc; 257 draw_edges_task_args.smbc = smbc;
255 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); 258 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) );
256 *(draw_edges_task_args.line) = j; 259 *(draw_edges_task_args.line) = j;
257 VSs__submit_task(&draw_edges_taskType, &draw_edges_task_args); 260 void** depsAddrs = malloc(sizeof (void*) * draw_edges_taskType.numDeps);
261 /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask)*/
262 depsAddrs[0] = d;
263 depsAddrs[1] = sbe;
264 depsAddrs[2] = sm;
265 VSs__submit_task(&draw_edges_taskType, &draw_edges_task_args, depsAddrs);
258 } 266 }
259 VSs__taskwait_on(sm); 267 VSs__taskwait_on(sm);
260 //#pragma omp taskwait on(*sm) 268 //#pragma omp taskwait on(*sm)
261 269
262 release_smbc(h, smbc); 270 release_smbc(h, smbc);
266 MBRecContext *d; 274 MBRecContext *d;
267 SliceBufferEntry *sbe; 275 SliceBufferEntry *sbe;
268 H264Context *h; 276 H264Context *h;
269 } decode_slice_mb_taskArgs; 277 } decode_slice_mb_taskArgs;
270 278
271 int32 decode_slice_mb_taskArgTypes[3] = {INOUT, INOUT, NONCTLD}; 279 int32 decode_slice_mb_taskArgTypes[2] = {INOUT, INOUT};
272 int32 decode_slice_mb_taskArgSizes[3] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(H264Context)}; 280 size_t decode_slice_mb_taskArgSizes[2] = {sizeof(MBRecContext), sizeof(SliceBufferEntry)};
273 281
274 //#pragma omp task inout(*d) inout(*sbe) 282 //#pragma omp task inout(*d) inout(*sbe)
275 static void decode_slice_mb_task(void *_data){ 283 static void decode_slice_mb_task(void *_data){
276 decode_slice_mb_taskArgs* args = (decode_slice_mb_taskArgs*) _data; 284 decode_slice_mb_taskArgs* args = (decode_slice_mb_taskArgs*) _data;
277 MBRecContext *d = args->d; 285 MBRecContext *d = args->d;
318 return; 326 return;
319 } 327 }
320 328
321 VSsTaskType decode_slice_mb_taskType = { 329 VSsTaskType decode_slice_mb_taskType = {
322 .fn = &decode_slice_mb_task, 330 .fn = &decode_slice_mb_task,
323 .numCtldArgs = 2, 331 .numDeps = 2,
324 .numTotalArgs = 3,
325 .sizeOfArgs = sizeof(decode_slice_mb_taskArgs), 332 .sizeOfArgs = sizeof(decode_slice_mb_taskArgs),
326 .argTypes = decode_slice_mb_taskArgTypes, 333 .depsTypes = decode_slice_mb_taskArgTypes,
327 .argSizes = decode_slice_mb_taskArgSizes}; 334 .depsSizes = decode_slice_mb_taskArgSizes};
328 335
329 // for static 3d wave 336 // for static 3d wave
330 /*-------------------------------------------------------------------------------*/ 337 /*-------------------------------------------------------------------------------*/
331 typedef struct{ 338 typedef struct{
332 MBRecContext *d; 339 MBRecContext *d;
336 SuperMBTask *mprev; 343 SuperMBTask *mprev;
337 SuperMBTask *m; 344 SuperMBTask *m;
338 SuperMBContext *smbc; 345 SuperMBContext *smbc;
339 } decode_3dwave_super_mb_taskArgs; 346 } decode_3dwave_super_mb_taskArgs;
340 347
341 int32 decode_3dwave_super_mb_taskArgTypes[7] = {IN, IN, IN, IN, IN, INOUT, NONCTLD}; 348 int32 decode_3dwave_super_mb_taskArgTypes[6] = {IN, IN, IN, IN, IN, INOUT};
342 int32 decode_3dwave_super_mb_taskArgSizes[7] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), 349 size_t decode_3dwave_super_mb_taskArgSizes[6] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask),
343 sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBContext)}; 350 sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask)};
344 351
345 //#pragma omp task input(*d, *sbe, *ml, *mur, *mprev) inout(*m) 352 //#pragma omp task input(*d, *sbe, *ml, *mur, *mprev) inout(*m)
346 static void decode_3dwave_super_mb_task(void *_data){ 353 static void decode_3dwave_super_mb_task(void *_data){
347 decode_3dwave_super_mb_taskArgs* args = (decode_3dwave_super_mb_taskArgs*) _data; 354 decode_3dwave_super_mb_taskArgs* args = (decode_3dwave_super_mb_taskArgs*) _data;
348 MBRecContext *d = args->d; 355 MBRecContext *d = args->d;
360 return; 367 return;
361 } 368 }
362 369
363 VSsTaskType decode_3dwave_super_mb_taskType = { 370 VSsTaskType decode_3dwave_super_mb_taskType = {
364 .fn = &decode_3dwave_super_mb_task, 371 .fn = &decode_3dwave_super_mb_task,
365 .numCtldArgs = 6, 372 .numDeps = 6,
366 .numTotalArgs = 7,
367 .sizeOfArgs = sizeof(decode_3dwave_super_mb_taskArgs), 373 .sizeOfArgs = sizeof(decode_3dwave_super_mb_taskArgs),
368 .argTypes = decode_3dwave_super_mb_taskArgTypes, 374 .depsTypes = decode_3dwave_super_mb_taskArgTypes,
369 .argSizes = decode_3dwave_super_mb_taskArgSizes}; 375 .depsSizes = decode_3dwave_super_mb_taskArgSizes};
370 376
371 // int init_ref_count=0; 377 // int init_ref_count=0;
372 typedef struct{ 378 typedef struct{
373 MBRecContext *d; 379 MBRecContext *d;
374 SliceBufferEntry *sbe; 380 SliceBufferEntry *sbe;
375 int* init; 381 int* init;
376 H264Context *h; 382 H264Context *h;
377 } init_ref_list_and_get_dpb_taskArgs; 383 } init_ref_list_and_get_dpb_taskArgs;
378 384
379 int32 init_ref_list_and_get_dpb_taskArgTypes[4] = {INOUT, INOUT, INOUT, NONCTLD}; 385 int32 init_ref_list_and_get_dpb_taskArgTypes[3] = {INOUT, INOUT, INOUT};
380 int32 init_ref_list_and_get_dpb_taskArgSizes[4] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(int), sizeof(H264Context)}; 386 size_t init_ref_list_and_get_dpb_taskArgSizes[3] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(int)};
381 387
382 //#pragma omp task inout(*d, *sbe, *init) 388 //#pragma omp task inout(*d, *sbe, *init)
383 static void init_ref_list_and_get_dpb_task(void *_data){ 389 static void init_ref_list_and_get_dpb_task(void *_data){
384 init_ref_list_and_get_dpb_taskArgs* args = (init_ref_list_and_get_dpb_taskArgs*) _data; 390 init_ref_list_and_get_dpb_taskArgs* args = (init_ref_list_and_get_dpb_taskArgs*) _data;
385 MBRecContext *d = args->d; 391 MBRecContext *d = args->d;
410 return; 416 return;
411 } 417 }
412 418
413 VSsTaskType init_ref_list_and_get_dpb_taskType = { 419 VSsTaskType init_ref_list_and_get_dpb_taskType = {
414 .fn = &init_ref_list_and_get_dpb_task, 420 .fn = &init_ref_list_and_get_dpb_task,
415 .numCtldArgs = 3, 421 .numDeps = 3,
416 .numTotalArgs = 4,
417 .sizeOfArgs = sizeof(init_ref_list_and_get_dpb_taskArgs), 422 .sizeOfArgs = sizeof(init_ref_list_and_get_dpb_taskArgs),
418 .argTypes = init_ref_list_and_get_dpb_taskArgTypes, 423 .depsTypes = init_ref_list_and_get_dpb_taskArgTypes,
419 .argSizes = init_ref_list_and_get_dpb_taskArgSizes}; 424 .depsSizes = init_ref_list_and_get_dpb_taskArgSizes};
420 425
421 static SuperMBTask* add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, int k){ 426 static SuperMBTask* add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, int k){
422 int i,j; 427 int i,j;
423 428
424 int32* taskID; 429 int32* taskID;
444 decode_3dwave_super_mb_task_args.ml = sml; 449 decode_3dwave_super_mb_task_args.ml = sml;
445 decode_3dwave_super_mb_task_args.mur = smur; 450 decode_3dwave_super_mb_task_args.mur = smur;
446 decode_3dwave_super_mb_task_args.mprev = smprev; 451 decode_3dwave_super_mb_task_args.mprev = smprev;
447 decode_3dwave_super_mb_task_args.m = sm; 452 decode_3dwave_super_mb_task_args.m = sm;
448 taskID = VSs__create_taskID_of_size(3 ); 453 taskID = VSs__create_taskID_of_size(3 );
454 void** depsAddrs = malloc(sizeof(void*) * decode_3dwave_super_mb_taskType.numDeps);
455 /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask),
456 sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask)*/
457 depsAddrs[0] = d;
458 depsAddrs[1] = sbe;
459 depsAddrs[2] = sml;
460 depsAddrs[3] = smur;
461 depsAddrs[4] = smprev;
449 taskID[1] = k; 462 taskID[1] = k;
450 taskID[2] = j; 463 taskID[2] = j;
451 taskID[3] = i; 464 taskID[3] = i;
452 VSs__submit_task_with_ID(&decode_3dwave_super_mb_taskType, &decode_3dwave_super_mb_task_args, taskID); 465 VSs__submit_task_with_ID(&decode_3dwave_super_mb_taskType, &decode_3dwave_super_mb_task_args, depsAddrs, taskID);
453 } 466 }
454 draw_edges_taskArgs draw_edges_task_args; 467 draw_edges_taskArgs draw_edges_task_args;
455 draw_edges_task_args.d = d; 468 draw_edges_task_args.d = d;
456 draw_edges_task_args.sbe = sbe; 469 draw_edges_task_args.sbe = sbe;
457 draw_edges_task_args.sm = sm; 470 draw_edges_task_args.sm = sm;
458 draw_edges_task_args.smbc = smbc; 471 draw_edges_task_args.smbc = smbc;
459 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); 472 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) );
460 *(draw_edges_task_args.line) = j; 473 *(draw_edges_task_args.line) = j;
474 void** depsAddrs = malloc(sizeof (void*) * draw_edges_taskType.numDeps);
475 /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask)*/
476 depsAddrs[0] = d;
477 depsAddrs[1] = sbe;
478 depsAddrs[2] = sm;
461 taskID = VSs__create_taskID_of_size(3); 479 taskID = VSs__create_taskID_of_size(3);
462 taskID[1] = k; 480 taskID[1] = k;
463 taskID[2] = j; 481 taskID[2] = j;
464 taskID[3] = i; 482 taskID[3] = i;
465 VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, taskID); 483 VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, depsAddrs, taskID);
466 } 484 }
467 485
468 for(; j< smb_height; j++){ 486 for(; j< smb_height; j++){
469 for(i=0; i< smb_width; i++){ 487 for(i=0; i< smb_width; i++){
470 sm = smbs + j*smb_width + i; 488 sm = smbs + j*smb_width + i;
475 decode_super_mb_task_args.sbe = sbe; 493 decode_super_mb_task_args.sbe = sbe;
476 decode_super_mb_task_args.smbc = smbc; 494 decode_super_mb_task_args.smbc = smbc;
477 decode_super_mb_task_args.ml = sml; 495 decode_super_mb_task_args.ml = sml;
478 decode_super_mb_task_args.mur = smur; 496 decode_super_mb_task_args.mur = smur;
479 decode_super_mb_task_args.m = sm; 497 decode_super_mb_task_args.m = sm;
498 void** depsAddrs = malloc(sizeof(void*) * decode_super_mb_taskType.numDeps);
499 /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(SuperMBTask), sizeof(SuperMBTask)*/
500 depsAddrs[0] = d;
501 depsAddrs[1] = sbe;
502 depsAddrs[2] = sml;
503 depsAddrs[3] = smur;
504 depsAddrs[4] = sm;
480 taskID = VSs__create_taskID_of_size(3 ); 505 taskID = VSs__create_taskID_of_size(3 );
481 taskID[1] = k; 506 taskID[1] = k;
482 taskID[2] = j; 507 taskID[2] = j;
483 taskID[3] = i; 508 taskID[3] = i;
484 VSs__submit_task_with_ID(&decode_super_mb_taskType, &decode_super_mb_task_args, taskID); 509 VSs__submit_task_with_ID(&decode_super_mb_taskType, &decode_super_mb_task_args, depsAddrs, taskID);
485 } 510 }
486 draw_edges_taskArgs draw_edges_task_args; 511 draw_edges_taskArgs draw_edges_task_args;
487 draw_edges_task_args.d = d; 512 draw_edges_task_args.d = d;
488 draw_edges_task_args.sbe = sbe; 513 draw_edges_task_args.sbe = sbe;
489 draw_edges_task_args.sm = sm; 514 draw_edges_task_args.sm = sm;
490 draw_edges_task_args.smbc = smbc; 515 draw_edges_task_args.smbc = smbc;
491 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); 516 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) );
492 *(draw_edges_task_args.line) = j; 517 *(draw_edges_task_args.line) = j;
518 void** depsAddrs = malloc(sizeof (void*) * draw_edges_taskType.numDeps);
519 /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask)*/
520 depsAddrs[0] = d;
521 depsAddrs[1] = sbe;
522 depsAddrs[2] = sm;
493 taskID = VSs__create_taskID_of_size(3); 523 taskID = VSs__create_taskID_of_size(3);
494 taskID[1] = k; 524 taskID[1] = k;
495 taskID[2] = j; 525 taskID[2] = j;
496 taskID[3] = i; 526 taskID[3] = i;
497 VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, taskID); 527 VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, depsAddrs, taskID);
498 } 528 }
499 return sm; 529 return sm;
500 } 530 }
501 531
502 typedef struct{ 532 typedef struct{
506 int* release; 536 int* release;
507 H264Context *h; 537 H264Context *h;
508 SuperMBContext *smbc; 538 SuperMBContext *smbc;
509 } release_ref_list_taskArgs; 539 } release_ref_list_taskArgs;
510 540
511 int32 release_ref_list_taskArgTypes[6] = {INOUT, INOUT, IN, INOUT, NONCTLD, NONCTLD}; 541 int32 release_ref_list_taskArgTypes[4] = {INOUT, INOUT, IN, INOUT};
512 int32 release_ref_list_taskArgSizes[6] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(int), sizeof(H264Context), sizeof(SuperMBContext)}; 542 size_t release_ref_list_taskArgSizes[4] = {sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(int)};
513 543
514 //#pragma omp task inout(*d, *sbe, *release) input (*lastsmb) 544 //#pragma omp task inout(*d, *sbe, *release) input (*lastsmb)
515 static void release_ref_list_task(void *_data){ 545 static void release_ref_list_task(void *_data){
516 release_ref_list_taskArgs* args = (release_ref_list_taskArgs*) _data; 546 release_ref_list_taskArgs* args = (release_ref_list_taskArgs*) _data;
517 MBRecContext *d = args->d; 547 MBRecContext *d = args->d;
540 return; 570 return;
541 } 571 }
542 572
543 VSsTaskType release_ref_list_taskType = { 573 VSsTaskType release_ref_list_taskType = {
544 .fn = &release_ref_list_task, 574 .fn = &release_ref_list_task,
545 .numCtldArgs = 4, 575 .numDeps = 4,
546 .numTotalArgs = 6,
547 .sizeOfArgs = sizeof(release_ref_list_taskArgs), 576 .sizeOfArgs = sizeof(release_ref_list_taskArgs),
548 .argTypes = release_ref_list_taskArgTypes, 577 .depsTypes = release_ref_list_taskArgTypes,
549 .argSizes = release_ref_list_taskArgSizes}; 578 .depsSizes = release_ref_list_taskArgSizes};
550 579
551 // 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){ 580 // 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){
552 // 581 //
553 // } 582 // }
554 /*-------------------------------------------------------------------------------*/ 583 /*-------------------------------------------------------------------------------*/
558 OutputContext *oc; 587 OutputContext *oc;
559 SliceBufferEntry *sbe; 588 SliceBufferEntry *sbe;
560 H264Context *h; 589 H264Context *h;
561 } output_taskArgs; 590 } output_taskArgs;
562 591
563 int32 output_taskArgTypes[3] = {INOUT, IN, NONCTLD}; 592 int32 output_taskArgTypes[2] = {INOUT, IN};
564 int32 output_taskArgSizes[3] = {sizeof(OutputContext), sizeof(SliceBufferEntry), sizeof(H264Context)}; 593 size_t output_taskArgSizes[2] = {sizeof(OutputContext), sizeof(SliceBufferEntry)};
565 594
566 //#pragma omp task inout (*oc) input(*sbe) 595 //#pragma omp task inout (*oc) input(*sbe)
567 static void output_task(void *_data){ 596 static void output_task(void *_data){
568 output_taskArgs* args = (output_taskArgs*) _data; 597 output_taskArgs* args = (output_taskArgs*) _data;
569 OutputContext *oc = args->oc; 598 OutputContext *oc = args->oc;
582 return; 611 return;
583 } 612 }
584 613
585 VSsTaskType output_taskType = { 614 VSsTaskType output_taskType = {
586 .fn = &output_task, 615 .fn = &output_task,
587 .numCtldArgs = 2, 616 .numDeps = 2,
588 .numTotalArgs = 3,
589 .sizeOfArgs = sizeof(output_taskArgs), 617 .sizeOfArgs = sizeof(output_taskArgs),
590 .argTypes = output_taskArgTypes, 618 .depsTypes = output_taskArgTypes,
591 .argSizes = output_taskArgSizes}; 619 .depsSizes = output_taskArgSizes};
592 620
593 /* 621 /*
594 * The following code is the main loop of the file converter 622 * The following code is the main loop of the file converter
595 */ 623 */
596 624
608 636
609 DecodedPicture *out; 637 DecodedPicture *out;
610 int frames=0; 638 int frames=0;
611 639
612 int32* taskID; 640 int32* taskID;
641 void** depsAddrs;
613 642
614 #if HAVE_LIBSDL2 643 #if HAVE_LIBSDL2
615 pthread_t sdl_thr; 644 pthread_t sdl_thr;
616 if (h->display){ 645 if (h->display){
617 pthread_create(&sdl_thr, NULL, sdl_thread, h); 646 pthread_create(&sdl_thr, NULL, sdl_thread, h);
643 parse_taskArgs parse_task_args; 672 parse_taskArgs parse_task_args;
644 parse_task_args.h = h; 673 parse_task_args.h = h;
645 parse_task_args.pc = pc; 674 parse_task_args.pc = pc;
646 parse_task_args.nc = nc; 675 parse_task_args.nc = nc;
647 parse_task_args.sbe = &sbe[k%bufs]; 676 parse_task_args.sbe = &sbe[k%bufs];
677 depsAddrs = malloc(sizeof(void*) * parse_taskType.numDeps);
678 /*sizeof(ParserContext), sizeof(NalContext), sizeof(SliceBufferEntry)*/
679 depsAddrs[0] = pc;
680 depsAddrs[1] = nc;
681 depsAddrs[2] = &sbe[k%bufs];
648 taskID = VSs__create_taskID_of_size(2); 682 taskID = VSs__create_taskID_of_size(2);
649 taskID[1] = 1; 683 taskID[1] = 1;
650 taskID[2] = k; 684 taskID[2] = k;
651 VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID); 685 VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, depsAddrs, taskID);
652 686
653 decode_slice_entropy_taskArgs decode_slice_entropy_task_args; 687 decode_slice_entropy_taskArgs decode_slice_entropy_task_args;
654 decode_slice_entropy_task_args.h = h; 688 decode_slice_entropy_task_args.h = h;
655 decode_slice_entropy_task_args.ec = ec[k%bufs]; 689 decode_slice_entropy_task_args.ec = ec[k%bufs];
656 decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; 690 decode_slice_entropy_task_args.sbe = &sbe[k%bufs];
691 depsAddrs = malloc(sizeof(void*) * decode_slice_entropy_taskType.numDeps);
692 /*sizeof(EntropyContext), sizeof(SliceBufferEntry)*/
693 depsAddrs[0] = ec[k%bufs];
694 depsAddrs[1] = &sbe[k%bufs];
657 taskID = VSs__create_taskID_of_size(2); 695 taskID = VSs__create_taskID_of_size(2);
658 taskID[1] = 2; 696 taskID[1] = 2;
659 taskID[2] = k; 697 taskID[2] = k;
660 VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID); 698 VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, depsAddrs, taskID);
661 //#pragma omp taskwait on(*pc) 699 //#pragma omp taskwait on(*pc)
662 VSs__taskwait_on(pc); 700 VSs__taskwait_on(pc);
663 k++; 701 k++;
664 } 702 }
665 703
667 parse_taskArgs parse_task_args; 705 parse_taskArgs parse_task_args;
668 parse_task_args.h = h; 706 parse_task_args.h = h;
669 parse_task_args.pc = pc; 707 parse_task_args.pc = pc;
670 parse_task_args.nc = nc; 708 parse_task_args.nc = nc;
671 parse_task_args.sbe = &sbe[k%bufs]; 709 parse_task_args.sbe = &sbe[k%bufs];
710 depsAddrs = malloc(sizeof(void*) * parse_taskType.numDeps);
711 /*sizeof(ParserContext), sizeof(NalContext), sizeof(SliceBufferEntry)*/
712 depsAddrs[0] = pc;
713 depsAddrs[1] = nc;
714 depsAddrs[2] = &sbe[k%bufs];
672 taskID = VSs__create_taskID_of_size(2); 715 taskID = VSs__create_taskID_of_size(2);
673 taskID[1] = 3; 716 taskID[1] = 3;
674 taskID[2] = k; 717 taskID[2] = k;
675 VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID); 718 VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, depsAddrs, taskID);
676 719
677 decode_slice_entropy_taskArgs decode_slice_entropy_task_args; 720 decode_slice_entropy_taskArgs decode_slice_entropy_task_args;
678 decode_slice_entropy_task_args.h = h; 721 decode_slice_entropy_task_args.h = h;
679 decode_slice_entropy_task_args.ec = ec[k%bufs]; 722 decode_slice_entropy_task_args.ec = ec[k%bufs];
680 decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; 723 decode_slice_entropy_task_args.sbe = &sbe[k%bufs];
724 depsAddrs = malloc(sizeof(void*) * decode_slice_entropy_taskType.numDeps);
725 /*sizeof(EntropyContext), sizeof(SliceBufferEntry)*/
726 depsAddrs[0] = ec[k%bufs];
727 depsAddrs[1] = &sbe[k%bufs];
681 taskID = VSs__create_taskID_of_size(2); 728 taskID = VSs__create_taskID_of_size(2);
682 taskID[1] = 4; 729 taskID[1] = 4;
683 taskID[2] = k; 730 taskID[2] = k;
684 VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID); 731 VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, depsAddrs, taskID);
685 732
686 k++; 733 k++;
687 734
688 init_ref_list_and_get_dpb_taskArgs init_ref_list_and_get_dpb_task_args; 735 init_ref_list_and_get_dpb_taskArgs init_ref_list_and_get_dpb_task_args;
689 init_ref_list_and_get_dpb_task_args.h = h; 736 init_ref_list_and_get_dpb_task_args.h = h;
690 init_ref_list_and_get_dpb_task_args.d = rc[k%2]; 737 init_ref_list_and_get_dpb_task_args.d = rc[k%2];
691 init_ref_list_and_get_dpb_task_args.sbe = &sbe[k%bufs]; 738 init_ref_list_and_get_dpb_task_args.sbe = &sbe[k%bufs];
692 init_ref_list_and_get_dpb_task_args.init = &init; 739 init_ref_list_and_get_dpb_task_args.init = &init;
740 depsAddrs = malloc(sizeof(void*) * init_ref_list_and_get_dpb_taskType.numDeps);
741 /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(int)*/
742 depsAddrs[0] = rc[k%2];
743 depsAddrs[1] = &sbe[k%bufs];
744 depsAddrs[2] = &init;
693 taskID = VSs__create_taskID_of_size(2); 745 taskID = VSs__create_taskID_of_size(2);
694 taskID[1] = 5; 746 taskID[1] = 5;
695 taskID[2] = k; 747 taskID[2] = k;
696 VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID); 748 VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, depsAddrs, taskID);
697 749
698 smbc = acquire_smbc(h); 750 smbc = acquire_smbc(h);
699 SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k); 751 SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k);
700 release_ref_list_taskArgs release_ref_list_task_args; 752 release_ref_list_taskArgs release_ref_list_task_args;
701 release_ref_list_task_args.h = h; 753 release_ref_list_task_args.h = h;
702 release_ref_list_task_args.smbc = smbc; 754 release_ref_list_task_args.smbc = smbc;
703 release_ref_list_task_args.d = rc[k%2]; 755 release_ref_list_task_args.d = rc[k%2];
704 release_ref_list_task_args.sbe = &sbe[k%bufs]; 756 release_ref_list_task_args.sbe = &sbe[k%bufs];
705 release_ref_list_task_args.lastsmb = lastsmb; 757 release_ref_list_task_args.lastsmb = lastsmb;
706 release_ref_list_task_args.release = &release; 758 release_ref_list_task_args.release = &release;
759 depsAddrs = malloc(sizeof(void*) * release_ref_list_taskType.numDeps);
760 /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(int)*/
761 depsAddrs[0] = rc[k%2];
762 depsAddrs[1] = &sbe[k%bufs];
763 depsAddrs[2] = smbc;
764 depsAddrs[3] = &release;
707 taskID = VSs__create_taskID_of_size(2); 765 taskID = VSs__create_taskID_of_size(2);
708 taskID[1] = 6; 766 taskID[1] = 6;
709 taskID[2] = k; 767 taskID[2] = k;
710 VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID); 768 VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, depsAddrs, taskID);
711 769
712 output_taskArgs output_task_args; 770 output_taskArgs output_task_args;
713 output_task_args.h = h; 771 output_task_args.h = h;
714 output_task_args.oc = oc; 772 output_task_args.oc = oc;
715 output_task_args.sbe = &sbe[k%bufs]; 773 output_task_args.sbe = &sbe[k%bufs];
774 depsAddrs = malloc(sizeof(void*) * output_taskType.numDeps);
775 /*sizeof(OutputContext), sizeof(SliceBufferEntry)*/
776 depsAddrs[0] = oc;
777 depsAddrs[1] = &sbe[k%bufs];
716 taskID = VSs__create_taskID_of_size(2); 778 taskID = VSs__create_taskID_of_size(2);
717 taskID[1] = 7; 779 taskID[1] = 7;
718 taskID[2] = k; 780 taskID[2] = k;
719 VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID); 781 VSs__submit_task_with_ID(&output_taskType, &output_task_args, depsAddrs, taskID);
720 //#pragma omp taskwait on(*pc) 782 //#pragma omp taskwait on(*pc)
721 VSs__taskwait_on(pc); 783 VSs__taskwait_on(pc);
722 } 784 }
723 785
724 for (int i=0; i< num_pre_ed; i++){ 786 for (int i=0; i< num_pre_ed; i++){
726 init_ref_list_and_get_dpb_taskArgs init_ref_list_and_get_dpb_task_args; 788 init_ref_list_and_get_dpb_taskArgs init_ref_list_and_get_dpb_task_args;
727 init_ref_list_and_get_dpb_task_args.h = h; 789 init_ref_list_and_get_dpb_task_args.h = h;
728 init_ref_list_and_get_dpb_task_args.d = rc[k%2]; 790 init_ref_list_and_get_dpb_task_args.d = rc[k%2];
729 init_ref_list_and_get_dpb_task_args.sbe = &sbe[k%bufs]; 791 init_ref_list_and_get_dpb_task_args.sbe = &sbe[k%bufs];
730 init_ref_list_and_get_dpb_task_args.init = &init; 792 init_ref_list_and_get_dpb_task_args.init = &init;
793 depsAddrs = malloc(sizeof(void*) * init_ref_list_and_get_dpb_taskType.numDeps);
794 /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(int)*/
795 depsAddrs[0] = rc[k%2];
796 depsAddrs[1] = &sbe[k%bufs];
797 depsAddrs[2] = &init;
731 taskID = VSs__create_taskID_of_size(2); 798 taskID = VSs__create_taskID_of_size(2);
732 taskID[1] = 8; 799 taskID[1] = 8;
733 taskID[2] = i; 800 taskID[2] = i;
734 VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID); 801 VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, depsAddrs, taskID);
735 smbc = acquire_smbc(h); 802 smbc = acquire_smbc(h);
736 SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k); 803 SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k);
737 release_ref_list_taskArgs release_ref_list_task_args; 804 release_ref_list_taskArgs release_ref_list_task_args;
738 release_ref_list_task_args.h = h; 805 release_ref_list_task_args.h = h;
739 release_ref_list_task_args.smbc = smbc; 806 release_ref_list_task_args.smbc = smbc;
740 release_ref_list_task_args.d = rc[k%2]; 807 release_ref_list_task_args.d = rc[k%2];
741 release_ref_list_task_args.sbe = &sbe[k%bufs]; 808 release_ref_list_task_args.sbe = &sbe[k%bufs];
742 release_ref_list_task_args.lastsmb = lastsmb; 809 release_ref_list_task_args.lastsmb = lastsmb;
743 release_ref_list_task_args.release = &release; 810 release_ref_list_task_args.release = &release;
811 depsAddrs = malloc(sizeof(void*) * release_ref_list_taskType.numDeps);
812 /*sizeof(MBRecContext), sizeof(SliceBufferEntry), sizeof(SuperMBTask), sizeof(int)*/
813 depsAddrs[0] = rc[k%2];
814 depsAddrs[1] = &sbe[k%bufs];
815 depsAddrs[2] = smbc;
816 depsAddrs[3] = &release;
744 taskID = VSs__create_taskID_of_size(2); 817 taskID = VSs__create_taskID_of_size(2);
745 taskID[1] = 9; 818 taskID[1] = 9;
746 taskID[2] = k; 819 taskID[2] = k;
747 VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID); 820 VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, depsAddrs, taskID);
748 821
749 output_taskArgs output_task_args; 822 output_taskArgs output_task_args;
750 output_task_args.h = h; 823 output_task_args.h = h;
751 output_task_args.oc = oc; 824 output_task_args.oc = oc;
752 output_task_args.sbe = &sbe[k%bufs]; 825 output_task_args.sbe = &sbe[k%bufs];
826 depsAddrs = malloc(sizeof(void*) * output_taskType.numDeps);
827 /*sizeof(OutputContext), sizeof(SliceBufferEntry)*/
828 depsAddrs[0] = oc;
829 depsAddrs[1] = &sbe[k%bufs];
753 taskID = VSs__create_taskID_of_size(2); 830 taskID = VSs__create_taskID_of_size(2);
754 taskID[1] = 10; 831 taskID[1] = 10;
755 taskID[2] = k; 832 taskID[2] = k;
756 VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID); 833 VSs__submit_task_with_ID(&output_taskType, &output_task_args, depsAddrs, taskID);
757 } 834 }
758 835
759 } else { 836 } else {
760 while(!pc->final_frame && frames++ < h->num_frames && !h->quit){ 837 while(!pc->final_frame && frames++ < h->num_frames && !h->quit){
761 838
764 parse_taskArgs parse_task_args; 841 parse_taskArgs parse_task_args;
765 parse_task_args.h = h; 842 parse_task_args.h = h;
766 parse_task_args.pc = pc; 843 parse_task_args.pc = pc;
767 parse_task_args.nc = nc; 844 parse_task_args.nc = nc;
768 parse_task_args.sbe = &sbe[k%bufs]; 845 parse_task_args.sbe = &sbe[k%bufs];
769 VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID); 846 depsAddrs = malloc(sizeof(void*) * parse_taskType.numDeps);
847 /*sizeof(ParserContext), sizeof(NalContext), sizeof(SliceBufferEntry)*/
848 depsAddrs[0] = pc;
849 depsAddrs[1] = nc;
850 depsAddrs[2] = &sbe[k%bufs];
851 VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, depsAddrs, taskID);
770 852
771 taskID = VSs__create_taskID_of_size(1); 853 taskID = VSs__create_taskID_of_size(1);
772 taskID[1] = frames*10+2; 854 taskID[1] = frames*10+2;
773 decode_slice_entropy_taskArgs decode_slice_entropy_task_args; 855 decode_slice_entropy_taskArgs decode_slice_entropy_task_args;
774 decode_slice_entropy_task_args.h = h; 856 decode_slice_entropy_task_args.h = h;
775 decode_slice_entropy_task_args.ec = ec[k%bufs]; 857 decode_slice_entropy_task_args.ec = ec[k%bufs];
776 decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; 858 decode_slice_entropy_task_args.sbe = &sbe[k%bufs];
777 VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args,taskID); 859 depsAddrs = malloc(sizeof(void*) * decode_slice_entropy_taskType.numDeps);
860 /*sizeof(EntropyContext), sizeof(SliceBufferEntry)*/
861 depsAddrs[0] = ec[k%bufs];
862 depsAddrs[1] = &sbe[k%bufs];
863 VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, depsAddrs, taskID);
778 864
779 taskID = VSs__create_taskID_of_size(1); 865 taskID = VSs__create_taskID_of_size(1);
780 taskID[1] = frames*10+3; 866 taskID[1] = frames*10+3;
781 decode_slice_mb_taskArgs decode_slice_mb_task_args; 867 decode_slice_mb_taskArgs decode_slice_mb_task_args;
782 decode_slice_mb_task_args.h = h; 868 decode_slice_mb_task_args.h = h;
783 decode_slice_mb_task_args.d = rc[0]; 869 decode_slice_mb_task_args.d = rc[0];
784 decode_slice_mb_task_args.sbe = &sbe[k%bufs]; 870 decode_slice_mb_task_args.sbe = &sbe[k%bufs];
785 VSs__submit_task_with_ID(&decode_slice_mb_taskType, &decode_slice_mb_task_args,taskID); 871 depsAddrs = malloc(sizeof(void*) * decode_slice_mb_taskType.numDeps);
872 /*sizeof(MBRecContext), sizeof(SliceBufferEntry)*/
873 depsAddrs[0] = rc[0];
874 depsAddrs[1] = &sbe[k%bufs];
875 VSs__submit_task_with_ID(&decode_slice_mb_taskType, &decode_slice_mb_task_args, depsAddrs, taskID);
786 876
787 taskID = VSs__create_taskID_of_size(1); 877 taskID = VSs__create_taskID_of_size(1);
788 taskID[1] = frames*10+4; 878 taskID[1] = frames*10+4;
789 output_taskArgs output_task_args; 879 output_taskArgs output_task_args;
790 output_task_args.h = h; 880 output_task_args.h = h;
791 output_task_args.oc = oc; 881 output_task_args.oc = oc;
792 output_task_args.sbe = &sbe[k%bufs]; 882 output_task_args.sbe = &sbe[k%bufs];
793 VSs__submit_task_with_ID(&output_taskType, &output_task_args,taskID); 883 depsAddrs = malloc(sizeof(void*) * output_taskType.numDeps);
884 /*sizeof(OutputContext), sizeof(SliceBufferEntry)*/
885 depsAddrs[0] = oc;
886 depsAddrs[1] = &sbe[k%bufs];
887 VSs__submit_task_with_ID(&output_taskType, &output_task_args, depsAddrs, taskID);
794 //#pragma omp taskwait on(*pc) 888 //#pragma omp taskwait on(*pc)
795 VSs__taskwait_on(pc); 889 VSs__taskwait_on(pc);
796 k++; 890 k++;
797 } 891 }
798 } 892 }