FFmpeg
|
An abstraction layer for all hash functions supported by libavutil. More...
Files | |
file | hash.h |
Generic hashing API. | |
Macros | |
#define | AV_HASH_MAX_SIZE 64 |
Maximum value that av_hash_get_size() will currently return. More... | |
Functions | |
int | av_hash_alloc (struct AVHashContext **ctx, const char *name) |
Allocate a hash context for the algorithm specified by name. More... | |
const char * | av_hash_names (int i) |
Get the names of available hash algorithms. More... | |
const char * | av_hash_get_name (const struct AVHashContext *ctx) |
Get the name of the algorithm corresponding to the given hash context. More... | |
int | av_hash_get_size (const struct AVHashContext *ctx) |
Get the size of the resulting hash value in bytes. More... | |
void | av_hash_init (struct AVHashContext *ctx) |
Initialize or reset a hash context. More... | |
void | av_hash_update (struct AVHashContext *ctx, const uint8_t *src, int len) |
Update a hash context with additional data. More... | |
void | av_hash_final (struct AVHashContext *ctx, uint8_t *dst) |
Finalize a hash context and compute the actual hash value. More... | |
void | av_hash_final_bin (struct AVHashContext *ctx, uint8_t *dst, int size) |
Finalize a hash context and store the actual hash value in a buffer. More... | |
void | av_hash_final_hex (struct AVHashContext *ctx, uint8_t *dst, int size) |
Finalize a hash context and store the hexadecimal representation of the actual hash value as a string. More... | |
void | av_hash_final_b64 (struct AVHashContext *ctx, uint8_t *dst, int size) |
Finalize a hash context and store the Base64 representation of the actual hash value as a string. More... | |
void | av_hash_freep (struct AVHashContext **ctx) |
Free hash context and set hash context pointer to NULL . More... | |
An abstraction layer for all hash functions supported by libavutil.
If your application needs to support a wide range of different hash functions, then the Generic Hashing API is for you. It provides a generic, reusable API for all hash functions implemented in libavutil. If you just need to use one particular hash function, use the individual hash directly.
A basic template for using the Generic Hashing API follows:
If the CRC32 hash is selected, the AV_CRC_32_IEEE polynomial will be used.
If the Murmur3 hash is selected, the default seed will be used. See Murmur3 for more information.
#define AV_HASH_MAX_SIZE 64 |
Maximum value that av_hash_get_size() will currently return.
You can use this if you absolutely want or need to use static allocation for the output buffer and are fine with not supporting hashes newly added to libavutil without recompilation.
Definition at line 155 of file hash.h.
Referenced by av_hash_final_b64(), av_hash_final_bin(), av_hash_final_hex(), finish(), and writer_print_data_hash().
int av_hash_alloc | ( | struct AVHashContext ** | ctx, |
const char * | name | ||
) |
Allocate a hash context for the algorithm specified by name.
Definition at line 100 of file hash.c.
Referenced by main().
const char* av_hash_names | ( | int | i | ) |
const char* av_hash_get_name | ( | const struct AVHashContext * | ctx | ) |
Get the name of the algorithm corresponding to the given hash context.
int av_hash_get_size | ( | const struct AVHashContext * | ctx | ) |
Get the size of the resulting hash value in bytes.
The maximum value this function will currently return is available as macro AV_HASH_MAX_SIZE.
[in] | ctx | Hash context |
void av_hash_init | ( | struct AVHashContext * | ctx | ) |
Initialize or reset a hash context.
[in,out] | ctx | Hash context |
Definition at line 137 of file hash.c.
Referenced by check(), main(), and writer_print_data_hash().
void av_hash_update | ( | struct AVHashContext * | ctx, |
const uint8_t * | src, | ||
int | len | ||
) |
Update a hash context with additional data.
[in,out] | ctx | Hash context |
[in] | src | Data to be added to the hash context |
[in] | len | Size of the additional data |
Definition at line 158 of file hash.c.
Referenced by check(), main(), and writer_print_data_hash().
void av_hash_final | ( | struct AVHashContext * | ctx, |
uint8_t * | dst | ||
) |
Finalize a hash context and compute the actual hash value.
The minimum size of dst
buffer is given by av_hash_get_size() or AV_HASH_MAX_SIZE. The use of the latter macro is discouraged.
It is not safe to update or finalize a hash context again, if it has already been finalized.
[in,out] | ctx | Hash context |
[out] | dst | Where the final hash value will be stored |
Definition at line 179 of file hash.c.
Referenced by av_hash_final_b64(), av_hash_final_bin(), and av_hash_final_hex().
void av_hash_final_bin | ( | struct AVHashContext * | ctx, |
uint8_t * | dst, | ||
int | size | ||
) |
Finalize a hash context and store the actual hash value in a buffer.
It is not safe to update or finalize a hash context again, if it has already been finalized.
If size
is smaller than the hash size (given by av_hash_get_size()), the hash is truncated; if size is larger, the buffer is padded with 0.
[in,out] | ctx | Hash context |
[out] | dst | Where the final hash value will be stored |
[in] | size | Number of bytes to write to dst |
Definition at line 200 of file hash.c.
Referenced by main().
void av_hash_final_hex | ( | struct AVHashContext * | ctx, |
uint8_t * | dst, | ||
int | size | ||
) |
Finalize a hash context and store the hexadecimal representation of the actual hash value as a string.
It is not safe to update or finalize a hash context again, if it has already been finalized.
The string is always 0-terminated.
If size
is smaller than 2 * hash_size + 1
, where hash_size
is the value returned by av_hash_get_size(), the string will be truncated.
[in,out] | ctx | Hash context |
[out] | dst | Where the string will be stored |
[in] | size | Maximum number of bytes to write to dst |
Definition at line 211 of file hash.c.
Referenced by finish(), main(), and writer_print_data_hash().
void av_hash_final_b64 | ( | struct AVHashContext * | ctx, |
uint8_t * | dst, | ||
int | size | ||
) |
Finalize a hash context and store the Base64 representation of the actual hash value as a string.
It is not safe to update or finalize a hash context again, if it has already been finalized.
The string is always 0-terminated.
If size
is smaller than AV_BASE64_SIZE(hash_size), where hash_size
is the value returned by av_hash_get_size(), the string will be truncated.
[in,out] | ctx | Hash context |
[out] | dst | Where the final hash value will be stored |
[in] | size | Maximum number of bytes to write to dst |
void av_hash_freep | ( | struct AVHashContext ** | ctx | ) |