diff mbox series

[FFmpeg-devel,9/9] lavu/opt: deprecate av_opt_ptr()

Message ID 20241013112418.12070-9-anton@khirnov.net
State New
Headers show
Series [FFmpeg-devel,1/9] lavf/internal: remove a prototype for non-existent function | expand

Checks

Context Check Description
yinshiyou/configure_loongarch64 warning Failed to apply patch

Commit Message

Anton Khirnov Oct. 13, 2024, 11:24 a.m. UTC
It has no more internal callers, and we do not want to support direct
pointer access via AVOptions, as that constrains AVOption API
extensions.
---
 libavutil/opt.c     | 2 ++
 libavutil/opt.h     | 5 +++++
 libavutil/version.h | 1 +
 3 files changed, 8 insertions(+)
diff mbox series

Patch

diff --git a/libavutil/opt.c b/libavutil/opt.c
index 7dc4fdb062..ee451ae023 100644
--- a/libavutil/opt.c
+++ b/libavutil/opt.c
@@ -2046,6 +2046,7 @@  const AVClass *av_opt_child_class_iterate(const AVClass *parent, void **iter)
     return NULL;
 }
 
+#if FF_API_OPT_PTR
 void *av_opt_ptr(const AVClass *class, void *obj, const char *name)
 {
     const AVOption *opt= av_opt_find2(&class, name, NULL, 0, AV_OPT_SEARCH_FAKE_OBJ, NULL);
@@ -2055,6 +2056,7 @@  void *av_opt_ptr(const AVClass *class, void *obj, const char *name)
         return NULL;
     return (uint8_t*)obj + opt->offset;
 }
+#endif
 
 static int opt_copy_elem(void *logctx, enum AVOptionType type,
                          void *dst, const void *src)
diff --git a/libavutil/opt.h b/libavutil/opt.h
index 17374211a4..d313679263 100644
--- a/libavutil/opt.h
+++ b/libavutil/opt.h
@@ -1071,6 +1071,7 @@  int av_opt_eval_q     (void *obj, const AVOption *o, const char *val, AVRational
  * @}
  */
 
+#if FF_API_OPT_PTR
 /**
  * Gets a pointer to the requested field in a struct.
  * This function allows accessing a struct even when its fields are moved or
@@ -1078,8 +1079,12 @@  int av_opt_eval_q     (void *obj, const AVOption *o, const char *val, AVRational
  *
  * @returns a pointer to the field, it can be cast to the correct type and read
  *          or written to.
+ *
+ * @deprecated direct access to AVOption-exported fields is not supported
  */
+attribute_deprecated
 void *av_opt_ptr(const AVClass *avclass, void *obj, const char *name);
+#endif
 
 /**
  * Check if given option is set to its default value.
diff --git a/libavutil/version.h b/libavutil/version.h
index 7eca46cfe4..56fbdd95eb 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -116,6 +116,7 @@ 
 #define FF_API_RISCV_FD_ZBA             (LIBAVUTIL_VERSION_MAJOR < 60)
 #define FF_API_VULKAN_FIXED_QUEUES      (LIBAVUTIL_VERSION_MAJOR < 60)
 #define FF_API_OPT_INT_LIST             (LIBAVUTIL_VERSION_MAJOR < 60)
+#define FF_API_OPT_PTR                  (LIBAVUTIL_VERSION_MAJOR < 60)
 
 /**
  * @}