• Home
  • Raw
  • Download

Lines Matching refs:ps_codec

84 IHEVCD_ERROR_T ihevcd_fmt_conv(codec_t *ps_codec,
91 WORD32 ihevcd_init(codec_t *ps_codec);
93 WORD32 ihevcd_allocate_dynamic_bufs(codec_t *ps_codec);
94 WORD32 ihevcd_free_dynamic_bufs(codec_t *ps_codec);
181 static void ihevcd_fill_outargs(codec_t *ps_codec, in ihevcd_fill_outargs() argument
186 ps_dec_op->u4_error_code = ihevcd_map_error((IHEVCD_ERROR_T)ps_codec->i4_error_code); in ihevcd_fill_outargs()
188 - ps_codec->i4_bytes_remaining; in ihevcd_fill_outargs()
189 if(ps_codec->i4_sps_done) in ihevcd_fill_outargs()
191 ps_dec_op->u4_pic_wd = ps_codec->i4_disp_wd; in ihevcd_fill_outargs()
192 ps_dec_op->u4_pic_ht = ps_codec->i4_disp_ht; in ihevcd_fill_outargs()
200 ps_dec_op->e_pic_type = ps_codec->e_dec_pic_type; in ihevcd_fill_outargs()
201 ps_dec_op->u4_frame_decoded_flag = ps_codec->i4_pic_present; in ihevcd_fill_outargs()
207 ps_dec_op->e_output_format = ps_codec->e_chroma_fmt; in ihevcd_fill_outargs()
213 ps_dec_op->u4_disp_buf_id = ps_codec->i4_disp_buf_id; in ihevcd_fill_outargs()
214 if(ps_codec->i4_flush_mode) in ihevcd_fill_outargs()
224 if(ps_codec->ps_disp_buf) in ihevcd_fill_outargs()
226 pic_buf_t *ps_disp_buf = ps_codec->ps_disp_buf; in ihevcd_fill_outargs()
230 if((ps_codec->i4_flush_mode == 0) && (ps_codec->s_parse.i4_end_of_frame == 0)) in ihevcd_fill_outargs()
232 ps_dec_op->s_disp_frm_buf.u4_y_wd = ps_codec->i4_disp_wd; in ihevcd_fill_outargs()
233 ps_dec_op->s_disp_frm_buf.u4_y_ht = ps_codec->i4_disp_ht; in ihevcd_fill_outargs()
235 if(ps_codec->i4_share_disp_buf) in ihevcd_fill_outargs()
238 if(ps_codec->e_chroma_fmt != IV_YUV_420P) in ihevcd_fill_outargs()
247 for(i = 0; i < ps_codec->i4_share_disp_buf_cnt; i++) in ihevcd_fill_outargs()
249 WORD32 diff = ps_disp_buf->pu1_luma - ps_codec->s_disp_buffer[i].pu1_bufs[0]; in ihevcd_fill_outargs()
250 if(diff == (ps_codec->i4_strd * PAD_TOP + PAD_LEFT)) in ihevcd_fill_outargs()
252 pu1_u_dst = ps_codec->s_disp_buffer[i].pu1_bufs[1]; in ihevcd_fill_outargs()
253 pu1_u_dst += (ps_codec->i4_strd * PAD_TOP) / 4 + (PAD_LEFT / 2); in ihevcd_fill_outargs()
255 pu1_v_dst = ps_codec->s_disp_buffer[i].pu1_bufs[2]; in ihevcd_fill_outargs()
256 pu1_v_dst += (ps_codec->i4_strd * PAD_TOP) / 4 + (PAD_LEFT / 2); in ihevcd_fill_outargs()
263 ps_dec_op->s_disp_frm_buf.u4_y_strd = ps_codec->i4_strd; in ihevcd_fill_outargs()
273 ps_dec_op->s_disp_frm_buf.u4_y_strd = ps_codec->i4_disp_strd; in ihevcd_fill_outargs()
276 if((IV_YUV_420SP_VU == ps_codec->e_chroma_fmt) in ihevcd_fill_outargs()
277 || (IV_YUV_420SP_UV == ps_codec->e_chroma_fmt)) in ihevcd_fill_outargs()
289 else if(IV_YUV_420P == ps_codec->e_chroma_fmt) in ihevcd_fill_outargs()
306 else if(ps_codec->i4_flush_mode) in ihevcd_fill_outargs()
310 ps_codec->i4_flush_mode = 0; in ihevcd_fill_outargs()
346 codec_t *ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle); in ihevcd_decode() local
354 ps_codec->i4_error_code = 0; in ihevcd_decode()
364 if(ps_codec->i4_init_done != 1) in ihevcd_decode()
371 if(ps_codec->u4_pic_cnt >= NUM_FRAMES_LIMIT) in ihevcd_decode()
379 if(ps_codec->i4_reset_flag) in ihevcd_decode()
381 ps_codec->i4_flush_mode = 1; in ihevcd_decode()
387 if(0 == ps_codec->i4_flush_mode) in ihevcd_decode()
413 num_mbs = (ps_codec->i4_wd * ps_codec->i4_ht + 255) >> 8; in ihevcd_decode()
415 ps_codec->mb_count = 0; in ihevcd_decode()
416 memset(ps_codec->mb_map, 0, ((num_mbs + 7) >> 3)); in ihevcd_decode()
420 if(0 == ps_codec->i4_share_disp_buf && ps_codec->i4_header_mode == 0) in ihevcd_decode()
448 ps_codec->ps_out_buffer = &ps_dec_ip->s_out_buffer; in ihevcd_decode()
449 ps_codec->u4_ts = ps_dec_ip->u4_ts; in ihevcd_decode()
450 if(ps_codec->i4_flush_mode) in ihevcd_decode()
453 ps_dec_op->u4_pic_wd = ps_codec->i4_disp_wd; in ihevcd_decode()
454 ps_dec_op->u4_pic_ht = ps_codec->i4_disp_ht; in ihevcd_decode()
458 ps_codec->ps_disp_buf = (pic_buf_t *)ihevc_disp_mgr_get( in ihevcd_decode()
459 (disp_mgr_t *)ps_codec->pv_disp_buf_mgr, &ps_codec->i4_disp_buf_id); in ihevcd_decode()
462 if((ps_codec->ps_disp_buf) in ihevcd_decode()
463 && ((0 == ps_codec->i4_share_disp_buf) in ihevcd_decode()
465 == ps_codec->e_chroma_fmt))) in ihevcd_decode()
468 process_ctxt_t *ps_proc = &ps_codec->as_process[prev_proc_idx]; in ihevcd_decode()
475 ret = ihevcd_fmt_conv(ps_codec, &ps_codec->as_process[prev_proc_idx], in ihevcd_decode()
479 ps_codec->i4_disp_ht); in ihevcd_decode()
481 ihevc_buf_mgr_release((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, in ihevcd_decode()
482 ps_codec->i4_disp_buf_id, BUF_MGR_DISP); in ihevcd_decode()
485 ihevcd_fill_outargs(ps_codec, ps_dec_ip, ps_dec_op); in ihevcd_decode()
489 WORD32 xpos = ps_codec->i4_disp_wd - 32 - LOGO_WD; in ihevcd_decode()
490 WORD32 ypos = ps_codec->i4_disp_ht - 32 - LOGO_HT; in ihevcd_decode()
500 ps_dec_ip->s_out_buffer.pu1_bufs[2], ps_codec->i4_disp_strd, in ihevcd_decode()
503 ps_codec->e_chroma_fmt, in ihevcd_decode()
504 ps_codec->i4_disp_wd, in ihevcd_decode()
505 ps_codec->i4_disp_ht); in ihevcd_decode()
509 if(NULL == ps_codec->ps_disp_buf) in ihevcd_decode()
513 if(ps_codec->i4_reset_flag) in ihevcd_decode()
515 ihevcd_init(ps_codec); in ihevcd_decode()
524 if((0 == ps_codec->i4_header_mode) && (1 == ps_codec->i4_share_disp_buf)) in ihevcd_decode()
528 if(ps_codec->pv_pic_buf_mgr) in ihevcd_decode()
529 buf_status = ihevc_buf_mgr_check_free((buf_mgr_t *)ps_codec->pv_pic_buf_mgr); in ihevcd_decode()
539 ps_codec->i4_bytes_remaining = ps_dec_ip->u4_num_Bytes; in ihevcd_decode()
540 ps_codec->pu1_inp_bitsbuf = (UWORD8 *)ps_dec_ip->pv_stream_buffer; in ihevcd_decode()
541 ps_codec->s_parse.i4_end_of_frame = 0; in ihevcd_decode()
543 ps_codec->i4_pic_present = 0; in ihevcd_decode()
544 ps_codec->i4_slice_error = 0; in ihevcd_decode()
545 ps_codec->ps_disp_buf = NULL; in ihevcd_decode()
547 if(ps_codec->i4_num_cores > 1) in ihevcd_decode()
551 while(MIN_START_CODE_LEN < ps_codec->i4_bytes_remaining) in ihevcd_decode()
557 if(ps_codec->i4_slice_error) in ihevcd_decode()
559 …slice_header_t *ps_slice_hdr_next = ps_codec->s_parse.ps_slice_hdr_base + (ps_codec->s_parse.i4_cu… in ihevcd_decode()
561 … ps_slice_hdr_next->i2_ctb_y * ps_codec->s_parse.ps_sps->i2_pic_wd_in_ctb; in ihevcd_decode()
562 if(ps_codec->s_parse.i4_next_ctb_indx == next_slice_addr) in ihevcd_decode()
563 ps_codec->i4_slice_error = 0; in ihevcd_decode()
566 if(ps_codec->pu1_bitsbuf_dynamic) in ihevcd_decode()
568 ps_codec->pu1_bitsbuf = ps_codec->pu1_bitsbuf_dynamic; in ihevcd_decode()
569 ps_codec->u4_bitsbuf_size = ps_codec->u4_bitsbuf_size_dynamic; in ihevcd_decode()
573 ps_codec->pu1_bitsbuf = ps_codec->pu1_bitsbuf_static; in ihevcd_decode()
574 ps_codec->u4_bitsbuf_size = ps_codec->u4_bitsbuf_size_static; in ihevcd_decode()
577 nal_ofst = ihevcd_nal_search_start_code(ps_codec->pu1_inp_bitsbuf, in ihevcd_decode()
578 ps_codec->i4_bytes_remaining); in ihevcd_decode()
580 ps_codec->i4_nal_ofst = nal_ofst; in ihevcd_decode()
582 WORD32 bytes_remaining = ps_codec->i4_bytes_remaining - nal_ofst; in ihevcd_decode()
584 bytes_remaining = MIN((UWORD32)bytes_remaining, ps_codec->u4_bitsbuf_size); in ihevcd_decode()
585 ihevcd_nal_remv_emuln_bytes(ps_codec->pu1_inp_bitsbuf + nal_ofst, in ihevcd_decode()
586 ps_codec->pu1_bitsbuf, in ihevcd_decode()
592 if(bits_len < (WORD32)(ps_codec->u4_bitsbuf_size - 8)) in ihevcd_decode()
594 memset(ps_codec->pu1_bitsbuf + bits_len, 0, 2 * sizeof(UWORD32)); in ihevcd_decode()
598 ps_codec->i4_num_emln_bytes = nal_len - bits_len; in ihevcd_decode()
599 ps_codec->i4_nal_len = nal_len; in ihevcd_decode()
601 ihevcd_bits_init(&ps_codec->s_parse.s_bitstrm, ps_codec->pu1_bitsbuf, in ihevcd_decode()
604 ret = ihevcd_nal_unit(ps_codec); in ihevcd_decode()
609 if(ps_codec->i4_pic_present && in ihevcd_decode()
610 … (ps_codec->s_parse.i4_next_ctb_indx != ps_codec->s_parse.ps_sps->i4_pic_size_in_ctb)) in ihevcd_decode()
612 if((ps_codec->i4_bytes_remaining - (nal_len + nal_ofst) <= MIN_START_CODE_LEN) || in ihevcd_decode()
613 (ps_codec->i4_header_in_slice_mode)) in ihevcd_decode()
617 ps_codec->s_parse.i4_cur_slice_idx--; in ihevcd_decode()
618 if(ps_codec->s_parse.i4_cur_slice_idx < 0) in ihevcd_decode()
619 ps_codec->s_parse.i4_cur_slice_idx = 0; in ihevcd_decode()
621 …ps_slice_hdr_next = ps_codec->s_parse.ps_slice_hdr_base + ((ps_codec->s_parse.i4_cur_slice_idx + 1… in ihevcd_decode()
623 ps_slice_hdr_next->i2_ctb_y = ps_codec->s_parse.ps_sps->i2_pic_ht_in_ctb; in ihevcd_decode()
624 ps_codec->i4_slice_error = 1; in ihevcd_decode()
631 ps_codec->s_parse.i4_cur_slice_idx = MAX(0, (ps_codec->s_parse.i4_cur_slice_idx - 1)); in ihevcd_decode()
632 ps_codec->pu1_inp_bitsbuf += (nal_ofst + nal_len); in ihevcd_decode()
633 ps_codec->i4_bytes_remaining -= (nal_ofst + nal_len); in ihevcd_decode()
650 if((0 == ps_codec->i4_slice_error) || in ihevcd_decode()
651 … (ps_codec->i4_bytes_remaining - (nal_len + nal_ofst) <= MIN_START_CODE_LEN)) in ihevcd_decode()
653 ps_codec->pu1_inp_bitsbuf += (nal_ofst + nal_len); in ihevcd_decode()
654 ps_codec->i4_bytes_remaining -= (nal_ofst + nal_len); in ihevcd_decode()
659 if(ps_codec->s_parse.i4_end_of_frame) in ihevcd_decode()
669 if((ps_codec->u4_allocate_dynamic_done == 0) && ps_codec->i4_sps_done) in ihevcd_decode()
672 ret = ihevcd_allocate_dynamic_bufs(ps_codec); in ihevcd_decode()
676 ihevcd_free_dynamic_bufs(ps_codec); in ihevcd_decode()
677 ps_codec->i4_error_code = IVD_MEM_ALLOC_FAILED; in ihevcd_decode()
688 if((ps_codec->u4_pic_cnt == 0) && (ret != IHEVCD_SUCCESS)) in ihevcd_decode()
690 ps_codec->i4_error_code = ret; in ihevcd_decode()
692 ihevcd_fill_outargs(ps_codec, ps_dec_ip, ps_dec_op); in ihevcd_decode()
696 if(1 == ps_codec->i4_pic_present) in ihevcd_decode()
699 sps_t *ps_sps = ps_codec->s_parse.ps_sps; in ihevcd_decode()
700 ps_codec->i4_first_pic_done = 1; in ihevcd_decode()
703 if(ps_codec->i4_num_cores > 1 && ps_codec->s_parse.i4_end_of_frame) in ihevcd_decode()
711 ps_proc = &ps_codec->as_process[ps_codec->i4_num_cores - 1]; in ihevcd_decode()
713 if((ps_codec->ps_disp_buf) && in ihevcd_decode()
714 ((0 == ps_codec->i4_share_disp_buf) || (IV_YUV_420P == ps_codec->e_chroma_fmt))) in ihevcd_decode()
717 if((0 == ps_codec->u4_enable_fmt_conv_ahead) || in ihevcd_decode()
718 (ps_codec->i4_disp_buf_id == ps_proc->i4_cur_pic_buf_id)) in ihevcd_decode()
729 ret = ihevcd_jobq_queue((jobq_t *)ps_codec->s_parse.pv_proc_jobq, in ihevcd_decode()
737 ret = ihevcd_jobq_terminate((jobq_t *)ps_codec->s_parse.pv_proc_jobq); in ihevcd_decode()
746 ps_proc = &ps_codec->as_process[ps_codec->i4_num_cores - 1]; in ihevcd_decode()
766 sps_t *ps_sps = ps_codec->s_parse.ps_sps; in ihevcd_decode()
773 … num_rows = MIN(num_rows, (ps_codec->i4_disp_ht - (s_job.i2_ctb_y << ps_sps->i1_log2_ctb_size))); in ihevcd_decode()
777 ihevcd_fmt_conv(ps_codec, ps_proc, in ihevcd_decode()
788 else if((ps_codec->ps_disp_buf) && ((0 == ps_codec->i4_share_disp_buf) || in ihevcd_decode()
789 (IV_YUV_420P == ps_codec->e_chroma_fmt)) && in ihevcd_decode()
790 (ps_codec->s_parse.i4_end_of_frame)) in ihevcd_decode()
792 process_ctxt_t *ps_proc = &ps_codec->as_process[proc_idx]; in ihevcd_decode()
794 ps_codec->s_fmt_conv.i4_num_rows = ps_codec->i4_disp_ht in ihevcd_decode()
795 - ps_codec->s_fmt_conv.i4_cur_row; in ihevcd_decode()
801 if(ps_codec->s_fmt_conv.i4_num_rows < 0) in ihevcd_decode()
802 ps_codec->s_fmt_conv.i4_num_rows = 0; in ihevcd_decode()
804 ret = ihevcd_fmt_conv(ps_codec, ps_proc, in ihevcd_decode()
808 ps_codec->s_fmt_conv.i4_cur_row, in ihevcd_decode()
809 ps_codec->s_fmt_conv.i4_num_rows); in ihevcd_decode()
810 ps_codec->s_fmt_conv.i4_cur_row += ps_codec->s_fmt_conv.i4_num_rows; in ihevcd_decode()
815 DEBUG_DUMP_MV_MAP(ps_codec); in ihevcd_decode()
818 ihevc_buf_mgr_set_status((buf_mgr_t *)ps_codec->pv_mv_buf_mgr, in ihevcd_decode()
819 ps_codec->as_process[proc_idx].i4_cur_mv_bank_buf_id, in ihevcd_decode()
823 ihevc_buf_mgr_set_status((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, in ihevcd_decode()
824 ps_codec->as_process[proc_idx].i4_cur_pic_buf_id, in ihevcd_decode()
828 ihevc_buf_mgr_set_status((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, in ihevcd_decode()
829 ps_codec->as_process[proc_idx].i4_cur_pic_buf_id, in ihevcd_decode()
833 ihevc_dpb_mgr_insert_ref((dpb_mgr_t *)ps_codec->pv_dpb_mgr, in ihevcd_decode()
834 ps_codec->as_process[proc_idx].ps_cur_pic, in ihevcd_decode()
835 ps_codec->as_process[proc_idx].i4_cur_pic_buf_id); in ihevcd_decode()
838 if((0 == ps_codec->i4_share_disp_buf) && (ps_codec->ps_disp_buf)) in ihevcd_decode()
839 ihevc_buf_mgr_release((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, in ihevcd_decode()
840 ps_codec->i4_disp_buf_id, BUF_MGR_DISP); in ihevcd_decode()
843 for(i = 0; i < (ps_codec->i4_num_cores - 1); i++) in ihevcd_decode()
845 if(ps_codec->ai4_process_thread_created[i]) in ihevcd_decode()
847 ithread_join(ps_codec->apv_process_thread_handle[i], NULL); in ihevcd_decode()
848 ps_codec->ai4_process_thread_created[i] = 0; in ihevcd_decode()
852 DEBUG_VALIDATE_PADDED_REGION(&ps_codec->as_process[proc_idx]); in ihevcd_decode()
853 if(ps_codec->u4_pic_cnt > 0) in ihevcd_decode()
855 DEBUG_DUMP_PIC_PU(ps_codec); in ihevcd_decode()
857 DEBUG_DUMP_PIC_BUFFERS(ps_codec); in ihevcd_decode()
860 ps_codec->u4_pic_cnt++; in ihevcd_decode()
862 ihevcd_fill_outargs(ps_codec, ps_dec_ip, ps_dec_op); in ihevcd_decode()
866 WORD32 xpos = ps_codec->i4_disp_wd - 32 - LOGO_WD; in ihevcd_decode()
867 WORD32 ypos = ps_codec->i4_disp_ht - 32 - LOGO_HT; in ihevcd_decode()
877 ps_dec_ip->s_out_buffer.pu1_bufs[2], ps_codec->i4_disp_strd, in ihevcd_decode()
880 ps_codec->e_chroma_fmt, in ihevcd_decode()
881 ps_codec->i4_disp_wd, in ihevcd_decode()
882 ps_codec->i4_disp_ht); in ihevcd_decode()