[test]: fix bug in mpp_buffer_test

git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@146 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
ChenHengming
2015-08-21 07:06:57 +00:00
parent 8848e46814
commit 9e5b83bc72
3 changed files with 34 additions and 28 deletions

View File

@@ -189,12 +189,12 @@ extern "C" {
*/ */
MPP_RET mpp_buffer_commit(MppBufferGroup group, MppBufferInfo *info); 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_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_inc_ref(MppBuffer buffer);
MPP_RET mpp_buffer_info_get(MppBuffer buffer, MppBufferInfo *info); 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_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); MPP_RET mpp_buffer_group_limit_config(MppBufferGroup group, size_t size, RK_S32 count);
#ifdef __cplusplus #ifdef __cplusplus

View File

@@ -67,23 +67,20 @@ MPP_RET mpp_buffer_get_with_tag(const char *tag, MppBufferGroup group, MppBuffer
return (buf) ? (MPP_OK) : (MPP_NOK); return (buf) ? (MPP_OK) : (MPP_NOK);
} }
MPP_RET mpp_buffer_put(MppBuffer *buffer) MPP_RET mpp_buffer_put(MppBuffer buffer)
{ {
if (NULL == buffer) { if (NULL == buffer) {
mpp_err("mpp_buffer_put invalid input: buffer %p\n", buffer); mpp_err("mpp_buffer_put invalid input: buffer %p\n", buffer);
return MPP_ERR_UNKNOW; return MPP_ERR_UNKNOW;
} }
if (NULL == (*buffer)) return mpp_buffer_ref_dec((MppBufferImpl*)buffer);
return MPP_ERR_NULL_PTR;
return mpp_buffer_ref_dec((MppBufferImpl*)*buffer);
} }
MPP_RET mpp_buffer_inc_ref(MppBuffer buffer) MPP_RET mpp_buffer_inc_ref(MppBuffer buffer)
{ {
if (NULL == 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; 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) MPP_RET mpp_buffer_info_get(MppBuffer buffer, MppBufferInfo *info)
{ {
if (NULL == buffer || NULL == 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; 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); 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) { if (NULL == group) {
mpp_err("mpp_buffer_group_put input invalid group %p\n", group); mpp_err("mpp_buffer_group_put input invalid group %p\n", group);
return MPP_NOK; return MPP_NOK;
} }
MppBufferGroupImpl *p = (MppBufferGroupImpl *)*group; return mpp_buffer_group_deinit((MppBufferGroupImpl *)group);
*group = NULL;
return mpp_buffer_group_deinit(p);
} }
MPP_RET mpp_buffer_group_limit_config(MppBufferGroup group, size_t size, RK_S32 count) MPP_RET mpp_buffer_group_limit_config(MppBufferGroup group, size_t size, RK_S32 count)

View File

@@ -81,11 +81,14 @@ int main()
} }
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
ret = mpp_buffer_put(&commit_buffer[i]); if (commit_buffer[i]) {
ret = mpp_buffer_put(commit_buffer[i]);
if (MPP_OK != ret) { if (MPP_OK != ret) {
mpp_err("mpp_buffer_test mpp_buffer_put commit mode failed\n"); mpp_err("mpp_buffer_test mpp_buffer_put commit mode failed\n");
goto MPP_BUFFER_failed; goto MPP_BUFFER_failed;
} }
commit_buffer[i] = NULL;
}
} }
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
@@ -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"); 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++) { for (i = 0; i < MPP_BUFFER_TEST_NORMAL_COUNT; i++) {
ret = mpp_buffer_put(&normal_buffer[i]); if (normal_buffer[i]) {
ret = mpp_buffer_put(normal_buffer[i]);
if (MPP_OK != ret) { if (MPP_OK != ret) {
mpp_err("mpp_buffer_test mpp_buffer_get mode normal failed\n"); mpp_err("mpp_buffer_test mpp_buffer_get mode normal failed\n");
goto MPP_BUFFER_failed; goto MPP_BUFFER_failed;
} }
normal_buffer[i] = NULL;
}
} }
mpp_log("mpp_buffer_test normal mode success\n"); mpp_log("mpp_buffer_test normal mode success\n");
if (group) if (group) {
mpp_buffer_group_put(&group); mpp_buffer_group_put(group);
group = NULL;
}
mpp_log("mpp_buffer_test success\n"); mpp_log("mpp_buffer_test success\n");
return ret; return ret;
MPP_BUFFER_failed: MPP_BUFFER_failed:
for (i = 0; i < MPP_BUFFER_TEST_COMMIT_COUNT; i++) { 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++) { 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++) { 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); mpp_buffer_group_put(group);
group = NULL;
}
mpp_log("mpp_buffer_test failed\n"); mpp_log("mpp_buffer_test failed\n");
return ret; return ret;