diff --git a/mpp/base/CMakeLists.txt b/mpp/base/CMakeLists.txt index c84eb1f8..f83a4843 100644 --- a/mpp/base/CMakeLists.txt +++ b/mpp/base/CMakeLists.txt @@ -9,6 +9,7 @@ add_library(mpp_base STATIC mpp_buffer.cpp mpp_packet.cpp mpp_frame.cpp + mpp_task_impl.cpp mpp_task.cpp mpp_meta.cpp mpp_bitread.c diff --git a/mpp/base/inc/mpp_task_impl.h b/mpp/base/inc/mpp_task_impl.h index fc816b6f..6fe60670 100644 --- a/mpp/base/inc/mpp_task_impl.h +++ b/mpp/base/inc/mpp_task_impl.h @@ -18,7 +18,7 @@ #define __MPP_TASK_IMPL_H__ #include "mpp_list.h" -#include "mpp_meta.h" +#include "mpp_task.h" /* * mpp task status transaction diff --git a/mpp/base/mpp_meta.cpp b/mpp/base/mpp_meta.cpp index ab045b59..c66c44bd 100644 --- a/mpp/base/mpp_meta.cpp +++ b/mpp/base/mpp_meta.cpp @@ -116,6 +116,37 @@ public: void put_node(MppMetaNode *node); }; +MppMetaService::MppMetaService() + : meta_id(0), + meta_count(0), + node_count(0) +{ + INIT_LIST_HEAD(&mlist_meta); + INIT_LIST_HEAD(&mlist_node); +} + +MppMetaService::~MppMetaService() +{ + mpp_assert(list_empty(&mlist_meta)); + mpp_assert(list_empty(&mlist_node)); + + while (!list_empty(&mlist_meta)) { + MppMetaImpl *pos, *n; + list_for_each_entry_safe(pos, n, &mlist_meta, MppMetaImpl, list_meta) { + put_meta(pos); + } + } + + mpp_assert(list_empty(&mlist_node)); + + while (!list_empty(&mlist_node)) { + MppMetaNode *pos, *n; + list_for_each_entry_safe(pos, n, &mlist_node, MppMetaNode, list_node) { + put_node(pos); + } + } +} + RK_S32 MppMetaService::get_index_of_key(MppMetaKey key, MppMetaType type) { RK_S32 i = 0;