From ec65df0fe14bf08c54630330cb30803c4547b4e0 Mon Sep 17 00:00:00 2001 From: Hongjin Li Date: Fri, 23 May 2025 18:03:32 +0800 Subject: [PATCH] refactor[base]: Refactor C++ mpp_packet to C Signed-off-by: Chandler Chen Signed-off-by: Hongjin Li Signed-off-by: Herman Chen Change-Id: I4d8544d78f0b879233b481b37f0feb675f2d8eb9 --- inc/mpp_packet.h | 15 +------ mpp/base/CMakeLists.txt | 2 +- mpp/base/{mpp_packet.cpp => mpp_packet.c} | 50 +++++++++++++---------- 3 files changed, 32 insertions(+), 35 deletions(-) rename mpp/base/{mpp_packet.cpp => mpp_packet.c} (94%) diff --git a/inc/mpp_packet.h b/inc/mpp_packet.h index 9d2768b8..e7d19a47 100644 --- a/inc/mpp_packet.h +++ b/inc/mpp_packet.h @@ -1,17 +1,6 @@ +/* SPDX-License-Identifier: Apache-2.0 OR MIT */ /* - * Copyright 2015 Rockchip Electronics Co. LTD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright (c) 2015 Rockchip Electronics Co., Ltd. */ #ifndef __MPP_PACKET_H__ diff --git a/mpp/base/CMakeLists.txt b/mpp/base/CMakeLists.txt index a7e5c6f3..0d94ac61 100644 --- a/mpp/base/CMakeLists.txt +++ b/mpp/base/CMakeLists.txt @@ -14,7 +14,7 @@ add_library(mpp_base OBJECT mpp_buf_slot.cpp mpp_buffer_impl.c mpp_buffer.c - mpp_packet.cpp + mpp_packet.c mpp_frame.c mpp_task_impl.cpp mpp_task.cpp diff --git a/mpp/base/mpp_packet.cpp b/mpp/base/mpp_packet.c similarity index 94% rename from mpp/base/mpp_packet.cpp rename to mpp/base/mpp_packet.c index c8a5fe68..ede48dca 100644 --- a/mpp/base/mpp_packet.cpp +++ b/mpp/base/mpp_packet.c @@ -1,17 +1,6 @@ +/* SPDX-License-Identifier: Apache-2.0 OR MIT */ /* - * Copyright 2015 Rockchip Electronics Co. LTD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright (c) 2015 Rockchip Electronics Co., Ltd. */ #define MODULE_TAG "mpp_packet" @@ -20,14 +9,33 @@ #include "mpp_debug.h" #include "mpp_mem_pool.h" -#include "mpp_packet_impl.h" +#include "mpp_singleton.h" + #include "mpp_meta_impl.h" +#include "mpp_packet_impl.h" static const char *module_name = MODULE_TAG; -static MppMemPool mpp_packet_pool = mpp_mem_pool_init(module_name, sizeof(MppPacketImpl), NULL); +static MppMemPool pool_packet = NULL; -#define setup_mpp_packet_name(packet) \ - ((MppPacketImpl*)packet)->name = module_name; +#define setup_mpp_packet_name(packet) ((MppPacketImpl*)packet)->name = module_name; + +static void mpp_packet_srv_init() +{ + if (pool_packet) + return; + + pool_packet = mpp_mem_pool_init_f(module_name, sizeof(MppPacketImpl)); +} + +static void mpp_packet_srv_deinit() +{ + if (pool_packet) { + mpp_mem_pool_deinit_f(pool_packet); + pool_packet = NULL; + } +} + +MPP_SINGLETON(MPP_SGLN_PACKET, mpp_packet, mpp_packet_srv_init, mpp_packet_srv_deinit) MPP_RET check_is_mpp_packet_f(void *packet, const char *caller) { @@ -46,7 +54,7 @@ MPP_RET mpp_packet_new(MppPacket *packet) return MPP_ERR_NULL_PTR; } - MppPacketImpl *p = (MppPacketImpl*)mpp_mem_pool_get_f(mpp_packet_pool); + MppPacketImpl *p = (MppPacketImpl*)mpp_mem_pool_get_f(pool_packet); *packet = p; if (NULL == p) { mpp_err_f("malloc failed\n"); @@ -181,7 +189,7 @@ MPP_RET mpp_packet_deinit(MppPacket *packet) if (p->release) p->release(p->release_ctx, p->release_arg); - mpp_mem_pool_put_f(mpp_packet_pool, *packet); + mpp_mem_pool_put_f(pool_packet, *packet); *packet = NULL; return MPP_OK; } @@ -189,7 +197,7 @@ MPP_RET mpp_packet_deinit(MppPacket *packet) void mpp_packet_set_pos(MppPacket packet, void *pos) { if (check_is_mpp_packet(packet)) - return ; + return; MppPacketImpl *p = (MppPacketImpl *)packet; size_t offset = (RK_U8 *)pos - (RK_U8 *)p->data; @@ -279,7 +287,7 @@ MPP_RET mpp_packet_reset(MppPacketImpl *packet) void mpp_packet_set_buffer(MppPacket packet, MppBuffer buffer) { if (check_is_mpp_packet(packet)) - return ; + return; MppPacketImpl *p = (MppPacketImpl *)packet; if (p->buffer != buffer) {