mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-21 16:19:23 +08:00
[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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user