mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-27 19:10:21 +08:00
[mpp_buffer]:
1. Separate mpp_buffer_import_with_tag into two macro for different usage. 2. Add more comment. 3. Change helper macro and function parameter order for better understanding. git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@972 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
@@ -182,29 +182,50 @@ typedef struct MppBufferInfo_t {
|
||||
#define BUFFER_GROUP_SIZE_DEFAULT (SZ_1M*80)
|
||||
|
||||
/*
|
||||
* mpp_buffer_commit usage:
|
||||
* mpp_buffer_import_with_tag(MppBufferGroup group, MppBufferInfo *info, MppBuffer *buffer)
|
||||
*
|
||||
* mpp_buffer_commit(MppBufferGroup group, MppBufferInfo *info, MppBuffer *buffer)
|
||||
*
|
||||
* 1. group - specified the MppBuffer to attach to.
|
||||
* 1. group - specified the MppBuffer to be attached to.
|
||||
* group can be NULL then this buffer will attached to default legecy group
|
||||
* Default to NULL on mpp_buffer_import case
|
||||
*
|
||||
* 2. info - input information for the output MppBuffer
|
||||
* info can NOT be NULL. It must contain at least one of ptr/fd.
|
||||
*
|
||||
* 3. buffer - generated MppBuffer from MppBufferInfo.
|
||||
* buffer can be NULL then the buffer is commit to group with a free for get status.
|
||||
* buffer can be NULL then the buffer is commit to group with unused status.
|
||||
* Otherwise generated buffer will be directly got and ref_count increased.
|
||||
* Default to NULL on mpp_buffer_commit case
|
||||
*
|
||||
* mpp_buffer_commit usage:
|
||||
*
|
||||
* Add a external buffer info to group. This buffer will be on unused status.
|
||||
* Typical usage is on Android. MediaPlayer gralloc Graphic buffer then commit these buffer
|
||||
* to decoder's buffer group. Then decoder will recycle these buffer and return buffer reference
|
||||
* to MediaPlayer for display.
|
||||
*
|
||||
* mpp_buffer_import usage:
|
||||
*
|
||||
* Transfer a external buffer info to MppBuffer but it is not expected to attached to certain
|
||||
* buffer group. So the group is set to NULL. Then this buffer can be used for MppFrame/MppPacket.
|
||||
* Typical usage is for image processing. Image processing normally will be a oneshot operation
|
||||
* It does not need complicated group management. But in other hand mpp still need to know the
|
||||
* imported buffer is leak or not and trace its usage inside mpp process. So we attach this kind
|
||||
* of buffer to default misc buffer group for management.
|
||||
*/
|
||||
#define mpp_buffer_commit(...) \
|
||||
mpp_buffer_commit_with_tag(MODULE_TAG, __FUNCTION__, ## __VA_ARGS__)
|
||||
#define mpp_buffer_commit(group, info, ...) \
|
||||
mpp_buffer_import_with_tag(group, info, NULL, MODULE_TAG, __FUNCTION__)
|
||||
|
||||
#define mpp_buffer_get(...) \
|
||||
mpp_buffer_get_with_tag(MODULE_TAG, __FUNCTION__, ## __VA_ARGS__)
|
||||
#define mpp_buffer_import(buffer, info, ...) \
|
||||
mpp_buffer_import_with_tag(NULL, info, buffer, MODULE_TAG, __FUNCTION__)
|
||||
|
||||
#define mpp_buffer_group_get_internal(...) \
|
||||
mpp_buffer_group_get(MODULE_TAG, __FUNCTION__, MPP_BUFFER_INTERNAL, ## __VA_ARGS__)
|
||||
#define mpp_buffer_get(group, buffer, size, ...) \
|
||||
mpp_buffer_get_with_tag(group, buffer, size, MODULE_TAG, __FUNCTION__)
|
||||
|
||||
#define mpp_buffer_group_get_external(...) \
|
||||
mpp_buffer_group_get(MODULE_TAG, __FUNCTION__, MPP_BUFFER_EXTERNAL, ## __VA_ARGS__)
|
||||
#define mpp_buffer_group_get_internal(group, type, ...) \
|
||||
mpp_buffer_group_get(group, type, MPP_BUFFER_INTERNAL, MODULE_TAG, __FUNCTION__)
|
||||
|
||||
#define mpp_buffer_group_get_external(group, type, ...) \
|
||||
mpp_buffer_group_get(group, type, MPP_BUFFER_EXTERNAL, MODULE_TAG, __FUNCTION__)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -216,11 +237,13 @@ extern "C" {
|
||||
* parameter need to be checked.
|
||||
*
|
||||
* IMPORTANT:
|
||||
* mpp_buffer_commit_with_tag - compounded interface for commit and import
|
||||
* mpp_buffer_import_with_tag - compounded interface for commit and import
|
||||
*
|
||||
*/
|
||||
MPP_RET mpp_buffer_commit_with_tag(const char *tag, const char *caller, MppBufferGroup group, MppBufferInfo *info, MppBuffer *buffer);
|
||||
MPP_RET mpp_buffer_get_with_tag(const char *tag, const char *caller, MppBufferGroup group, MppBuffer *buffer, size_t size);
|
||||
MPP_RET mpp_buffer_import_with_tag(MppBufferGroup group, MppBufferInfo *info, MppBuffer *buffer,
|
||||
const char *tag, const char *caller);
|
||||
MPP_RET mpp_buffer_get_with_tag(MppBufferGroup group, MppBuffer *buffer, size_t size,
|
||||
const char *tag, const char *caller);
|
||||
MPP_RET mpp_buffer_put(MppBuffer buffer);
|
||||
MPP_RET mpp_buffer_inc_ref(MppBuffer buffer);
|
||||
|
||||
@@ -231,7 +254,8 @@ void *mpp_buffer_get_ptr(MppBuffer buffer);
|
||||
int mpp_buffer_get_fd(MppBuffer buffer);
|
||||
size_t mpp_buffer_get_size(MppBuffer buffer);
|
||||
|
||||
MPP_RET mpp_buffer_group_get(const char *tag, const char *caller, MppBufferMode mode, MppBufferGroup *group, MppBufferType type);
|
||||
MPP_RET mpp_buffer_group_get(MppBufferGroup *group, MppBufferType type, MppBufferMode mode,
|
||||
const char *tag, const char *caller);
|
||||
MPP_RET mpp_buffer_group_put(MppBufferGroup group);
|
||||
MPP_RET mpp_buffer_group_clear(MppBufferGroup group);
|
||||
RK_S32 mpp_buffer_group_unused(MppBufferGroup group);
|
||||
|
||||
@@ -22,9 +22,8 @@
|
||||
#include "mpp_mem.h"
|
||||
#include "mpp_buffer_impl.h"
|
||||
|
||||
MPP_RET mpp_buffer_commit_with_tag(const char *tag, const char *caller,
|
||||
MppBufferGroup group, MppBufferInfo *info,
|
||||
MppBuffer *buffer)
|
||||
MPP_RET mpp_buffer_import_with_tag(MppBufferGroup group, MppBufferInfo *info, MppBuffer *buffer,
|
||||
const char *tag, const char *caller)
|
||||
{
|
||||
if (NULL == info) {
|
||||
mpp_err("mpp_buffer_commit input null info\n", info);
|
||||
@@ -59,7 +58,8 @@ MPP_RET mpp_buffer_commit_with_tag(const char *tag, const char *caller,
|
||||
return ret;
|
||||
}
|
||||
|
||||
MPP_RET mpp_buffer_get_with_tag(const char *tag, const char *caller, MppBufferGroup group, MppBuffer *buffer, size_t size)
|
||||
MPP_RET mpp_buffer_get_with_tag(MppBufferGroup group, MppBuffer *buffer, size_t size,
|
||||
const char *tag, const char *caller)
|
||||
{
|
||||
if (NULL == buffer || 0 == size) {
|
||||
mpp_err("mpp_buffer_get invalid input: group %p buffer %p size %u\n",
|
||||
@@ -198,8 +198,8 @@ MPP_RET mpp_buffer_info_get(MppBuffer buffer, MppBufferInfo *info)
|
||||
return MPP_OK;
|
||||
}
|
||||
|
||||
MPP_RET mpp_buffer_group_get(const char *tag, const char *caller, MppBufferMode mode,
|
||||
MppBufferGroup *group, MppBufferType type)
|
||||
MPP_RET mpp_buffer_group_get(MppBufferGroup *group, MppBufferType type, MppBufferMode mode,
|
||||
const char *tag, const char *caller)
|
||||
{
|
||||
if (NULL == group ||
|
||||
mode >= MPP_BUFFER_MODE_BUTT ||
|
||||
|
||||
@@ -32,7 +32,7 @@ static RK_S32 commit_memory_handle(vpu_display_mem_pool *p, RK_S32 mem_hdl, RK_S
|
||||
info.size = size;
|
||||
p_mempool->size = size;
|
||||
p_mempool->buff_size = size;
|
||||
mpp_buffer_commit(p_mempool->group, &info, NULL);
|
||||
mpp_buffer_commit(p_mempool->group, &info);
|
||||
return info.fd;
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ int main()
|
||||
|
||||
commit.ptr = commit_ptr[i];
|
||||
|
||||
ret = mpp_buffer_commit(group, &commit, NULL);
|
||||
ret = mpp_buffer_commit(group, &commit);
|
||||
if (MPP_OK != ret) {
|
||||
mpp_err("mpp_buffer_test mpp_buffer_commit failed\n");
|
||||
goto MPP_BUFFER_failed;
|
||||
@@ -136,7 +136,7 @@ int main()
|
||||
* NOTE: commit buffer info will be directly return within new MppBuffer
|
||||
* This mode allow input group is NULL
|
||||
*/
|
||||
ret = mpp_buffer_commit(NULL, &commit, &commit_buffer[i]);
|
||||
ret = mpp_buffer_import(&commit_buffer[i], &commit);
|
||||
if (MPP_OK != ret) {
|
||||
mpp_err("mpp_buffer_test mpp_buffer_commit failed\n");
|
||||
goto MPP_BUFFER_failed;
|
||||
|
||||
Reference in New Issue
Block a user