summaryrefslogtreecommitdiff
path: root/libavutil/sha.c
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2012-10-11 15:08:04 +0300
committerMartin Storsjö <martin@martin.st>2012-10-11 23:35:27 +0300
commit9a92aea27bad2f5603ca85e0d0716c679a6b686c (patch)
treea38dae27b4c15cc4a75c0a3745351b8c5b3fd122 /libavutil/sha.c
parentfb32f31af76ce784c86c59c86c28e5653e223610 (diff)
avutil: Add functions for allocating opaque contexts for algorithms
The current API where the plain size is exposed is not of much use - in most cases it is allocated dynamically anyway. If allocated e.g. on the stack via an uint8_t array, there's no guarantee that the struct's members are aligned properly (unless the array is overallocated and the opaque pointer within it manually aligned to some unspecified alignment). Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavutil/sha.c')
-rw-r--r--libavutil/sha.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libavutil/sha.c b/libavutil/sha.c
index cbe1608a26..d5831915c4 100644
--- a/libavutil/sha.c
+++ b/libavutil/sha.c
@@ -26,6 +26,7 @@
#include "bswap.h"
#include "sha.h"
#include "intreadwrite.h"
+#include "mem.h"
/** hash context */
typedef struct AVSHA {
@@ -37,7 +38,14 @@ typedef struct AVSHA {
void (*transform)(uint32_t *state, const uint8_t buffer[64]);
} AVSHA;
+#if FF_API_CONTEXT_SIZE
const int av_sha_size = sizeof(AVSHA);
+#endif
+
+struct AVSHA *av_sha_alloc(void)
+{
+ return av_mallocz(sizeof(struct AVSHA));
+}
#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))