mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-06 01:26:49 +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_dec.h"
|
||||||
#include "mpp_enc.h"
|
#include "mpp_enc.h"
|
||||||
#include "mpp_hal.h"
|
#include "mpp_hal.h"
|
||||||
|
#include "mpp_buffer_impl.h"
|
||||||
#include "mpp_frame_impl.h"
|
#include "mpp_frame_impl.h"
|
||||||
#include "mpp_packet.h"
|
#include "mpp_packet.h"
|
||||||
#include "mpp_packet_impl.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: {
|
case MPP_DEC_SET_EXT_BUF_GROUP: {
|
||||||
mpp_log("mpi_control group %p\n", param);
|
mpp_log("mpi_control group %p\n", param);
|
||||||
mFrameGroup = (MppBufferGroup)param;
|
mFrameGroup = (MppBufferGroup)param;
|
||||||
|
mpp_buffer_group_set_listener((MppBufferGroupImpl *)param, (void *)mThreadCodec);
|
||||||
mpp_log("signal codec thread\n");
|
mpp_log("signal codec thread\n");
|
||||||
mThreadCodec->signal();
|
mThreadCodec->signal();
|
||||||
break;
|
break;
|
||||||
|
@@ -279,6 +279,10 @@ MPP_RET mpp_buffer_ref_dec(MppBufferImpl *buffer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
group->count_used--;
|
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;
|
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)
|
void mpp_buffer_group_dump(MppBufferGroupImpl *group)
|
||||||
{
|
{
|
||||||
mpp_log("\ndumping buffer group %p id %d\n", group, group->group_id);
|
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_used;
|
||||||
RK_S32 count_unused;
|
RK_S32 count_unused;
|
||||||
|
|
||||||
|
// thread that will be signal on buffer return
|
||||||
|
void *listener;
|
||||||
|
|
||||||
// buffer log function
|
// buffer log function
|
||||||
RK_U32 log_runtime_en;
|
RK_U32 log_runtime_en;
|
||||||
RK_U32 log_history_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_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_deinit(MppBufferGroupImpl *p);
|
||||||
MPP_RET mpp_buffer_group_reset(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);
|
void mpp_buffer_group_dump(MppBufferGroupImpl *p);
|
||||||
MppBufferGroupImpl *mpp_buffer_legacy_group();
|
MppBufferGroupImpl *mpp_buffer_legacy_group();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user