Loading...
Searching...
No Matches
Murmur3
libavutil » Crypto and Hashing » Hash 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.
void | av_murmur3_init_seeded (struct AVMurMur3 *c, uint64_t seed)
| Initialize or reinitialize an AVMurMur3 hash context with a seed.
void | av_murmur3_init (struct AVMurMur3 *c)
| Initialize or reinitialize an AVMurMur3 hash context.
void | av_murmur3_update (struct AVMurMur3 *c, const uint8_t *src, size_t len)
| Update hash context with new data.
void | av_murmur3_final (struct AVMurMur3 *c, uint8_t dst[16])
| Finish hashing and output digest value.

## 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:

- 32-bit output
- 128-bit output for 32-bit platforms
- 128-bit output for 64-bit platforms

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] | c | Hash context
  [in] | seed | Random 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] | c | Hash 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] | c | Hash context
  [in] | src | Input data to update hash with
  [in] | len | Number 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] | c | Hash context
  [out] | dst | Buffer where output digest value is stored