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);