Mercurial > cgi-bin > hgwebdir.cgi > PR > Applications > VSs > VSs__H264__App
diff 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 |
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++;
