Lines Matching refs:slice

31 void h264e_slice_init(H264eSlice *slice, H264eReorderInfo *reorder,  in h264e_slice_init()  argument
34 memset(slice, 0, sizeof(*slice)); in h264e_slice_init()
36 slice->num_ref_idx_active = 1; in h264e_slice_init()
38 slice->reorder = reorder; in h264e_slice_init()
39 slice->marking = marking; in h264e_slice_init()
42 RK_S32 h264e_slice_update(H264eSlice *slice, MppEncCfgSet *cfg, in h264e_slice_update() argument
48 slice->mb_w = sps->pic_width_in_mbs; in h264e_slice_update()
49 slice->mb_h = sps->pic_height_in_mbs; in h264e_slice_update()
50 slice->max_num_ref_frames = sps->num_ref_frames; in h264e_slice_update()
51 slice->log2_max_frame_num = sps->log2_max_frame_num_minus4 + 4; in h264e_slice_update()
52 slice->log2_max_poc_lsb = sps->log2_max_poc_lsb_minus4 + 4; in h264e_slice_update()
53 slice->entropy_coding_mode = h264->entropy_coding_mode; in h264e_slice_update()
54 slice->pic_order_cnt_type = sps->pic_order_cnt_type; in h264e_slice_update()
55 slice->qp_init = pps->pic_init_qp; in h264e_slice_update()
57 slice->nal_reference_idc = (frm->status.is_non_ref) ? (H264_NALU_PRIORITY_DISPOSABLE) : in h264e_slice_update()
60 slice->nalu_type = (is_idr) ? (H264_NALU_TYPE_IDR) : (H264_NALU_TYPE_SLICE); in h264e_slice_update()
62 slice->first_mb_in_slice = 0; in h264e_slice_update()
63 slice->slice_type = (is_idr) ? (H264_I_SLICE) : (H264_P_SLICE); in h264e_slice_update()
64 slice->pic_parameter_set_id = 0; in h264e_slice_update()
65 slice->frame_num = frm->frame_num; in h264e_slice_update()
66 slice->num_ref_idx_override = 0; in h264e_slice_update()
67 slice->qp_delta = 0; in h264e_slice_update()
68 slice->cabac_init_idc = h264->entropy_coding_mode ? h264->cabac_init_idc : -1; in h264e_slice_update()
69 slice->disable_deblocking_filter_idc = h264->deblock_disable; in h264e_slice_update()
70 slice->slice_alpha_c0_offset_div2 = h264->deblock_offset_alpha; in h264e_slice_update()
71 slice->slice_beta_offset_div2 = h264->deblock_offset_beta; in h264e_slice_update()
73 slice->idr_flag = is_idr; in h264e_slice_update()
75 if (slice->idr_flag) { in h264e_slice_update()
76 slice->idr_pic_id = slice->next_idr_pic_id; in h264e_slice_update()
77 slice->next_idr_pic_id++; in h264e_slice_update()
78 if (slice->next_idr_pic_id >= 16) in h264e_slice_update()
79 slice->next_idr_pic_id = 0; in h264e_slice_update()
82 slice->pic_order_cnt_lsb = frm->poc & ((1 << slice->log2_max_poc_lsb) - 1); in h264e_slice_update()
83 slice->num_ref_idx_active = 1; in h264e_slice_update()
84 slice->no_output_of_prior_pics = 0; in h264e_slice_update()
85 if (slice->idr_flag) in h264e_slice_update()
86 slice->long_term_reference_flag = frm->status.is_lt_ref; in h264e_slice_update()
88 slice->long_term_reference_flag = 0; in h264e_slice_update()
275 RK_S32 h264e_slice_read(H264eSlice *slice, void *p, RK_S32 size) in h264e_slice_read() argument
297 ret |= mpp_read_bits(&bit, 2, &slice->nal_reference_idc); in h264e_slice_read()
299 bit.used_bits, slice->nal_reference_idc); in h264e_slice_read()
302 ret |= mpp_read_bits(&bit, 5, &slice->nalu_type); in h264e_slice_read()
304 bit.used_bits, slice->nalu_type); in h264e_slice_read()
307 ret = mpp_read_ue(&bit, &slice->first_mb_in_slice); in h264e_slice_read()
309 bit.used_bits, slice->first_mb_in_slice); in h264e_slice_read()
312 ret |= mpp_read_ue(&bit, &slice->slice_type); in h264e_slice_read()
314 bit.used_bits, slice->slice_type); in h264e_slice_read()
317 ret |= mpp_read_ue(&bit, &slice->pic_parameter_set_id); in h264e_slice_read()
319 bit.used_bits, slice->pic_parameter_set_id); in h264e_slice_read()
323 ret |= mpp_read_bits(&bit, slice->log2_max_frame_num, &slice->frame_num); in h264e_slice_read()
325 bit.used_bits, slice->frame_num); in h264e_slice_read()
327 slice->idr_flag = (slice->nalu_type == 5); in h264e_slice_read()
328 if (slice->idr_flag) { in h264e_slice_read()
330 ret |= mpp_read_ue(&bit, &slice->idr_pic_id); in h264e_slice_read()
332 bit.used_bits, slice->idr_pic_id); in h264e_slice_read()
336 if (slice->pic_order_cnt_type == 0) { in h264e_slice_read()
338 ret |= mpp_read_bits(&bit, slice->log2_max_poc_lsb, in h264e_slice_read()
339 (RK_S32 *)&slice->pic_order_cnt_lsb); in h264e_slice_read()
341 bit.used_bits, slice->pic_order_cnt_lsb); in h264e_slice_read()
345 if (slice->slice_type == H264_P_SLICE) { in h264e_slice_read()
347 ret |= mpp_read_bits(&bit, 1, &slice->num_ref_idx_override); in h264e_slice_read()
349 bit.used_bits, slice->num_ref_idx_override); in h264e_slice_read()
351 mpp_assert(slice->num_ref_idx_override == 0); in h264e_slice_read()
355 ret |= mpp_read_bits(&bit, 1, &slice->ref_pic_list_modification_flag); in h264e_slice_read()
357 bit.used_bits, slice->ref_pic_list_modification_flag); in h264e_slice_read()
359 if (slice->ref_pic_list_modification_flag) { in h264e_slice_read()
363 h264e_reorder_wr_rewind(slice->reorder); in h264e_slice_read()
400 h264e_reorder_wr_op(slice->reorder, &ops); in h264e_slice_read()
406 if (slice->nal_reference_idc) { in h264e_slice_read()
407 if (slice->idr_flag) { in h264e_slice_read()
409 ret |= mpp_read_bits(&bit, 1, &slice->no_output_of_prior_pics); in h264e_slice_read()
410 slice->marking->no_output_of_prior_pics = slice->no_output_of_prior_pics; in h264e_slice_read()
412 bit.used_bits, slice->no_output_of_prior_pics); in h264e_slice_read()
415 ret |= mpp_read_bits(&bit, 1, &slice->long_term_reference_flag); in h264e_slice_read()
416 slice->marking->long_term_reference_flag = slice->long_term_reference_flag; in h264e_slice_read()
418 bit.used_bits, slice->long_term_reference_flag); in h264e_slice_read()
421 ret |= mpp_read_bits(&bit, 1, &slice->adaptive_ref_pic_buffering); in h264e_slice_read()
422 slice->marking->adaptive_ref_pic_buffering = slice->adaptive_ref_pic_buffering; in h264e_slice_read()
424 bit.used_bits, slice->adaptive_ref_pic_buffering); in h264e_slice_read()
426 if (slice->adaptive_ref_pic_buffering) { in h264e_slice_read()
430 h264e_marking_wr_rewind(slice->marking); in h264e_slice_read()
478 h264e_marking_wr_op(slice->marking, &opt); in h264e_slice_read()
485 if (slice->entropy_coding_mode && slice->slice_type != H264_I_SLICE) { in h264e_slice_read()
487 ret |= mpp_read_ue(&bit, &slice->cabac_init_idc); in h264e_slice_read()
489 bit.used_bits, slice->cabac_init_idc); in h264e_slice_read()
493 ret |= mpp_read_se(&bit, &slice->qp_delta); in h264e_slice_read()
495 bit.used_bits, slice->qp_delta); in h264e_slice_read()
498 ret |= mpp_read_ue(&bit, &slice->disable_deblocking_filter_idc); in h264e_slice_read()
500 bit.used_bits, slice->disable_deblocking_filter_idc); in h264e_slice_read()
503 ret |= mpp_read_se(&bit, &slice->slice_alpha_c0_offset_div2); in h264e_slice_read()
505 bit.used_bits, slice->slice_alpha_c0_offset_div2); in h264e_slice_read()
508 ret |= mpp_read_se(&bit, &slice->slice_beta_offset_div2); in h264e_slice_read()
510 bit.used_bits, slice->slice_beta_offset_div2); in h264e_slice_read()
514 if (slice->entropy_coding_mode) { in h264e_slice_read()
545 void h264e_slice_write_header(H264eSlice *slice, MppWriteCtx *s) in h264e_slice_write_header() argument
547 H264eMarkingInfo *marking = slice->marking; in h264e_slice_write_header()
564 mpp_writer_put_raw_bits(s, slice->nal_reference_idc, 2); in h264e_slice_write_header()
566 mpp_writer_bits(s), slice->nal_reference_idc); in h264e_slice_write_header()
568 mpp_writer_put_raw_bits(s, slice->nalu_type, 5); in h264e_slice_write_header()
570 mpp_writer_bits(s), slice->nalu_type); in h264e_slice_write_header()
574 mpp_writer_put_ue(s, slice->first_mb_in_slice); in h264e_slice_write_header()
576 mpp_writer_bits(s), slice->first_mb_in_slice); in h264e_slice_write_header()
579 mpp_writer_put_ue(s, slice->slice_type); in h264e_slice_write_header()
581 mpp_writer_bits(s), slice->slice_type); in h264e_slice_write_header()
584 mpp_writer_put_ue(s, slice->pic_parameter_set_id); in h264e_slice_write_header()
586 mpp_writer_bits(s), slice->pic_parameter_set_id); in h264e_slice_write_header()
589 mpp_writer_put_bits(s, slice->frame_num, slice->log2_max_frame_num); in h264e_slice_write_header()
591 mpp_writer_bits(s), slice->frame_num); in h264e_slice_write_header()
593 if (slice->nalu_type == 5) { in h264e_slice_write_header()
595 mpp_writer_put_ue(s, slice->idr_pic_id); in h264e_slice_write_header()
597 mpp_writer_bits(s), slice->idr_pic_id); in h264e_slice_write_header()
603 if (slice->pic_order_cnt_type == 0) { in h264e_slice_write_header()
604 RK_S32 pic_order_cnt_lsb = slice->pic_order_cnt_lsb; in h264e_slice_write_header()
605 RK_S32 max_poc_lsb = (1 << slice->log2_max_poc_lsb); in h264e_slice_write_header()
611 mpp_writer_put_bits(s, pic_order_cnt_lsb, slice->log2_max_poc_lsb); in h264e_slice_write_header()
615 mpp_assert(slice->pic_order_cnt_type == 2); in h264e_slice_write_header()
619 slice->ref_pic_list_modification_flag = 0; in h264e_slice_write_header()
621 h264e_reorder_rd_rewind(slice->reorder); in h264e_slice_write_header()
623 if (slice->slice_type == H264_P_SLICE) { in h264e_slice_write_header()
624 mpp_assert(slice->num_ref_idx_override == 0); in h264e_slice_write_header()
626 mpp_writer_put_bits(s, slice->num_ref_idx_override, 1); in h264e_slice_write_header()
628 mpp_writer_bits(s), slice->num_ref_idx_override); in h264e_slice_write_header()
632 ret = h264e_reorder_rd_op(slice->reorder, &rplmo); in h264e_slice_write_header()
635 slice->ref_pic_list_modification_flag = (ret == MPP_OK); in h264e_slice_write_header()
636 mpp_writer_put_bits(s, slice->ref_pic_list_modification_flag, 1); in h264e_slice_write_header()
638 mpp_writer_bits(s), slice->ref_pic_list_modification_flag); in h264e_slice_write_header()
640 if (slice->ref_pic_list_modification_flag) { in h264e_slice_write_header()
679 slice->nal_reference_idc, slice->idr_flag); in h264e_slice_write_header()
681 if (slice->nal_reference_idc) { in h264e_slice_write_header()
683 if (slice->long_term_reference_flag != marking->long_term_reference_flag) { in h264e_slice_write_header()
684 marking->long_term_reference_flag = slice->long_term_reference_flag; in h264e_slice_write_header()
686 marking->long_term_reference_flag, slice->long_term_reference_flag); in h264e_slice_write_header()
693 if (slice->entropy_coding_mode && slice->slice_type != H264_I_SLICE) { in h264e_slice_write_header()
695 mpp_writer_put_ue(s, slice->cabac_init_idc); in h264e_slice_write_header()
697 mpp_writer_bits(s), slice->cabac_init_idc); in h264e_slice_write_header()
701 mpp_writer_put_se(s, slice->qp_delta); in h264e_slice_write_header()
703 mpp_writer_bits(s), slice->qp_delta); in h264e_slice_write_header()
706 mpp_writer_put_ue(s, slice->disable_deblocking_filter_idc); in h264e_slice_write_header()
708 mpp_writer_bits(s), slice->disable_deblocking_filter_idc); in h264e_slice_write_header()
711 mpp_writer_put_se(s, slice->slice_alpha_c0_offset_div2); in h264e_slice_write_header()
713 mpp_writer_bits(s), slice->slice_alpha_c0_offset_div2); in h264e_slice_write_header()
716 mpp_writer_put_se(s, slice->slice_beta_offset_div2); in h264e_slice_write_header()
718 mpp_writer_bits(s), slice->slice_beta_offset_div2); in h264e_slice_write_header()
721 if (slice->entropy_coding_mode) { in h264e_slice_write_header()
730 RK_S32 h264e_slice_write(H264eSlice *slice, void *p, RK_U32 size) in h264e_slice_write() argument
738 h264e_slice_write_header(slice, s); in h264e_slice_write()
743 if (slice->entropy_coding_mode) in h264e_slice_write()
931 RK_S32 h264e_slice_write_pskip(H264eSlice *slice, void *p, RK_U32 size) in h264e_slice_write_pskip() argument
939 h264e_slice_write_header(slice, s); in h264e_slice_write_pskip()
940 if (slice->entropy_coding_mode) { in h264e_slice_write_pskip()
945 init_context(&ctx, slice->qp_init, slice->cabac_init_idc, s); in h264e_slice_write_pskip()
947 for (i = 0; i < slice->mb_w * slice->mb_h; i++) { in h264e_slice_write_pskip()
961 mpp_writer_put_ue(s, slice->mb_w * slice->mb_h); in h264e_slice_write_pskip()
963 mpp_writer_bits(s), slice->mb_w * slice->mb_h); in h264e_slice_write_pskip()