Lines Matching refs:task
32 static MPP_RET check_task_wait(MppDecImpl *dec, DecTask *task) in check_task_wait() argument
37 RK_U32 curr_wait = task->wait.val; in check_task_wait()
62 dec->parser_status_flag = task->status.val; in check_task_wait()
63 dec->parser_wait_flag = task->wait.val; in check_task_wait()
123 static RK_U32 reset_parser_thread(Mpp *mpp, DecTask *task) in reset_parser_thread() argument
130 HalDecTask *task_dec = &task->info.dec; in reset_parser_thread()
161 task->status.curr_task_rdy = 0; in reset_parser_thread()
162 task->status.prev_task_rdy = 1; in reset_parser_thread()
172 if (task->status.task_parsed_rdy) { in reset_parser_thread()
182 task->status.task_parsed_rdy = 0; in reset_parser_thread()
208 if (task->status.dec_pkt_copy_rdy) { in reset_parser_thread()
210 task->status.dec_pkt_copy_rdy = 0; in reset_parser_thread()
215 if (task->wait.info_change) in reset_parser_thread()
218 task->status.task_parsed_rdy = 0; in reset_parser_thread()
224 dec_task_init(task); in reset_parser_thread()
231 static void mpp_dec_put_task(Mpp *mpp, DecTask *task) in mpp_dec_put_task() argument
235 hal_task_hnd_set_info(task->hnd, &task->info); in mpp_dec_put_task()
237 hal_task_hnd_set_status(task->hnd, TASK_PROCESSING); in mpp_dec_put_task()
241 task->hnd = NULL; in mpp_dec_put_task()
251 HalTaskHnd task = NULL; in reset_hal_thread() local
264 while (MPP_OK == hal_task_get_hnd(tasks, TASK_PROC_DONE, &task)) { in reset_hal_thread()
265 if (task) { in reset_hal_thread()
266 hal_task_hnd_set_status(task, TASK_IDLE); in reset_hal_thread()
267 task = NULL; in reset_hal_thread()
274 static MPP_RET try_get_input_packet(Mpp *mpp, DecTask *task) in try_get_input_packet() argument
284 task->wait.dec_pkt_in = 1; in try_get_input_packet()
301 task->status.mpp_pkt_in_rdy = 1; in try_get_input_packet()
302 task->wait.dec_pkt_in = 0; in try_get_input_packet()
307 static MPP_RET try_proc_dec_task(Mpp *mpp, DecTask *task) in try_proc_dec_task() argument
313 HalDecTask *task_dec = &task->info.dec; in try_proc_dec_task()
322 if (!task->hnd) { in try_proc_dec_task()
323 hal_task_get_hnd(tasks, TASK_IDLE, &task->hnd); in try_proc_dec_task()
324 if (task->hnd) { in try_proc_dec_task()
325 task->wait.task_hnd = 0; in try_proc_dec_task()
327 task->wait.task_hnd = 1; in try_proc_dec_task()
335 if (!dec->mpp_pkt_in && !task->status.curr_task_rdy) { in try_proc_dec_task()
336 if (try_get_input_packet(mpp, task)) in try_proc_dec_task()
371 if (!task->status.curr_task_rdy) { in try_proc_dec_task()
378 task->ts_cur.pts = mpp_packet_get_pts(dec->mpp_pkt_in); in try_proc_dec_task()
379 task->ts_cur.dts = mpp_packet_get_dts(dec->mpp_pkt_in); in try_proc_dec_task()
384 task->status.curr_task_rdy = task_dec->valid; in try_proc_dec_task()
391 mpp_dec_put_task(mpp, task); in try_proc_dec_task()
393 if (!task->status.curr_task_rdy) in try_proc_dec_task()
406 task->wait.dec_pkt_idx = (task_dec->input < 0); in try_proc_dec_task()
407 if (task->wait.dec_pkt_idx) in try_proc_dec_task()
428 task->wait.dec_pkt_buf = (NULL == hal_buf_in); in try_proc_dec_task()
429 if (task->wait.dec_pkt_buf) in try_proc_dec_task()
435 if (!task->status.dec_pkt_copy_rdy) { in try_proc_dec_task()
443 task->status.dec_pkt_copy_rdy = 1; in try_proc_dec_task()
449 if (!task->status.prev_task_rdy) { in try_proc_dec_task()
453 task->status.prev_task_rdy = 1; in try_proc_dec_task()
454 task->wait.prev_task = 0; in try_proc_dec_task()
458 task->wait.prev_task = 1; in try_proc_dec_task()
465 if (task->wait.dec_all_done) { in try_proc_dec_task()
467 task->wait.dec_all_done = 0; in try_proc_dec_task()
476 task->wait.dis_que_full = (mpp_list_size(mpp->mFrmOut) > 4) ? 1 : 0; in try_proc_dec_task()
477 if (task->wait.dis_que_full) in try_proc_dec_task()
483 task->wait.dec_slot_idx = (mpp_slots_get_unused_count(frame_slots)) ? (0) : (1); in try_proc_dec_task()
484 if (task->wait.dec_slot_idx) in try_proc_dec_task()
501 if (!task->status.task_parsed_rdy) { in try_proc_dec_task()
505 task->status.task_parsed_rdy = 1; in try_proc_dec_task()
516 mpp_dec_put_task(mpp, task); in try_proc_dec_task()
518 hal_task_hnd_set_status(task->hnd, TASK_IDLE); in try_proc_dec_task()
519 task->hnd = NULL; in try_proc_dec_task()
522 if (task->status.dec_pkt_copy_rdy) { in try_proc_dec_task()
524 task->status.dec_pkt_copy_rdy = 0; in try_proc_dec_task()
526 task->status.curr_task_rdy = 0; in try_proc_dec_task()
527 task->status.task_parsed_rdy = 0; in try_proc_dec_task()
528 dec_task_info_init(&task->info); in try_proc_dec_task()
539 if (!task->status.info_task_gen_rdy) { in try_proc_dec_task()
545 mpp_dec_put_task(mpp, task); in try_proc_dec_task()
548 task->status.info_task_gen_rdy = 1; in try_proc_dec_task()
554 task->wait.info_change = mpp_buf_slot_is_changed(frame_slots); in try_proc_dec_task()
555 if (task->wait.info_change) { in try_proc_dec_task()
558 task->status.info_task_gen_rdy = 0; in try_proc_dec_task()
561 mpp_assert(task->hnd); in try_proc_dec_task()
575 task->wait.dec_pic_unusd = (dec->vproc) ? (unused < 3) : (unused < 1); in try_proc_dec_task()
576 if (task->wait.dec_pic_unusd) in try_proc_dec_task()
636 task->wait.dec_pic_match = (NULL == hal_buf_out); in try_proc_dec_task()
637 if (task->wait.dec_pic_match) in try_proc_dec_task()
646 pkt_ts->pts = task->ts_cur.pts; in try_proc_dec_task()
647 pkt_ts->dts = task->ts_cur.dts; in try_proc_dec_task()
659 mpp_hal_reg_gen(dec->hal, &task->info); in try_proc_dec_task()
664 mpp_hal_hw_start(dec->hal, &task->info); in try_proc_dec_task()
671 mpp_dec_put_task(mpp, task); in try_proc_dec_task()
673 task->wait.dec_all_done = (dec->parser_fast_mode && in try_proc_dec_task()
676 task->status.dec_pkt_copy_rdy = 0; in try_proc_dec_task()
677 task->status.curr_task_rdy = 0; in try_proc_dec_task()
678 task->status.task_parsed_rdy = 0; in try_proc_dec_task()
679 task->status.prev_task_rdy = 0; in try_proc_dec_task()
680 dec_task_info_init(&task->info); in try_proc_dec_task()
694 DecTask task; in mpp_dec_parser_thread() local
695 HalDecTask *task_dec = &task.info.dec; in mpp_dec_parser_thread()
697 dec_task_init(&task); in mpp_dec_parser_thread()
715 if (check_task_wait(dec, &task)) { in mpp_dec_parser_thread()
739 reset_parser_thread(mpp, &task); in mpp_dec_parser_thread()
751 try_proc_dec_task(mpp, &task); in mpp_dec_parser_thread()
758 if (task.hnd && task_dec->valid) { in mpp_dec_parser_thread()
778 HalTaskHnd task = NULL; in mpp_dec_hal_thread() local
793 if (hal_task_get_hnd(tasks, TASK_PROCESSING, &task)) { in mpp_dec_hal_thread()
814 if (task) { in mpp_dec_hal_thread()
820 hal_task_hnd_get_info(task, &task_info); in mpp_dec_hal_thread()
832 hal_task_hnd_set_status(task, TASK_IDLE); in mpp_dec_hal_thread()
833 task = NULL; in mpp_dec_hal_thread()
855 hal_task_hnd_set_status(task, TASK_IDLE); in mpp_dec_hal_thread()
856 task = NULL; in mpp_dec_hal_thread()
877 hal_task_hnd_set_status(task, (dec->parser_fast_mode) ? in mpp_dec_hal_thread()
885 task = NULL; in mpp_dec_hal_thread()
918 DecTask task; /* decoder task */ in mpp_dec_advanced_thread() local
919 DecTask *pTask = &task; in mpp_dec_advanced_thread()
936 if (check_task_wait(dec, &task)) in mpp_dec_advanced_thread()
957 dec_dbg_detail("mpp_pkt_in_rdy %d\n", task.status.mpp_pkt_in_rdy); in mpp_dec_advanced_thread()
958 if (!task.status.mpp_pkt_in_rdy) { in mpp_dec_advanced_thread()
961 task.wait.dec_pkt_in = 1; in mpp_dec_advanced_thread()
967 task.status.mpp_pkt_in_rdy = 1; in mpp_dec_advanced_thread()
968 task.wait.dec_pkt_in = 0; in mpp_dec_advanced_thread()
986 task.status.mpp_in_frm_at_pkt = 1; in mpp_dec_advanced_thread()
992 task.status.mpp_pkt_in_rdy = 0; in mpp_dec_advanced_thread()
1094 if (task.status.mpp_in_frm_at_pkt) { in mpp_dec_advanced_thread()
1112 task.status.mpp_in_frm_at_pkt = 0; in mpp_dec_advanced_thread()
1134 task.status.mpp_pkt_in_rdy = 0; in mpp_dec_advanced_thread()