Blame extras/webp_quality.c
|
Packit |
9c6abc |
// Simple tool to roughly evaluate the quality encoding of a webp bitstream
|
|
Packit |
9c6abc |
//
|
|
Packit |
9c6abc |
// Result is a *rough* estimation of the quality. You should just consider
|
|
Packit |
9c6abc |
// the bucket it's in (q > 80? > 50? > 20?) and not take it for face value.
|
|
Packit |
9c6abc |
/*
|
|
Packit |
9c6abc |
gcc -o webp_quality webp_quality.c -O3 -I../ -L. -L../imageio \
|
|
Packit |
9c6abc |
-limageio_util -lwebpextras -lwebp -lm -lpthread
|
|
Packit |
9c6abc |
*/
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
#include <stdio.h>
|
|
Packit |
9c6abc |
#include <stdlib.h>
|
|
Packit |
9c6abc |
#include <string.h>
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
#include "extras/extras.h"
|
|
Packit |
9c6abc |
#include "imageio/imageio_util.h"
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
int main(int argc, const char *argv[]) {
|
|
Packit |
9c6abc |
int c;
|
|
Packit |
9c6abc |
int quiet = 0;
|
|
Packit |
9c6abc |
int ok = 1;
|
|
Packit |
9c6abc |
for (c = 1; ok && c < argc; ++c) {
|
|
Packit |
9c6abc |
if (!strcmp(argv[c], "-quiet")) {
|
|
Packit |
9c6abc |
quiet = 1;
|
|
Packit |
9c6abc |
} else if (!strcmp(argv[c], "-help") || !strcmp(argv[c], "-h")) {
|
|
Packit |
9c6abc |
printf("webp_quality [-h][-quiet] webp_files...\n");
|
|
Packit |
9c6abc |
return 0;
|
|
Packit |
9c6abc |
} else {
|
|
Packit |
9c6abc |
const char* const filename = argv[c];
|
|
Packit |
9c6abc |
const uint8_t* data = NULL;
|
|
Packit |
9c6abc |
size_t data_size = 0;
|
|
Packit |
9c6abc |
int q;
|
|
Packit |
9c6abc |
ok = ImgIoUtilReadFile(filename, &data, &data_size);
|
|
Packit |
9c6abc |
if (!ok) break;
|
|
Packit |
9c6abc |
q = VP8EstimateQuality(data, data_size);
|
|
Packit |
9c6abc |
if (!quiet) printf("[%s] ", filename);
|
|
Packit |
9c6abc |
if (q < 0) {
|
|
Packit |
9c6abc |
fprintf(stderr, "Not a WebP file, or not a lossy WebP file.\n");
|
|
Packit |
9c6abc |
ok = 0;
|
|
Packit |
9c6abc |
} else {
|
|
Packit |
9c6abc |
if (!quiet) {
|
|
Packit |
9c6abc |
printf("Estimated quality factor: %d\n", q);
|
|
Packit |
9c6abc |
} else {
|
|
Packit |
9c6abc |
printf("%d\n", q); // just print the number
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
free((void*)data);
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
return ok ? 0 : 1;
|
|
Packit |
9c6abc |
}
|