Mercurial > cgi-bin > hgwebdir.cgi > PR > Applications > VSs > VSs__jpeg_decoder__Proj
comparison VSs_tinyjpeg/loadjpeg.c @ 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 |
comparison
equal
deleted
inserted
replaced
| 2:661acb10b069 | 3:96c35edf16f7 |
|---|---|
| 86 F = fopen(temp, "wb"); | 86 F = fopen(temp, "wb"); |
| 87 fwrite(targaheader, sizeof(targaheader), 1, F); | 87 fwrite(targaheader, sizeof(targaheader), 1, F); |
| 88 return F; | 88 return F; |
| 89 } | 89 } |
| 90 | 90 |
| 91 //todo | 91 typedef struct{ |
| 92 unsigned char* rgb_data; | |
| 93 char* d; | |
| 94 FILE* fp; | |
| 95 int bufferlen; | |
| 96 }write_tga_task_args; | |
| 97 | |
| 98 VSsTaskType *write_tga_taskType; | |
| 99 | |
| 100 int32 write_tga_taskArgTypes[2] = {IN, INOUT}; | |
| 101 int32 write_tga_taskArgSizes[2] = {sizeof(unsigned char), sizeof(char)}; | |
| 102 | |
| 92 //#pragma omp task input(*rgb_data) output(*d) inout(*d) | 103 //#pragma omp task input(*rgb_data) output(*d) inout(*d) |
| 93 void write_tga_task(FILE* fp, int bufferlen, unsigned char* rgb_data, char* d) { | 104 void write_tga_task(void *_data, SlaveVP *animatingSlv ) { |
| 94 | 105 |
| 106 write_tga_task_args* args = (write_tga_task_args*) _data; | |
| 107 FILE* fp = args->fp; | |
| 108 int bufferlen = args->bufferlen; | |
| 109 unsigned char* rgb_data = args->rgb_data; | |
| 110 char* d = args->d; | |
| 111 | |
| 95 // To disable ompss warnings | 112 // To disable ompss warnings |
| 96 d = d; | 113 d = d; |
| 97 unsigned char *data = rgb_data + bufferlen - RGB_DEPTH; | 114 unsigned char *data = rgb_data + bufferlen - RGB_DEPTH; |
| 98 do | 115 do |
| 99 { | 116 { |
| 176 args.context = rgb_data+i*width*RGB_DEPTH*MCU_Y_STRIDE; | 193 args.context = rgb_data+i*width*RGB_DEPTH*MCU_Y_STRIDE; |
| 177 VSs__submit_task(tinyjpegTaskType, &args, seedSlv); | 194 VSs__submit_task(tinyjpegTaskType, &args, seedSlv); |
| 178 | 195 |
| 179 } | 196 } |
| 180 | 197 |
| 198 write_tga_taskType = VMS_App__malloc( sizeof(VSsTaskType) ); | |
| 199 write_tga_taskType->fn = &write_tga_task; | |
| 200 write_tga_taskType->numCtldArgs = 2; | |
| 201 write_tga_taskType->numTotalArgs = 4; | |
| 202 write_tga_taskType->sizeOfArgs = sizeof(write_tga_task_args); | |
| 203 write_tga_taskType->argTypes = write_tga_taskArgTypes; | |
| 204 write_tga_taskType->argSizes = write_tga_taskArgSizes; | |
| 205 | |
| 206 write_tga_task_args args2; | |
| 181 char dummy; | 207 char dummy; |
| 182 for(i=0; i<ntasks;i++) { | 208 for(i=0; i<ntasks;i++) { |
| 183 write_tga_task(fp, width*RGB_DEPTH*MCU_Y_STRIDE, rgb_data+i*RGB_DEPTH*width*MCU_Y_STRIDE, &dummy); | 209 args2.fp = fp; |
| 210 args2.bufferlen = width*RGB_DEPTH*MCU_Y_STRIDE; | |
| 211 args2.rgb_data = rgb_data+i*RGB_DEPTH*width*MCU_Y_STRIDE; | |
| 212 args2.d = &dummy; | |
| 213 VSs__submit_task(write_tga_taskType, &args2, seedSlv); | |
| 184 } | 214 } |
| 185 | 215 |
| 186 //VSs__wait_for_all_tasks_to_complete(); | 216 VSs__taskwait(seedSlv); |
| 187 //#pragma omp barrier | 217 //#pragma omp barrier |
| 188 | 218 |
| 189 tinyjpeg_free(jdec); | 219 tinyjpeg_free(jdec); |
| 190 for(i=0; i < ntasks; i++) { | 220 for(i=0; i < ntasks; i++) { |
| 191 tinyjpeg_free(jdec_task[i]); | 221 tinyjpeg_free(jdec_task[i]); |
