Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/videolan/dav1d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/ref.c
diff options
context:
space:
mode:
authorSteve Lhomme <robux4@ycbcr.xyz>2018-10-19 18:34:41 +0300
committerRonald S. Bultje <rsbultje@gmail.com>2018-10-19 18:34:41 +0300
commit1c42f8bf81d8fc1ac2d7a89dd00337fd70c5ae80 (patch)
tree8cfb84c01a2bc1daf931420328940750b229146c /src/ref.c
parent793c50481b0fa407f5b0bd6eda8599c6c3249563 (diff)
Add support for external picture buffer allocation
Diffstat (limited to 'src/ref.c')
-rw-r--r--src/ref.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/ref.c b/src/ref.c
index ed19ff6..3e5c6b4 100644
--- a/src/ref.c
+++ b/src/ref.c
@@ -36,24 +36,21 @@ static void default_free_callback(uint8_t *const data, void *const user_data) {
}
Dav1dRef *dav1d_ref_create(const size_t size) {
- Dav1dRef *res = malloc(sizeof(Dav1dRef));
+ Dav1dRef *res;
void *data = dav1d_alloc_aligned(size, 32);
-
- if (!res || !data) {
- if (res) free(res);
- if (data) free(data);
+ if (!data) {
return NULL;
}
- res->size = size;
- atomic_init(&res->ref_cnt, 1);
- res->data = data;
- res->free_callback = default_free_callback;
+ res = dav1d_ref_wrap(data, default_free_callback, NULL);
+ if (!res) {
+ free(data);
+ }
return res;
}
-Dav1dRef *dav1d_ref_wrap(uint8_t *const ptr, const size_t sz,
+Dav1dRef *dav1d_ref_wrap(uint8_t *const ptr,
void (*free_callback)(uint8_t *data, void *user_data),
void *user_data)
{
@@ -61,7 +58,6 @@ Dav1dRef *dav1d_ref_wrap(uint8_t *const ptr, const size_t sz,
if (!res) return NULL;
res->data = ptr;
- res->size = sz;
atomic_init(&res->ref_cnt, 1);
res->free_callback = free_callback;
res->user_data = user_data;