这段代码是想实现用JPEG解压,获得dct系数,里面有个“ijgdct.h”头文件一直找不到……求大神帮忙~
#include
#include
extern"C"{
#include"jpeglib.h"
}
#include"jerror.h"
#include"ijgdct.h"
typedefintboolean;
#defineTRUE1
#defineFALSE0
intmain(intargc,char**argv)
{
structjpeg_decompress_structcinfo;
structjpeg_error_mgrjerr;
//jvirt_barray_ptr*coeff_arrays=(jvirt_barray_ptr*)malloc(sizeof(jvirt_barray_ptr)*3);
jvirt_barray_ptr*coeff_arrays;
intci,by,bx,bi;
intarg_index=0;
booleanquantization_matrix=TRUE;
booleandequantize=FALSE;FILE*infile;
if(argc!=2&&argc!=3)
{
printf("Usage:\n\t%s[-dequantize]file.jpg\n",argv[0]);
return0;
}
if(!strncmp(argv[1],"-dequantize",11))
{
arg_index=1;
dequantize=TRUE;
}
//Createdecompressionobject.
cinfo.err=jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
if((infile=fopen(argv[arg_index+1],"rb"))==NULL)
{
fprintf(stderr,"Can'topen%s\n",argv[1]);
exit(1);
}
jpeg_stdio_src(&cinfo,infile);
//Getallcompressionparameters.
jpeg_read_header(&cinfo,TRUE);
//Readcoefficients.
coeff_arrays=jpeg_read_coefficients(&cinfo);
//Fillvirtualarrays.
printf("Fillvirtual\n");
for(ci=0;ciquant_table->quantval[bi]);
}
printf("\n");
}
int*block=(int*)malloc(sizeof(int)*64);
for(by=0;byheight_in_blocks;by++)
{
buffer=(cinfo.mem->access_virt_barray)((j_common_ptr)&cinfo,coeff_arrays[ci],by,(JDIMENSION)1,FALSE);
for(bx=0;bxwidth_in_blocks;bx++)
{
printf("(%d,%d)\n",bx,by);
blockptr=buffer[0][bx];
printf("%d,%d\n",bx,by);
for(bi=0;biquant_table->quantval[bi]):blockptr[bi]);
block[bi]=(int)blockptr[bi]*(int)compptr->quant_table->quantval[bi];
}
printf("\n");
intclips=block_idct(block);
if(clips&1)
printf("Clipsat255\n");
if(clips&2)
printf("Clipsat0\n");
for(bi=0;bi
分 -->
|