add version getters for decoder and encoder

WebPGetDecoderVersion() and WebPGetEncoderVersion()
will not return 0.1.2 encoded as 0x000102

dwebp and cwebp also have a new "-version" flag

Change-Id: I4fb4b5a8fc4e53681a386ff4b74fffb639fa237a
This commit is contained in:
Pascal Massimino 2011-03-24 16:17:10 -07:00
parent be4867d2f8
commit 650ffa3bbb
8 changed files with 43 additions and 1 deletions

View File

@ -594,6 +594,7 @@ static void HelpLong() {
printf("\n"); printf("\n");
printf(" -short ................. condense printed message\n"); printf(" -short ................. condense printed message\n");
printf(" -quiet ................. don't print anything.\n"); printf(" -quiet ................. don't print anything.\n");
printf(" -version ............... print version number and exit.\n");
printf(" -v ..................... verbose, e.g. print encoding/decoding " printf(" -v ..................... verbose, e.g. print encoding/decoding "
"times\n"); "times\n");
printf("\n"); printf("\n");
@ -678,6 +679,11 @@ int main(int argc, const char *argv[]) {
crop_y = atoi(argv[++c]); crop_y = atoi(argv[++c]);
crop_w = atoi(argv[++c]); crop_w = atoi(argv[++c]);
crop_h = atoi(argv[++c]); crop_h = atoi(argv[++c]);
} else if (!strcmp(argv[c], "-version")) {
const int version = WebPGetEncoderVersion();
printf("%d.%d.%d\n",
(version >> 16) & 0xff, (version >> 8) & 0xff, version & 0xff);
return 0;
} else if (!strcmp(argv[c], "-quiet")) { } else if (!strcmp(argv[c], "-quiet")) {
quiet = 1; quiet = 1;
} else if (!strcmp(argv[c], "-preset") && c < argc - 1) { } else if (!strcmp(argv[c], "-preset") && c < argc - 1) {

View File

@ -205,12 +205,13 @@ typedef enum {
static void help(const char *s) { static void help(const char *s) {
printf("Usage: dwebp " printf("Usage: dwebp "
"[in_file] [-h] [-v] [-ppm] [-pgm] [-o out_file]\n\n" "[in_file] [-h] [-v] [-ppm] [-pgm] [-version] [-o out_file]\n\n"
"Decodes the WebP image file to PNG format [Default]\n" "Decodes the WebP image file to PNG format [Default]\n"
"Use following options to convert into alternate image formats:\n" "Use following options to convert into alternate image formats:\n"
" -ppm: save the raw RGB samples as color PPM\n" " -ppm: save the raw RGB samples as color PPM\n"
" -pgm: save the raw YUV samples as a grayscale PGM\n" " -pgm: save the raw YUV samples as a grayscale PGM\n"
" file with IMC4 layout.\n" " file with IMC4 layout.\n"
" -version: print version number and exit.\n"
"Use -v for verbose (e.g. print encoding/decoding times)\n" "Use -v for verbose (e.g. print encoding/decoding times)\n"
); );
} }
@ -232,6 +233,11 @@ int main(int argc, const char *argv[]) {
out_file = argv[++c]; out_file = argv[++c];
} else if (!strcmp(argv[c], "-ppm")) { } else if (!strcmp(argv[c], "-ppm")) {
format = PPM; format = PPM;
} else if (!strcmp(argv[c], "-version")) {
const int version = WebPGetDecoderVersion();
printf("%d.%d.%d\n",
(version >> 16) & 0xff, (version >> 8) & 0xff, version & 0xff);
return 0;
} else if (!strcmp(argv[c], "-pgm")) { } else if (!strcmp(argv[c], "-pgm")) {
format = PGM; format = PGM;
} else if (!strcmp(argv[c], "-v")) { } else if (!strcmp(argv[c], "-v")) {

View File

@ -16,6 +16,12 @@
extern "C" { extern "C" {
#endif #endif
//-----------------------------------------------------------------------------
int WebPGetDecoderVersion() {
return (DEC_MAJ_VERSION << 16) | (DEC_MIN_VERSION << 8) | DEC_REV_VERSION;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// VP8Decoder // VP8Decoder

View File

@ -22,6 +22,11 @@ extern "C" {
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Various defines and enums // Various defines and enums
// version numbers
#define DEC_MAJ_VERSION 0
#define DEC_MIN_VERSION 1
#define DEC_REV_VERSION 2
#define ONLY_KEYFRAME_CODE // to remove any code related to P-Frames #define ONLY_KEYFRAME_CODE // to remove any code related to P-Frames
// intra prediction modes // intra prediction modes

View File

@ -23,6 +23,11 @@ extern "C" {
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Various defines and enums // Various defines and enums
// version numbers
#define ENC_MAJ_VERSION 0
#define ENC_MIN_VERSION 1
#define ENC_REV_VERSION 2
// intra prediction modes // intra prediction modes
enum { B_DC_PRED = 0, // 4x4 modes enum { B_DC_PRED = 0, // 4x4 modes
B_TM_PRED = 1, B_TM_PRED = 1,

View File

@ -27,6 +27,12 @@ extern "C" {
#define MAX_DIMENSION 16384 // maximum width/height allowed by the spec #define MAX_DIMENSION 16384 // maximum width/height allowed by the spec
//-----------------------------------------------------------------------------
int WebPGetEncoderVersion() {
return (ENC_MAJ_VERSION << 16) | (ENC_MIN_VERSION << 8) | ENC_REV_VERSION;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// WebPPicture // WebPPicture
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

View File

@ -18,6 +18,10 @@
extern "C" { extern "C" {
#endif #endif
// Return the decoder's version number, packed in hexadecimal using 8bits for
// each of major/minor/revision. E.g: v2.5.7 is 0x020507.
int WebPGetDecoderVersion();
// Retrieve basic header information: width, height. // Retrieve basic header information: width, height.
// This function will also validate the header and return 0 in // This function will also validate the header and return 0 in
// case of formatting error. // case of formatting error.

View File

@ -22,6 +22,10 @@ extern "C" {
#define WEBP_ENCODER_ABI_VERSION 0x0001 #define WEBP_ENCODER_ABI_VERSION 0x0001
// Return the encoder's version number, packed in hexadecimal using 8bits for
// each of major/minor/revision. E.g: v2.5.7 is 0x020507.
int WebPGetEncoderVersion();
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// One-stop-shop call! No questions asked: // One-stop-shop call! No questions asked: