[mpp_task]: Add positive return for port poll

When poll the port task and there is task for dequeue just return
positive valid task count value to caller.

Change-Id: I6c078cee69e34ba9b6cc5ffa77c704b8c59683b4
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
Herman Chen
2021-03-03 10:24:35 +08:00
parent 27a8f219d3
commit d3ed1d9e6e
5 changed files with 21 additions and 21 deletions

View File

@@ -158,7 +158,7 @@ MPP_RET _mpp_port_poll(const char *caller, MppPort port, MppPollType timeout)
curr = &queue->info[port_impl->status_curr];
if (curr->count) {
mpp_assert(!list_empty(&curr->list));
ret = MPP_OK;
ret = (MPP_RET)curr->count;
mpp_task_dbg_flow("mpp %p %s from %s poll %s port timeout %d count %d\n",
queue->mpp, queue->name, caller,
port_type_str[port_impl->type],
@@ -189,7 +189,7 @@ MPP_RET _mpp_port_poll(const char *caller, MppPort port, MppPollType timeout)
if (curr->count) {
mpp_assert(!list_empty(&curr->list));
ret = MPP_OK;
ret = (MPP_RET)curr->count;
}
}

View File

@@ -22,7 +22,7 @@ void *task_input(void *arg)
for (i = 0; i < MAX_TASK_LOOP; i++) {
ret = mpp_port_poll(port, MPP_POLL_BLOCK);
mpp_assert(!ret);
mpp_assert(ret >= 0);
ret = mpp_port_dequeue(port, &task);
mpp_assert(!ret);
@@ -50,7 +50,7 @@ void *task_output(void *arg)
for (i = 0; i < MAX_TASK_LOOP; i++) {
ret = mpp_port_poll(port, MPP_POLL_BLOCK);
mpp_assert(!ret);
mpp_assert(ret >= 0);
ret = mpp_port_dequeue(port, &task);
mpp_assert(!ret);
@@ -76,7 +76,7 @@ void *task_in_and_out(void *arg)
for (i = 0; i < MAX_TASK_LOOP; i++) {
ret = mpp_port_poll(port_input, MPP_POLL_BLOCK);
mpp_assert(!ret);
mpp_assert(ret >= 0);
ret = mpp_port_dequeue(port_input, &task);
mpp_assert(!ret);
@@ -87,7 +87,7 @@ void *task_in_and_out(void *arg)
ret = mpp_port_poll(port_output, MPP_POLL_BLOCK);
mpp_assert(!ret);
mpp_assert(ret >= 0);
ret = mpp_port_dequeue(port_output, &task);
mpp_assert(!ret);
@@ -111,7 +111,7 @@ void *task_worker(void *arg)
for (i = 0; i < MAX_TASK_LOOP; i++) {
ret = mpp_port_poll(port_src, MPP_POLL_BLOCK);
mpp_assert(!ret);
mpp_assert(ret >= 0);
ret = mpp_port_dequeue(port_src, &task);
mpp_assert(!ret);
@@ -121,7 +121,7 @@ void *task_worker(void *arg)
mpp_assert(!ret);
ret = mpp_port_poll(port_dst, MPP_POLL_BLOCK);
mpp_assert(!ret);
mpp_assert(ret >= 0);
ret = mpp_port_dequeue(port_dst, &task);
mpp_assert(!ret);
@@ -147,7 +147,7 @@ void serial_task(void)
for (i = 0; i < MAX_TASK_LOOP; i++) {
ret = mpp_port_poll(port_ii, MPP_POLL_BLOCK);
mpp_assert(!ret);
mpp_assert(ret >= 0);
ret = mpp_port_dequeue(port_ii, &task);
mpp_assert(!ret);
@@ -158,7 +158,7 @@ void serial_task(void)
ret = mpp_port_poll(port_io, MPP_POLL_BLOCK);
mpp_assert(!ret);
mpp_assert(ret >= 0);
ret = mpp_port_dequeue(port_io, &task);
mpp_assert(!ret);
@@ -169,7 +169,7 @@ void serial_task(void)
ret = mpp_port_poll(port_oi, MPP_POLL_BLOCK);
mpp_assert(!ret);
mpp_assert(ret >= 0);
ret = mpp_port_dequeue(port_oi, &task);
mpp_assert(!ret);
@@ -180,7 +180,7 @@ void serial_task(void)
ret = mpp_port_poll(port_oo, MPP_POLL_BLOCK);
mpp_assert(!ret);
mpp_assert(ret >= 0);
ret = mpp_port_dequeue(port_oo, &task);
mpp_assert(!ret);

View File

@@ -1217,7 +1217,7 @@ static MPP_RET dec_release_task_in_port(MppPort port)
do {
ret = mpp_port_poll(port, MPP_POLL_NON_BLOCK);
if (ret)
if (ret < 0)
break;
ret = mpp_port_dequeue(port, &mpp_task);
@@ -1293,7 +1293,7 @@ void *mpp_dec_advanced_thread(void *data)
dec_dbg_detail("mpp_pkt_in_rdy %d\n", task.status.mpp_pkt_in_rdy);
if (!task.status.mpp_pkt_in_rdy) {
ret = mpp_port_poll(input, MPP_POLL_NON_BLOCK);
if (ret) {
if (ret < 0) {
task.wait.dec_pkt_in = 1;
continue;
}

View File

@@ -187,7 +187,7 @@ static MPP_RET release_task_in_port(MppPort port)
do {
ret = mpp_port_poll(port, MPP_POLL_NON_BLOCK);
if (ret)
if (ret < 0)
break;
mpp_port_dequeue(port, &mpp_task);
@@ -1429,7 +1429,7 @@ static MPP_RET try_get_enc_task(MppEncImpl *enc, EncTask *task)
if (!status->task_in_rdy) {
ret = mpp_port_poll(enc->input, MPP_POLL_NON_BLOCK);
if (ret) {
if (ret < 0) {
wait->enc_frm_in = 1;
return ret;
}
@@ -1442,7 +1442,7 @@ static MPP_RET try_get_enc_task(MppEncImpl *enc, EncTask *task)
// 5. check output task
if (!status->task_out_rdy) {
ret = mpp_port_poll(enc->output, MPP_POLL_NON_BLOCK);
if (ret) {
if (ret < 0) {
wait->enc_pkt_out = 1;
return ret;
}
@@ -1697,7 +1697,7 @@ static MPP_RET try_proc_low_deley_task(Mpp *mpp, EncTask *task)
if (NULL == enc->task_out) {
enc_dbg_detail("task %d poll new task for part output\n", frm->seq_idx);
ret = mpp_port_poll(enc->output, MPP_POLL_NON_BLOCK);
if (ret) {
if (ret < 0) {
wait->enc_pkt_out = 1;
status->low_delay_again = 1;
return MPP_NOK;

View File

@@ -393,7 +393,7 @@ MPP_RET Mpp::put_frame(MppFrame frame)
mpp_stopwatch_record(stopwatch, "input port user poll");
/* poll input port for valid task */
ret = poll(MPP_PORT_INPUT, mInputTimeout);
if (ret) {
if (ret < 0) {
mpp_log_f("poll on set timeout %d ret %d\n", mInputTimeout, ret);
goto RET;
}
@@ -445,7 +445,7 @@ MPP_RET Mpp::put_frame(MppFrame frame)
/* wait enqueued task finished */
mpp_stopwatch_record(stopwatch, "input port user poll");
ret = poll(MPP_PORT_INPUT, mInputTimeout);
if (ret) {
if (ret < 0) {
mpp_log_f("poll on get timeout %d ret %d\n", mInputTimeout, ret);
goto RET;
}
@@ -481,7 +481,7 @@ MPP_RET Mpp::get_packet(MppPacket *packet)
MppTask task = NULL;
ret = poll(MPP_PORT_OUTPUT, mOutputTimeout);
if (ret) {
if (ret < 0) {
// NOTE: Do not treat poll failure as error. Just clear output
ret = MPP_OK;
*packet = NULL;