mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 17:16:50 +08:00
[mpp_buffer]: add signal function on mpp_buffer return to group
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@495 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include "mpp_dec.h"
|
||||
#include "mpp_enc.h"
|
||||
#include "mpp_hal.h"
|
||||
#include "mpp_buffer_impl.h"
|
||||
#include "mpp_frame_impl.h"
|
||||
#include "mpp_packet.h"
|
||||
#include "mpp_packet_impl.h"
|
||||
@@ -242,6 +243,7 @@ MPP_RET Mpp::control(MpiCmd cmd, MppParam param)
|
||||
case MPP_DEC_SET_EXT_BUF_GROUP: {
|
||||
mpp_log("mpi_control group %p\n", param);
|
||||
mFrameGroup = (MppBufferGroup)param;
|
||||
mpp_buffer_group_set_listener((MppBufferGroupImpl *)param, (void *)mThreadCodec);
|
||||
mpp_log("signal codec thread\n");
|
||||
mThreadCodec->signal();
|
||||
break;
|
||||
|
@@ -279,6 +279,10 @@ MPP_RET mpp_buffer_ref_dec(MppBufferImpl *buffer)
|
||||
}
|
||||
}
|
||||
group->count_used--;
|
||||
if (group->listener) {
|
||||
MppThread *thread = (MppThread *)group->listener;
|
||||
thread->signal();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -422,6 +426,18 @@ MPP_RET mpp_buffer_group_reset(MppBufferGroupImpl *p)
|
||||
return MPP_OK;
|
||||
}
|
||||
|
||||
MPP_RET mpp_buffer_group_set_listener(MppBufferGroupImpl *p, void *listener)
|
||||
{
|
||||
if (NULL == p || NULL == listener) {
|
||||
mpp_err_f("found NULL pointer\n");
|
||||
return MPP_ERR_NULL_PTR;
|
||||
}
|
||||
|
||||
p->listener = listener;
|
||||
|
||||
return MPP_OK;
|
||||
}
|
||||
|
||||
void mpp_buffer_group_dump(MppBufferGroupImpl *group)
|
||||
{
|
||||
mpp_log("\ndumping buffer group %p id %d\n", group, group->group_id);
|
||||
|
@@ -78,6 +78,9 @@ struct MppBufferGroupImpl_t {
|
||||
RK_S32 count_used;
|
||||
RK_S32 count_unused;
|
||||
|
||||
// thread that will be signal on buffer return
|
||||
void *listener;
|
||||
|
||||
// buffer log function
|
||||
RK_U32 log_runtime_en;
|
||||
RK_U32 log_history_en;
|
||||
@@ -129,6 +132,7 @@ MppBufferImpl *mpp_buffer_get_unused(MppBufferGroupImpl *p, size_t size);
|
||||
MPP_RET mpp_buffer_group_init(MppBufferGroupImpl **group, const char *tag, const char *caller, MppBufferMode mode, MppBufferType type);
|
||||
MPP_RET mpp_buffer_group_deinit(MppBufferGroupImpl *p);
|
||||
MPP_RET mpp_buffer_group_reset(MppBufferGroupImpl *p);
|
||||
MPP_RET mpp_buffer_group_set_listener(MppBufferGroupImpl *p, void *listener);
|
||||
void mpp_buffer_group_dump(MppBufferGroupImpl *p);
|
||||
MppBufferGroupImpl *mpp_buffer_legacy_group();
|
||||
|
||||
|
Reference in New Issue
Block a user