From f47eae175c6e234d8e5929287e121111d33e91f1 Mon Sep 17 00:00:00 2001 From: Yanjun Liao Date: Fri, 25 Jul 2025 01:29:57 +0800 Subject: [PATCH] feat[kmpp_buffer]: Add ioctl to inc ref and flush Change-Id: Ia0c12d6bae71246c17e0a065761439702c529af9 Signed-off-by: Yanjun Liao --- kmpp/base/inc/kmpp_buffer.h | 2 ++ kmpp/base/inc/kmpp_meta_impl.h | 2 -- kmpp/base/kmpp_buffer.c | 24 ++++++++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/kmpp/base/inc/kmpp_buffer.h b/kmpp/base/inc/kmpp_buffer.h index ce758112..88f71fd3 100644 --- a/kmpp/base/inc/kmpp_buffer.h +++ b/kmpp/base/inc/kmpp_buffer.h @@ -72,6 +72,8 @@ rk_s32 kmpp_buf_grp_setup(KmppBufGrp grp); KmppBufCfg kmpp_buffer_to_cfg(KmppBuffer buf); rk_s32 kmpp_buffer_setup(KmppBuffer buffer); +rk_s32 kmpp_buffer_inc_ref(KmppBuffer buffer); +rk_s32 kmpp_buffer_flush(KmppBuffer buffer); #define KMPP_BUF_CFG_ENTRY_TABLE(prefix, ENTRY, STRCT, EHOOK, SHOOK, ALIAS) \ ENTRY(prefix, u32, rk_u32, size, FLAG_NONE, size) \ diff --git a/kmpp/base/inc/kmpp_meta_impl.h b/kmpp/base/inc/kmpp_meta_impl.h index 463ed64c..c4156de9 100644 --- a/kmpp/base/inc/kmpp_meta_impl.h +++ b/kmpp/base/inc/kmpp_meta_impl.h @@ -29,8 +29,6 @@ typedef struct __attribute__((packed)) KmppMetaShmVal_t { extern "C" { #endif -MPP_RET kmpp_meta_inc_ref(KmppMeta meta); - #ifdef __cplusplus } #endif diff --git a/kmpp/base/kmpp_buffer.c b/kmpp/base/kmpp_buffer.c index bcfe23c8..2b29a998 100644 --- a/kmpp/base/kmpp_buffer.c +++ b/kmpp/base/kmpp_buffer.c @@ -128,6 +128,30 @@ rk_s32 kmpp_buffer_setup(KmppBuffer buffer) return kmpp_obj_ioctl_f(buffer, 0, buffer, NULL); } +rk_s32 kmpp_buffer_inc_ref(KmppBuffer buffer) +{ + KmppBufferImpl *impl = (KmppBufferImpl *)kmpp_obj_to_entry(buffer); + + if (!impl) { + mpp_loge_f("invalid NULL buffer\n"); + return rk_nok; + } + + return kmpp_obj_ioctl_f(buffer, 1, buffer, NULL); +} + +rk_s32 kmpp_buffer_flush(KmppBuffer buffer) +{ + KmppBufferImpl *impl = (KmppBufferImpl *)kmpp_obj_to_entry(buffer); + + if (!impl) { + mpp_loge_f("invalid NULL buffer\n"); + return rk_nok; + } + + return kmpp_obj_ioctl_f(buffer, 2, buffer, NULL); +} + rk_s32 kmpp_buffer_impl_init(void *entry, KmppObj obj, const char *caller) { KmppBufPriv *priv = (KmppBufPriv *)kmpp_obj_to_priv(obj);