in tjunittest.c [593:649]
static void doTest(int w, int h, const int *formats, int nformats, int subsamp,
char *basename)
{
tjhandle chandle = NULL, dhandle = NULL;
unsigned char *dstBuf = NULL;
size_t size = 0;
int pfi, pf, i;
if (lossless && subsamp != TJSAMP_GRAY)
subsamp = TJSAMP_444;
if (!alloc)
size = tj3JPEGBufSize(w, h, subsamp);
if (size != 0)
if ((dstBuf = (unsigned char *)tj3Alloc(size)) == NULL)
THROW("Memory allocation failure.");
if ((chandle = tj3Init(TJINIT_COMPRESS)) == NULL ||
(dhandle = tj3Init(TJINIT_DECOMPRESS)) == NULL)
THROW_TJ(NULL);
TRY_TJ(chandle, tj3Set(chandle, TJPARAM_NOREALLOC, !alloc));
if (lossless) {
TRY_TJ(chandle, tj3Set(chandle, TJPARAM_LOSSLESS, lossless));
TRY_TJ(chandle, tj3Set(chandle, TJPARAM_LOSSLESSPSV,
((psv++ - 1) % 7) + 1));
} else {
TRY_TJ(chandle, tj3Set(chandle, TJPARAM_QUALITY, 100));
if (subsamp == TJSAMP_422 || subsamp == TJSAMP_420 ||
subsamp == TJSAMP_440 || subsamp == TJSAMP_411 ||
subsamp == TJSAMP_441)
TRY_TJ(dhandle, tj3Set(dhandle, TJPARAM_FASTUPSAMPLE, 1));
}
TRY_TJ(chandle, tj3Set(chandle, TJPARAM_SUBSAMP, subsamp));
for (pfi = 0; pfi < nformats; pfi++) {
for (i = 0; i < 2; i++) {
TRY_TJ(chandle, tj3Set(chandle, TJPARAM_BOTTOMUP, i == 1));
TRY_TJ(dhandle, tj3Set(dhandle, TJPARAM_BOTTOMUP, i == 1));
pf = formats[pfi];
compTest(chandle, &dstBuf, &size, w, h, pf, basename);
decompTest(dhandle, dstBuf, size, w, h, pf, basename, subsamp);
if (pf >= TJPF_RGBX && pf <= TJPF_XRGB) {
printf("\n");
decompTest(dhandle, dstBuf, size, w, h, pf + (TJPF_RGBA - TJPF_RGBX),
basename, subsamp);
}
printf("\n");
}
}
printf("--------------------\n\n");
bailout:
tj3Destroy(chandle);
tj3Destroy(dhandle);
tj3Free(dstBuf);
}