changeset 5:808fe898c011

give more tasks IDs
author Nina Engelhardt <nengel@mailbox.tu-berlin.de>
date Fri, 01 Feb 2013 17:11:39 +0100
parents 96e628866d41
children 55fb61482128
files libavcodec/h264_ompss.c
diffstat 1 files changed, 34 insertions(+), 16 deletions(-) [+]
line diff
     1.1 --- a/libavcodec/h264_ompss.c	Wed Dec 19 15:40:26 2012 +0100
     1.2 +++ b/libavcodec/h264_ompss.c	Fri Feb 01 17:11:39 2013 +0100
     1.3 @@ -417,9 +417,11 @@
     1.4      .argTypes = init_ref_list_and_get_dpb_taskArgTypes,
     1.5      .argSizes = init_ref_list_and_get_dpb_taskArgSizes};
     1.6  
     1.7 -static SuperMBTask* add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, SlaveVP* animSlv){
     1.8 +static SuperMBTask* add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, int k, SlaveVP* animSlv){
     1.9      int i,j;
    1.10      
    1.11 +    int32* taskID;
    1.12 +    
    1.13      int smb_3d_height =smbc->nsmb_3dheight;
    1.14      int smb_height =smbc->nsmb_height, smb_width= smbc->nsmb_width;
    1.15      int smb_diff_prev = smb_height - smb_3d_height;
    1.16 @@ -442,7 +444,11 @@
    1.17              decode_3dwave_super_mb_task_args.mur = smur;
    1.18              decode_3dwave_super_mb_task_args.mprev = smprev;
    1.19              decode_3dwave_super_mb_task_args.m = sm;
    1.20 -            VSs__submit_task(&decode_3dwave_super_mb_taskType, &decode_3dwave_super_mb_task_args, animSlv);
    1.21 +            taskID = VSs__create_taskID_of_size(3,animSlv );
    1.22 +            taskID[1] = k;
    1.23 +            taskID[2] = j;
    1.24 +            taskID[3] = i;
    1.25 +            VSs__submit_task_with_ID(&decode_3dwave_super_mb_taskType, &decode_3dwave_super_mb_task_args, taskID, animSlv);
    1.26          }
    1.27          draw_edges_taskArgs draw_edges_task_args;
    1.28          draw_edges_task_args.d = d;
    1.29 @@ -451,7 +457,11 @@
    1.30          draw_edges_task_args.smbc = smbc;
    1.31          draw_edges_task_args.line = VMS_App__malloc( sizeof(int) );
    1.32          *(draw_edges_task_args.line) = j;
    1.33 -        VSs__submit_task(&draw_edges_taskType, &draw_edges_task_args, animSlv);
    1.34 +        taskID = VSs__create_taskID_of_size(3, animSlv);
    1.35 +        taskID[1] = k;
    1.36 +        taskID[2] = j;
    1.37 +        taskID[3] = i;
    1.38 +        VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, taskID, animSlv);
    1.39      }
    1.40  
    1.41      for(; j< smb_height; j++){
    1.42 @@ -466,7 +476,11 @@
    1.43              decode_super_mb_task_args.ml = sml;
    1.44              decode_super_mb_task_args.mur = smur;
    1.45              decode_super_mb_task_args.m = sm;
    1.46 -            VSs__submit_task(&decode_super_mb_taskType, &decode_super_mb_task_args, animSlv);
    1.47 +            taskID = VSs__create_taskID_of_size(3,animSlv );
    1.48 +            taskID[1] = k;
    1.49 +            taskID[2] = j;
    1.50 +            taskID[3] = i;
    1.51 +            VSs__submit_task_with_ID(&decode_super_mb_taskType, &decode_super_mb_task_args, taskID, animSlv);
    1.52          }
    1.53          draw_edges_taskArgs draw_edges_task_args;
    1.54          draw_edges_task_args.d = d;
    1.55 @@ -475,7 +489,11 @@
    1.56          draw_edges_task_args.smbc = smbc;
    1.57          draw_edges_task_args.line = VMS_App__malloc( sizeof(int) );
    1.58          *(draw_edges_task_args.line) = j;
    1.59 -        VSs__submit_task(&draw_edges_taskType, &draw_edges_task_args, animSlv);
    1.60 +        taskID = VSs__create_taskID_of_size(3, animSlv);
    1.61 +        taskID[1] = k;
    1.62 +        taskID[2] = j;
    1.63 +        taskID[3] = i;
    1.64 +        VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, taskID, animSlv);
    1.65      }
    1.66      return sm;
    1.67  }
    1.68 @@ -630,7 +648,7 @@
    1.69              parse_task_args.sbe = &sbe[k%bufs];
    1.70              taskID = VSs__create_taskID_of_size(2,animSlv );
    1.71              taskID[1] = 1;
    1.72 -            taskID[2] = num_pre_ed;
    1.73 +            taskID[2] = k;
    1.74              VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID, animSlv);
    1.75              
    1.76              decode_slice_entropy_taskArgs decode_slice_entropy_task_args;
    1.77 @@ -639,7 +657,7 @@
    1.78              decode_slice_entropy_task_args.sbe = &sbe[k%bufs];
    1.79              taskID = VSs__create_taskID_of_size(2,animSlv );
    1.80              taskID[1] = 2;
    1.81 -            taskID[2] = num_pre_ed;
    1.82 +            taskID[2] = k;
    1.83              VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID, animSlv);        
    1.84              //#pragma omp taskwait on(*pc)
    1.85              VSs__taskwait_on(animSlv,pc);
    1.86 @@ -654,7 +672,7 @@
    1.87              parse_task_args.sbe = &sbe[k%bufs];
    1.88              taskID = VSs__create_taskID_of_size(2,animSlv );
    1.89              taskID[1] = 3;
    1.90 -            taskID[2] = frames;
    1.91 +            taskID[2] = k;
    1.92              VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID, animSlv);
    1.93              
    1.94              decode_slice_entropy_taskArgs decode_slice_entropy_task_args;
    1.95 @@ -663,7 +681,7 @@
    1.96              decode_slice_entropy_task_args.sbe = &sbe[k%bufs];
    1.97              taskID = VSs__create_taskID_of_size(2,animSlv );
    1.98              taskID[1] = 4;
    1.99 -            taskID[2] = frames;
   1.100 +            taskID[2] = k;
   1.101              VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID, animSlv); 
   1.102  
   1.103              k++;
   1.104 @@ -675,11 +693,11 @@
   1.105              init_ref_list_and_get_dpb_task_args.init = &init;
   1.106              taskID = VSs__create_taskID_of_size(2,animSlv );
   1.107              taskID[1] = 5;
   1.108 -            taskID[2] = frames;
   1.109 +            taskID[2] = k;
   1.110              VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID, animSlv); 
   1.111  
   1.112              smbc = acquire_smbc(h);
   1.113 -            SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, animSlv);
   1.114 +            SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k, animSlv);
   1.115              release_ref_list_taskArgs release_ref_list_task_args;
   1.116              release_ref_list_task_args.h = h;
   1.117              release_ref_list_task_args.smbc = smbc;
   1.118 @@ -689,7 +707,7 @@
   1.119              release_ref_list_task_args.release = &release;
   1.120              taskID = VSs__create_taskID_of_size(2,animSlv );
   1.121              taskID[1] = 6;
   1.122 -            taskID[2] = frames;
   1.123 +            taskID[2] = k;
   1.124              VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID, animSlv);
   1.125  
   1.126              output_taskArgs output_task_args;
   1.127 @@ -698,7 +716,7 @@
   1.128              output_task_args.sbe = &sbe[k%bufs];
   1.129              taskID = VSs__create_taskID_of_size(2,animSlv );
   1.130              taskID[1] = 7;
   1.131 -            taskID[2] = frames;
   1.132 +            taskID[2] = k;
   1.133              VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID, animSlv);
   1.134              //#pragma omp taskwait on(*pc)
   1.135              VSs__taskwait_on(animSlv,pc);
   1.136 @@ -716,7 +734,7 @@
   1.137              taskID[2] = i;
   1.138              VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID, animSlv); 
   1.139              smbc = acquire_smbc(h);
   1.140 -            SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, animSlv);
   1.141 +            SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k, animSlv);
   1.142              release_ref_list_taskArgs release_ref_list_task_args;
   1.143              release_ref_list_task_args.h = h;
   1.144              release_ref_list_task_args.smbc = smbc;
   1.145 @@ -726,7 +744,7 @@
   1.146              release_ref_list_task_args.release = &release;
   1.147              taskID = VSs__create_taskID_of_size(2,animSlv );
   1.148              taskID[1] = 9;
   1.149 -            taskID[2] = frames;
   1.150 +            taskID[2] = k;
   1.151              VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID, animSlv); 
   1.152  
   1.153              output_taskArgs output_task_args;
   1.154 @@ -735,7 +753,7 @@
   1.155              output_task_args.sbe = &sbe[k%bufs];
   1.156              taskID = VSs__create_taskID_of_size(2,animSlv );
   1.157              taskID[1] = 10;
   1.158 -            taskID[2] = frames;
   1.159 +            taskID[2] = k;
   1.160              VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID, animSlv);
   1.161          }
   1.162