Home | History | Annotate | Download | only in decoder

Lines Matching refs:ps_codec

84 IHEVCD_ERROR_T ihevcd_fmt_conv(codec_t *ps_codec,
91 WORD32 ihevcd_init(codec_t *ps_codec);
105 * @param[in] ps_codec
163 * @param[in] ps_codec
178 static void ihevcd_fill_outargs(codec_t *ps_codec,
183 ps_dec_op->u4_error_code = ihevcd_map_error((IHEVCD_ERROR_T)ps_codec->i4_error_code);
185 - ps_codec->i4_bytes_remaining;
186 if(ps_codec->i4_sps_done)
188 ps_dec_op->u4_pic_wd = ps_codec->i4_disp_wd;
189 ps_dec_op->u4_pic_ht = ps_codec->i4_disp_ht;
191 else if(ps_codec->i4_error_code == IHEVCD_UNSUPPORTED_DIMENSIONS)
193 ps_dec_op->u4_pic_wd = ps_codec->i4_new_max_wd;
194 ps_dec_op->u4_pic_ht = ps_codec->i4_new_max_ht;
202 ps_dec_op->e_pic_type = ps_codec->e_dec_pic_type;
203 ps_dec_op->u4_frame_decoded_flag = ps_codec->i4_pic_present;
209 ps_dec_op->e_output_format = ps_codec->e_chroma_fmt;
215 ps_dec_op->u4_disp_buf_id = ps_codec->i4_disp_buf_id;
216 if(ps_codec->i4_flush_mode)
226 if(ps_codec->ps_disp_buf)
228 pic_buf_t *ps_disp_buf = ps_codec->ps_disp_buf;
232 if((ps_codec->i4_flush_mode == 0) && (ps_codec->s_parse.i4_end_of_frame == 0))
234 ps_dec_op->s_disp_frm_buf.u4_y_wd = ps_codec->i4_disp_wd;
235 ps_dec_op->s_disp_frm_buf.u4_y_ht = ps_codec->i4_disp_ht;
237 if(ps_codec->i4_share_disp_buf)
240 if(ps_codec->e_chroma_fmt != IV_YUV_420P)
253 ps_dec_op->s_disp_frm_buf.u4_y_strd = ps_codec->i4_strd;
264 ps_dec_op->s_disp_frm_buf.u4_y_strd = ps_codec->i4_disp_strd;
267 if((IV_YUV_420SP_VU == ps_codec->e_chroma_fmt)
268 || (IV_YUV_420SP_UV == ps_codec->e_chroma_fmt))
280 else if(IV_YUV_420P == ps_codec->e_chroma_fmt)
297 else if(ps_codec->i4_flush_mode)
301 ps_codec->i4_flush_mode = 0;
337 codec_t *ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle);
345 ps_codec->i4_error_code = 0;
351 if(ps_codec->i4_init_done != 1)
358 if(ps_codec->u4_pic_cnt >= NUM_FRAMES_LIMIT)
366 if(ps_codec->i4_reset_flag)
368 ps_codec->i4_flush_mode = 1;
374 if(0 == ps_codec->i4_flush_mode)
400 num_mbs = (ps_codec->i4_wd * ps_codec->i4_ht + 255) >> 8;
402 ps_codec->mb_count = 0;
403 memset(ps_codec->mb_map, 0, ((num_mbs + 7) >> 3));
407 if(0 == ps_codec->i4_share_disp_buf && ps_codec->i4_header_mode == 0)
435 ps_codec->ps_out_buffer = &ps_dec_ip->s_out_buffer;
436 ps_codec->u4_ts = ps_dec_ip->u4_ts;
437 if(ps_codec->i4_flush_mode)
440 ps_dec_op->u4_pic_wd = ps_codec->i4_disp_wd;
441 ps_dec_op->u4_pic_ht = ps_codec->i4_disp_ht;
445 ps_codec->ps_disp_buf = (pic_buf_t *)ihevc_disp_mgr_get(
446 (disp_mgr_t *)ps_codec->pv_disp_buf_mgr, &ps_codec->i4_disp_buf_id);
449 if((ps_codec->ps_disp_buf)
450 && ((0 == ps_codec->i4_share_disp_buf)
452 == ps_codec->e_chroma_fmt)))
455 process_ctxt_t *ps_proc = &ps_codec->as_process[prev_proc_idx];
462 ret = ihevcd_fmt_conv(ps_codec, &ps_codec->as_process[prev_proc_idx],
466 ps_codec->i4_disp_ht);
468 ihevc_buf_mgr_release((buf_mgr_t *)ps_codec->pv_pic_buf_mgr,
469 ps_codec->i4_disp_buf_id, BUF_MGR_DISP);
472 ihevcd_fill_outargs(ps_codec, ps_dec_ip, ps_dec_op);
476 WORD32 xpos = ps_codec->i4_disp_wd - 32 - LOGO_WD;
477 WORD32 ypos = ps_codec->i4_disp_ht - 32 - LOGO_HT;
487 ps_dec_ip->s_out_buffer.pu1_bufs[2], ps_codec->i4_disp_strd,
490 ps_codec->e_chroma_fmt,
491 ps_codec
492 ps_codec->i4_disp_ht);
496 if(NULL == ps_codec->ps_disp_buf)
500 if(ps_codec->i4_reset_flag)
502 ihevcd_init(ps_codec);
511 if((0 == ps_codec->i4_header_mode) && (1 == ps_codec->i4_share_disp_buf))
515 if(ps_codec->pv_pic_buf_mgr)
516 buf_status = ihevc_buf_mgr_check_free((buf_mgr_t *)ps_codec->pv_pic_buf_mgr);
526 ps_codec->i4_bytes_remaining = ps_dec_ip->u4_num_Bytes;
527 ps_codec->pu1_inp_bitsbuf = (UWORD8 *)ps_dec_ip->pv_stream_buffer;
528 ps_codec->s_parse.i4_end_of_frame = 0;
530 ps_codec->i4_pic_present = 0;
531 ps_codec->i4_slice_error = 0;
532 ps_codec->ps_disp_buf = NULL;
534 if(ps_codec->i4_num_cores > 1)
538 while(MIN_START_CODE_LEN < ps_codec->i4_bytes_remaining)
544 if(ps_codec->i4_slice_error)
546 slice_header_t *ps_slice_hdr_next = ps_codec->s_parse.ps_slice_hdr_base + (ps_codec->s_parse.i4_cur_slice_idx & (MAX_SLICE_HDR_CNT - 1));
548 ps_slice_hdr_next->i2_ctb_y * ps_codec->s_parse.ps_sps->i2_pic_wd_in_ctb;
549 if(ps_codec->s_parse.i4_next_ctb_indx == next_slice_addr)
550 ps_codec->i4_slice_error = 0;
553 nal_ofst = ihevcd_nal_search_start_code(ps_codec->pu1_inp_bitsbuf,
554 ps_codec->i4_bytes_remaining);
556 ps_codec->i4_nal_ofst = nal_ofst;
558 WORD32 bytes_remaining = ps_codec->i4_bytes_remaining - nal_ofst;
560 bytes_remaining = MIN((UWORD32)bytes_remaining, ps_codec->u4_bitsbuf_size);
561 ihevcd_nal_remv_emuln_bytes(ps_codec->pu1_inp_bitsbuf + nal_ofst,
562 ps_codec->pu1_bitsbuf,
567 ps_codec->i4_num_emln_bytes = nal_len - bits_len;
568 ps_codec->i4_nal_len = nal_len;
570 ihevcd_bits_init(&ps_codec->s_parse.s_bitstrm, ps_codec->pu1_bitsbuf,
573 ret = ihevcd_nal_unit(ps_codec);
578 if(ps_codec->i4_pic_present &&
579 (ps_codec->s_parse.i4_next_ctb_indx != ps_codec->s_parse.ps_sps->i4_pic_size_in_ctb))
581 if((ps_codec->i4_bytes_remaining - (nal_len + nal_ofst) <= MIN_START_CODE_LEN) ||
582 (ps_codec->i4_header_in_slice_mode))
586 ps_codec->s_parse.i4_cur_slice_idx--;
587 if(ps_codec->s_parse.i4_cur_slice_idx < 0)
588 ps_codec->s_parse.i4_cur_slice_idx = 0;
590 ps_slice_hdr_next = ps_codec->s_parse.ps_slice_hdr_base + ((ps_codec->s_parse.i4_cur_slice_idx + 1) & (MAX_SLICE_HDR_CNT - 1));
592 ps_slice_hdr_next->i2_ctb_y = ps_codec->s_parse.ps_sps->i2_pic_ht_in_ctb;
593 ps_codec->i4_slice_error = 1;
600 ps_codec->pu1_inp_bitsbuf += (nal_ofst + nal_len);
601 ps_codec->i4_bytes_remaining -= (nal_ofst + nal_len);
606 if(((IHEVCD_FAIL == ret) && (ps_codec->i4_error_code == IVD_RES_CHANGED)) ||
618 if((0 == ps_codec->i4_slice_error) ||
619 (ps_codec->i4_bytes_remaining - (nal_len + nal_ofst) <= MIN_START_CODE_LEN))
621 ps_codec->pu1_inp_bitsbuf += (nal_ofst + nal_len);
622 ps_codec->i4_bytes_remaining -= (nal_ofst + nal_len);
627 if(ps_codec->s_parse.i4_end_of_frame)
639 if((ps_codec->u4_pic_cnt == 0) && (ret != IHEVCD_SUCCESS))
641 ps_codec->i4_error_code = ret;
643 ihevcd_fill_outargs(ps_codec, ps_dec_ip, ps_dec_op);
647 if(1 == ps_codec->i4_pic_present)
650 sps_t *ps_sps = ps_codec->s_parse.ps_sps;
651 ps_codec->i4_first_pic_done = 1;
654 if(ps_codec->i4_num_cores > 1 && ps_codec->s_parse.i4_end_of_frame)
662 ps_proc = &ps_codec->as_process[ps_codec->i4_num_cores - 1];
664 if((ps_codec->ps_disp_buf) &&
665 ((0 == ps_codec->i4_share_disp_buf) || (IV_YUV_420P == ps_codec->e_chroma_fmt)))
668 if((0 == ps_codec->u4_enable_fmt_conv_ahead) ||
669 (ps_codec->i4_disp_buf_id == ps_proc->i4_cur_pic_buf_id))
680 ret = ihevcd_jobq_queue((jobq_t *)ps_codec->s_parse.pv_proc_jobq,
688 ret = ihevcd_jobq_terminate((jobq_t *)ps_codec->s_parse.pv_proc_jobq);
697 ps_proc = &ps_codec->as_process[ps_codec->i4_num_cores - 1];
717 sps_t *ps_sps = ps_codec->s_parse.ps_sps;
724 num_rows = MIN(num_rows, (ps_codec->i4_disp_ht - (s_job.i2_ctb_y << ps_sps->i1_log2_ctb_size)));
728 ihevcd_fmt_conv(ps_codec, ps_proc,
739 else if((ps_codec->ps_disp_buf) && ((0 == ps_codec->i4_share_disp_buf) ||
740 (IV_YUV_420P == ps_codec->e_chroma_fmt)) &&
741 (ps_codec->s_parse.i4_end_of_frame))
743 process_ctxt_t *ps_proc = &ps_codec->as_process[proc_idx];
745 ps_codec->s_fmt_conv.i4_num_rows = ps_codec->i4_disp_ht
746 - ps_codec->s_fmt_conv.i4_cur_row;
752 if(ps_codec->s_fmt_conv.i4_num_rows < 0)
753 ps_codec->s_fmt_conv.i4_num_rows = 0;
755 ret = ihevcd_fmt_conv(ps_codec, ps_proc,
759 ps_codec->s_fmt_conv.i4_cur_row,
760 ps_codec->s_fmt_conv.i4_num_rows);
761 ps_codec->s_fmt_conv.i4_cur_row += ps_codec->s_fmt_conv.i4_num_rows;
766 DEBUG_DUMP_MV_MAP(ps_codec);
769 ihevc_buf_mgr_set_status((buf_mgr_t *)ps_codec->pv_mv_buf_mgr,
770 ps_codec->as_process[proc_idx].i4_cur_mv_bank_buf_id,
774 ihevc_buf_mgr_set_status((buf_mgr_t *)ps_codec->pv_pic_buf_mgr,
775 ps_codec->as_process[proc_idx].i4_cur_pic_buf_id,
779 ihevc_buf_mgr_set_status((buf_mgr_t *)ps_codec->pv_pic_buf_mgr,
780 ps_codec->as_process[proc_idx].i4_cur_pic_buf_id,
784 ihevc_dpb_mgr_insert_ref((dpb_mgr_t *)ps_codec->pv_dpb_mgr,
785 ps_codec->as_process[proc_idx].ps_cur_pic,
786 ps_codec->as_process[proc_idx].i4_cur_pic_buf_id);
789 if((0 == ps_codec->i4_share_disp_buf) && (ps_codec->ps_disp_buf))
790 ihevc_buf_mgr_release((buf_mgr_t *)ps_codec->pv_pic_buf_mgr,
791 ps_codec->i4_disp_buf_id, BUF_MGR_DISP);
794 for(i = 0; i < (ps_codec->i4_num_cores - 1); i++)
796 if(ps_codec->ai4_process_thread_created[i])
798 ithread_join(ps_codec->apv_process_thread_handle[i], NULL);
799 ps_codec->ai4_process_thread_created[i] = 0;
803 DEBUG_VALIDATE_PADDED_REGION(&ps_codec->as_process[proc_idx]);
804 if(ps_codec->u4_pic_cnt > 0)
806 DEBUG_DUMP_PIC_PU(ps_codec);
808 DEBUG_DUMP_PIC_BUFFERS(ps_codec);
811 ps_codec->u4_pic_cnt++;
813 ihevcd_fill_outargs(ps_codec, ps_dec_ip, ps_dec_op);
817 WORD32 xpos = ps_codec->i4_disp_wd - 32 - LOGO_WD;
818 WORD32 ypos = ps_codec->i4_disp_ht - 32 - LOGO_HT;
828 ps_dec_ip->s_out_buffer.pu1_bufs[2], ps_codec->i4_disp_strd,
831 ps_codec->e_chroma_fmt,
832 ps_codec->i4_disp_wd,
833 ps_codec->i4_disp_ht);