Lines Matching refs:dec

26     HalDecTask *p = &task->dec;  in dec_task_info_init()
34 memset(&task->dec.syntax, 0, sizeof(task->dec.syntax)); in dec_task_info_init()
35 memset(task->dec.refer, -1, sizeof(task->dec.refer)); in dec_task_info_init()
91 MPP_RET mpp_dec_proc_cfg(MppDecImpl *dec, MpiCmd cmd, void *param) in mpp_dec_proc_cfg() argument
95 mpp_parser_control(dec->parser, cmd, param); in mpp_dec_proc_cfg()
97 ret = mpp_hal_control(dec->hal, cmd, param); in mpp_dec_proc_cfg()
107 dec->cfg->base.out_fmt = mpp_frame_get_fmt(frame); in mpp_dec_proc_cfg()
108 mpp_log_f("found MPP_DEC_SET_FRAME_INFO fmt %x\n", dec->cfg->base.out_fmt); in mpp_dec_proc_cfg()
110 mpp_slots_set_prop(dec->frame_slots, SLOTS_FRAME_INFO, frame); in mpp_dec_proc_cfg()
120 ret = mpp_buf_slot_ready(dec->frame_slots); in mpp_dec_proc_cfg()
124 *p = mpp_slots_get_used_count(dec->frame_slots); in mpp_dec_proc_cfg()
138 ret = mpp_dec_set_cfg_by_cmd(dec->cfg_obj, cmd, param); in mpp_dec_proc_cfg()
139 mpp_dec_update_cfg(dec); in mpp_dec_proc_cfg()
140 mpp_dec_check_fbc_cap(dec); in mpp_dec_proc_cfg()
141 dec->cfg->base.change = 0; in mpp_dec_proc_cfg()
150 query->rt_status = dec->parser_status_flag; in mpp_dec_proc_cfg()
153 query->rt_wait = dec->parser_wait_flag; in mpp_dec_proc_cfg()
162 query->dec_in_pkt_cnt = dec->dec_in_pkt_count; in mpp_dec_proc_cfg()
165 query->dec_hw_run_cnt = dec->dec_hw_run_count; in mpp_dec_proc_cfg()
168 query->dec_out_frm_cnt = dec->dec_out_frame_count; in mpp_dec_proc_cfg()
172 kmpp_obj_update(dec->cfg_obj, (KmppObj)param); in mpp_dec_proc_cfg()
173 mpp_dec_update_cfg(dec); in mpp_dec_proc_cfg()
174 mpp_dec_check_fbc_cap(dec); in mpp_dec_proc_cfg()
181 ret = (MPP_RET)kmpp_obj_copy_entry(param, dec->cfg_obj); in mpp_dec_proc_cfg()
196 MppDecImpl *dec = (MppDecImpl *)mpp->mDec; in mpp_dec_put_frame() local
197 MppBufSlots slots = dec->frame_slots; in mpp_dec_put_frame()
211 if (mode && dec->enable_deinterlace && NULL == dec->vproc) { in mpp_dec_put_frame()
213 MPP_RET ret = dec_vproc_init(&dec->vproc, &cfg); in mpp_dec_put_frame()
217 dec->enable_deinterlace = 0; in mpp_dec_put_frame()
218 dec->vproc = NULL; in mpp_dec_put_frame()
220 if (dec_vproc_get_version(dec->vproc) == 1 && mode == MPP_FRAME_FLAG_DEINTERLACED) { in mpp_dec_put_frame()
223 dec->cfg->base.enable_vproc &= (~MPP_VPROC_MODE_DETECTION); in mpp_dec_put_frame()
224 dec->enable_deinterlace = dec->cfg->base.enable_vproc; in mpp_dec_put_frame()
225 if (dec->vproc && !dec->enable_deinterlace) { in mpp_dec_put_frame()
226 dec_vproc_deinit(dec->vproc); in mpp_dec_put_frame()
227 dec->vproc = NULL; in mpp_dec_put_frame()
229 dec->vproc = NULL; in mpp_dec_put_frame()
232 dec_vproc_set_mode(dec->vproc, (MppVprocMode)dec->enable_deinterlace); in mpp_dec_put_frame()
234 dec->vproc_tasks = cfg.task_group; in mpp_dec_put_frame()
235 dec_vproc_start(dec->vproc); in mpp_dec_put_frame()
245 if (dec->vproc) { in mpp_dec_put_frame()
246 HalTaskGroup group = dec->vproc_tasks; in mpp_dec_put_frame()
255 if (dec->reset_flag) { in mpp_dec_put_frame()
268 dec_vproc_signal(dec->vproc); in mpp_dec_put_frame()
283 if (dec->cfg->base.disable_error && dec->cfg->base.dis_err_clr_mark) { in mpp_dec_put_frame()
289 if (dec->cfg->base.sort_pts) { in mpp_dec_put_frame()
292 mpp_spinlock_lock(&dec->ts_lock); in mpp_dec_put_frame()
293 pkt_ts = list_first_entry_or_null(&dec->ts_link, MppPktTs, link); in mpp_dec_put_frame()
296 mpp_spinlock_unlock(&dec->ts_lock); in mpp_dec_put_frame()
300 mpp_mem_pool_put_f(dec->ts_pool, pkt_ts); in mpp_dec_put_frame()
316 dec->dec_out_frame_count++; in mpp_dec_put_frame()
317 dec_dbg_detail("detail: %p put frm pts %llu fd %d\n", dec, in mpp_dec_put_frame()
322 if (dec->vproc) { in mpp_dec_put_frame()
323 HalTaskGroup group = dec->vproc_tasks; in mpp_dec_put_frame()
332 if (dec->reset_flag) { in mpp_dec_put_frame()
358 dec_vproc_signal(dec->vproc); in mpp_dec_put_frame()
378 mpp_dec_callback(dec, MPP_DEC_EVENT_ON_FRM_READY, out); in mpp_dec_put_frame()
385 MppDecImpl *dec = (MppDecImpl *)mpp->mDec; in mpp_dec_push_display() local
386 MppBufSlots frame_slots = dec->frame_slots; in mpp_dec_push_display()
402 if (dec->thread_hal) in mpp_dec_push_display()
403 mpp_thread_lock(dec->thread_hal, THREAD_OUTPUT); in mpp_dec_push_display()
415 if (dec->thread_hal) in mpp_dec_push_display()
416 mpp_thread_unlock(dec->thread_hal, THREAD_OUTPUT); in mpp_dec_push_display()
421 MPP_RET update_dec_hal_info(MppDecImpl *dec, MppFrame frame) in update_dec_hal_info() argument
423 HalInfo hal_info = dec->hal_info; in update_dec_hal_info()
435 val = hal_info_to_string(hal_info, DEC_INFO_FORMAT, &dec->coding); in update_dec_hal_info()
443 mpp_dev_ioctl(dec->dev, MPP_DEV_SET_INFO, &data[i]); in update_dec_hal_info()
492 MPP_RET mpp_dec_init(MppDec *dec, MppDecInitCfg *cfg) in mpp_dec_init() argument
513 if (NULL == dec || NULL == cfg) { in mpp_dec_init()
514 mpp_err_f("invalid input dec %p cfg %p\n", dec, cfg); in mpp_dec_init()
518 *dec = NULL; in mpp_dec_init()
675 *dec = p; in mpp_dec_init()
687 MppDecImpl *dec = (MppDecImpl *)ctx; in mpp_dec_deinit() local
689 dec_dbg_func("%p in\n", dec); in mpp_dec_deinit()
690 if (NULL == dec) { in mpp_dec_deinit()
695 if (dec->statistics_en) { in mpp_dec_deinit()
696 mpp_log("%p work %lu wait %lu\n", dec, in mpp_dec_deinit()
697 dec->parser_work_count, dec->parser_wait_count); in mpp_dec_deinit()
700 MppClock timer = dec->clocks[i]; in mpp_dec_deinit()
703 RK_S64 total = mpp_clock_get_sum(dec->clocks[base]); in mpp_dec_deinit()
708 mpp_log("%p %s - %6.2f %-12lld avg %-12lld\n", dec, in mpp_dec_deinit()
715 mpp_clock_put(dec->clocks[i]); in mpp_dec_deinit()
716 dec->clocks[i] = NULL; in mpp_dec_deinit()
719 if (dec->hal_info) { in mpp_dec_deinit()
720 hal_info_deinit(dec->hal_info); in mpp_dec_deinit()
721 dec->hal_info = NULL; in mpp_dec_deinit()
724 if (dec->parser) { in mpp_dec_deinit()
725 mpp_parser_deinit(dec->parser); in mpp_dec_deinit()
726 dec->parser = NULL; in mpp_dec_deinit()
729 if (dec->tasks) { in mpp_dec_deinit()
730 hal_task_group_deinit(dec->tasks); in mpp_dec_deinit()
731 dec->tasks = NULL; in mpp_dec_deinit()
734 if (dec->hal) { in mpp_dec_deinit()
735 mpp_hal_deinit(dec->hal); in mpp_dec_deinit()
736 dec->hal = NULL; in mpp_dec_deinit()
739 if (dec->vproc) { in mpp_dec_deinit()
740 dec_vproc_deinit(dec->vproc); in mpp_dec_deinit()
741 dec->vproc = NULL; in mpp_dec_deinit()
744 if (dec->frame_slots) { in mpp_dec_deinit()
745 mpp_buf_slot_deinit(dec->frame_slots); in mpp_dec_deinit()
746 dec->frame_slots = NULL; in mpp_dec_deinit()
749 if (dec->packet_slots) { in mpp_dec_deinit()
750 mpp_buf_slot_deinit(dec->packet_slots); in mpp_dec_deinit()
751 dec->packet_slots = NULL; in mpp_dec_deinit()
754 mpp_mutex_cond_destroy(&dec->cmd_lock); in mpp_dec_deinit()
756 sem_destroy(&dec->parser_reset); in mpp_dec_deinit()
757 sem_destroy(&dec->hal_reset); in mpp_dec_deinit()
758 sem_destroy(&dec->cmd_start); in mpp_dec_deinit()
759 sem_destroy(&dec->cmd_done); in mpp_dec_deinit()
761 if (dec->ts_pool) { in mpp_dec_deinit()
762 mpp_mem_pool_deinit_f(dec->ts_pool); in mpp_dec_deinit()
763 dec->ts_pool = NULL; in mpp_dec_deinit()
766 if (dec->cfg_obj) { in mpp_dec_deinit()
767 mpp_dec_cfg_deinit(dec->cfg_obj); in mpp_dec_deinit()
768 dec->cfg_obj = NULL; in mpp_dec_deinit()
770 dec->cfg = NULL; in mpp_dec_deinit()
772 MPP_FREE(dec->task_single); in mpp_dec_deinit()
773 mpp_free(dec); in mpp_dec_deinit()
774 dec_dbg_func("%p out\n", dec); in mpp_dec_deinit()
780 MppDecImpl *dec = (MppDecImpl *)ctx; in mpp_dec_start() local
783 dec_dbg_func("%p in\n", dec); in mpp_dec_start()
785 if (dec->api && dec->api->start) in mpp_dec_start()
786 ret = dec->api->start(dec); in mpp_dec_start()
788 dec_dbg_func("%p out ret %d\n", dec, ret); in mpp_dec_start()
795 MppDecImpl *dec = (MppDecImpl *)ctx; in mpp_dec_stop() local
797 dec_dbg_func("%p in\n", dec); in mpp_dec_stop()
799 if (dec->thread_parser) in mpp_dec_stop()
800 mpp_thread_stop(dec->thread_parser); in mpp_dec_stop()
802 if (dec->thread_hal) in mpp_dec_stop()
803 mpp_thread_stop(dec->thread_hal); in mpp_dec_stop()
805 if (dec->thread_parser) { in mpp_dec_stop()
806 mpp_thread_destroy(dec->thread_parser); in mpp_dec_stop()
807 dec->thread_parser = NULL; in mpp_dec_stop()
810 if (dec->thread_hal) { in mpp_dec_stop()
811 mpp_thread_destroy(dec->thread_hal); in mpp_dec_stop()
812 dec->thread_hal = NULL; in mpp_dec_stop()
815 dec_dbg_func("%p out\n", dec); in mpp_dec_stop()
821 MppDecImpl *dec = (MppDecImpl *)ctx; in mpp_dec_reset() local
824 if (NULL == dec) { in mpp_dec_reset()
825 mpp_err_f("found NULL input dec %p\n", dec); in mpp_dec_reset()
829 dec_dbg_func("%p in\n", dec); in mpp_dec_reset()
831 if (dec->api && dec->api->reset) in mpp_dec_reset()
832 ret = dec->api->reset(dec); in mpp_dec_reset()
834 dec_dbg_func("%p out ret %d\n", dec, ret); in mpp_dec_reset()
841 MppDecImpl *dec = (MppDecImpl *)ctx; in mpp_dec_flush() local
843 dec_dbg_func("%p in\n", dec); in mpp_dec_flush()
844 if (NULL == dec) { in mpp_dec_flush()
845 mpp_err_f("found NULL input dec %p\n", dec); in mpp_dec_flush()
849 mpp_parser_flush(dec->parser); in mpp_dec_flush()
850 mpp_hal_flush(dec->hal); in mpp_dec_flush()
852 dec_dbg_func("%p out\n", dec); in mpp_dec_flush()
858 MppDecImpl *dec = (MppDecImpl *)ctx; in mpp_dec_notify() local
861 dec_dbg_func("%p in flag %08x\n", dec, flag); in mpp_dec_notify()
863 if (dec->vproc && (flag & MPP_DEC_NOTIFY_BUFFER_MATCH)) in mpp_dec_notify()
864 dec_vproc_signal(dec->vproc); in mpp_dec_notify()
866 if (dec->api && dec->api->notify) in mpp_dec_notify()
867 ret = dec->api->notify(dec, flag); in mpp_dec_notify()
869 dec_dbg_func("%p out ret %d\n", dec, ret); in mpp_dec_notify()
876 MppDecImpl *dec = (MppDecImpl *)ctx; in mpp_dec_callback() local
877 MppDecCbCfg *cb = &dec->cfg->cb; in mpp_dec_callback()
878 Mpp *mpp = (Mpp *)dec->mpp; in mpp_dec_callback()
900 MppDecImpl *dec = (MppDecImpl *)ctx; in mpp_dec_control() local
902 if (NULL == dec) { in mpp_dec_control()
903 mpp_err_f("found NULL input dec %p\n", dec); in mpp_dec_control()
907 dec_dbg_func("%p in %08x %p\n", dec, cmd, param); in mpp_dec_control()
908 dec_dbg_detail("detail: %p control cmd %08x param %p start\n", dec, cmd, param); in mpp_dec_control()
910 if (dec->api && dec->api->control) in mpp_dec_control()
911 ret = dec->api->control(dec, cmd, param); in mpp_dec_control()
913 dec_dbg_detail("detail: %p control cmd %08x param %p ret %d\n", dec, cmd, param, ret); in mpp_dec_control()
914 dec_dbg_func("%p out ret %d\n", dec, ret); in mpp_dec_control()