FFmpeg 5.1.6
Files | Functions

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...
 

Detailed Description

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.

Function Documentation

◆ av_murmur3_alloc()

struct AVMurMur3 * av_murmur3_alloc ( void  )

Allocate an AVMurMur3 hash context.

Returns
Uninitialized hash context or NULL in case of error

◆ av_murmur3_init_seeded()

void av_murmur3_init_seeded ( struct AVMurMur3 *  c,
uint64_t  seed 
)

Initialize or reinitialize an AVMurMur3 hash context with a seed.

Parameters
[out]cHash context
[in]seedRandom seed
See also
av_murmur3_init()
Detailed description on a discussion of seeds for MurmurHash3.

◆ av_murmur3_init()

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.

Parameters
[out]cHash context
See also
av_murmur3_init_seeded()
Detailed description on a discussion of seeds for MurmurHash3.

◆ av_murmur3_update()

void av_murmur3_update ( struct AVMurMur3 *  c,
const uint8_t *  src,
size_t  len 
)

Update hash context with new data.

Parameters
[out]cHash context
[in]srcInput data to update hash with
[in]lenNumber of bytes to read from src

◆ av_murmur3_final()

void av_murmur3_final ( struct AVMurMur3 *  c,
uint8_t  dst[16] 
)

Finish hashing and output digest value.

Parameters
[in,out]cHash context
[out]dstBuffer where output digest value is stored