41 memset(
c, 0,
sizeof(*
c));
51 static const uint64_t
c1 = UINT64_C(0x87c37b91114253d5);
52 static const uint64_t
c2 = UINT64_C(0x4cf5ad432745937f);
54 #define ROT(a, b) (((a) << (b)) | ((a) >> (64 - (b))))
74 static inline uint64_t
update_h1(uint64_t k, uint64_t h1, uint64_t h2)
84 static inline uint64_t
update_h2(uint64_t k, uint64_t h1, uint64_t h2)
94 #if FF_API_CRYPTO_SIZE_T
101 uint64_t h1 =
c->h1, h2 =
c->h2;
103 if (
len <= 0)
return;
105 if (
c->state_pos > 0) {
106 while (
c->state_pos < 16) {
107 c->state[
c->state_pos++] = *
src++;
108 if (--
len <= 0)
return;
137 static inline uint64_t
fmix(uint64_t k)
140 k *= UINT64_C(0xff51afd7ed558ccd);
142 k *= UINT64_C(0xc4ceb9fe1a85ec53);
149 uint64_t h1 =
c->h1, h2 =
c->h2;
150 memset(
c->state +
c->state_pos, 0,
sizeof(
c->state) -
c->state_pos);
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
AVMurMur3 * av_murmur3_alloc(void)
Allocate an AVMurMur3 hash context.
void av_murmur3_update(AVMurMur3 *c, const uint8_t *src, int len)
Update hash context with new data.
void av_murmur3_init(AVMurMur3 *c)
Initialize or reinitialize an AVMurMur3 hash context.
void av_murmur3_init_seeded(AVMurMur3 *c, uint64_t seed)
Initialize or reinitialize an AVMurMur3 hash context with a seed.
void av_murmur3_final(AVMurMur3 *c, uint8_t dst[16])
Finish hashing and output digest value.
Memory handling functions.
static uint64_t get_k2(const uint8_t *src)
static uint64_t get_k1(const uint8_t *src)
static uint64_t fmix(uint64_t k)
static uint64_t update_h1(uint64_t k, uint64_t h1, uint64_t h2)
static uint64_t update_h2(uint64_t k, uint64_t h1, uint64_t h2)
Public header for MurmurHash3 hash function implementation.