diff options
author | Steve Lhomme <robux4@ycbcr.xyz> | 2018-10-19 18:34:41 +0300 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2018-10-19 18:34:41 +0300 |
commit | 1c42f8bf81d8fc1ac2d7a89dd00337fd70c5ae80 (patch) | |
tree | 8cfb84c01a2bc1daf931420328940750b229146c /src/ref.c | |
parent | 793c50481b0fa407f5b0bd6eda8599c6c3249563 (diff) |
Add support for external picture buffer allocation
Diffstat (limited to 'src/ref.c')
-rw-r--r-- | src/ref.c | 18 |
1 files changed, 7 insertions, 11 deletions
@@ -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; |