testprograms: parse arguments using SDLTest_CommonState
This commit is contained in:
committed by
Anonymous Maarten
parent
8bea41f737
commit
4a6528e3f0
152
test/testyuv.c
152
test/testyuv.c
@@ -11,8 +11,9 @@
|
||||
*/
|
||||
#include <SDL3/SDL.h>
|
||||
#include <SDL3/SDL_main.h>
|
||||
#include <SDL3/SDL_test_font.h>
|
||||
#include <SDL3/SDL_test.h>
|
||||
#include "testyuv_cvt.h"
|
||||
#include "testutils.h"
|
||||
|
||||
/* 422 (YUY2, etc) formats are the largest */
|
||||
#define MAX_YUV_SURFACE_SIZE(W, H, P) (H * 4 * (W + P + 1) / 2)
|
||||
@@ -239,8 +240,7 @@ int main(int argc, char **argv)
|
||||
{ SDL_TRUE, 33, 3 },
|
||||
{ SDL_TRUE, 37, 3 },
|
||||
};
|
||||
int arg = 1;
|
||||
const char *filename;
|
||||
char *filename = NULL;
|
||||
SDL_Surface *original;
|
||||
SDL_Surface *converted;
|
||||
SDL_Window *window;
|
||||
@@ -256,58 +256,106 @@ int main(int argc, char **argv)
|
||||
int pitch;
|
||||
Uint8 *raw_yuv;
|
||||
Uint64 then, now;
|
||||
Uint32 i, iterations = 100;
|
||||
int i, iterations = 100;
|
||||
SDL_bool should_run_automated_tests = SDL_FALSE;
|
||||
SDLTest_CommonState *state;
|
||||
|
||||
while (argv[arg] && *argv[arg] == '-') {
|
||||
if (SDL_strcmp(argv[arg], "--jpeg") == 0) {
|
||||
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_JPEG);
|
||||
} else if (SDL_strcmp(argv[arg], "--bt601") == 0) {
|
||||
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_BT601);
|
||||
} else if (SDL_strcmp(argv[arg], "--bt709") == 0) {
|
||||
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_BT709);
|
||||
} else if (SDL_strcmp(argv[arg], "--auto") == 0) {
|
||||
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_AUTOMATIC);
|
||||
} else if (SDL_strcmp(argv[arg], "--yv12") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_YV12;
|
||||
} else if (SDL_strcmp(argv[arg], "--iyuv") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_IYUV;
|
||||
} else if (SDL_strcmp(argv[arg], "--yuy2") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_YUY2;
|
||||
} else if (SDL_strcmp(argv[arg], "--uyvy") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_UYVY;
|
||||
} else if (SDL_strcmp(argv[arg], "--yvyu") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_YVYU;
|
||||
} else if (SDL_strcmp(argv[arg], "--nv12") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_NV12;
|
||||
} else if (SDL_strcmp(argv[arg], "--nv21") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_NV21;
|
||||
} else if (SDL_strcmp(argv[arg], "--rgb555") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_RGB555;
|
||||
} else if (SDL_strcmp(argv[arg], "--rgb565") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_RGB565;
|
||||
} else if (SDL_strcmp(argv[arg], "--rgb24") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_RGB24;
|
||||
} else if (SDL_strcmp(argv[arg], "--argb") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_ARGB8888;
|
||||
} else if (SDL_strcmp(argv[arg], "--abgr") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_ABGR8888;
|
||||
} else if (SDL_strcmp(argv[arg], "--rgba") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_RGBA8888;
|
||||
} else if (SDL_strcmp(argv[arg], "--bgra") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_BGRA8888;
|
||||
} else if (SDL_strcmp(argv[arg], "--automated") == 0) {
|
||||
should_run_automated_tests = SDL_TRUE;
|
||||
} else {
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Usage: %s [--jpeg|--bt601|-bt709|--auto] [--yv12|--iyuv|--yuy2|--uyvy|--yvyu|--nv12|--nv21] [--rgb555|--rgb565|--rgb24|--argb|--abgr|--rgba|--bgra] [image_filename]\n", argv[0]);
|
||||
/* Initialize test framework */
|
||||
state = SDLTest_CommonCreateState(argv, 0);
|
||||
if (state == NULL) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Enable standard application logging */
|
||||
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
||||
|
||||
/* Parse commandline */
|
||||
for (i = 1; i < argc;) {
|
||||
int consumed;
|
||||
|
||||
consumed = SDLTest_CommonArg(state, i);
|
||||
if (!consumed) {
|
||||
if (SDL_strcmp(argv[i], "--jpeg") == 0) {
|
||||
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_JPEG);
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--bt601") == 0) {
|
||||
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_BT601);
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--bt709") == 0) {
|
||||
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_BT709);
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--auto") == 0) {
|
||||
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_AUTOMATIC);
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--yv12") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_YV12;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--iyuv") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_IYUV;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--yuy2") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_YUY2;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--uyvy") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_UYVY;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--yvyu") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_YVYU;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--nv12") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_NV12;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--nv21") == 0) {
|
||||
yuv_format = SDL_PIXELFORMAT_NV21;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--rgb555") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_RGB555;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--rgb565") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_RGB565;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--rgb24") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_RGB24;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--argb") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_ARGB8888;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--abgr") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_ABGR8888;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--rgba") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_RGBA8888;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--bgra") == 0) {
|
||||
rgb_format = SDL_PIXELFORMAT_BGRA8888;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcmp(argv[i], "--automated") == 0) {
|
||||
should_run_automated_tests = SDL_TRUE;
|
||||
consumed = 1;
|
||||
} else if (!filename) {
|
||||
filename = argv[i];
|
||||
consumed = 1;
|
||||
}
|
||||
}
|
||||
if (consumed <= 0) {
|
||||
static const char *options[] = {
|
||||
"[--jpeg|--bt601|-bt709|--auto]",
|
||||
"[--yv12|--iyuv|--yuy2|--uyvy|--yvyu|--nv12|--nv21]",
|
||||
"[--rgb555|--rgb565|--rgb24|--argb|--abgr|--rgba|--bgra]",
|
||||
"[--automated]",
|
||||
"[sample.bmp]",
|
||||
NULL,
|
||||
};
|
||||
SDLTest_CommonLogUsage(state, argv[0], options);
|
||||
SDLTest_CommonDestroyState(state);
|
||||
return 1;
|
||||
}
|
||||
++arg;
|
||||
i += consumed;
|
||||
}
|
||||
|
||||
/* Run automated tests */
|
||||
if (should_run_automated_tests) {
|
||||
for (i = 0; i < SDL_arraysize(automated_test_params); ++i) {
|
||||
for (i = 0; i < (int)SDL_arraysize(automated_test_params); ++i) {
|
||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Running automated test, pattern size %d, extra pitch %d, intrinsics %s\n",
|
||||
automated_test_params[i].pattern_size,
|
||||
automated_test_params[i].extra_pitch,
|
||||
@@ -319,11 +367,7 @@ int main(int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argv[arg]) {
|
||||
filename = argv[arg];
|
||||
} else {
|
||||
filename = "testyuv.bmp";
|
||||
}
|
||||
filename = GetResourceFilename(filename, "testyuv.bmp");
|
||||
original = SDL_ConvertSurfaceFormat(SDL_LoadBMP(filename), SDL_PIXELFORMAT_RGB24);
|
||||
if (original == NULL) {
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s\n", filename, SDL_GetError());
|
||||
@@ -347,7 +391,7 @@ int main(int argc, char **argv)
|
||||
SDL_ConvertPixels(original->w, original->h, yuv_format, raw_yuv, pitch, rgb_format, converted->pixels, converted->pitch);
|
||||
}
|
||||
now = SDL_GetTicks();
|
||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "%" SDL_PRIu32 " iterations in %" SDL_PRIu64 " ms, %.2fms each\n", iterations, (now - then), (float)(now - then) / iterations);
|
||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "%d iterations in %" SDL_PRIu64 " ms, %.2fms each\n", iterations, (now - then), (float)(now - then) / iterations);
|
||||
|
||||
window = SDL_CreateWindow("YUV test", original->w, original->h, 0);
|
||||
if (window == NULL) {
|
||||
@@ -437,6 +481,8 @@ int main(int argc, char **argv)
|
||||
SDL_Delay(10);
|
||||
}
|
||||
}
|
||||
SDL_free(filename);
|
||||
SDL_Quit();
|
||||
SDLTest_CommonDestroyState(state);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user