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
diff options
context:
space:
mode:
authorHenrik Gramner <gramner@twoorioles.com>2020-12-09 00:34:43 +0300
committerHenrik Gramner <henrik@gramner.com>2020-12-11 00:26:29 +0300
commit135286f4796fe5dc26cf37b73a2c3df4cfa85792 (patch)
tree25e59939a504df0f48b6c166ea51a156d4d5f165 /src/decode.c
parente705519d406941886431300ca432d33980cb554c (diff)
Fix use of references to buffers after calling dav1d_close()
9057d286 had the side effect of causing references to buffers allocated using memory pools to no longer be valid after closing the decoder. Restore this functionality by making buffer pools reference counted.
Diffstat (limited to 'src/decode.c')
-rw-r--r--src/decode.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/decode.c b/src/decode.c
index 8462c0f..4b076ca 100644
--- a/src/decode.c
+++ b/src/decode.c
@@ -3462,7 +3462,7 @@ int dav1d_submit_frame(Dav1dContext *const c) {
// ref_mvs
if ((f->frame_hdr->frame_type & 1) || f->frame_hdr->allow_intrabc) {
- f->mvs_ref = dav1d_ref_create_using_pool(&c->refmvs_pool,
+ f->mvs_ref = dav1d_ref_create_using_pool(c->refmvs_pool,
sizeof(*f->mvs) * f->sb128h * 16 * (f->b4_stride >> 1));
if (!f->mvs_ref) {
res = DAV1D_ERR(ENOMEM);
@@ -3526,7 +3526,7 @@ int dav1d_submit_frame(Dav1dContext *const c) {
// We're updating an existing map, but need somewhere to
// put the new values. Allocate them here (the data
// actually gets set elsewhere)
- f->cur_segmap_ref = dav1d_ref_create_using_pool(&c->segmap_pool,
+ f->cur_segmap_ref = dav1d_ref_create_using_pool(c->segmap_pool,
sizeof(*f->cur_segmap) * f->b4_stride * 32 * f->sb128h);
if (!f->cur_segmap_ref) {
dav1d_ref_dec(&f->prev_segmap_ref);
@@ -3543,7 +3543,7 @@ int dav1d_submit_frame(Dav1dContext *const c) {
} else {
// We need to make a new map. Allocate one here and zero it out.
const size_t segmap_size = sizeof(*f->cur_segmap) * f->b4_stride * 32 * f->sb128h;
- f->cur_segmap_ref = dav1d_ref_create_using_pool(&c->segmap_pool, segmap_size);
+ f->cur_segmap_ref = dav1d_ref_create_using_pool(c->segmap_pool, segmap_size);
if (!f->cur_segmap_ref) {
res = DAV1D_ERR(ENOMEM);
goto error;