Tasmota/lib/libesp32/JPEGDEC/linux/examples/jpeg_perf_test/main.cpp
2025-11-15 15:32:38 +01:00

63 lines
1.6 KiB
C++

//
// Perf Test
//
#include <JPEGDEC.h>
#include <time.h>
#include "../../../test_images/tulips.h" // 640x480 56k byte test image
JPEGDEC jpeg;
long micros(void)
{
int iTime;
struct timespec res;
clock_gettime(CLOCK_MONOTONIC, &res);
iTime = 1000000*res.tv_sec + res.tv_nsec/1000;
return (long)iTime;
} /* micros() */
int JPEGDraw(JPEGDRAW *pDraw)
{
// do nothing
return 1; // continue decode
} /* JPEGDraw() */
int main(int argc, char *argv[]) {
long lTime;
if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
lTime = micros();
if (jpeg.decode(0,0,0)) { // full sized decode
lTime = micros() - lTime;
printf("full sized decode in %d us\n", (int)lTime);
}
jpeg.close();
}
if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
lTime = micros();
if (jpeg.decode(0,0,JPEG_SCALE_HALF)) { // 1/2 sized decode
lTime = micros() - lTime;
printf("half sized decode in %d us\n", (int)lTime);
}
jpeg.close();
}
if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
lTime = micros();
if (jpeg.decode(0,0,JPEG_SCALE_QUARTER)) { // 1/4 sized decode
lTime = micros() - lTime;
printf("quarter sized decode in %d us\n", (int)lTime);
}
jpeg.close();
}
if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
lTime = micros();
if (jpeg.decode(0,0,JPEG_SCALE_EIGHTH)) { // 1/8 sized decode
lTime = micros() - lTime;
printf("eighth sized decode in %d us\n", (int)lTime);
}
jpeg.close();
}
return 0;
} /* main() */