int main(int argc, char* argv[]){ Bmp *bmpA = loadbmp("img/hello.bmp"); // Save a copy bmpA->saveCopy("img/hellocopy"); // Invert filter invert(bmpA); bmpA->saveCopy("img/helloinvert"); Bmp *bmpB = loadbmp("img/rainbow.bmp"); Bmp *bmpC = loadbmp("img/rainbow2.bmp"); // Difference filter difference(bmpB, bmpC); bmpB->saveCopy("img/rainbowdifference.bmp"); //medianFilter(bmpB, 3); //bmpB->saveCopy("img/median3x3"); //medianFilter(bmpC, 7); //bmpC->saveCopy("img/median7x7"); return 0; }
GSM_Error GSM_ReadBitmapFile(char *FileName, GSM_MultiBitmap *bitmap) { FILE *file; unsigned char buffer[300]; GSM_Error error = ERR_FILENOTSUPPORTED; char *file_only_name; size_t len; file = fopen(FileName, "rb"); if (file == NULL) return ERR_CANTOPENFILE; file_only_name = strrchr(FileName, '/'); if (file_only_name == NULL) { file_only_name = strrchr(FileName, '\\'); } else { file_only_name++; } if (file_only_name == NULL) { file_only_name = FileName; } else { file_only_name++; } len = strlen(file_only_name); if (len > GSM_BITMAP_TEXT_LENGTH) { fclose(file); return ERR_MOREMEMORY; } EncodeUnicode(bitmap->Bitmap[0].Name, file_only_name, len); /* Read the header of the file. */ if (fread(buffer, 1, 9, file) != 9) { fclose(file); return ERR_FILENOTSUPPORTED; } rewind(file); bitmap->Bitmap[0].DefaultBitmap = FALSE; /* Attempt to identify filetype */ if (memcmp(buffer, "BM",2)==0) { error = loadbmp(file,bitmap); } else if (buffer[0] == 0x00 && buffer[1] == 0x00) { error = loadwbmp(file,bitmap); } else if (memcmp(buffer, "NLM",3)==0) { error = loadnlm(file,bitmap); } else if (memcmp(buffer, "NOL",3)==0) { error = loadnolngg(file,bitmap,TRUE); } else if (memcmp(buffer, "NGG",3)==0) { error = loadnolngg(file,bitmap,FALSE); } else if (memcmp(buffer, "FORM",4)==0) { error = loadnsl(file,bitmap); } else if (memcmp(buffer, "GIF",3)==0) { error = loadgif(file,bitmap); } fclose(file); return error; }
int loadgltexture(char *s,int *texture) { SDL_Surface *pic=loadbmp(s); /* load our texture */ glGenTextures(3,texture); /* create the texture */ /* create linear filtered texture */ glBindTexture(GL_TEXTURE_2D,texture[0]); glTexImage2D(GL_TEXTURE_2D,0,3,pic->w,pic->h,0,GL_BGR,GL_UNSIGNED_BYTE,pic->pixels); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); SDL_FreeSurface(pic); /* throw texture */ return 1; }
int loadgltexture(char *s,int *texture) { SDL_Surface *pic=loadbmp(s); /* load our texture */ glGenTextures(3,texture); /* create the texture */ /* create nearest filtered texture */ glBindTexture(GL_TEXTURE_2D,texture[0]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexImage2D(GL_TEXTURE_2D,0,3,pic->w,pic->h,0,GL_BGR,GL_UNSIGNED_BYTE,pic->pixels); /* create linear filtered texture */ glBindTexture(GL_TEXTURE_2D,texture[1]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexImage2D(GL_TEXTURE_2D,0,3,pic->w,pic->h,0,GL_BGR,GL_UNSIGNED_BYTE,pic->pixels); /* create mipmapped texture */ glBindTexture(GL_TEXTURE_2D,texture[2]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_NEAREST); gluBuild2DMipmaps(GL_TEXTURE_2D,3,pic->w,pic->h,GL_BGR,GL_UNSIGNED_BYTE,pic->pixels); /* build mipmap data! */ SDL_FreeSurface(pic); /* throw texture */ return 1; }
int main(void) { alt_u16 *pFrameBuffer; // システム初期化 IOWR(LED_7SEG_BASE, 0, ~0x71733d77); // FPGAと表示する IOWR(BLCON_BASE, 0, (0<<8)); // バックライトOFF systeminit(); // ファイルシステム初期化 mmcfs_setup(); // VGA初期化 nd_GsVgaInit(); pFrameBuffer = (alt_u16 *)alt_uncached_malloc(na_VRAM_size); if (pFrameBuffer == NULL) { printf("[!] Framebuffer assignment failed.\n"); return -1; } nd_GsVgaSetBuffer((nd_u32)pFrameBuffer); nd_GsEglPage((nd_u32)pFrameBuffer,(nd_u32)pFrameBuffer,0); nd_color(nd_COLORGRAY, 0, 256); nd_boxfill(0, 0, window_xmax, window_ymax); nd_color(nd_COLORWHITE, 0, 256); nd_line(0,0, 0,window_ymax); nd_color(nd_COLORRED, 0, 256); nd_line(window_xmax,0, window_xmax,window_ymax); nd_color(nd_COLORLIGHTGREEN, 0, 256); nd_line(0,0, window_xmax,0); nd_color(nd_COLORBLUE, 0, 256); nd_line(0,window_ymax, window_xmax,window_ymax); nd_GsVgaScanOn(); IOWR(BLCON_BASE, 0, (1<<8)|0); // バックライトON、輝度最大 // 画像を展開 loadbmp("mmcfs:/de0/test.bmp",pFrameBuffer); printf("done.\n"); while(1) {} // 終了処理 nd_GsVgaScanOff(); alt_uncached_free(pFrameBuffer); return 0; }
/*----DISPLAY FUNCTION-------------------------------------------------------------------------------*/ void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(myCam.vangle, 1.0, myCam.dnear, myCam.dfar); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(myCam.xeye, myCam.yeye, myCam.zeye, myCam.xref, myCam.yref, myCam.zref, myCam.Vx, myCam.Vy, myCam.Vz); Spot.on(); //turn on light if (Spot.getOn()) { glEnable(GL_DEPTH_TEST); // enable OpenGL depth buffer algorithm for hidden surface removal glEnable(GL_CULL_FACE); glEnable(GL_LIGHTING); glEnable( GL_NORMALIZE); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHT0); glCullFace(GL_BACK); glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); position[0] = Spot.lx; position[1] = Spot.ly; position[2] = Spot.lz; glLightfv(GL_LIGHT0, GL_POSITION, position); glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_ambient); glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess); glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); } else { glDisable(GL_LIGHTING); } //LOAD UP TEXTURES if (!texturesLoaded) { myImage = new Image(); char filename[] = "whiteline.bmp"; loadbmp(textures, filename, 0); char filename1[] = "greylines_left.bmp"; loadbmp(textures, filename1, 1); char filename2[] = "whiteline_left.bmp"; loadbmp(textures, filename2, 2); char filename3[] = "greylines.bmp"; loadbmp(textures, filename3, 3); char filename4[] = "Paddle_player.bmp"; loadbmp(textures, filename4, 4); char filename5[] = "Paddle_opponent.bmp"; loadbmp(textures, filename5, 5); if (whiteBackground) { backgroundColor(2); } else { backgroundColor(1); } myWorld.list[0]->textureID = 4; //player paddle myWorld.list[1]->textureID = 5; //opponent paddle texturesLoaded = true; //only need to load up textures once } myWorld.draw_world(); // draw all objects in the world Spot.draw(); //Print text to screen glDisable(GL_LIGHTING); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); gluOrtho2D(0.0, winWidth, 0.0, winHeight); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glColor3f(1.0, 1.0, 1.0); if (printStart) { //Print Start string start = "Start"; glRasterPos2f(380, 390); for (string::iterator i = start.begin(); i != start.end(); ++i) { char c = *i; glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, c); } } else { std::ostringstream l; l << "Level: " << level; string lv = l.str(); glRasterPos2f(20, 10); for (string::iterator i = lv.begin(); i != lv.end(); ++i) { char c = *i; glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, c); } std::ostringstream pl; pl << "Player Lives: " << playerLives; string player_lives = pl.str(); glRasterPos2f(20, 780); for (string::iterator i = player_lives.begin(); i != player_lives.end(); ++i) { char c = *i; glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, c); } std::ostringstream ol; ol << "Opponent Lives: " << aiLives; string ai_lives = ol.str(); glRasterPos2f(620, 780); for (string::iterator i = ai_lives.begin(); i != ai_lives.end(); ++i) { char c = *i; glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, c); } std::ostringstream sc; sc << "Score: " << score; string score_player = sc.str(); glRasterPos2f(660, 10); for (string::iterator i = score_player.begin(); i != score_player.end(); ++i) { char c = *i; glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, c); } } if (game_over) { string over = "Game Over"; glColor3f(1.0, 0.0, 0.0); glRasterPos2f(355, 390); for (string::iterator i = over.begin(); i != over.end(); ++i) { char c = *i; glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, c); } } glMatrixMode(GL_MODELVIEW); glPopMatrix(); glMatrixMode(GL_PROJECTION); glPopMatrix(); glEnable(GL_LIGHTING); glFlush(); glutSwapBuffers(); }
int main(int argc, char *argv[]) { unsigned char *srcbuf=NULL; int w, h, i, j; int minqual=-1, maxqual=-1; char *temp; int minarg=2; int retval=0; if((scalingfactors=tjGetScalingFactors(&nsf))==NULL || nsf==0) _throwtj("executing tjGetScalingFactors()"); if(argc<minarg) usage(argv[0]); temp=strrchr(argv[1], '.'); if(temp!=NULL) { if(!strcasecmp(temp, ".bmp")) ext="bmp"; if(!strcasecmp(temp, ".jpg") || !strcasecmp(temp, ".jpeg")) decomponly=1; } printf("\n"); if(argc>minarg) { for(i=minarg; i<argc; i++) { if(!strcasecmp(argv[i], "-yuvencode")) { printf("Testing YUV planar encoding\n\n"); yuv=YUVENCODE; maxqual=minqual=100; } if(!strcasecmp(argv[i], "-yuvdecode")) { printf("Testing YUV planar decoding\n\n"); yuv=YUVDECODE; } } } if(!decomponly && yuv!=YUVENCODE) { minarg=3; if(argc<minarg) usage(argv[0]); if((minqual=atoi(argv[2]))<1 || minqual>100) { puts("ERROR: Quality must be between 1 and 100."); exit(1); } if((temp=strchr(argv[2], '-'))!=NULL && strlen(temp)>1 && sscanf(&temp[1], "%d", &maxqual)==1 && maxqual>minqual && maxqual>=1 && maxqual<=100) {} else maxqual=minqual; } if(argc>minarg) { for(i=minarg; i<argc; i++) { if(!strcasecmp(argv[i], "-tile")) { dotile=1; xformopt|=TJXOPT_CROP; } if(!strcasecmp(argv[i], "-forcesse3")) { printf("Forcing SSE3 code\n\n"); flags|=TJFLAG_FORCESSE3; } if(!strcasecmp(argv[i], "-forcesse2")) { printf("Forcing SSE2 code\n\n"); flags|=TJFLAG_FORCESSE2; } if(!strcasecmp(argv[i], "-forcesse")) { printf("Forcing SSE code\n\n"); flags|=TJFLAG_FORCESSE; } if(!strcasecmp(argv[i], "-forcemmx")) { printf("Forcing MMX code\n\n"); flags|=TJFLAG_FORCEMMX; } if(!strcasecmp(argv[i], "-fastupsample")) { printf("Using fast upsampling code\n\n"); flags|=TJFLAG_FASTUPSAMPLE; } if(!strcasecmp(argv[i], "-rgb")) pf=TJPF_RGB; if(!strcasecmp(argv[i], "-rgbx")) pf=TJPF_RGBX; if(!strcasecmp(argv[i], "-bgr")) pf=TJPF_BGR; if(!strcasecmp(argv[i], "-bgrx")) pf=TJPF_BGRX; if(!strcasecmp(argv[i], "-xbgr")) pf=TJPF_XBGR; if(!strcasecmp(argv[i], "-xrgb")) pf=TJPF_XRGB; if(!strcasecmp(argv[i], "-bottomup")) flags|=TJFLAG_BOTTOMUP; if(!strcasecmp(argv[i], "-quiet")) quiet=1; if(!strcasecmp(argv[i], "-qq")) quiet=2; if(!strcasecmp(argv[i], "-scale") && i<argc-1) { int temp1=0, temp2=0, match=0; if(sscanf(argv[++i], "%d/%d", &temp1, &temp2)==2) { for(j=0; j<nsf; j++) { if(temp1==scalingfactors[j].num && temp2==scalingfactors[j].denom) { sf=scalingfactors[j]; match=1; break; } } if(!match) usage(argv[0]); } else usage(argv[0]); } if(!strcasecmp(argv[i], "-hflip")) xformop=TJXOP_HFLIP; if(!strcasecmp(argv[i], "-vflip")) xformop=TJXOP_VFLIP; if(!strcasecmp(argv[i], "-transpose")) xformop=TJXOP_TRANSPOSE; if(!strcasecmp(argv[i], "-transverse")) xformop=TJXOP_TRANSVERSE; if(!strcasecmp(argv[i], "-rot90")) xformop=TJXOP_ROT90; if(!strcasecmp(argv[i], "-rot180")) xformop=TJXOP_ROT180; if(!strcasecmp(argv[i], "-rot270")) xformop=TJXOP_ROT270; if(!strcasecmp(argv[i], "-grayscale")) xformopt|=TJXOPT_GRAY; if(!strcasecmp(argv[i], "-benchtime") && i<argc-1) { double temp=atof(argv[++i]); if(temp>0.0) benchtime=temp; else usage(argv[0]); } if(!strcmp(argv[i], "-?")) usage(argv[0]); if(!strcasecmp(argv[i], "-alloc")) flags&=(~TJFLAG_NOREALLOC); if(!strcasecmp(argv[i], "-bmp")) ext="bmp"; } } if((sf.num!=1 || sf.denom!=1) && dotile) { printf("Disabling tiled compression/decompression tests, because those tests do not\n"); printf("work when scaled decompression is enabled.\n"); dotile=0; } if(yuv && dotile) { printf("Disabling tiled compression/decompression tests, because those tests do not\n"); printf("work when YUV encoding or decoding is enabled.\n\n"); dotile=0; } if(!decomponly) { if(loadbmp(argv[1], &srcbuf, &w, &h, pf, (flags&TJFLAG_BOTTOMUP)!=0)==-1) _throwbmp("loading bitmap"); temp=strrchr(argv[1], '.'); if(temp!=NULL) *temp='\0'; } if(quiet==1 && !decomponly) { printf("All performance values in Mpixels/sec\n\n"); printf("Bitmap\tBitmap\tJPEG\tJPEG\t%s %s \tComp\tComp\tDecomp\n", dotile? "Tile ":"Image", dotile? "Tile ":"Image"); printf("Format\tOrder\tSubsamp\tQual\tWidth Height\tPerf \tRatio\tPerf\n\n"); } if(decomponly) { dodecomptest(argv[1]); printf("\n"); goto bailout; } for(i=maxqual; i>=minqual; i--) dotest(srcbuf, w, h, TJ_GRAYSCALE, i, argv[1]); printf("\n"); for(i=maxqual; i>=minqual; i--) dotest(srcbuf, w, h, TJ_420, i, argv[1]); printf("\n"); for(i=maxqual; i>=minqual; i--) dotest(srcbuf, w, h, TJ_422, i, argv[1]); printf("\n"); for(i=maxqual; i>=minqual; i--) dotest(srcbuf, w, h, TJ_444, i, argv[1]); printf("\n"); bailout: if(srcbuf) free(srcbuf); return retval; }
int main(int argc, char *argv[]) { unsigned char *srcbuf=NULL; int w=0, h=0, i, j; int minqual=-1, maxqual=-1; char *temp; int minarg=2, retval=0, subsamp=-1; if((scalingfactors=tjGetScalingFactors(&nsf))==NULL || nsf==0) _throwtj("executing tjGetScalingFactors()"); if(argc<minarg) usage(argv[0]); temp=strrchr(argv[1], '.'); if(temp!=NULL) { if(!strcasecmp(temp, ".bmp")) ext="bmp"; if(!strcasecmp(temp, ".jpg") || !strcasecmp(temp, ".jpeg")) decomponly=1; } printf("\n"); if(!decomponly) { minarg=3; if(argc<minarg) usage(argv[0]); if((minqual=atoi(argv[2]))<1 || minqual>100) { puts("ERROR: Quality must be between 1 and 100."); exit(1); } if((temp=strchr(argv[2], '-'))!=NULL && strlen(temp)>1 && sscanf(&temp[1], "%d", &maxqual)==1 && maxqual>minqual && maxqual>=1 && maxqual<=100) {} else maxqual=minqual; } if(argc>minarg) { for(i=minarg; i<argc; i++) { if(!strcasecmp(argv[i], "-tile")) { dotile=1; xformopt|=TJXOPT_CROP; } if(!strcasecmp(argv[i], "-fastupsample")) { printf("Using fast upsampling code\n\n"); flags|=TJFLAG_FASTUPSAMPLE; } if(!strcasecmp(argv[i], "-fastdct")) { printf("Using fastest DCT/IDCT algorithm\n\n"); flags|=TJFLAG_FASTDCT; } if(!strcasecmp(argv[i], "-accuratedct")) { printf("Using most accurate DCT/IDCT algorithm\n\n"); flags|=TJFLAG_ACCURATEDCT; } if(!strcasecmp(argv[i], "-rgb")) pf=TJPF_RGB; if(!strcasecmp(argv[i], "-rgbx")) pf=TJPF_RGBX; if(!strcasecmp(argv[i], "-bgr")) pf=TJPF_BGR; if(!strcasecmp(argv[i], "-bgrx")) pf=TJPF_BGRX; if(!strcasecmp(argv[i], "-xbgr")) pf=TJPF_XBGR; if(!strcasecmp(argv[i], "-xrgb")) pf=TJPF_XRGB; if(!strcasecmp(argv[i], "-cmyk")) pf=TJPF_CMYK; if(!strcasecmp(argv[i], "-bottomup")) flags|=TJFLAG_BOTTOMUP; if(!strcasecmp(argv[i], "-quiet")) quiet=1; if(!strcasecmp(argv[i], "-qq")) quiet=2; if(!strcasecmp(argv[i], "-scale") && i<argc-1) { int temp1=0, temp2=0, match=0; if(sscanf(argv[++i], "%d/%d", &temp1, &temp2)==2) { for(j=0; j<nsf; j++) { if((double)temp1/(double)temp2 == (double)scalingfactors[j].num/(double)scalingfactors[j].denom) { sf=scalingfactors[j]; match=1; break; } } if(!match) usage(argv[0]); } else usage(argv[0]); } if(!strcasecmp(argv[i], "-hflip")) xformop=TJXOP_HFLIP; if(!strcasecmp(argv[i], "-vflip")) xformop=TJXOP_VFLIP; if(!strcasecmp(argv[i], "-transpose")) xformop=TJXOP_TRANSPOSE; if(!strcasecmp(argv[i], "-transverse")) xformop=TJXOP_TRANSVERSE; if(!strcasecmp(argv[i], "-rot90")) xformop=TJXOP_ROT90; if(!strcasecmp(argv[i], "-rot180")) xformop=TJXOP_ROT180; if(!strcasecmp(argv[i], "-rot270")) xformop=TJXOP_ROT270; if(!strcasecmp(argv[i], "-grayscale")) xformopt|=TJXOPT_GRAY; if(!strcasecmp(argv[i], "-custom")) customFilter=dummyDCTFilter; if(!strcasecmp(argv[i], "-nooutput")) xformopt|=TJXOPT_NOOUTPUT; if(!strcasecmp(argv[i], "-benchtime") && i<argc-1) { double temp=atof(argv[++i]); if(temp>0.0) benchtime=temp; else usage(argv[0]); } if(!strcasecmp(argv[i], "-warmup") && i<argc-1) { int temp=atoi(argv[++i]); if(temp>=0) { warmup=temp; printf("Warmup runs = %d\n\n", warmup); } else usage(argv[0]); } if(!strcmp(argv[i], "-?")) usage(argv[0]); if(!strcasecmp(argv[i], "-alloc")) flags&=(~TJFLAG_NOREALLOC); if(!strcasecmp(argv[i], "-bmp")) ext="bmp"; if(!strcasecmp(argv[i], "-yuv")) { printf("Testing YUV planar encoding/decoding\n\n"); doyuv=1; } if(!strcasecmp(argv[i], "-yuvpad") && i<argc-1) { int temp=atoi(argv[++i]); if(temp>=1) yuvpad=temp; } if(!strcasecmp(argv[i], "-subsamp") && i<argc-1) { i++; if(toupper(argv[i][0])=='G') subsamp=TJSAMP_GRAY; else { int temp=atoi(argv[i]); switch(temp) { case 444: subsamp=TJSAMP_444; break; case 422: subsamp=TJSAMP_422; break; case 440: subsamp=TJSAMP_440; break; case 420: subsamp=TJSAMP_420; break; case 411: subsamp=TJSAMP_411; break; } } } if(!strcasecmp(argv[i], "-componly")) componly=1; } } if((sf.num!=1 || sf.denom!=1) && dotile) { printf("Disabling tiled compression/decompression tests, because those tests do not\n"); printf("work when scaled decompression is enabled.\n"); dotile=0; } if((flags&TJFLAG_NOREALLOC)==0 && dotile) { printf("Disabling tiled compression/decompression tests, because those tests do not\n"); printf("work when dynamic JPEG buffer allocation is enabled.\n\n"); dotile=0; } if(!decomponly) { if(loadbmp(argv[1], &srcbuf, &w, &h, pf, (flags&TJFLAG_BOTTOMUP)!=0)==-1) _throwbmp("loading bitmap"); temp=strrchr(argv[1], '.'); if(temp!=NULL) *temp='\0'; } if(quiet==1 && !decomponly) { printf("All performance values in Mpixels/sec\n\n"); printf("Bitmap JPEG JPEG %s %s ", dotile? "Tile ":"Image", dotile? "Tile ":"Image"); if(doyuv) printf("Encode "); printf("Comp Comp Decomp "); if(doyuv) printf("Decode"); printf("\n"); printf("Format Subsamp Qual Width Height "); if(doyuv) printf("Perf "); printf("Perf Ratio Perf "); if(doyuv) printf("Perf"); printf("\n\n"); } if(decomponly) { decompTest(argv[1]); printf("\n"); goto bailout; } if(subsamp>=0 && subsamp<TJ_NUMSAMP) { for(i=maxqual; i>=minqual; i--) fullTest(srcbuf, w, h, subsamp, i, argv[1]); printf("\n"); } else { if(pf!=TJPF_CMYK) { for(i=maxqual; i>=minqual; i--) fullTest(srcbuf, w, h, TJSAMP_GRAY, i, argv[1]); printf("\n"); } for(i=maxqual; i>=minqual; i--) fullTest(srcbuf, w, h, TJSAMP_420, i, argv[1]); printf("\n"); for(i=maxqual; i>=minqual; i--) fullTest(srcbuf, w, h, TJSAMP_422, i, argv[1]); printf("\n"); for(i=maxqual; i>=minqual; i--) fullTest(srcbuf, w, h, TJSAMP_444, i, argv[1]); printf("\n"); } bailout: if(srcbuf) free(srcbuf); return retval; }