Home | History | Annotate | Download | only in decoder

Lines Matching refs:ps_codec

1379 WORD32 ihevcd_set_default_params(codec_t *ps_codec)
1384 ps_codec->e_pic_skip_mode = IVD_SKIP_NONE;
1385 ps_codec->i4_strd = 0;
1386 ps_codec->i4_disp_strd = 0;
1387 ps_codec->i4_header_mode = 0;
1388 ps_codec->e_pic_out_order = IVD_DISPLAY_FRAME_OUT;
1392 void ihevcd_update_function_ptr(codec_t *ps_codec)
1396 ps_codec->apf_inter_pred[0] = NULL;
1397 ps_codec->apf_inter_pred[1] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_copy_fptr;
1398 ps_codec->apf_inter_pred[2] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_fptr;
1399 ps_codec->apf_inter_pred[3] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_horz_fptr;
1400 ps_codec->apf_inter_pred[4] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_horz_w16out_fptr;
1401 ps_codec->apf_inter_pred[5] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_copy_w16out_fptr;
1402 ps_codec->apf_inter_pred[6] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_w16out_fptr;
1403 ps_codec->apf_inter_pred[7] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_horz_w16out_fptr;
1404 ps_codec->apf_inter_pred[8] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_horz_w16out_fptr;
1405 ps_codec->apf_inter_pred[9] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_fptr;
1406 ps_codec->apf_inter_pred[10] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_w16out_fptr;
1407 ps_codec->apf_inter_pred[11] = NULL;
1408 ps_codec->apf_inter_pred[12] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_copy_fptr;
1409 ps_codec->apf_inter_pred[13] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_fptr;
1410 ps_codec->apf_inter_pred[14] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_horz_fptr;
1411 ps_codec->apf_inter_pred[15] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_horz_w16out_fptr;
1412 ps_codec->apf_inter_pred[16] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_copy_w16out_fptr;
1413 ps_codec->apf_inter_pred[17] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_w16out_fptr;
1414 ps_codec->apf_inter_pred[18] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_horz_w16out_fptr;
1415 ps_codec->apf_inter_pred[19] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_horz_w16out_fptr;
1416 ps_codec->apf_inter_pred[20] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_fptr;
1417 ps_codec->apf_inter_pred[21] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_w16out_fptr;
1420 ps_codec->apf_intra_pred_luma[0] = (pf_intra_pred)NULL;
1421 ps_codec->apf_intra_pred_luma[1] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_planar_fptr;
1422 ps_codec->apf_intra_pred_luma[2] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_dc_fptr;
1423 ps_codec->apf_intra_pred_luma[3] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode2_fptr;
1424 ps_codec->apf_intra_pred_luma[4] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_3_to_9_fptr;
1425 ps_codec->apf_intra_pred_luma[5] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_horz_fptr;
1426 ps_codec->apf_intra_pred_luma[6] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_11_to_17_fptr;
1427 ps_codec->apf_intra_pred_luma[7] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_18_34_fptr;
1428 ps_codec->apf_intra_pred_luma[8] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_19_to_25_fptr;
1429 ps_codec->apf_intra_pred_luma[9] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_ver_fptr;
1430 ps_codec->apf_intra_pred_luma[10] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_27_to_33_fptr;
1432 ps_codec->apf_intra_pred_chroma[0] = (pf_intra_pred)NULL;
1433 ps_codec->apf_intra_pred_chroma[1] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_planar_fptr;
1434 ps_codec->apf_intra_pred_chroma[2] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_dc_fptr;
1435 ps_codec->apf_intra_pred_chroma[3] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode2_fptr;
1436 ps_codec->apf_intra_pred_chroma[4] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_3_to_9_fptr;
1437 ps_codec->apf_intra_pred_chroma[5] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_horz_fptr;
1438 ps_codec->apf_intra_pred_chroma[6] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_11_to_17_fptr;
1439 ps_codec->apf_intra_pred_chroma[7] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_18_34_fptr;
1440 ps_codec->apf_intra_pred_chroma[8] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_19_to_25_fptr;
1441 ps_codec->apf_intra_pred_chroma[9] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_ver_fptr;
1442 ps_codec->apf_intra_pred_chroma[10] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_27_to_33_fptr;
1445 ps_codec->apf_itrans_recon[0] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_itrans_recon_4x4_ttype1_fptr;
1446 ps_codec->apf_itrans_recon[1] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_itrans_recon_4x4_fptr;
1447 ps_codec->apf_itrans_recon[2] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_itrans_recon_8x8_fptr;
1448 ps_codec->apf_itrans_recon[3] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_itrans_recon_16x16_fptr;
1449 ps_codec->apf_itrans_recon[4] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_itrans_recon_32x32_fptr;
1450 ps_codec->apf_itrans_recon[5] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_chroma_itrans_recon_4x4_fptr;
1451 ps_codec->apf_itrans_recon[6] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_chroma_itrans_recon_8x8_fptr;
1452 ps_codec->apf_itrans_recon[7] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_chroma_itrans_recon_16x16_fptr;
1455 ps_codec->apf_recon[0] = (pf_recon)ps_codec->s_func_selector.ihevc_recon_4x4_ttype1_fptr;
1456 ps_codec->apf_recon[1] = (pf_recon)ps_codec->s_func_selector.ihevc_recon_4x4_fptr;
1457 ps_codec->apf_recon[2] = (pf_recon)ps_codec->s_func_selector.ihevc_recon_8x8_fptr;
1458 ps_codec->apf_recon[3] = (pf_recon)ps_codec->s_func_selector.ihevc_recon_16x16_fptr;
1459 ps_codec->apf_recon[4] = (pf_recon)ps_codec->s_func_selector.ihevc_recon_32x32_fptr;
1460 ps_codec->apf_recon[5] = (pf_recon)ps_codec->s_func_selector.ihevc_chroma_recon_4x4_fptr;
1461 ps_codec->apf_recon[6] = (pf_recon)ps_codec->s_func_selector.ihevc_chroma_recon_8x8_fptr;
1462 ps_codec->apf_recon[7] = (pf_recon)ps_codec->s_func_selector.ihevc_chroma_recon_16x16_fptr;
1465 ps_codec->apf_itrans_recon_dc[0] = (pf_itrans_recon_dc)ps_codec->s_func_selector.ihevcd_itrans_recon_dc_luma_fptr;
1466 ps_codec->apf_itrans_recon_dc[1] = (pf_itrans_recon_dc)ps_codec->s_func_selector.ihevcd_itrans_recon_dc_chroma_fptr;
1469 ps_codec->apf_sao_luma[0] = (pf_sao_luma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class0_fptr;
1470 ps_codec->apf_sao_luma[1] = (pf_sao_luma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class1_fptr;
1471 ps_codec->apf_sao_luma[2] = (pf_sao_luma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class2_fptr;
1472 ps_codec->apf_sao_luma[3] = (pf_sao_luma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class3_fptr;
1474 ps_codec->apf_sao_chroma[0] = (pf_sao_chroma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class0_chroma_fptr;
1475 ps_codec->apf_sao_chroma[1] = (pf_sao_chroma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class1_chroma_fptr;
1476 ps_codec->apf_sao_chroma[2] = (pf_sao_chroma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class2_chroma_fptr;
1477 ps_codec->apf_sao_chroma[3] = (pf_sao_chroma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class3_chroma_fptr;
1489 * @param[in] ps_codec
1499 WORD32 ihevcd_init(codec_t *ps_codec)
1505 ps_codec->i4_num_disp_bufs = 1;
1506 ps_codec->i4_flush_mode = 0;
1508 ps_codec->i4_ht = ps_codec->i4_disp_ht = ps_codec->i4_max_ht;
1509 ps_codec->i4_wd = ps_codec->i4_disp_wd = ps_codec->i4_max_wd;
1510 ps_codec->i4_strd = 0;
1511 ps_codec->i4_disp_strd = 0;
1512 ps_codec->i4_num_cores = 1;
1514 ps_codec->u4_pic_cnt = 0;
1515 ps_codec->u4_disp_cnt = 0;
1517 ps_codec->i4_header_mode = 0;
1518 ps_codec->i4_header_in_slice_mode = 0;
1519 ps_codec->i4_sps_done = 0;
1520 ps_codec->i4_pps_done = 0;
1521 ps_codec->i4_init_done = 1;
1522 ps_codec->i4_first_pic_done = 0;
1523 ps_codec->s_parse.i4_first_pic_init = 0;
1524 ps_codec->i4_error_code = 0;
1525 ps_codec->i4_reset_flag = 0;
1527 ps_codec->i4_prev_poc_msb = 0;
1528 ps_codec->i4_prev_poc_lsb = -1;
1529 ps_codec->i4_max_prev_poc_lsb = -1;
1530 ps_codec->s_parse.i4_abs_pic_order_cnt = -1;
1533 ps_codec->e_ref_chroma_fmt = IV_YUV_420SP_UV;
1538 if(IV_YUV_420SP_VU == ps_codec->e_chroma_fmt)
1540 ps_codec->e_ref_chroma_fmt = IV_YUV_420SP_VU;
1545 ps_codec->i4_disable_deblk_pic = 0;
1547 ps_codec->i4_degrade_pic_cnt = 0;
1548 ps_codec->i4_degrade_pics = 0;
1549 ps_codec->i4_degrade_type = 0;
1550 ps_codec->i4_disable_sao_pic = 0;
1551 ps_codec->i4_fullpel_inter_pred = 0;
1552 ps_codec->u4_enable_fmt_conv_ahead = 0;
1555 sps_t *ps_sps = ps_codec->ps_sps_base;
1556 pps_t *ps_pps = ps_codec->ps_pps_base;
1571 ihevcd_set_default_params(ps_codec);
1572 ps_codec->pv_proc_jobq = ihevcd_jobq_init(ps_codec->pv_proc_jobq_buf, ps_codec->i4_proc_jobq_buf_size);
1573 RETURN_IF((ps_codec->pv_proc_jobq == NULL), IV_FAIL);
1576 ps_codec->s_parse.pv_proc_jobq = ps_codec->pv_proc_jobq;
1579 ps_codec->as_process[i].pv_proc_jobq = ps_codec->pv_proc_jobq;
1580 ps_codec->as_process[i].i4_id = i;
1581 ps_codec->as_process[i].ps_codec = ps_codec;
1586 ps_codec->as_process[i].i4_check_parse_status = 0;
1587 ps_codec->as_process[i].i4_check_proc_status = 0;
1590 ihevc_buf_mgr_init((buf_mgr_t *)ps_codec->pv_mv_buf_mgr);
1593 ihevc_buf_mgr_init((buf_mgr_t *)ps_codec->pv_pic_buf_mgr);
1595 ps_codec->ps_pic_buf = (pic_buf_t *)ps_codec->pv_pic_buf_base;
1597 memset(ps_codec->ps_pic_buf, 0, BUF_MGR_MAX_CNT * sizeof(pic_buf_t));
1602 ihevc_disp_mgr_init((disp_mgr_t *)ps_codec->pv_disp_buf_mgr);
1605 ihevc_dpb_mgr_init((dpb_mgr_t *)ps_codec->pv_dpb_mgr);
1607 ps_codec->e_processor_soc = SOC_GENERIC;
1609 ps_codec->u4_nctb = 0x7FFFFFFF;
1610 ihevcd_init_arch(ps_codec);
1612 ihevcd_init_function_ptr(ps_codec);
1614 ihevcd_update_function_ptr(ps_codec);
2450 codec_t *ps_codec;
2461 ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle);
2466 memset(ps_codec, 0, sizeof(codec_t));
2471 ps_codec->i4_init_level = dec_init_ip->i4_level;
2473 ps_codec->i4_init_level *= 3;
2477 ps_codec->i4_init_level = MAX_LEVEL;
2483 ps_codec->i4_init_num_ref = dec_init_ip->u4_num_ref_frames;
2487 ps_codec->i4_init_num_ref = MAX_REF_CNT;
2493 ps_codec->i4_init_num_reorder = dec_init_ip->u4_num_reorder_frames;
2497 ps_codec->i4_init_num_reorder = MAX_REF_CNT;
2503 ps_codec->i4_init_num_extra_disp_buf =
2508 ps_codec->i4_init_num_extra_disp_buf = 0;
2515 ps_codec->i4_share_disp_buf = dec_init_ip->u4_share_disp_buf;
2517 ps_codec->i4_share_disp_buf = 0;
2522 ps_codec->i4_share_disp_buf = 0;
2529 ps_codec->i4_share_disp_buf = 0;
2532 if((ps_codec->i4_init_level < MIN_LEVEL)
2533 || (ps_codec->i4_init_level > MAX_LEVEL))
2539 if(ps_codec->i4_init_num_ref > MAX_REF_CNT)
2543 ps_codec->i4_init_num_ref = MAX_REF_CNT;
2546 if(ps_codec->i4_init_num_reorder > MAX_REF_CNT)
2550 ps_codec->i4_init_num_reorder = MAX_REF_CNT;
2553 if(ps_codec->i4_init_num_extra_disp_buf > MAX_REF_CNT)
2557 ps_codec->i4_init_num_extra_disp_buf = 0;
2560 ps_codec->e_chroma_fmt = dec_init_ip->s_ivd_init_ip_t.e_output_format;
2562 ps_codec->i4_max_wd = dec_init_ip->s_ivd_init_ip_t.u4_frm_max_wd;
2563 ps_codec->i4_max_ht = dec_init_ip->s_ivd_init_ip_t.u4_frm_max_ht;
2565 ps_codec->i4_max_wd = ALIGN64(ps_codec->i4_max_wd);
2566 ps_codec->i4_max_ht = ALIGN64(ps_codec->i4_max_ht);
2568 ps_codec->i4_new_max_wd = ps_codec->i4_max_wd;
2569 ps_codec->i4_new_max_ht = ps_codec->i4_max_ht;
2571 max_tile_cols = (ps_codec->i4_max_wd + MIN_TILE_WD - 1) / MIN_TILE_WD;
2572 max_tile_rows = (ps_codec->i4_max_ht + MIN_TILE_HT - 1) / MIN_TILE_HT;
2575 ps_codec->ps_mem_rec_backup = (iv_mem_rec_t *)ps_mem_rec->pv_base;
2577 memcpy(ps_codec->ps_mem_rec_backup, ps_mem_rec_base,
2581 ps_codec->pu1_bitsbuf = (UWORD8 *)ps_mem_rec->pv_base;
2582 ps_codec->u4_bitsbuf_size = ps_mem_rec->u4_mem_size;
2585 ps_codec->pv_tu_data = ps_mem_rec->pv_base;
2587 ps_codec->pv_mv_buf_mgr = ps_mem_rec->pv_base;
2588 ps_codec->pv_mv_bank_buf_base = (UWORD8 *)ps_codec->pv_mv_buf_mgr + sizeof(buf_mgr_t);
2590 ps_codec->i4_total_mv_bank_size = ps_mem_rec->u4_mem_size - sizeof(buf_mgr_t);
2594 ps_codec->ps_vps_base = (vps_t *)ps_mem_rec->pv_base;
2595 ps_codec->s_parse.ps_vps_base = ps_codec->ps_vps_base;
2598 ps_codec->ps_sps_base = (sps_t *)ps_mem_rec->pv_base;
2599 ps_codec->s_parse.ps_sps_base = ps_codec->ps_sps_base;
2602 ps_codec->ps_pps_base = (pps_t *)ps_mem_rec->pv_base;
2603 ps_codec->s_parse.ps_pps_base = ps_codec->ps_pps_base;
2606 ps_codec->ps_slice_hdr_base = (slice_header_t *)ps_mem_rec->pv_base;
2607 ps_codec->s_parse.ps_slice_hdr_base = ps_codec->ps_slice_hdr_base;
2610 ps_codec->ps_tile = (tile_t *)ps_mem_rec->pv_base;
2613 ps_codec->pi4_entry_ofst = (WORD32 *)ps_mem_rec->pv_base;
2616 ps_codec->pi2_scaling_mat = (WORD16 *)ps_mem_rec->pv_base;
2619 ps_codec->s_parse.pu4_skip_cu_top = (UWORD32 *)ps_mem_rec->pv_base;
2622 ps_codec->s_parse.pu4_ct_depth_top = (UWORD32 *)ps_mem_rec->pv_base;
2625 ps_codec->s_parse.pu1_luma_intra_pred_mode_left =
2627 ps_codec->s_parse.pu1_luma_intra_pred_mode_top =
2632 memset(ps_mem_rec->pv_base, 0, (ps_codec->i4_max_wd / MIN_CU_SIZE) * (ps_codec->i4_max_ht / MIN_CU_SIZE) / 8);
2634 ps_codec->pu1_pic_intra_flag = (UWORD8 *)ps_mem_rec->pv_base;
2635 ps_codec->s_parse.pu1_pic_intra_flag = ps_codec->pu1_pic_intra_flag;
2639 WORD32 loop_filter_size = ((ps_codec->i4_max_wd + 64) / MIN_CU_SIZE) * ((ps_codec->i4_max_ht + 64) / MIN_CU_SIZE) / 8;
2640 WORD32 loop_filter_strd = (ps_codec->i4_max_wd + 63) >> 6;
2645 ps_codec->pu1_pic_no_loop_filter_flag = (UWORD8 *)ps_mem_rec->pv_base + loop_filter_strd + 1;
2646 ps_codec->s_parse.pu1_pic_no_loop_filter_flag = ps_codec->pu1_pic_no_loop_filter_flag;
2647 ps_codec->s_parse.s_deblk_ctxt.pu1_pic_no_loop_filter_flag = ps_codec->pu1_pic_no_loop_filter_flag;
2648 ps_codec->s_parse.s_sao_ctxt.pu1_pic_no_loop_filter_flag = ps_codec->pu1_pic_no_loop_filter_flag;
2653 sps_t *ps_sps = ps_codec->ps_sps_base;
2654 pps_t *ps_pps = ps_codec->ps_pps_base;
2655 tile_t *ps_tile = ps_codec->ps_tile;
2656 WORD16 *pi2_scaling_mat = ps_codec->pi2_scaling_mat;
2684 ps_codec->apv_process_thread_handle[i] =
2689 ps_codec->pv_proc_jobq_buf = ps_mem_rec->pv_base;
2690 ps_codec->i4_proc_jobq_buf_size = ps_mem_rec->u4_mem_size;
2693 ps_codec->pu1_parse_map = (UWORD8 *)ps_mem_rec->pv_base;
2696 ps_codec->pu1_proc_map = (UWORD8 *)ps_mem_rec->pv_base;
2698 ps_codec->pv_disp_buf_mgr = ps_mem_rec->pv_base;
2701 ps_codec->pv_dpb_mgr = ps_mem_rec->pv_base;
2709 ps_codec->as_process[i].pu4_pic_pu_idx_left = pu4_buf + i * (MAX_CTB_SIZE / 4);
2710 memset(ps_codec->as_process[i].pu4_pic_pu_idx_left, 0, sizeof(UWORD32) * MAX_CTB_SIZE / 4);
2711 ps_codec->as_process[i].pu4_pic_pu_idx_top = pu4_buf + MAX_PROCESS_THREADS * (MAX_CTB_SIZE / 4);
2713 memset(ps_codec->as_process[0].pu4_pic_pu_idx_top, 0, sizeof(UWORD32) * (ps_codec->i4_max_wd / 4 + 1));
2734 ps_codec->as_process[i].pi2_inter_pred_tmp_buf1 = (WORD16 *)pu1_buf;
2737 ps_codec->as_process[i].pi2_inter_pred_tmp_buf2 = (WORD16 *)pu1_buf;
2741 ps_codec->as_process[i].pi2_itrans_intrmd_buf =
2742 ps_codec->as_process[i].pi2_inter_pred_tmp_buf2;
2743 ps_codec->as_process[i].pi2_invscan_out =
2744 ps_codec->as_process[i].pi2_inter_pred_tmp_buf1;
2746 ps_codec->as_process[i].pu4_pic_pu_idx_map = (UWORD32 *)pu1_buf;
2747 ps_codec->as_process[i].s_bs_ctxt.pu4_pic_pu_idx_map =
2751 // ps_codec->as_process[i].pi2_inter_pred_tmp_buf3 = (WORD16 *)pu1_buf;
2754 ps_codec->as_process[i].i4_inter_pred_tmp_buf_strd = MAX_CTB_SIZE;
2759 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_left_luma = (UWORD8 *)pu1_buf;
2761 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_left_luma = (UWORD8 *)pu1_buf;
2762 pu1_buf += MAX(ps_codec->i4_max_ht, ps_codec->i4_max_wd);
2766 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_left_chroma = (UWORD8 *)pu1_buf;
2768 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_left_chroma = (UWORD8 *)pu1_buf;
2769 pu1_buf += MAX(ps_codec->i4_max_ht, ps_codec->i4_max_wd);
2772 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_luma = (UWORD8 *)pu1_buf;
2774 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_luma = (UWORD8 *)pu1_buf;
2775 pu1_buf += ps_codec->i4_max_wd;
2779 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_chroma = (UWORD8 *)pu1_buf;
2781 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_chroma = (UWORD8 *)pu1_buf;
2782 pu1_buf += ps_codec->i4_max_wd;
2785 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_luma_top_left_ctb = (UWORD8 *)pu1_buf;
2787 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_luma_top_left_ctb = (UWORD8 *)pu1_buf;
2788 pu1_buf += ps_codec->i4_max_ht / MIN_CTB_SIZE;
2792 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_chroma_top_left_ctb = (UWORD8 *)pu1_buf;
2794 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_chroma_top_left_ctb = (UWORD8 *)pu1_buf;
2795 pu1_buf += (ps_codec->i4_max_ht / MIN_CTB_SIZE) * 2;
2799 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_luma_curr_ctb = (UWORD8 *)pu1_buf;
2801 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_luma_curr_ctb = (UWORD8 *)pu1_buf;
2802 pu1_buf += ps_codec->i4_max_ht / MIN_CTB_SIZE;
2806 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_chroma_curr_ctb = (UWORD8 *)pu1_buf;
2808 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_chroma_curr_ctb = (UWORD8 *)pu1_buf;
2810 pu1_buf += (ps_codec->i4_max_ht / MIN_CTB_SIZE) * 2;
2813 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_luma_top_right = (UWORD8 *)pu1_buf;
2815 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_luma_top_right = (UWORD8 *)pu1_buf;
2817 pu1_buf += ps_codec->i4_max_wd / MIN_CTB_SIZE;
2820 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_chroma_top_right = (UWORD8 *)pu1_buf;
2822 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_chroma_top_right = (UWORD8 *)pu1_buf;
2824 pu1_buf += (ps_codec->i4_max_wd / MIN_CTB_SIZE) * 2;
2829 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_luma_bot_left = (UWORD8 *)pu1_buf;
2831 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_luma_bot_left = (UWORD8 *)pu1_buf;
2833 pu1_buf += (ps_codec->i4_max_ht / MIN_CTB_SIZE);
2837 ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_chroma_bot_left = (UWORD8 *)pu1_buf;
2839 ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_chroma_bot_left = (UWORD8 *)pu1_buf;
2841 pu1_buf += (ps_codec->i4_max_ht / MIN_CTB_SIZE) * 2;
2849 ps_codec->as_process[i].s_sao_ctxt.pu1_tmp_buf_luma = (UWORD8 *)pu1_buf;
2852 ps_codec->as_process[i].s_sao_ctxt.pu1_tmp_buf_chroma = (UWORD8 *)pu1_buf;
2866 vert_bs_size = ps_codec->i4_max_wd / 8 + 2 * MAX_CTB_SIZE / 8;
2869 vert_bs_size *= (ps_codec->i4_max_ht + MAX_CTB_SIZE) / MIN_TU_SIZE;
2878 horz_bs_size = ps_codec->i4_max_ht / 8 + MAX_CTB_SIZE / 8;
2881 horz_bs_size *= (ps_codec->i4_max_wd + MAX_CTB_SIZE) / MIN_TU_SIZE;
2890 qp_const_flag_size = ps_codec->i4_max_wd / MIN_CTB_SIZE + 1 /* The last ctb row deblk is done in last ctb + 1 row.*/;
2893 qp_const_flag_size *= ps_codec->i4_max_ht / MIN_CTB_SIZE;
2899 num_8x8 = (ps_codec->i4_max_ht * ps_codec->i4_max_wd) / (MIN_CU_SIZE * MIN_CU_SIZE);
2905 ps_codec->as_process[i].s_bs_ctxt.pu4_pic_vert_bs = (UWORD32 *)pu1_buf;
2906 ps_codec->as_process[i].s_deblk_ctxt.s_bs_ctxt.pu4_pic_vert_bs = (UWORD32 *)pu1_buf;
2907 ps_codec->s_parse.s_deblk_ctxt.s_bs_ctxt.pu4_pic_vert_bs = (UWORD32 *)pu1_buf;
2910 ps_codec->as_process[i].s_bs_ctxt.pu4_pic_horz_bs = (UWORD32 *)pu1_buf;
2911 ps_codec->as_process[i].s_deblk_ctxt.s_bs_ctxt.pu4_pic_horz_bs = (UWORD32 *)pu1_buf;
2912 ps_codec->s_parse.s_deblk_ctxt.s_bs_ctxt.pu4_pic_horz_bs = (UWORD32 *)pu1_buf;
2915 ps_codec->as_process[i].s_bs_ctxt.pu1_pic_qp = (UWORD8 *)pu1_buf;
2916 ps_codec->as_process[i].s_deblk_ctxt.s_bs_ctxt.pu1_pic_qp = (UWORD8 *)pu1_buf;
2917 ps_codec->s_parse.s_deblk_ctxt.s_bs_ctxt.pu1_pic_qp = (UWORD8 *)pu1_buf;
2920 ps_codec->as_process[i].s_bs_ctxt.pu1_pic_qp_const_in_ctb = (UWORD8 *)pu1_buf;
2921 ps_codec->as_process[i].s_deblk_ctxt.s_bs_ctxt.pu1_pic_qp_const_in_ctb = (UWORD8 *)pu1_buf;
2922 ps_codec->s_parse.s_deblk_ctxt.s_bs_ctxt.pu1_pic_qp_const_in_ctb = (UWORD8 *)pu1_buf;
2927 ps_codec->s_parse.s_bs_ctxt.pu4_pic_vert_bs = (UWORD32 *)pu1_buf;
2930 ps_codec->s_parse.s_bs_ctxt.pu4_pic_horz_bs = (UWORD32 *)pu1_buf;
2933 ps_codec->s_parse.s_bs_ctxt.pu1_pic_qp = (UWORD8 *)pu1_buf;
2936 ps_codec->s_parse.s_bs_ctxt.pu1_pic_qp_const_in_ctb = (UWORD8 *)pu1_buf;
2947 ps_codec->as_process[i].pu1_tile_idx = (UWORD16 *)pu1_buf + ps_codec->i4_max_wd / MIN_CTB_SIZE /* Offset 1 row */;
2952 ps_codec->s_parse.ps_pic_sao = (sao_t *)ps_mem_rec->pv_base;
2953 ps_codec->s_parse.s_sao_ctxt.ps_pic_sao = (sao_t *)ps_mem_rec->pv_base;
2956 ps_codec->as_process[i].s_sao_ctxt.ps_pic_sao = ps_codec->s_parse.ps_pic_sao;
2960 ps_codec->pv_pic_buf_mgr = ps_mem_rec->pv_base;
2961 ps_codec->pv_pic_buf_base = (UWORD8 *)ps_codec->pv_pic_buf_mgr + sizeof(buf_mgr_t);
2962 ps_codec->i4_total_pic_buf_size = ps_mem_rec->u4_mem_size - sizeof(buf_mgr_t);
2976 DecStruct *ps_codec;
2981 ps_codec->ps_conceal = (iv_obj_t *)ps_mem_rec[mem_loc].pv_base;
2982 ps_codec->i4_first_frame_done = 0;
2988 status = icncl_api_function(ps_codec->ps_conceal, (void *)&cncl_init_ip, (void *)&cncl_init_op);
2993 status = ihevcd_init(ps_codec);
3031 codec_t *ps_codec;
3034 ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle);
3036 if(ps_codec->i4_init_done != 1)
3043 memcpy(dec_clr_ip->pv_mem_rec_location, ps_codec->ps_mem_rec_backup,
3069 status = icncl_api_function(ps_codec->ps_conceal, (void *)&cncl_fill_ip, (void *)&cncl_fill_op);
3081 ihevcd_jobq_free((jobq_t *)ps_codec->pv_proc_jobq);
3124 codec_t *ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle);
3129 ps_codec->i4_num_disp_bufs = 0;
3130 if(ps_codec->i4_share_disp_buf)
3137 strd = ps_codec->i4_strd;
3139 strd = ps_codec->i4_max_wd + PAD_WD;
3141 ps_codec->i4_num_disp_bufs = num_bufs;
3143 ps_pic_buf = (pic_buf_t *)ps_codec->ps_pic_buf;
3152 buf_ret = ihevc_buf_mgr_add((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, ps_pic_buf, i);
3156 ps_codec->i4_error_code = IHEVCD_BUF_MGR_ERROR;
3165 ihevc_buf_mgr_set_status((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, i, BUF_MGR_DISP);
3208 codec_t *ps_codec;
3211 ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle);
3214 ps_codec->i4_flush_mode = 1;
3220 ps_codec->u4_pic_cnt = 0;
3221 ps_codec->u4_disp_cnt = 0;
3259 codec_t *ps_codec;
3267 ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle);
3270 if(ps_codec->e_chroma_fmt == IV_YUV_420P)
3272 else if(ps_codec->e_chroma_fmt == IV_YUV_422ILE)
3274 else if(ps_codec->e_chroma_fmt == IV_RGB_565)
3276 else if(ps_codec->e_chroma_fmt == IV_RGBA_8888)
3278 else if((ps_codec->e_chroma_fmt == IV_YUV_420SP_UV)
3279 || (ps_codec->e_chroma_fmt == IV_YUV_420SP_VU))
3286 ps_ctl_op->u4_min_in_buf_size[i] = MAX((ps_codec->i4_wd * ps_codec->i4_ht), MIN_BITSBUF_SIZE);
3289 wd = ps_codec->i4_wd;
3290 ht = ps_codec->i4_ht;
3292 if(ps_codec->i4_sps_done)
3294 if(0 == ps_codec->i4_share_disp_buf)
3296 wd = ps_codec->i4_disp_wd;
3297 ht = ps_codec->i4_disp_ht;
3302 wd = ps_codec->i4_disp_strd;
3303 ht = ps_codec->i4_ht + PAD_HT;
3308 if(0 == ps_codec->i4_share_disp_buf)
3310 wd = ps_codec->i4_new_max_wd;
3311 ht = ps_codec->i4_new_max_ht;
3320 if(ps_codec->i4_disp_strd > wd)
3321 wd = ps_codec->i4_disp_strd;
3323 if(0 == ps_codec->i4_share_disp_buf)
3330 if(ps_codec->i4_sps_done)
3332 sps_t *ps_sps = (ps_codec->s_parse.ps_sps_base + ps_codec->i4_sps_id);
3337 reorder_pic_cnt = MIN(ps_sps->ai1_sps_max_num_reorder_pics[0], ps_codec->i4_init_num_reorder);
3340 level = ps_codec->i4_init_level;
3350 pic_size = ps_codec->i4_max_wd * ps_codec->i4_max_ht;
3351 max_dpb_size = ihevcd_get_dpb_size(ps_codec->i4_init_level, pic_size);
3355 (UWORD32)(ps_codec->i4_init_num_ref + ps_codec->i4_init_num_reorder + 1));
3364 if(ps_codec->e_chroma_fmt == IV_YUV_420P)
3370 else if(ps_codec->e_chroma_fmt == IV_YUV_422ILE)
3376 else if(ps_codec->e_chroma_fmt == IV_RGB_565)
3382 else if(ps_codec->e_chroma_fmt == IV_RGBA_8888)
3388 else if((ps_codec->e_chroma_fmt == IV_YUV_420SP_UV)
3389 || (ps_codec->e_chroma_fmt == IV_YUV_420SP_VU))
3400 ps_ctl_op->e_output_chroma_format = ps_codec->e_chroma_fmt;
3401 ps_codec->i4_num_disp_bufs = ps_ctl_op->u4_num_disp_bufs;
3406 ps_ext_ctl_op->u4_coded_pic_wd = ps_codec->i4_wd;
3407 ps_ext_ctl_op->u4_coded_pic_wd = ps_codec->i4_ht;
3443 codec_t *ps_codec;
3452 ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle);
3455 if(ps_codec->e_chroma_fmt == IV_YUV_420P)
3457 else if(ps_codec->e_chroma_fmt == IV_YUV_422ILE)
3459 else if(ps_codec->e_chroma_fmt == IV_RGB_565)
3461 else if(ps_codec->e_chroma_fmt == IV_RGBA_8888)
3463 else if((ps_codec->e_chroma_fmt == IV_YUV_420SP_UV)
3464 || (ps_codec->e_chroma_fmt == IV_YUV_420SP_VU))
3471 ps_ctl_op->u4_min_in_buf_size[i] = MAX((ps_codec->i4_wd * ps_codec->i4_ht), MIN_BITSBUF_SIZE);
3474 wd = ps_codec->i4_max_wd;
3475 ht = ps_codec->i4_max_ht;
3477 if(ps_codec->i4_sps_done)
3479 if(0 == ps_codec->i4_share_disp_buf)
3481 wd = ps_codec->i4_disp_wd;
3482 ht = ps_codec->i4_disp_ht;
3487 wd = ps_codec->i4_disp_strd;
3488 ht = ps_codec->i4_ht + PAD_HT;
3493 if(1 == ps_codec->i4_share_disp_buf)
3500 if(ps_codec->i4_disp_strd > wd)
3501 wd = ps_codec->i4_disp_strd;
3503 if(0 == ps_codec->i4_share_disp_buf)
3510 if(ps_codec->i4_sps_done)
3512 sps_t *ps_sps = (ps_codec->s_parse.ps_sps_base + ps_codec->i4_sps_id);
3517 reorder_pic_cnt = MIN(ps_sps->ai1_sps_max_num_reorder_pics[0], ps_codec->i4_init_num_reorder);
3520 level = ps_codec->i4_init_level;
3530 pic_size = ps_codec->i4_max_wd * ps_codec->i4_max_ht;
3531 max_dpb_size = ihevcd_get_dpb_size(ps_codec->i4_init_level, pic_size);
3535 (UWORD32)(ps_codec->i4_init_num_ref + ps_codec->i4_init_num_reorder + 1));
3545 if(ps_codec->e_chroma_fmt == IV_YUV_420P)
3551 else if(ps_codec->e_chroma_fmt == IV_YUV_422ILE)
3557 else if(ps_codec->e_chroma_fmt == IV_RGB_565)
3563 else if(ps_codec->e_chroma_fmt == IV_RGBA_8888)
3569 else if((ps_codec->e_chroma_fmt == IV_YUV_420SP_UV)
3570 || (ps_codec->e_chroma_fmt == IV_YUV_420SP_VU))
3576 ps_codec->i4_num_disp_bufs = ps_ctl_op->u4_num_disp_bufs;
3613 codec_t *ps_codec;
3621 ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle);
3625 ps_codec->e_pic_skip_mode = s_ctl_dynparams_ip->e_frm_skip_mode;
3639 strd = ps_codec->i4_disp_strd;
3640 if(1 == ps_codec->i4_share_disp_buf)
3642 strd = ps_codec->i4_strd;
3657 if((WORD32)s_ctl_dynparams_ip->u4_disp_wd >= ps_codec->i4_wd)
3661 else if(0 == ps_codec->i4_sps_done ||
3662 0 == ps_codec->i4_pps_done)
3668 strd = ps_codec->i4_disp_strd;
3679 ps_codec->i4_disp_strd = strd;
3680 if(1 == ps_codec->i4_share_disp_buf)
3682 ps_codec->i4_strd = strd;
3686 ps_codec->i4_header_mode = 0;
3688 ps_codec->i4_header_mode = 1;
3693 ps_codec->i4_header_mode = 1;
3728 codec_t *ps_codec;
3731 ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle);
3733 if(ps_codec != NULL)
3736 ihevcd_init(ps_codec);
3783 codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle;
3790 if(0 == ps_codec->i4_share_disp_buf)
3795 ihevc_buf_mgr_release((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, ps_dec_rel_disp_ip->u4_disp_buf_id, BUF_MGR_DISP);
3832 codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle;
3837 ps_codec->i4_degrade_type = ps_ip->i4_degrade_type;
3838 ps_codec->i4_nondegrade_interval = ps_ip->i4_nondegrade_interval;
3839 ps_codec->i4_degrade_pics = ps_ip->i4_degrade_pics;
3842 ps_codec->i4_degrade_pic_cnt = 0;
3881 codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle;
3886 if(ps_codec->i4_sps_done)
3888 disp_wd = ps_codec->i4_disp_wd;
3889 disp_ht = ps_codec->i4_disp_ht;
3891 if(0 == ps_codec->i4_share_disp_buf)
3898 buffer_wd = ps_codec->i4_strd;
3899 buffer_ht = ps_codec->i4_ht + PAD_HT;
3905 disp_wd = ps_codec->i4_max_wd;
3906 disp_ht = ps_codec->i4_max_ht;
3908 if(0 == ps_codec->i4_share_disp_buf)
3920 if(ps_codec->i4_strd > buffer_wd)
3921 buffer_wd = ps_codec->i4_strd;
3923 if(0 == ps_codec->i4_share_disp_buf)
3954 if((ps_codec->e_chroma_fmt == IV_YUV_420SP_UV)
3955 || (ps_codec->e_chroma_fmt == IV_YUV_420SP_VU))
4005 codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle;
4013 if(0 == ps_codec->i4_sps_done)
4019 ps_sps = ps_codec->s_parse.ps_sps;
4023 ps_sps = ps_codec->ps_sps_base;
4146 codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle;
4151 ps_codec->e_processor_arch = (IVD_ARCH_T)ps_ip->u4_arch;
4152 ps_codec->e_processor_soc = (IVD_SOC_T)ps_ip->u4_soc;
4154 ihevcd_init_function_ptr(ps_codec);
4156 ihevcd_update_function_ptr(ps_codec);
4158 if(ps_codec->e_processor_soc && (ps_codec->e_processor_soc <= SOC_HISI_37X))
4161 if(ps_codec->e_processor_soc & 0x80)
4162 ps_codec->u4_enable_fmt_conv_ahead = 1;
4165 ps_codec->e_processor_soc &= 0x7F;
4167 if(ps_codec->e_processor_soc)
4168 ps_codec->u4_nctb = ps_codec->e_processor_soc;
4173 if((ps_codec->e_processor_soc == SOC_HISI_37X) && (ps_codec->i4_num_cores == 2))
4175 ps_codec->u4_nctb = 2;
4216 codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle;
4222 ps_codec->i4_num_cores = ps_ip->u4_num_cores;
4224 ps_codec->i4_num_cores = 1;
4262 codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle;
4267 if(ps_codec->i4_init_done != 1)
4294 ret = ihevcd_set_default_params(ps_codec);