World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine

An abstraction layer for all hash functions supported by libavutil. Подробнее...

+ Граф связей класса Generic Hashing API:

Файлы

файл  hash.h
 

Функции

int av_hash_alloc (struct AVHashContext **ctx, const char *name)
 
const char * av_hash_names (int i)
 
const char * av_hash_get_name (const struct AVHashContext *ctx)
 
int av_hash_get_size (const struct AVHashContext *ctx)
 
void av_hash_init (struct AVHashContext *ctx)
 
void av_hash_update (struct AVHashContext *ctx, const uint8_t *src, int len)
 
void av_hash_update (struct AVHashContext *ctx, const uint8_t *src, size_t len)
 
void av_hash_final (struct AVHashContext *ctx, uint8_t *dst)
 
void av_hash_final_bin (struct AVHashContext *ctx, uint8_t *dst, int size)
 
void av_hash_final_hex (struct AVHashContext *ctx, uint8_t *dst, int size)
 
void av_hash_final_b64 (struct AVHashContext *ctx, uint8_t *dst, int size)
 
void av_hash_freep (struct AVHashContext **ctx)
 

Подробное описание

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.

Code

A basic template for using the Generic Hashing API follows:

struct AVHashContext *ctx = NULL;
const char *hash_name = NULL;
uint8_t *output_buf = NULL;
// Select from a string returned by av_hash_names()
hash_name = ...;
// Allocate a hash context
ret = av_hash_alloc(&ctx, hash_name);
if (ret < 0)
return ret;
// Initialize the hash context
// Update the hash context with data
while (data_left) {
}
// Now we have no more data, so it is time to finalize the hash and get the
// output. But we need to first allocate an output buffer. Note that you can
// use any memory allocation function, including malloc(), not just
// av_malloc().
if (!output_buf)
return AVERROR(ENOMEM);
// Finalize the hash context.
// You can use any of the av_hash_final*() functions provided, for other
// output formats. If you do so, be sure to adjust the memory allocation
// above. See the function documentation below for the exact amount of extra
// memory needed.
av_hash_final(ctx, output_buffer);
// Free the context

Function-Specific Information

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.

Функции

◆ av_hash_alloc()

int av_hash_alloc ( struct AVHashContext **  ctx,
const char *  name 
)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/hash.h>

Allocate a hash context for the algorithm specified by name.

Возвращает
>= 0 for success, a negative error code for failure
Заметки
The context is not initialized after a call to this function; you must call av_hash_init() to do so.

◆ av_hash_names()

const char* av_hash_names ( int  i)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/hash.h>

Get the names of available hash algorithms.

This function can be used to enumerate the algorithms.

Аргументы
[in]iIndex of the hash algorithm, starting from 0
Возвращает
Pointer to a static string or NULL if i is out of range

◆ av_hash_get_name()

const char* av_hash_get_name ( const struct AVHashContext *  ctx)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/hash.h>

Get the name of the algorithm corresponding to the given hash context.

◆ av_hash_get_size()

int av_hash_get_size ( const struct AVHashContext *  ctx)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/hash.h>

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]ctxHash context
Возвращает
Size of the hash value in bytes

◆ av_hash_init()

void av_hash_init ( struct AVHashContext *  ctx)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/hash.h>

Initialize or reset a hash context.

Аргументы
[in,out]ctxHash context

◆ av_hash_update() [1/2]

void av_hash_update ( struct AVHashContext *  ctx,
const uint8_t src,
int  len 
)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/hash.h>

Update a hash context with additional data.

Аргументы
[in,out]ctxHash context
[in]srcData to be added to the hash context
[in]lenSize of the additional data

◆ av_hash_update() [2/2]

void av_hash_update ( struct AVHashContext *  ctx,
const uint8_t src,
size_t  len 
)

◆ av_hash_final()

void av_hash_final ( struct AVHashContext *  ctx,
uint8_t dst 
)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/hash.h>

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]ctxHash context
[out]dstWhere the final hash value will be stored
См. также
av_hash_final_bin() provides an alternative API

◆ av_hash_final_bin()

void av_hash_final_bin ( struct AVHashContext *  ctx,
uint8_t dst,
int  size 
)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/hash.h>

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]ctxHash context
[out]dstWhere the final hash value will be stored
[in]sizeNumber of bytes to write to dst

◆ av_hash_final_hex()

void av_hash_final_hex ( struct AVHashContext *  ctx,
uint8_t dst,
int  size 
)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/hash.h>

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]ctxHash context
[out]dstWhere the string will be stored
[in]sizeMaximum number of bytes to write to dst

◆ av_hash_final_b64()

void av_hash_final_b64 ( struct AVHashContext *  ctx,
uint8_t dst,
int  size 
)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/hash.h>

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]ctxHash context
[out]dstWhere the final hash value will be stored
[in]sizeMaximum number of bytes to write to dst

◆ av_hash_freep()

void av_hash_freep ( struct AVHashContext **  ctx)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/hash.h>

Free hash context and set hash context pointer to NULL.

Аргументы
[in,out]ctxPointer to hash context
av_malloc
void * av_malloc(size_t size) av_malloc_attrib av_alloc_size(1)
av_hash_alloc
int av_hash_alloc(struct AVHashContext **ctx, const char *name)
av_hash_init
void av_hash_init(struct AVHashContext *ctx)
av_hash_get_size
int av_hash_get_size(const struct AVHashContext *ctx)
av_hash_freep
void av_hash_freep(struct AVHashContext **ctx)
ctx
EGLContext ctx
Definition: SDL_egl.h:952
av_hash_final
void av_hash_final(struct AVHashContext *ctx, uint8_t *dst)
uint8_t
unsigned __int8 uint8_t
Definition: SDL_config.h:35
data
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: SDL_opengl.h:1974
av_hash_update
void av_hash_update(struct AVHashContext *ctx, const uint8_t *src, int len)
size
GLsizeiptr size
Definition: SDL_opengl_glext.h:540