diff --git a/inc/mpp_buffer.h b/inc/mpp_buffer.h index b9da30bb..9306ece3 100644 --- a/inc/mpp_buffer.h +++ b/inc/mpp_buffer.h @@ -189,12 +189,12 @@ extern "C" { */ MPP_RET mpp_buffer_commit(MppBufferGroup group, MppBufferInfo *info); MPP_RET mpp_buffer_get_with_tag(const char *tag, MppBufferGroup group, MppBuffer *buffer, size_t size); -MPP_RET mpp_buffer_put(MppBuffer *buffer); +MPP_RET mpp_buffer_put(MppBuffer buffer); MPP_RET mpp_buffer_inc_ref(MppBuffer buffer); MPP_RET mpp_buffer_info_get(MppBuffer buffer, MppBufferInfo *info); MPP_RET mpp_buffer_group_get(const char *tag, MppBufferMode mode, MppBufferGroup *group, MppBufferType type); -MPP_RET mpp_buffer_group_put(MppBufferGroup *group); +MPP_RET mpp_buffer_group_put(MppBufferGroup group); MPP_RET mpp_buffer_group_limit_config(MppBufferGroup group, size_t size, RK_S32 count); #ifdef __cplusplus diff --git a/mpp/mpp_buffer.cpp b/mpp/mpp_buffer.cpp index 6a3b50c2..10b0e9e1 100644 --- a/mpp/mpp_buffer.cpp +++ b/mpp/mpp_buffer.cpp @@ -67,23 +67,20 @@ MPP_RET mpp_buffer_get_with_tag(const char *tag, MppBufferGroup group, MppBuffer return (buf) ? (MPP_OK) : (MPP_NOK); } -MPP_RET mpp_buffer_put(MppBuffer *buffer) +MPP_RET mpp_buffer_put(MppBuffer buffer) { if (NULL == buffer) { mpp_err("mpp_buffer_put invalid input: buffer %p\n", buffer); return MPP_ERR_UNKNOW; } - if (NULL == (*buffer)) - return MPP_ERR_NULL_PTR; - - return mpp_buffer_ref_dec((MppBufferImpl*)*buffer); + return mpp_buffer_ref_dec((MppBufferImpl*)buffer); } MPP_RET mpp_buffer_inc_ref(MppBuffer buffer) { if (NULL == buffer) { - mpp_err("mpp_buffer_put invalid input: buffer %p\n", buffer); + mpp_err("mpp_buffer_inc_ref invalid input: buffer %p\n", buffer); return MPP_ERR_UNKNOW; } @@ -93,7 +90,7 @@ MPP_RET mpp_buffer_inc_ref(MppBuffer buffer) MPP_RET mpp_buffer_info_get(MppBuffer buffer, MppBufferInfo *info) { if (NULL == buffer || NULL == info) { - mpp_err("mpp_buffer_put invalid input: buffer %p info %p\n", buffer, info); + mpp_err("mpp_buffer_info_get invalid input: buffer %p info %p\n", buffer, info); return MPP_ERR_UNKNOW; } @@ -115,17 +112,14 @@ MPP_RET mpp_buffer_group_get(const char *tag, MppBufferMode mode, return mpp_buffer_group_init((MppBufferGroupImpl**)group, tag, mode, type); } -MPP_RET mpp_buffer_group_put(MppBufferGroup *group) +MPP_RET mpp_buffer_group_put(MppBufferGroup group) { if (NULL == group) { mpp_err("mpp_buffer_group_put input invalid group %p\n", group); return MPP_NOK; } - MppBufferGroupImpl *p = (MppBufferGroupImpl *)*group; - *group = NULL; - - return mpp_buffer_group_deinit(p); + return mpp_buffer_group_deinit((MppBufferGroupImpl *)group); } MPP_RET mpp_buffer_group_limit_config(MppBufferGroup group, size_t size, RK_S32 count) diff --git a/test/mpp_buffer_test.c b/test/mpp_buffer_test.c index e48df803..d70a84a3 100644 --- a/test/mpp_buffer_test.c +++ b/test/mpp_buffer_test.c @@ -81,10 +81,13 @@ int main() } for (i = 0; i < count; i++) { - ret = mpp_buffer_put(&commit_buffer[i]); - if (MPP_OK != ret) { - mpp_err("mpp_buffer_test mpp_buffer_put commit mode failed\n"); - goto MPP_BUFFER_failed; + if (commit_buffer[i]) { + ret = mpp_buffer_put(commit_buffer[i]); + if (MPP_OK != ret) { + mpp_err("mpp_buffer_test mpp_buffer_put commit mode failed\n"); + goto MPP_BUFFER_failed; + } + commit_buffer[i] = NULL; } } @@ -95,7 +98,7 @@ int main() } } - mpp_buffer_group_put(&group); + mpp_buffer_group_put(group); mpp_log("mpp_buffer_test commit mode success\n"); @@ -116,24 +119,30 @@ int main() } for (i = 0; i < MPP_BUFFER_TEST_NORMAL_COUNT; i++) { - ret = mpp_buffer_put(&normal_buffer[i]); - if (MPP_OK != ret) { - mpp_err("mpp_buffer_test mpp_buffer_get mode normal failed\n"); - goto MPP_BUFFER_failed; + if (normal_buffer[i]) { + ret = mpp_buffer_put(normal_buffer[i]); + if (MPP_OK != ret) { + mpp_err("mpp_buffer_test mpp_buffer_get mode normal failed\n"); + goto MPP_BUFFER_failed; + } + normal_buffer[i] = NULL; } } mpp_log("mpp_buffer_test normal mode success\n"); - if (group) - mpp_buffer_group_put(&group); + if (group) { + mpp_buffer_group_put(group); + group = NULL; + } mpp_log("mpp_buffer_test success\n"); return ret; MPP_BUFFER_failed: for (i = 0; i < MPP_BUFFER_TEST_COMMIT_COUNT; i++) { - mpp_buffer_put(&commit_buffer[i]); + if (commit_buffer[i]) + mpp_buffer_put(commit_buffer[i]); } for (i = 0; i < MPP_BUFFER_TEST_COMMIT_COUNT; i++) { @@ -143,11 +152,14 @@ MPP_BUFFER_failed: } } for (i = 0; i < MPP_BUFFER_TEST_NORMAL_COUNT; i++) { - mpp_buffer_put(&normal_buffer[i]); + if (normal_buffer[i]) + mpp_buffer_put(normal_buffer[i]); } - if (group) + if (group) { mpp_buffer_group_put(group); + group = NULL; + } mpp_log("mpp_buffer_test failed\n"); return ret;