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:
authorJames Almer <jamrial@gmail.com>2022-03-08 21:23:50 +0300
committerJames Almer <jamrial@gmail.com>2022-03-08 21:24:19 +0300
commit3d3c51a07cc3dd1e3687da40fdb6fbb857cbced1 (patch)
tree231c060308b037705e2a77cf5f19afbeb81e92b0
parentb6bec5b453dd7ef49b81a016fcdbfc7c157c6a66 (diff)
data: add a public function to release a Dav1dDataProps reference
-rw-r--r--include/dav1d/common.h5
-rw-r--r--meson.build2
-rw-r--r--src/data.c12
-rw-r--r--src/data.h1
-rw-r--r--src/lib.c4
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);
+}