From 3d3c51a07cc3dd1e3687da40fdb6fbb857cbced1 Mon Sep 17 00:00:00 2001 From: James Almer Date: Tue, 8 Mar 2022 15:23:50 -0300 Subject: data: add a public function to release a Dav1dDataProps reference --- include/dav1d/common.h | 5 +++++ meson.build | 2 +- src/data.c | 12 +++++++++--- src/data.h | 1 + src/lib.c | 4 ++++ 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/include/dav1d/common.h b/include/dav1d/common.h index b55e939..8685b4f 100644 --- a/include/dav1d/common.h +++ b/include/dav1d/common.h @@ -78,4 +78,9 @@ typedef struct Dav1dDataProps { struct Dav1dUserData user_data; ///< user-configurable data, default NULL members } Dav1dDataProps; +/** + * Release reference to a Dav1dDataProps. + */ +DAV1D_API void dav1d_data_props_unref(Dav1dDataProps *props); + #endif /* DAV1D_COMMON_H */ diff --git a/meson.build b/meson.build index 7b9efb3..f1258c4 100644 --- a/meson.build +++ b/meson.build @@ -30,7 +30,7 @@ project('dav1d', ['c'], 'b_ndebug=if-release'], meson_version: '>= 0.49.0') -dav1d_soname_version = '6.4.0' +dav1d_soname_version = '6.5.0' dav1d_api_version_array = dav1d_soname_version.split('.') dav1d_api_version_major = dav1d_api_version_array[0] dav1d_api_version_minor = dav1d_api_version_array[1] diff --git a/src/data.c b/src/data.c index d0cff18..fa6165e 100644 --- a/src/data.c +++ b/src/data.c @@ -116,11 +116,17 @@ void dav1d_data_props_copy(Dav1dDataProps *const dst, void dav1d_data_props_set_defaults(Dav1dDataProps *const props) { assert(props != NULL); + memset(props, 0, sizeof(*props)); props->timestamp = INT64_MIN; - props->duration = 0; props->offset = -1; - props->user_data.data = NULL; - props->user_data.ref = NULL; +} + +void dav1d_data_props_unref_internal(Dav1dDataProps *const props) { + validate_input(props != NULL); + + struct Dav1dRef *user_data_ref = props->user_data.ref; + dav1d_data_props_set_defaults(props); + dav1d_ref_dec(&user_data_ref); } void dav1d_data_unref_internal(Dav1dData *const buf) { diff --git a/src/data.h b/src/data.h index 5b07021..b34c1db 100644 --- a/src/data.h +++ b/src/data.h @@ -51,5 +51,6 @@ int dav1d_data_wrap_user_data_internal(Dav1dData *buf, void *cookie), void *cookie); void dav1d_data_unref_internal(Dav1dData *buf); +void dav1d_data_props_unref_internal(Dav1dDataProps *props); #endif /* DAV1D_SRC_DATA_H */ diff --git a/src/lib.c b/src/lib.c index bc3d177..0d7aea6 100644 --- a/src/lib.c +++ b/src/lib.c @@ -734,3 +734,7 @@ int dav1d_data_wrap_user_data(Dav1dData *const buf, void dav1d_data_unref(Dav1dData *const buf) { dav1d_data_unref_internal(buf); } + +void dav1d_data_props_unref(Dav1dDataProps *const props) { + dav1d_data_props_unref_internal(props); +} -- cgit v1.2.3