FFmpeg 5.1.6
|
MurmurHash3 hash function implementation. More...
Files | |
file | murmur3.h |
Public header for MurmurHash3 hash function implementation. | |
Functions | |
struct AVMurMur3 * | av_murmur3_alloc (void) |
Allocate an AVMurMur3 hash context. More... | |
void | av_murmur3_init_seeded (struct AVMurMur3 *c, uint64_t seed) |
Initialize or reinitialize an AVMurMur3 hash context with a seed. More... | |
void | av_murmur3_init (struct AVMurMur3 *c) |
Initialize or reinitialize an AVMurMur3 hash context. More... | |
void | av_murmur3_update (struct AVMurMur3 *c, const uint8_t *src, size_t len) |
Update hash context with new data. More... | |
void | av_murmur3_final (struct AVMurMur3 *c, uint8_t dst[16]) |
Finish hashing and output digest value. More... | |
MurmurHash3 hash function implementation.
MurmurHash3 is a non-cryptographic hash function, of which three incompatible versions were created by its inventor Austin Appleby:
FFmpeg only implements the last variant: 128-bit output designed for 64-bit platforms. Even though the hash function was designed for 64-bit platforms, the function in reality works on 32-bit systems too, only with reduced performance.
By design, MurmurHash3 requires a seed to operate. In response to this, libavutil provides two functions for hash initiation, one that requires a seed (av_murmur3_init_seeded()) and one that uses a fixed arbitrary integer as the seed, and therefore does not (av_murmur3_init()).
To make hashes comparable, you should provide the same seed for all calls to this hash function – if you are supplying one yourself, that is.
struct AVMurMur3 * av_murmur3_alloc | ( | void | ) |
Allocate an AVMurMur3 hash context.
NULL
in case of error void av_murmur3_init_seeded | ( | struct AVMurMur3 * | c, |
uint64_t | seed | ||
) |
Initialize or reinitialize an AVMurMur3 hash context with a seed.
[out] | c | Hash context |
[in] | seed | Random seed |
void av_murmur3_init | ( | struct AVMurMur3 * | c | ) |
Initialize or reinitialize an AVMurMur3 hash context.
Equivalent to av_murmur3_init_seeded() with a built-in seed.
[out] | c | Hash context |
void av_murmur3_update | ( | struct AVMurMur3 * | c, |
const uint8_t * | src, | ||
size_t | len | ||
) |
Update hash context with new data.
[out] | c | Hash context |
[in] | src | Input data to update hash with |
[in] | len | Number of bytes to read from src |
void av_murmur3_final | ( | struct AVMurMur3 * | c, |
uint8_t | dst[16] | ||
) |
Finish hashing and output digest value.
[in,out] | c | Hash context |
[out] | dst | Buffer where output digest value is stored |