FFmpeg
9.0.2
Toggle main menu visibility
Loading...
Searching...
No Matches
libavutil
murmur3.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2013 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
/**
22
* @file
23
* @ingroup lavu_murmur3
24
* Public header for MurmurHash3 hash function implementation.
25
*/
26
27
#ifndef AVUTIL_MURMUR3_H
28
#define AVUTIL_MURMUR3_H
29
30
#include <stddef.h>
31
#include <stdint.h>
32
33
/**
34
* @defgroup lavu_murmur3 Murmur3
35
* @ingroup lavu_hash
36
* MurmurHash3 hash function implementation.
37
*
38
* MurmurHash3 is a non-cryptographic hash function, of which three
39
* incompatible versions were created by its inventor Austin Appleby:
40
*
41
* - 32-bit output
42
* - 128-bit output for 32-bit platforms
43
* - 128-bit output for 64-bit platforms
44
*
45
* FFmpeg only implements the last variant: 128-bit output designed for 64-bit
46
* platforms. Even though the hash function was designed for 64-bit platforms,
47
* the function in reality works on 32-bit systems too, only with reduced
48
* performance.
49
*
50
* @anchor lavu_murmur3_seedinfo
51
* By design, MurmurHash3 requires a seed to operate. In response to this,
52
* libavutil provides two functions for hash initiation, one that requires a
53
* seed (av_murmur3_init_seeded()) and one that uses a fixed arbitrary integer
54
* as the seed, and therefore does not (av_murmur3_init()).
55
*
56
* To make hashes comparable, you should provide the same seed for all calls to
57
* this hash function -- if you are supplying one yourself, that is.
58
*
59
* @{
60
*/
61
62
/**
63
* Allocate an AVMurMur3 hash context.
64
*
65
* @return Uninitialized hash context or `NULL` in case of error
66
*/
67
struct
AVMurMur3 *
av_murmur3_alloc
(
void
);
68
69
/**
70
* Initialize or reinitialize an AVMurMur3 hash context with a seed.
71
*
72
* @param[out] c Hash context
73
* @param[in] seed Random seed
74
*
75
* @see av_murmur3_init()
76
* @see @ref lavu_murmur3_seedinfo "Detailed description" on a discussion of
77
* seeds for MurmurHash3.
78
*/
79
void
av_murmur3_init_seeded
(
struct
AVMurMur3 *c, uint64_t seed);
80
81
/**
82
* Initialize or reinitialize an AVMurMur3 hash context.
83
*
84
* Equivalent to av_murmur3_init_seeded() with a built-in seed.
85
*
86
* @param[out] c Hash context
87
*
88
* @see av_murmur3_init_seeded()
89
* @see @ref lavu_murmur3_seedinfo "Detailed description" on a discussion of
90
* seeds for MurmurHash3.
91
*/
92
void
av_murmur3_init
(
struct
AVMurMur3 *c);
93
94
/**
95
* Update hash context with new data.
96
*
97
* @param[out] c Hash context
98
* @param[in] src Input data to update hash with
99
* @param[in] len Number of bytes to read from `src`
100
*/
101
void
av_murmur3_update
(
struct
AVMurMur3 *c,
const
uint8_t *src,
size_t
len);
102
103
/**
104
* Finish hashing and output digest value.
105
*
106
* @param[in,out] c Hash context
107
* @param[out] dst Buffer where output digest value is stored
108
*/
109
void
av_murmur3_final
(
struct
AVMurMur3 *c, uint8_t dst[16]);
110
111
/**
112
* @}
113
*/
114
115
#endif
/* AVUTIL_MURMUR3_H */
av_murmur3_alloc
struct AVMurMur3 * av_murmur3_alloc(void)
Allocate an AVMurMur3 hash context.
av_murmur3_update
void av_murmur3_update(struct AVMurMur3 *c, const uint8_t *src, size_t len)
Update hash context with new data.
av_murmur3_init
void av_murmur3_init(struct AVMurMur3 *c)
Initialize or reinitialize an AVMurMur3 hash context.
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.
av_murmur3_final
void av_murmur3_final(struct AVMurMur3 *c, uint8_t dst[16])
Finish hashing and output digest value.
Generated by
1.17.0