37 lines
734 B
C
37 lines
734 B
C
#ifndef PHASH_H
|
|
#define PHASH_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define PHASH_SIZE 24
|
|
#define PHASH_BITS 105
|
|
|
|
int phash_from_bytes(const uint8_t* data, int len, char* out_hash, int out_cap);
|
|
int phash_from_rgba(const uint8_t* rgba, int width, int height, char* out_hash, int out_cap);
|
|
int phash_from_rgb24x24(const uint8_t* rgb, char* out_hash, int out_cap);
|
|
|
|
int phash_hamming(const char* a, const char* b);
|
|
|
|
typedef struct {
|
|
const char* id;
|
|
const char* hash;
|
|
} phash_entry;
|
|
|
|
typedef struct {
|
|
const char* id;
|
|
int distance;
|
|
} phash_match;
|
|
|
|
int phash_topn(const char* query_hash, const phash_entry* library, int count,
|
|
phash_match* out, int n);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|