in tjunittest.c [1144:1219]
int main(int argc, char *argv[])
{
int i, bmp = 0, num4bf = 5;
#ifdef _WIN32
srand((unsigned int)time(NULL));
#endif
if (argc > 1) {
for (i = 1; i < argc; i++) {
if (!strcasecmp(argv[i], "-yuv")) doYUV = 1;
else if (!strcasecmp(argv[i], "-noyuvpad")) yuvAlign = 1;
else if (!strcasecmp(argv[i], "-lossless")) lossless = 1;
else if (!strcasecmp(argv[i], "-alloc")) alloc = 1;
else if (!strcasecmp(argv[i], "-bmp")) bmp = 1;
else if (!strcasecmp(argv[i], "-precision") && i < argc - 1) {
int tempi = atoi(argv[++i]);
if (tempi != 8 && tempi != 12 && tempi != 16)
usage(argv[0]);
precision = tempi;
if (precision == 16) lossless = 1;
} else
usage(argv[0]);
}
}
if (lossless && doYUV)
THROW("Lossless JPEG and YUV encoding/decoding are incompatible.");
if (precision != 8 && doYUV)
THROW("YUV encoding/decoding requires 8-bit data precision.");
printf("Testing %d-bit precision\n", precision);
sampleSize = (precision == 8 ? sizeof(unsigned char) : sizeof(short));
maxSample = (1 << precision) - 1;
tolerance = (lossless ? 0 : (precision > 8 ? 2 : 1));
redToY = (19595U * maxSample) >> 16;
yellowToY = (58065U * maxSample) >> 16;
if (bmp) return bmpTest();
if (alloc) printf("Testing automatic buffer allocation\n");
if (doYUV) num4bf = 4;
overflowTest();
doTest(35, 39, _3sampleFormats, 2, TJSAMP_444, "test");
doTest(39, 41, _4sampleFormats, num4bf, TJSAMP_444, "test");
doTest(41, 35, _3sampleFormats, 2, TJSAMP_422, "test");
if (!lossless) {
doTest(35, 39, _4sampleFormats, num4bf, TJSAMP_422, "test");
doTest(39, 41, _3sampleFormats, 2, TJSAMP_420, "test");
doTest(41, 35, _4sampleFormats, num4bf, TJSAMP_420, "test");
doTest(35, 39, _3sampleFormats, 2, TJSAMP_440, "test");
doTest(39, 41, _4sampleFormats, num4bf, TJSAMP_440, "test");
doTest(41, 35, _3sampleFormats, 2, TJSAMP_411, "test");
doTest(35, 39, _4sampleFormats, num4bf, TJSAMP_411, "test");
doTest(39, 41, _3sampleFormats, 2, TJSAMP_441, "test");
doTest(41, 35, _4sampleFormats, num4bf, TJSAMP_441, "test");
}
doTest(39, 41, _onlyGray, 1, TJSAMP_GRAY, "test");
if (!lossless) {
doTest(41, 35, _3sampleFormats, 2, TJSAMP_GRAY, "test");
doTest(35, 39, _4sampleFormats, 4, TJSAMP_GRAY, "test");
}
bufSizeTest();
if (doYUV) {
printf("\n--------------------\n\n");
doTest(48, 48, _onlyRGB, 1, TJSAMP_444, "test_yuv0");
doTest(48, 48, _onlyRGB, 1, TJSAMP_422, "test_yuv0");
doTest(48, 48, _onlyRGB, 1, TJSAMP_420, "test_yuv0");
doTest(48, 48, _onlyRGB, 1, TJSAMP_440, "test_yuv0");
doTest(48, 48, _onlyRGB, 1, TJSAMP_411, "test_yuv0");
doTest(48, 48, _onlyRGB, 1, TJSAMP_441, "test_yuv0");
doTest(48, 48, _onlyRGB, 1, TJSAMP_GRAY, "test_yuv0");
doTest(48, 48, _onlyGray, 1, TJSAMP_GRAY, "test_yuv0");
}
bailout:
return exitStatus;
}