39 memset(c, 0,
sizeof(*c));
49 static const uint64_t
c1 = UINT64_C(0x87c37b91114253d5);
50 static const uint64_t
c2 = UINT64_C(0x4cf5ad432745937f);
52 #define ROT(a, b) (((a) << (b)) | ((a) >> (64 - (b))))
72 static inline uint64_t
update_h1(uint64_t k, uint64_t h1, uint64_t h2)
82 static inline uint64_t
update_h2(uint64_t k, uint64_t h1, uint64_t h2)
92 #if FF_API_CRYPTO_SIZE_T
99 uint64_t h1 = c->
h1, h2 = c->
h2;
101 if (len <= 0)
return;
106 if (--len <= 0)
return;
115 end = src + (len & ~15);
130 memcpy(c->
state, src, len);
135 static inline uint64_t
fmix(uint64_t k)
138 k *= UINT64_C(0xff51afd7ed558ccd);
140 k *= UINT64_C(0xc4ceb9fe1a85ec53);
147 uint64_t h1 = c->
h1, h2 = c->
h2;
Memory handling functions.
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
void av_murmur3_init_seeded(AVMurMur3 *c, uint64_t seed)
Initialize or reinitialize an AVMurMur3 hash context with a seed.
Public header for MurmurHash3 hash function implementation.
static av_cold int end(AVCodecContext *avctx)
void av_murmur3_init(AVMurMur3 *c)
Initialize or reinitialize an AVMurMur3 hash context.
static uint64_t update_h2(uint64_t k, uint64_t h1, uint64_t h2)
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)
void av_murmur3_update(AVMurMur3 *c, const uint8_t *src, int len)
Update hash context with new data.
static uint64_t update_h1(uint64_t k, uint64_t h1, uint64_t h2)
AVMurMur3 * av_murmur3_alloc(void)
Allocate an AVMurMur3 hash context.
void av_murmur3_final(AVMurMur3 *c, uint8_t dst[16])
Finish hashing and output digest value.