diff options
author | James Almer <jamrial@gmail.com> | 2022-03-08 21:23:50 +0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2022-03-08 21:24:19 +0300 |
commit | 3d3c51a07cc3dd1e3687da40fdb6fbb857cbced1 (patch) | |
tree | 231c060308b037705e2a77cf5f19afbeb81e92b0 | |
parent | b6bec5b453dd7ef49b81a016fcdbfc7c157c6a66 (diff) |
data: add a public function to release a Dav1dDataProps reference
-rw-r--r-- | include/dav1d/common.h | 5 | ||||
-rw-r--r-- | meson.build | 2 | ||||
-rw-r--r-- | src/data.c | 12 | ||||
-rw-r--r-- | src/data.h | 1 | ||||
-rw-r--r-- | 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] @@ -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) { @@ -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 */ @@ -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); +} |