mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-06 01:26:49 +08:00
[mpi]: Add poll interface to mpi
1. Add poll with timeout. Support three mode: block/non-block/timeout. 2. Change control MPP_SET_INPUT_BLOCK and MPP_SET_OUTPUT_BLOCK. 3. Remove msleep in most mpp interface. Change-Id: I39d9a261b6f1da66c6cb944abd71d1e7f4928d2d Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
27
mpp/mpi.cpp
27
mpp/mpi.cpp
@@ -285,6 +285,32 @@ static MPP_RET mpi_isp_get_frame(MppCtx ctx, MppFrame *frame)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static MPP_RET mpi_poll(MppCtx ctx, MppPortType type, MppPollType timeout)
|
||||
{
|
||||
MPP_RET ret = MPP_NOK;
|
||||
MpiImpl *p = (MpiImpl *)ctx;
|
||||
|
||||
mpi_dbg_func("enter ctx %p type %d timeout %d\n", ctx, type, timeout);
|
||||
do {
|
||||
ret = check_mpp_ctx(p);
|
||||
if (ret)
|
||||
break;;
|
||||
|
||||
if (type >= MPP_PORT_BUTT ||
|
||||
timeout < MPP_POLL_BUTT ||
|
||||
timeout > MPP_POLL_MAX) {
|
||||
mpp_err_f("invalid input type %d timeout %d\n", type, timeout);
|
||||
ret = MPP_ERR_UNKNOW;
|
||||
break;
|
||||
}
|
||||
|
||||
ret = p->ctx->poll(type, timeout);
|
||||
} while (0);
|
||||
|
||||
mpi_dbg_func("leave ret %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static MPP_RET mpi_dequeue(MppCtx ctx, MppPortType type, MppTask *task)
|
||||
{
|
||||
MPP_RET ret = MPP_NOK;
|
||||
@@ -381,6 +407,7 @@ static MppApi mpp_api = {
|
||||
mpi_isp,
|
||||
mpi_isp_put_frame,
|
||||
mpi_isp_get_frame,
|
||||
mpi_poll,
|
||||
mpi_dequeue,
|
||||
mpi_enqueue,
|
||||
mpi_reset,
|
||||
|
Reference in New Issue
Block a user