Lines Matching refs:currSlice
44 static MPP_RET ref_pic_list_mvc_modification(H264_SLICE_t *currSlice) in ref_pic_list_mvc_modification() argument
49 BitReadCtx_t *p_bitctx = &currSlice->p_Cur->bitctx; in ref_pic_list_mvc_modification()
51 … if ((currSlice->slice_type % 5) != H264_I_SLICE && (currSlice->slice_type % 5) != H264_SI_SLICE) { in ref_pic_list_mvc_modification()
52 READ_ONEBIT(p_bitctx, &currSlice->ref_pic_list_reordering_flag[LIST_0]); in ref_pic_list_mvc_modification()
53 if (currSlice->ref_pic_list_reordering_flag[LIST_0]) { in ref_pic_list_mvc_modification()
54 RK_U32 size = currSlice->num_ref_idx_active[LIST_0] + 1; in ref_pic_list_mvc_modification()
63 currSlice->modification_of_pic_nums_idc[LIST_0][i] = modification_of_pic_nums_idc; in ref_pic_list_mvc_modification()
65 READ_UE(p_bitctx, &currSlice->abs_diff_pic_num_minus1[LIST_0][i]); in ref_pic_list_mvc_modification()
68 READ_UE(p_bitctx, &currSlice->long_term_pic_idx[LIST_0][i]); in ref_pic_list_mvc_modification()
70 READ_UE(p_bitctx, &currSlice->abs_diff_view_idx_minus1[LIST_0][i]); in ref_pic_list_mvc_modification()
77 if (currSlice->slice_type % 5 == H264_B_SLICE) { in ref_pic_list_mvc_modification()
78 READ_ONEBIT(p_bitctx, &currSlice->ref_pic_list_reordering_flag[LIST_1]); in ref_pic_list_mvc_modification()
79 if (currSlice->ref_pic_list_reordering_flag[LIST_1]) { in ref_pic_list_mvc_modification()
80 RK_U32 size = currSlice->num_ref_idx_active[LIST_1] + 1; in ref_pic_list_mvc_modification()
89 currSlice->modification_of_pic_nums_idc[LIST_1][i] = modification_of_pic_nums_idc; in ref_pic_list_mvc_modification()
91 READ_UE(p_bitctx, &currSlice->abs_diff_pic_num_minus1[LIST_1][i]); in ref_pic_list_mvc_modification()
94 READ_UE(p_bitctx, &currSlice->long_term_pic_idx[LIST_1][i]); in ref_pic_list_mvc_modification()
96 READ_UE(p_bitctx, &currSlice->abs_diff_view_idx_minus1[LIST_1][i]); in ref_pic_list_mvc_modification()
103 ASSERT(currSlice->redundant_pic_cnt == 0); //!< not support reference index of redundant slices in ref_pic_list_mvc_modification()
112 static MPP_RET pred_weight_table(H264_SLICE_t *currSlice) in pred_weight_table() argument
117 BitReadCtx_t *p_bitctx = &currSlice->p_Cur->bitctx; in pred_weight_table()
120 if (currSlice->active_sps->chroma_format_idc) { in pred_weight_table()
123 for (i = 0; i < currSlice->num_ref_idx_active[LIST_0]; i++) { in pred_weight_table()
129 if (currSlice->active_sps->chroma_format_idc) { in pred_weight_table()
140 …if ((currSlice->slice_type == H264_B_SLICE) && currSlice->p_Vid->active_pps->weighted_bipred_idc =… in pred_weight_table()
141 for (i = 0; i < currSlice->num_ref_idx_active[LIST_1]; i++) { in pred_weight_table()
147 if (currSlice->active_sps->chroma_format_idc) { in pred_weight_table()
240 static void init_slice_parmeters(H264_SLICE_t *currSlice) in init_slice_parmeters() argument
242 H264dVideoCtx_t *p_Vid = currSlice->p_Vid; in init_slice_parmeters()
243 H264_Nalu_t *cur_nalu = &currSlice->p_Cur->nalu; in init_slice_parmeters()
246 currSlice->idr_flag = cur_nalu->nalu_type == H264_NALU_TYPE_IDR; in init_slice_parmeters()
247 currSlice->nal_reference_idc = cur_nalu->nal_reference_idc; in init_slice_parmeters()
250 p_Vid->p_Dec->errctx.used_ref_flag = currSlice->nal_reference_idc ? 1 : 0; in init_slice_parmeters()
251 if (currSlice->slice_type == H264_I_SLICE) { in init_slice_parmeters()
255 … if ((!currSlice->svc_extension_flag) || currSlice->mvcExt.iPrefixNALU) { // MVC or have prefixNALU in init_slice_parmeters()
256 currSlice->view_id = currSlice->mvcExt.view_id; in init_slice_parmeters()
257 currSlice->inter_view_flag = currSlice->mvcExt.inter_view_flag; in init_slice_parmeters()
258 currSlice->anchor_pic_flag = currSlice->mvcExt.anchor_pic_flag; in init_slice_parmeters()
259 } else if (currSlice->svc_extension_flag == -1) { // normal AVC in init_slice_parmeters()
260 currSlice->view_id = currSlice->mvcExt.valid ? p_Vid->active_subsps->view_id[0] : 0; in init_slice_parmeters()
261 currSlice->inter_view_flag = 1; in init_slice_parmeters()
262 currSlice->anchor_pic_flag = currSlice->idr_flag; in init_slice_parmeters()
264 currSlice->layer_id = currSlice->view_id; in init_slice_parmeters()
265 if (currSlice->layer_id >= 0) { // if not found, layer_id == -1 in init_slice_parmeters()
266 currSlice->p_Dpb = p_Vid->p_Dpb_layer[currSlice->layer_id]; in init_slice_parmeters()
346 static MPP_RET set_slice_user_parmeters(H264_SLICE_t *currSlice) in set_slice_user_parmeters() argument
352 H264dVideoCtx_t *p_Vid = currSlice->p_Vid; in set_slice_user_parmeters()
355 if (currSlice->pic_parameter_set_id < MAXPPS) { in set_slice_user_parmeters()
356 cur_pps = p_Vid->ppsSet[currSlice->pic_parameter_set_id]; in set_slice_user_parmeters()
361 if (currSlice->mvcExt.valid) { in set_slice_user_parmeters()
366 … if ((RK_S32)currSlice->mvcExt.view_id == cur_subsps->view_id[0]) { // combine subsps to sps in set_slice_user_parmeters()
370 } else if ((RK_S32)currSlice->mvcExt.view_id == cur_subsps->view_id[1]) { in set_slice_user_parmeters()
419 currSlice->active_sps = p_Vid->active_sps; in set_slice_user_parmeters()
420 currSlice->active_pps = p_Vid->active_pps; in set_slice_user_parmeters()
422 p_Vid->type = currSlice->slice_type; in set_slice_user_parmeters()
462 MPP_RET process_slice(H264_SLICE_t *currSlice) in process_slice() argument
468 H264dVideoCtx_t *p_Vid = currSlice->p_Vid; in process_slice()
469 H264dCurCtx_t *p_Cur = currSlice->p_Cur; in process_slice()
474 currSlice->p_Dpb_layer[0] = p_Vid->p_Dpb_layer[0]; in process_slice()
475 currSlice->p_Dpb_layer[1] = p_Vid->p_Dpb_layer[1]; in process_slice()
478 READ_UE(p_bitctx, &currSlice->start_mb_nr); //!< first_mb_in_slice in process_slice()
480 p_Vid->slice_type = currSlice->slice_type = temp % 5; in process_slice()
485 READ_UE(p_bitctx, &currSlice->pic_parameter_set_id); in process_slice()
486 init_slice_parmeters(currSlice); in process_slice()
487 FUN_CHECK(ret = set_slice_user_parmeters(currSlice)); in process_slice()
490 … READ_BITS(p_bitctx, currSlice->active_sps->log2_max_frame_num_minus4 + 4, &currSlice->frame_num); in process_slice()
494 recovery->first_frm_id = currSlice->frame_num; in process_slice()
497 … H264D_DBG(H264D_DBG_SEI, "First recovery frame found, frame_num %d", currSlice->frame_num); in process_slice()
500 if (recovery->recovery_pic_id % p_Vid->max_frame_num < currSlice->frame_num) in process_slice()
505 if (currSlice->active_sps->frame_mbs_only_flag) { //!< user in_slice info in process_slice()
507 currSlice->field_pic_flag = 0; in process_slice()
508 currSlice->bottom_field_flag = 0; in process_slice()
510 READ_ONEBIT(p_bitctx, &currSlice->field_pic_flag); in process_slice()
511 if (currSlice->field_pic_flag) { in process_slice()
512 READ_ONEBIT(p_bitctx, &currSlice->bottom_field_flag); in process_slice()
513 p_Vid->structure = currSlice->bottom_field_flag ? BOTTOM_FIELD : TOP_FIELD; in process_slice()
516 currSlice->bottom_field_flag = 0; in process_slice()
519 currSlice->structure = p_Vid->structure; in process_slice()
520 currSlice->mb_aff_frame_flag = currSlice->active_sps->mb_adaptive_frame_field_flag && in process_slice()
521 !currSlice->field_pic_flag; in process_slice()
522 if (currSlice->idr_flag) { in process_slice()
523 READ_UE(p_bitctx, &currSlice->idr_pic_id); in process_slice()
524 } else if (currSlice->svc_extension_flag == 0 && currSlice->mvcExt.non_idr_flag == 0) { in process_slice()
525 READ_UE(p_bitctx, &currSlice->idr_pic_id); in process_slice()
529 if (currSlice->active_sps->pic_order_cnt_type == 0) { in process_slice()
530 …READ_BITS(p_bitctx, currSlice->active_sps->log2_max_pic_order_cnt_lsb_minus4 + 4, &currSlice->pic_… in process_slice()
531 if (currSlice->p_Vid->active_pps->bottom_field_pic_order_in_frame_present_flag == 1 in process_slice()
532 && !currSlice->field_pic_flag) { in process_slice()
533 READ_SE(p_bitctx, &currSlice->delta_pic_order_cnt_bottom); in process_slice()
535 currSlice->delta_pic_order_cnt_bottom = 0; in process_slice()
538 if (currSlice->active_sps->pic_order_cnt_type == 1) { in process_slice()
539 if (!currSlice->active_sps->delta_pic_order_always_zero_flag) { in process_slice()
540 READ_SE(p_bitctx, &currSlice->delta_pic_order_cnt[0]); in process_slice()
542 …if (currSlice->p_Vid->active_pps->bottom_field_pic_order_in_frame_present_flag == 1 && !currSlice-… in process_slice()
543 READ_SE(p_bitctx, &currSlice->delta_pic_order_cnt[1]); in process_slice()
545 currSlice->delta_pic_order_cnt[1] = 0; //!< set to zero if not in stream in process_slice()
548 currSlice->delta_pic_order_cnt[0] = 0; in process_slice()
549 currSlice->delta_pic_order_cnt[1] = 0; in process_slice()
555 …currSlice->poc_used_bitlen = p_bitctx->used_bits - poc_used_bits - (emulation_prevention * 8); //!… in process_slice()
557 …ASSERT(currSlice->p_Vid->active_pps->redundant_pic_cnt_present_flag == 0); // add by dw, high 4:2:… in process_slice()
558 if (currSlice->p_Vid->active_pps->redundant_pic_cnt_present_flag) { in process_slice()
559 READ_UE(p_bitctx, &currSlice->redundant_pic_cnt); in process_slice()
562 if (currSlice->slice_type == H264_B_SLICE) { in process_slice()
563 READ_ONEBIT(p_bitctx, &currSlice->direct_spatial_mv_pred_flag); in process_slice()
565 currSlice->direct_spatial_mv_pred_flag = 0; in process_slice()
567 …currSlice->num_ref_idx_active[LIST_0] = currSlice->p_Vid->active_pps->num_ref_idx_l0_default_activ… in process_slice()
568 …currSlice->num_ref_idx_active[LIST_1] = currSlice->p_Vid->active_pps->num_ref_idx_l1_default_activ… in process_slice()
570 if (currSlice->slice_type == H264_P_SLICE in process_slice()
571 || currSlice->slice_type == H264_SP_SLICE || currSlice->slice_type == H264_B_SLICE) { in process_slice()
572 READ_ONEBIT(p_bitctx, &currSlice->num_ref_idx_override_flag); in process_slice()
573 if (currSlice->num_ref_idx_override_flag) { in process_slice()
574 READ_UE(p_bitctx, &currSlice->num_ref_idx_active[LIST_0]); in process_slice()
575 currSlice->num_ref_idx_active[LIST_0] += 1; in process_slice()
576 if (currSlice->slice_type == H264_B_SLICE) { in process_slice()
577 READ_UE(p_bitctx, &currSlice->num_ref_idx_active[LIST_1]); in process_slice()
578 currSlice->num_ref_idx_active[LIST_1] += 1; in process_slice()
582 if (currSlice->slice_type != H264_B_SLICE) { in process_slice()
583 currSlice->num_ref_idx_active[LIST_1] = 0; in process_slice()
585 FUN_CHECK(ret = ref_pic_list_mvc_modification(currSlice)); in process_slice()
586 if ((currSlice->p_Vid->active_pps->weighted_pred_flag in process_slice()
587 && (currSlice->slice_type == H264_P_SLICE || currSlice->slice_type == H264_SP_SLICE)) in process_slice()
588 …|| (currSlice->p_Vid->active_pps->weighted_bipred_idc == 1 && (currSlice->slice_type == H264_B_SLI… in process_slice()
589 FUN_CHECK(ret = pred_weight_table(currSlice)); in process_slice()
591 currSlice->drpm_used_bitlen = 0; in process_slice()
592 if (currSlice->nal_reference_idc) { in process_slice()
593 FUN_CHECK(ret = dec_ref_pic_marking(currSlice)); in process_slice()
596 … currSlice->slice_type, currSlice->layer_id, currSlice->active_sps->seq_parameter_set_id, in process_slice()
597 … currSlice->active_pps->pic_parameter_set_id, currSlice->structure, currSlice->frame_num); in process_slice()