# HG changeset patch # User Nina Engelhardt # Date 1359735099 -3600 # Node ID 808fe898c011a582d33ec1717cf0730dfa201133 # Parent 96e628866d41dae5ca9bbfbe0aeb20951f9a9d52 give more tasks IDs diff -r 96e628866d41 -r 808fe898c011 libavcodec/h264_ompss.c --- a/libavcodec/h264_ompss.c Wed Dec 19 15:40:26 2012 +0100 +++ b/libavcodec/h264_ompss.c Fri Feb 01 17:11:39 2013 +0100 @@ -417,9 +417,11 @@ .argTypes = init_ref_list_and_get_dpb_taskArgTypes, .argSizes = init_ref_list_and_get_dpb_taskArgSizes}; -static SuperMBTask* add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, SlaveVP* animSlv){ +static SuperMBTask* add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, int k, SlaveVP* animSlv){ int i,j; + int32* taskID; + int smb_3d_height =smbc->nsmb_3dheight; int smb_height =smbc->nsmb_height, smb_width= smbc->nsmb_width; int smb_diff_prev = smb_height - smb_3d_height; @@ -442,7 +444,11 @@ decode_3dwave_super_mb_task_args.mur = smur; decode_3dwave_super_mb_task_args.mprev = smprev; decode_3dwave_super_mb_task_args.m = sm; - VSs__submit_task(&decode_3dwave_super_mb_taskType, &decode_3dwave_super_mb_task_args, animSlv); + taskID = VSs__create_taskID_of_size(3,animSlv ); + taskID[1] = k; + taskID[2] = j; + taskID[3] = i; + VSs__submit_task_with_ID(&decode_3dwave_super_mb_taskType, &decode_3dwave_super_mb_task_args, taskID, animSlv); } draw_edges_taskArgs draw_edges_task_args; draw_edges_task_args.d = d; @@ -451,7 +457,11 @@ draw_edges_task_args.smbc = smbc; draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); *(draw_edges_task_args.line) = j; - VSs__submit_task(&draw_edges_taskType, &draw_edges_task_args, animSlv); + taskID = VSs__create_taskID_of_size(3, animSlv); + taskID[1] = k; + taskID[2] = j; + taskID[3] = i; + VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, taskID, animSlv); } for(; j< smb_height; j++){ @@ -466,7 +476,11 @@ decode_super_mb_task_args.ml = sml; decode_super_mb_task_args.mur = smur; decode_super_mb_task_args.m = sm; - VSs__submit_task(&decode_super_mb_taskType, &decode_super_mb_task_args, animSlv); + taskID = VSs__create_taskID_of_size(3,animSlv ); + taskID[1] = k; + taskID[2] = j; + taskID[3] = i; + VSs__submit_task_with_ID(&decode_super_mb_taskType, &decode_super_mb_task_args, taskID, animSlv); } draw_edges_taskArgs draw_edges_task_args; draw_edges_task_args.d = d; @@ -475,7 +489,11 @@ draw_edges_task_args.smbc = smbc; draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); *(draw_edges_task_args.line) = j; - VSs__submit_task(&draw_edges_taskType, &draw_edges_task_args, animSlv); + taskID = VSs__create_taskID_of_size(3, animSlv); + taskID[1] = k; + taskID[2] = j; + taskID[3] = i; + VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, taskID, animSlv); } return sm; } @@ -630,7 +648,7 @@ parse_task_args.sbe = &sbe[k%bufs]; taskID = VSs__create_taskID_of_size(2,animSlv ); taskID[1] = 1; - taskID[2] = num_pre_ed; + taskID[2] = k; VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID, animSlv); decode_slice_entropy_taskArgs decode_slice_entropy_task_args; @@ -639,7 +657,7 @@ decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; taskID = VSs__create_taskID_of_size(2,animSlv ); taskID[1] = 2; - taskID[2] = num_pre_ed; + taskID[2] = k; VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID, animSlv); //#pragma omp taskwait on(*pc) VSs__taskwait_on(animSlv,pc); @@ -654,7 +672,7 @@ parse_task_args.sbe = &sbe[k%bufs]; taskID = VSs__create_taskID_of_size(2,animSlv ); taskID[1] = 3; - taskID[2] = frames; + taskID[2] = k; VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID, animSlv); decode_slice_entropy_taskArgs decode_slice_entropy_task_args; @@ -663,7 +681,7 @@ decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; taskID = VSs__create_taskID_of_size(2,animSlv ); taskID[1] = 4; - taskID[2] = frames; + taskID[2] = k; VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID, animSlv); k++; @@ -675,11 +693,11 @@ init_ref_list_and_get_dpb_task_args.init = &init; taskID = VSs__create_taskID_of_size(2,animSlv ); taskID[1] = 5; - taskID[2] = frames; + taskID[2] = k; VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID, animSlv); smbc = acquire_smbc(h); - SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, animSlv); + SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k, animSlv); release_ref_list_taskArgs release_ref_list_task_args; release_ref_list_task_args.h = h; release_ref_list_task_args.smbc = smbc; @@ -689,7 +707,7 @@ release_ref_list_task_args.release = &release; taskID = VSs__create_taskID_of_size(2,animSlv ); taskID[1] = 6; - taskID[2] = frames; + taskID[2] = k; VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID, animSlv); output_taskArgs output_task_args; @@ -698,7 +716,7 @@ output_task_args.sbe = &sbe[k%bufs]; taskID = VSs__create_taskID_of_size(2,animSlv ); taskID[1] = 7; - taskID[2] = frames; + taskID[2] = k; VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID, animSlv); //#pragma omp taskwait on(*pc) VSs__taskwait_on(animSlv,pc); @@ -716,7 +734,7 @@ taskID[2] = i; VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID, animSlv); smbc = acquire_smbc(h); - SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, animSlv); + SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k, animSlv); release_ref_list_taskArgs release_ref_list_task_args; release_ref_list_task_args.h = h; release_ref_list_task_args.smbc = smbc; @@ -726,7 +744,7 @@ release_ref_list_task_args.release = &release; taskID = VSs__create_taskID_of_size(2,animSlv ); taskID[1] = 9; - taskID[2] = frames; + taskID[2] = k; VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID, animSlv); output_taskArgs output_task_args; @@ -735,7 +753,7 @@ output_task_args.sbe = &sbe[k%bufs]; taskID = VSs__create_taskID_of_size(2,animSlv ); taskID[1] = 10; - taskID[2] = frames; + taskID[2] = k; VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID, animSlv); }