Mercurial > cgi-bin > hgwebdir.cgi > PR > Applications > VSs > VSs__jpeg_decoder__Proj
changeset 3:42d636fee562
added second type of task
| author | Nina Engelhardt <nengel@mailbox.tu-berlin.de> |
|---|---|
| date | Fri, 13 Jul 2012 17:59:00 +0200 |
| parents | a52de05d2e2b |
| children | 62350c40504f |
| files | VSs_tinyjpeg/loadjpeg.c |
| diffstat | 1 files changed, 36 insertions(+), 6 deletions(-) [+] |
line diff
1.1 --- a/VSs_tinyjpeg/loadjpeg.c Tue Jul 10 11:42:46 2012 +0200 1.2 +++ b/VSs_tinyjpeg/loadjpeg.c Fri Jul 13 17:59:00 2012 +0200 1.3 @@ -88,10 +88,27 @@ 1.4 return F; 1.5 } 1.6 1.7 -//todo 1.8 +typedef struct{ 1.9 + unsigned char* rgb_data; 1.10 + char* d; 1.11 + FILE* fp; 1.12 + int bufferlen; 1.13 +}write_tga_task_args; 1.14 + 1.15 +VSsTaskType *write_tga_taskType; 1.16 + 1.17 +int32 write_tga_taskArgTypes[2] = {IN, INOUT}; 1.18 +int32 write_tga_taskArgSizes[2] = {sizeof(unsigned char), sizeof(char)}; 1.19 + 1.20 //#pragma omp task input(*rgb_data) output(*d) inout(*d) 1.21 -void write_tga_task(FILE* fp, int bufferlen, unsigned char* rgb_data, char* d) { 1.22 - 1.23 +void write_tga_task(void *_data, SlaveVP *animatingSlv ) { 1.24 + 1.25 + write_tga_task_args* args = (write_tga_task_args*) _data; 1.26 + FILE* fp = args->fp; 1.27 + int bufferlen = args->bufferlen; 1.28 + unsigned char* rgb_data = args->rgb_data; 1.29 + char* d = args->d; 1.30 + 1.31 // To disable ompss warnings 1.32 d = d; 1.33 unsigned char *data = rgb_data + bufferlen - RGB_DEPTH; 1.34 @@ -178,12 +195,25 @@ 1.35 1.36 } 1.37 1.38 + write_tga_taskType = VMS_App__malloc( sizeof(VSsTaskType) ); 1.39 + write_tga_taskType->fn = &write_tga_task; 1.40 + write_tga_taskType->numCtldArgs = 2; 1.41 + write_tga_taskType->numTotalArgs = 4; 1.42 + write_tga_taskType->sizeOfArgs = sizeof(write_tga_task_args); 1.43 + write_tga_taskType->argTypes = write_tga_taskArgTypes; 1.44 + write_tga_taskType->argSizes = write_tga_taskArgSizes; 1.45 + 1.46 + write_tga_task_args args2; 1.47 char dummy; 1.48 - for(i=0; i<ntasks;i++) { 1.49 - write_tga_task(fp, width*RGB_DEPTH*MCU_Y_STRIDE, rgb_data+i*RGB_DEPTH*width*MCU_Y_STRIDE, &dummy); 1.50 + for(i=0; i<ntasks;i++) { 1.51 + args2.fp = fp; 1.52 + args2.bufferlen = width*RGB_DEPTH*MCU_Y_STRIDE; 1.53 + args2.rgb_data = rgb_data+i*RGB_DEPTH*width*MCU_Y_STRIDE; 1.54 + args2.d = &dummy; 1.55 + VSs__submit_task(write_tga_taskType, &args2, seedSlv); 1.56 } 1.57 1.58 - //VSs__wait_for_all_tasks_to_complete(); 1.59 + VSs__taskwait(seedSlv); 1.60 //#pragma omp barrier 1.61 1.62 tinyjpeg_free(jdec);
