Lines Matching refs:ps_codec

418 WORD32 ihevcd_nctb_cnt(codec_t *ps_codec, sps_t *ps_sps)
421 UNUSED(ps_codec);
524 * @param[in] ps_codec
534 IHEVCD_ERROR_T ihevcd_pic_buf_mgr_add_bufs(codec_t *ps_codec)
550 ps_sps = ps_codec->s_parse.ps_sps;
557 level = ps_codec->i4_init_level;
572 max_num_bufs = MIN(max_dpb_size, (ps_codec->i4_init_num_ref + ps_codec->i4_init_num_reorder + 1));
575 pu1_buf = (UWORD8 *)ps_codec->ps_pic_buf;
577 ps_pic_buf = (pic_buf_t *)ps_codec->ps_pic_buf;
584 if(0 == ps_codec->i4_share_disp_buf)
589 pic_buf_size_allocated = ps_codec->i4_total_pic_buf_size -
592 luma_samples = (ps_codec->i4_strd) *
609 ps_codec->s_parse.i4_error_code = IHEVCD_INSUFFICIENT_MEM_PICBUF;
615 ps_pic_buf->pu1_luma = pu1_buf + ps_codec->i4_strd * PAD_TOP + PAD_LEFT;
618 ps_pic_buf->pu1_chroma = pu1_buf + ps_codec->i4_strd * (PAD_TOP / 2) + PAD_LEFT;
621 buf_ret = ihevc_buf_mgr_add((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, ps_pic_buf, i);
625 ps_codec->s_parse.i4_error_code = IHEVCD_BUF_MGR_ERROR;
644 * @param[in] ps_codec
654 IHEVCD_ERROR_T ihevcd_mv_buf_mgr_add_bufs(codec_t *ps_codec)
668 ps_sps = ps_codec->s_parse.ps_sps;
672 level = ps_codec->i4_init_level;
683 pu1_buf = (UWORD8 *)ps_codec->pv_mv_bank_buf_base;
687 ps_codec->ps_mv_buf = ps_mv_buf;
688 mv_bank_size_allocated = ps_codec->i4_total_mv_bank_size - BUF_MGR_MAX_CNT * sizeof(mv_buf_t);
712 ps_codec->s_parse.i4_error_code = IHEVCD_INSUFFICIENT_MEM_MVBANK;
727 buf_ret = ihevc_buf_mgr_add((buf_mgr_t *)ps_codec->pv_mv_buf_mgr, ps_mv_buf, i);
731 ps_codec->s_parse.i4_error_code = IHEVCD_BUF_MGR_ERROR;
750 * @param[in] ps_codec
760 IHEVCD_ERROR_T ihevcd_parse_pic_init(codec_t *ps_codec)
773 ps_codec->s_parse.i4_error_code = IHEVCD_SUCCESS;
774 ps_sps = ps_codec->s_parse.ps_sps;
775 ps_slice_hdr = ps_codec->s_parse.ps_slice_hdr;
777 ps_codec->i4_pic_present = 1;
781 memset(ps_codec->s_parse.pu1_pic_intra_flag, 0, num_min_cu);
782 memset(ps_codec->s_parse.pu1_pic_no_loop_filter_flag, 0, num_min_cu);
786 if(0 == ps_codec->s_parse.i4_first_pic_init)
788 ret = ihevcd_mv_buf_mgr_add_bufs(ps_codec);
791 ret = ihevcd_pic_buf_mgr_add_bufs(ps_codec);
794 ps_codec->s_parse.i4_first_pic_init = 1;
802 slice_start_idx = ps_codec->i4_slice_error ? 2 : 1;
806 slice_header_t *ps_slice_hdr_tmp = ps_codec->ps_slice_hdr_base + slice_idx;
815 ps_mv_buf = (mv_buf_t *)ihevc_buf_mgr_get_next_free((buf_mgr_t *)ps_codec->pv_mv_buf_mgr, &cur_mv_bank_buf_id);
823 ps_codec->s_parse.i4_error_code = IHEVCD_NO_FREE_MVBANK;
824 ps_codec->i4_error_code = IHEVCD_NO_FREE_MVBANK;
828 ps_codec->s_parse.ps_cur_mv_buf = ps_mv_buf;
830 * corresponding mv buffer can be found by looping through ps_codec->ps_mv_buf array
843 ps_cur_pic = (pic_buf_t *)ihevc_buf_mgr_get_next_free((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, &cur_pic_buf_id);
851 ps_codec->s_parse.i4_error_code = IHEVCD_NO_FREE_PICBUF;
852 ps_codec->i4_error_code = IHEVCD_NO_FREE_PICBUF;
857 ps_cur_pic->u4_ts = ps_codec->u4_ts;
868 if(0 == ps_codec->u4_pic_cnt)
880 dpb_mgr_t *ps_dpb_mgr = (dpb_mgr_t *)ps_codec->pv_dpb_mgr;
881 buf_mgr_t *ps_mv_buf_mgr = (buf_mgr_t *)ps_codec->pv_mv_buf_mgr;
927 ihevcd_jobq_reset((jobq_t *)ps_codec->pv_proc_jobq);
929 ps_codec->s_parse.i4_pic_pu_idx = 0;
930 ps_codec->s_parse.i4_pic_tu_idx = 0;
932 ps_codec->s_parse.pu1_pic_pu_map = ps_mv_buf->pu1_pic_pu_map;
933 ps_codec->s_parse.ps_pic_pu = ps_mv_buf->ps_pic_pu;
934 ps_codec->s_parse.pu4_pic_pu_idx = ps_mv_buf->pu4_pic_pu_idx;
935 ps_codec->s_parse.pu1_slice_idx = (UWORD16 *)ps_mv_buf->pu1_pic_slice_map;
938 ps_codec->as_process[i].pu1_slice_idx = (UWORD16 *)ps_mv_buf->pu1_pic_slice_map;
940 ps_codec->s_parse.pu1_pu_map = ps_codec->s_parse.pu1_pic_pu_map;
941 ps_codec->s_parse.ps_pu = ps_codec->s_parse.ps_pic_pu;
959 pu1_buf = (UWORD8 *)ps_codec->pv_tu_data;
960 ps_codec->s_parse.pu4_pic_tu_idx = (UWORD32 *)pu1_buf;
963 ps_codec->s_parse.pu1_pic_tu_map = pu1_buf;
966 ps_codec->s_parse.ps_pic_tu = (tu_t *)pu1_buf;
969 ps_codec->s_parse.pv_pic_tu_coeff_data = pu1_buf;
971 ps_codec->s_parse.pu1_tu_map = ps_codec->s_parse.pu1_pic_tu_map;
972 ps_codec->s_parse.ps_tu = ps_codec->s_parse.ps_pic_tu;
973 ps_codec->s_parse.pv_tu_coeff_data = ps_codec->s_parse.pv_pic_tu_coeff_data;
976 ps_codec->s_parse.s_bs_ctxt.ps_pic_pu = ps_codec->s_parse.ps_pic_pu;
977 ps_codec->s_parse.s_bs_ctxt.pu4_pic_pu_idx = ps_codec->s_parse.pu4_pic_pu_idx;
978 ps_codec->s_parse.s_bs_ctxt.pu4_pic_tu_idx = ps_codec->s_parse.pu4_pic_tu_idx;
982 ps_codec->i4_proc_nctb = ihevcd_nctb_cnt(ps_codec, ps_sps);
991 memset(ps_codec->pu1_parse_map, 0, num_ctb);
993 memset(ps_codec->pu1_proc_map, 0, num_ctb);
1001 ps_codec->i4_disp_buf_id = -1;
1002 ps_codec->ps_disp_buf = NULL;
1004 ps_codec->i4_disable_deblk_pic = 0;
1005 ps_codec->i4_disable_sao_pic = 0;
1006 ps_codec->i4_fullpel_inter_pred = 0;
1007 ps_codec->i4_mv_frac_mask = 0x7FFFFFFF;
1010 if(ps_codec->i4_degrade_type && ps_codec->i4_degrade_pics)
1013 ps_codec->i4_degrade_pic_cnt++;
1017 switch(ps_codec->i4_degrade_pics)
1036 (ps_codec->i4_degrade_pic_cnt != ps_codec->i4_nondegrade_interval))
1056 if(ps_codec->i4_degrade_type & 0x1)
1057 ps_codec->i4_disable_sao_pic = 1;
1059 if(ps_codec->i4_degrade_type & 0x2)
1060 ps_codec->i4_disable_deblk_pic = 1;
1066 if(ps_codec->i4_degrade_type & 0x4)
1067 ps_codec->i4_mv_frac_mask = 0;
1069 if(ps_codec->i4_degrade_type & 0x8)
1070 ps_codec->i4_mv_frac_mask = 0;
1074 ps_codec->i4_degrade_pic_cnt = 0;
1082 ps_codec->as_process[i].pu4_pic_pu_idx = ps_codec->s_parse.pu4_pic_pu_idx;
1083 ps_codec->as_process[i].ps_pic_pu = ps_codec->s_parse.ps_pic_pu;
1084 ps_codec->as_process[i].pu1_pic_pu_map = ps_codec->s_parse.pu1_pic_pu_map;
1085 ps_codec->as_process[i].pu4_pic_tu_idx = ps_codec->s_parse.pu4_pic_tu_idx;
1086 ps_codec->as_process[i].ps_pic_tu = ps_codec->s_parse.ps_pic_tu;
1087 ps_codec->as_process[i].pu1_pic_tu_map = ps_codec->s_parse.pu1_pic_tu_map;
1088 ps_codec->as_process[i].pv_pic_tu_coeff_data = ps_codec->s_parse.pv_pic_tu_coeff_data;
1089 ps_codec->as_process[i].i4_cur_mv_bank_buf_id = cur_mv_bank_buf_id;
1090 ps_codec->as_process[i].s_sao_ctxt.pu1_slice_idx = ps_codec->as_process[i].pu1_slice_idx;
1091 ps_codec->as_process[i].s_sao_ctxt.pu1_tile_idx = ps_codec->as_process[i].pu1_tile_idx;
1096 ps_codec->as_process[i].pu1_cur_pic_luma = pu1_cur_pic_luma;
1097 ps_codec->as_process[i].pu1_cur_pic_chroma = pu1_cur_pic_chroma;
1098 ps_codec->as_process[i].ps_cur_pic = ps_cur_pic;
1099 ps_codec->as_process[i].i4_cur_pic_buf_id = cur_pic_buf_id;
1101 ps_codec->as_process[i].ps_out_buffer = ps_codec->ps_out_buffer;
1102 if(1 < ps_codec->i4_num_cores)
1104 ps_codec->as_process[i].i4_check_parse_status = 1;
1105 ps_codec->as_process[i].i4_check_proc_status = 1;
1109 ps_codec->as_process[i].i4_check_parse_status = 0;
1110 ps_codec->as_process[i].i4_check_proc_status = 0;
1112 ps_codec->as_process[i].pu1_pic_intra_flag = ps_codec->s_parse.pu1_pic_intra_flag;
1113 ps_codec->as_process[i].pu1_pic_no_loop_filter_flag = ps_codec->s_parse.pu1_pic_no_loop_filter_flag;
1114 ps_codec->as_process[i].i4_init_done = 0;
1116 ps_codec->as_process[i].s_bs_ctxt.pu4_pic_tu_idx = ps_codec->as_process[i].pu4_pic_tu_idx;
1117 ps_codec->as_process[i].s_bs_ctxt.pu4_pic_pu_idx = ps_codec->as_process[i].pu4_pic_pu_idx;
1118 ps_codec->as_process[i].s_bs_ctxt.ps_pic_pu = ps_codec->as_process[i].ps_pic_pu;
1119 ps_codec->as_process[i].s_deblk_ctxt.pu1_pic_no_loop_filter_flag = ps_codec->s_parse.pu1_pic_no_loop_filter_flag;
1120 ps_codec->as_process[i].s_deblk_ctxt.pu1_cur_pic_luma = pu1_cur_pic_luma;
1121 ps_codec->as_process[i].s_deblk_ctxt.pu1_cur_pic_chroma = pu1_cur_pic_chroma;
1122 ps_codec->as_process[i].s_sao_ctxt.pu1_pic_no_loop_filter_flag = ps_codec->s_parse.pu1_pic_no_loop_filter_flag;
1123 ps_codec->as_process[i].s_sao_ctxt.pu1_cur_pic_luma = pu1_cur_pic_luma;
1124 ps_codec->as_process[i].s_sao_ctxt.pu1_cur_pic_chroma = pu1_cur_pic_chroma;
1125 if(i < (ps_codec->i4_num_cores - 1))
1127 ithread_create(ps_codec->apv_process_thread_handle[i], NULL,
1129 (void *)&ps_codec->as_process[i]);
1130 ps_codec->ai4_process_thread_created[i] = 1;
1134 ps_codec->ai4_process_thread_created[i] = 0;
1138 ps_codec->s_parse.s_deblk_ctxt.pu1_cur_pic_luma = pu1_cur_pic_luma;
1139 ps_codec->s_parse.s_deblk_ctxt.pu1_cur_pic_chroma = pu1_cur_pic_chroma;
1141 ps_codec->s_parse.s_sao_ctxt.pu1_cur_pic_luma = pu1_cur_pic_luma;
1142 ps_codec->s_parse.s_sao_ctxt.pu1_cur_pic_chroma = pu1_cur_pic_chroma;
1156 ps_slice_hdr = ps_codec->s_parse.ps_slice_hdr;
1158 ihevc_disp_mgr_add((disp_mgr_t *)ps_codec->pv_disp_buf_mgr,
1159 ps_codec->as_process[0].i4_cur_pic_buf_id,
1161 ps_codec->as_process[0].ps_cur_pic);
1163 ps_codec->ps_disp_buf = NULL;
1166 if(((WORD32)(ps_codec->u4_pic_cnt - ps_codec->u4_disp_cnt) >= ps_sps->ai1_sps_max_num_reorder_pics[ps_sps->i1_sps_max_sub_layers - 1]) ||
1167 ((WORD32)(ps_codec->u4_pic_cnt - ps_codec->u4_disp_cnt) >= ps_codec->i4_init_num_reorder))
1170 ps_codec->ps_disp_buf = (pic_buf_t *)ihevc_disp_mgr_get((disp_mgr_t *)ps_codec->pv_disp_buf_mgr, &ps_codec->i4_disp_buf_id);
1171 ps_codec->u4_disp_cnt++;
1174 ps_codec->s_fmt_conv.i4_cur_row = 0;
1176 ps_codec->s_fmt_conv.i4_num_rows = 4;
1178 if(ps_codec->u4_enable_fmt_conv_ahead && (ps_codec->i4_num_cores > 1))
1183 ps_proc = &ps_codec->as_process[ps_codec->i4_num_cores - 1];
1189 if((ps_codec->ps_disp_buf) && (ps_codec->i4_disp_buf_id != ps_proc->i4_cur_pic_buf_id) &&
1190 ((0 == ps_codec->i4_share_disp_buf) || (IV_YUV_420P == ps_codec->e_chroma_fmt)))
1203 ret = ihevcd_jobq_queue((jobq_t *)ps_codec->s_parse.pv_proc_jobq,