From 7d0abbd3a84fbccc46a87156d5183b5d05f906c9 Mon Sep 17 00:00:00 2001 From: ChenHengming Date: Wed, 19 Aug 2015 11:08:48 +0000 Subject: [PATCH] [osal]: add mpp_allocator to mpp_buffer_impl git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@131 6e48237b-75ef-9749-8fc9-41990f28c85a --- mpp/mpp_buffer_impl.cpp | 5 ++++- mpp/mpp_buffer_impl.h | 5 ++++- osal/linux/os_allocator.c | 12 ++++++++++++ osal/mpp_allocator.cpp | 3 +++ osal/window/os_allocator.c | 12 ++++++++++++ 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/mpp/mpp_buffer_impl.cpp b/mpp/mpp_buffer_impl.cpp index 927320df..e1c08e57 100644 --- a/mpp/mpp_buffer_impl.cpp +++ b/mpp/mpp_buffer_impl.cpp @@ -20,7 +20,6 @@ #include "mpp_log.h" #include "mpp_mem.h" -#include "mpp_allocator.h" #include "mpp_buffer_impl.h" #define MPP_BUFFER_SERVICE_LOCK() pthread_mutex_lock(&services.lock) @@ -243,6 +242,8 @@ MPP_RET mpp_buffer_group_init(MppBufferGroupImpl **group, const char *tag, MppBu break; } while (p->group_id != services.group_count); + mpp_alloctor_get(&p->allocator, &p->api); + MPP_BUFFER_SERVICE_UNLOCK(); *group = p; @@ -274,6 +275,8 @@ MPP_RET mpp_buffer_group_deinit(MppBufferGroupImpl *p) } } + mpp_alloctor_put(&p->allocator); + list_del_init(&p->list_group); services.group_count--; diff --git a/mpp/mpp_buffer_impl.h b/mpp/mpp_buffer_impl.h index ec4a3e7a..29817007 100644 --- a/mpp/mpp_buffer_impl.h +++ b/mpp/mpp_buffer_impl.h @@ -19,7 +19,7 @@ #include "mpp_list.h" #include "mpp_common.h" -#include "mpp_buffer.h" +#include "mpp_allocator.h" #define MPP_BUF_DBG_FUNCTION (0x00000001) @@ -53,6 +53,9 @@ struct MppBufferGroupImpl_t { size_t limit; size_t usage; + MppAllocator allocator; + MppAllocatorApi *api; + // link to the other MppBufferGroupImpl struct list_head list_group; diff --git a/osal/linux/os_allocator.c b/osal/linux/os_allocator.c index e1c61f9a..d74b6d80 100644 --- a/osal/linux/os_allocator.c +++ b/osal/linux/os_allocator.c @@ -18,6 +18,13 @@ #include "os_mem.h" #include "os_allocator.h" +int os_allocator_open(void **ctx) +{ + if (ctx) + *ctx = NULL; + return 0; +} + int os_allocator_alloc(void *ctx, MppBufferData *data, size_t alignment, size_t size) { (void) ctx; @@ -30,3 +37,8 @@ void os_allocator_free(void *ctx, MppBufferData *data) os_free(data->ptr); } +void os_allocator_close(void *ctx) +{ + (void) ctx; +} + diff --git a/osal/mpp_allocator.cpp b/osal/mpp_allocator.cpp index 22794adb..2306057f 100644 --- a/osal/mpp_allocator.cpp +++ b/osal/mpp_allocator.cpp @@ -115,6 +115,9 @@ MPP_RET mpp_alloctor_get(MppAllocator *allocator, MppAllocatorApi **api) pthread_mutex_init(&palloc->lock, &attr); pthread_mutexattr_destroy(&attr); + *allocator = palloc; + *api = papi; + return MPP_OK; } diff --git a/osal/window/os_allocator.c b/osal/window/os_allocator.c index 6a1480f3..bb45432a 100644 --- a/osal/window/os_allocator.c +++ b/osal/window/os_allocator.c @@ -17,6 +17,13 @@ #include "os_mem.h" #include "os_allocator.h" +int os_allocator_open(void **ctx) +{ + if (ctx) + *ctx = NULL; + return 0; +} + int os_allocator_alloc(void *ctx, MppBufferData *data, size_t alignment, size_t size) { (void) ctx; @@ -29,3 +36,8 @@ void os_allocator_free(void *ctx, MppBufferData *data) os_free(data->ptr); } +void os_allocator_close(void *ctx) +{ + (void) ctx; +} +