image: Add option to change resize algoritm

Also benchmark timing is now done cpu clock, not monotonic one
This commit is contained in:
Bananymous 2026-01-06 16:13:40 +02:00
parent bc11469a0b
commit 3ad053cf6d
1 changed files with 10 additions and 5 deletions

View File

@ -78,6 +78,7 @@ int main(int argc, char** argv)
if (argc < 2)
return usage(argv[0], 1);
auto alg = LibImage::Image::ResizeAlgorithm::Cubic;
bool scale = false;
bool benchmark = false;
for (int i = 1; i < argc - 1; i++)
@ -86,6 +87,10 @@ int main(int argc, char** argv)
scale = true;
else if (strcmp(argv[i], "-b") == 0 || strcmp(argv[i], "--benchmark") == 0)
benchmark = true;
else if (strcmp(argv[i], "-l") == 0 || strcmp(argv[i], "--linear") == 0)
alg = LibImage::Image::ResizeAlgorithm::Linear;
else if (strcmp(argv[i], "-c") == 0 || strcmp(argv[i], "--cubic") == 0)
alg = LibImage::Image::ResizeAlgorithm::Cubic;
else if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0)
return usage(argv[0], 0);
else
@ -95,9 +100,9 @@ int main(int argc, char** argv)
auto image_path = BAN::StringView(argv[argc - 1]);
timespec load_start, load_end;
clock_gettime(CLOCK_MONOTONIC, &load_start);
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &load_start);
auto image_or_error = LibImage::Image::load_from_file(image_path);
clock_gettime(CLOCK_MONOTONIC, &load_end);
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &load_end);
if (image_or_error.is_error())
{
@ -120,9 +125,9 @@ int main(int argc, char** argv)
{
timespec scale_start, scale_end;
clock_gettime(CLOCK_MONOTONIC, &scale_start);
auto scaled = MUST(image_or_error.value()->resize(1920, 1080, LibImage::Image::ResizeAlgorithm::Linear));
clock_gettime(CLOCK_MONOTONIC, &scale_end);
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &scale_start);
auto scaled = MUST(image_or_error.value()->resize(1920, 1080, alg));
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &scale_end);
const uint64_t start_ms = scale_start.tv_sec * 1000 + scale_start.tv_nsec / 1'000'000;
const uint64_t end_ms = scale_end.tv_sec * 1000 + scale_end.tv_nsec / 1'000'000;