diff --git a/mpp/mpp_buffer.cpp b/mpp/mpp_buffer.cpp index 7786f00a..49f1ce85 100644 --- a/mpp/mpp_buffer.cpp +++ b/mpp/mpp_buffer.cpp @@ -197,9 +197,8 @@ RK_S32 mpp_buffer_group_unused(MppBufferGroup group) MPP_RET mpp_buffer_group_limit_config(MppBufferGroup group, size_t size, RK_S32 count) { - if (NULL == group || 0 == size || count <= 0) { - mpp_err_f("input invalid group %p size %d count %d\n", - group, size, count); + if (NULL == group) { + mpp_err_f("input invalid group %p\n", group); return MPP_NOK; } diff --git a/mpp/mpp_buffer_impl.cpp b/mpp/mpp_buffer_impl.cpp index 23afdae1..739e1d2e 100644 --- a/mpp/mpp_buffer_impl.cpp +++ b/mpp/mpp_buffer_impl.cpp @@ -138,11 +138,17 @@ MPP_RET mpp_buffer_create(const char *tag, RK_U32 group_id, MppBufferInfo *info) mpp_err_f("can not create buffer without group\n"); return MPP_NOK; } + if (group->limit_count && group->count >= group->limit_count) { mpp_err_f("reach group count limit %d\n", group->limit_count); return MPP_NOK; } + if (group->limit_size && info->size > group->limit_size) { + mpp_err_f("required size %d reach group size limit %d\n", info->size, group->limit_size); + return MPP_NOK; + } + MppBufferImpl *p = mpp_calloc(MppBufferImpl, 1); if (NULL == p) { mpp_err_f("failed to allocate context\n"); diff --git a/test/mpp_buffer_test.c b/test/mpp_buffer_test.c index a6e139a8..2f6d4018 100644 --- a/test/mpp_buffer_test.c +++ b/test/mpp_buffer_test.c @@ -110,7 +110,7 @@ int main() count = MPP_BUFFER_TEST_NORMAL_COUNT; - mpp_buffer_group_limit_config(group, size, count); + mpp_buffer_group_limit_config(group, 0, count); for (i = 0; i < count; i++) { ret = mpp_buffer_get(group, &normal_buffer[i], (i + 1) * SZ_1K);