Lines Matching refs:s

88     AV1Context *s = ctx->priv_data;  in get_pixel_format()  local
89 const AV1RawSequenceHeader *seq = s->sequence_header; in get_pixel_format()
126 (s->cfg->base.out_fmt & MPP_FRAME_FMT_MASK) == MPP_FMT_YUV420SP) in get_pixel_format()
142 s->bit_depth = bit_depth; in get_pixel_format()
173 static void read_global_param(AV1Context *s, RK_S32 type, RK_S32 ref, RK_S32 idx) in read_global_param() argument
179 primary_frame = s->raw_frame_header->primary_ref_frame; in read_global_param()
180 prev_frame = s->raw_frame_header->ref_frame_idx[primary_frame]; in read_global_param()
188 if (s->raw_frame_header->primary_ref_frame == AV1_PRIMARY_REF_NONE) in read_global_param()
189 prev_gm_param = s->cur_frame.gm_params[ref].wmmat[idx]; in read_global_param()
191 prev_gm_param = s->ref[prev_frame].gm_params[ref].wmmat[idx]; in read_global_param()
196 !s->raw_frame_header->allow_high_precision_mv; in read_global_param()
198 !s->raw_frame_header->allow_high_precision_mv; in read_global_param()
210 s->cur_frame.gm_params[ref].wmmat_val[idx] = in read_global_param()
211 decode_signed_subexp_with_ref(s->raw_frame_header->gm_params[ref][idx], in read_global_param()
213 s->cur_frame.gm_params[ref].wmmat[idx] = in read_global_param()
214 (s->cur_frame.gm_params[ref].wmmat_val[idx] << prec_diff) + round; in read_global_param()
253 static RK_U8 get_shear_params_valid(AV1Context *s, RK_S32 idx) in get_shear_params_valid() argument
257 RK_S32 *param = &s->cur_frame.gm_params[idx].wmmat[0]; in get_shear_params_valid()
276 s->cur_frame.gm_params[idx].alpha = alpha; in get_shear_params_valid()
277 s->cur_frame.gm_params[idx].beta = beta; in get_shear_params_valid()
278 s->cur_frame.gm_params[idx].gamma = gamma; in get_shear_params_valid()
279 s->cur_frame.gm_params[idx].delta = delta; in get_shear_params_valid()
292 static void global_motion_params(AV1Context *s) in global_motion_params() argument
294 const AV1RawFrameHeader *header = s->raw_frame_header; in global_motion_params()
297 AV1Context *ctx = s; in global_motion_params()
300 s->cur_frame.gm_params[ref].wmtype = AV1_WARP_MODEL_IDENTITY; in global_motion_params()
302 s->cur_frame.gm_params[ref].wmmat[i] = (i % 3 == 2) ? in global_motion_params()
324 s->cur_frame.gm_params[ref].wmtype = type; in global_motion_params()
327 read_global_param(s, type, ref, 2); in global_motion_params()
328 read_global_param(s, type, ref, 3); in global_motion_params()
330 read_global_param(s, type, ref, 4); in global_motion_params()
331 read_global_param(s, type, ref, 5); in global_motion_params()
333 s->cur_frame.gm_params[ref].wmmat[4] = -s->cur_frame.gm_params[ref].wmmat[3]; in global_motion_params()
334 s->cur_frame.gm_params[ref].wmmat[5] = s->cur_frame.gm_params[ref].wmmat[2]; in global_motion_params()
338 read_global_param(s, type, ref, 0); in global_motion_params()
339 read_global_param(s, type, ref, 1); in global_motion_params()
368 static void skip_mode_params(AV1Context *s) in skip_mode_params() argument
370 const AV1RawFrameHeader *header = s->raw_frame_header; in skip_mode_params()
371 const AV1RawSequenceHeader *seq = s->sequence_header; in skip_mode_params()
386 ref_hint = s->ref[header->ref_frame_idx[i]].order_hint; in skip_mode_params()
406 s->cur_frame.skip_mode_frame_idx[0] = in skip_mode_params()
408 s->cur_frame.skip_mode_frame_idx[1] = in skip_mode_params()
415 ref_hint = s->ref[header->ref_frame_idx[i]].order_hint; in skip_mode_params()
428 s->cur_frame.skip_mode_frame_idx[0] = in skip_mode_params()
430 s->cur_frame.skip_mode_frame_idx[1] = in skip_mode_params()
434 static void coded_lossless_param(AV1Context *s) in coded_lossless_param() argument
436 const AV1RawFrameHeader *header = s->raw_frame_header; in coded_lossless_param()
442 s->cur_frame.coded_lossless = 0; in coded_lossless_param()
446 s->cur_frame.coded_lossless = 1; in coded_lossless_param()
458 s->cur_frame.coded_lossless = 0; in coded_lossless_param()
464 static void load_grain_params(AV1Context *s) in load_grain_params() argument
466 const AV1RawFrameHeader *header = s->raw_frame_header; in load_grain_params()
468 AV1RawFilmGrainParams *dst = &s->cur_frame.film_grain; in load_grain_params()
478 src = &s->ref[film_grain->film_grain_params_ref_idx].film_grain; in load_grain_params()
522 AV1Context *s = ctx->priv_data; in get_tiles_info() local
531 if (s->tile_offset) in get_tiles_info()
532 s->tile_offset += tile_group->tile_data.offset; in get_tiles_info()
536 s->tile_offset_start[tile_num] = bytestream_tell(&gb) + s->tile_offset; in get_tiles_info()
537s->tile_offset_end[tile_num] = bytestream_tell(&gb) + bytestream_get_bytes_left(&gb) + s->tile_off… in get_tiles_info()
538 s->tile_offset = s->tile_offset_end[tile_num]; in get_tiles_info()
541 size_bytes = s->raw_frame_header->tile_size_bytes_minus1 + 1; in get_tiles_info()
551 s->tile_offset_start[tile_num] = bytestream_tell(&gb) + s->tile_offset; in get_tiles_info()
553 s->tile_offset_end[tile_num] = bytestream_tell(&gb) + size + s->tile_offset; in get_tiles_info()
564 AV1Context *s = ctx->priv_data; in av1d_frame_unref() local
589 mpp_buf_slot_get_prop(s->slots, f->slot_index, SLOT_BUFFER, &framebuf); in av1d_frame_unref()
595 mpp_buf_slot_clr_flag(s->slots, f->slot_index, SLOT_CODEC_USE); in av1d_frame_unref()
607 AV1Context *s = ctx->priv_data; in set_output_frame() local
612 if (s->operating_point_idc && in set_output_frame()
613 mpp_log2(s->operating_point_idc >> 8) > s->cur_frame.spatial_id) in set_output_frame()
615 mpp_buf_slot_get_prop(s->slots, s->cur_frame.slot_index, SLOT_FRAME_PTR, &frame); in set_output_frame()
616 if (s->hdr_dynamic_meta && s->hdr_dynamic) { in set_output_frame()
617 mpp_frame_set_hdr_dynamic_meta(frame, s->hdr_dynamic_meta); in set_output_frame()
618 s->hdr_dynamic = 0; in set_output_frame()
619 if (s->raw_frame_header->show_existing_frame) in set_output_frame()
622 mpp_frame_set_pts(frame, s->pts); in set_output_frame()
623 mpp_frame_set_dts(frame, s->dts); in set_output_frame()
624 mpp_buf_slot_set_flag(s->slots, s->cur_frame.slot_index, SLOT_QUEUE_USE); in set_output_frame()
625 mpp_buf_slot_enqueue(s->slots, s->cur_frame.slot_index, QUEUE_DISPLAY); in set_output_frame()
626 s->cur_frame.ref->is_output = 1; in set_output_frame()
633 AV1Context *s = ctx->priv_data; in av1d_frame_ref() local
659 mpp_buf_slot_get_prop(s->slots, src->slot_index, SLOT_FRAME, &dst->f); in av1d_frame_ref()
668 AV1Context *s = ctx->priv_data; in update_reference_list() local
669 const AV1RawFrameHeader *header = s->raw_frame_header; in update_reference_list()
682 s->ref_s[i] = (AV1ReferenceFrameState) { in update_reference_list()
685 .upscaled_width = s->upscaled_width, in update_reference_list()
686 .frame_width = s->frame_width, in update_reference_list()
687 .frame_height = s->frame_height, in update_reference_list()
688 .render_width = s->render_width, in update_reference_list()
689 .render_height = s->render_height, in update_reference_list()
691 .subsampling_x = s->sequence_header->color_config.subsampling_x, in update_reference_list()
692 .subsampling_y = s->sequence_header->color_config.subsampling_y, in update_reference_list()
693 .bit_depth = s->bit_depth, in update_reference_list()
694 .order_hint = s->order_hint, in update_reference_list()
696 memcpy(s->ref_s[i].loop_filter_ref_deltas, header->loop_filter_ref_deltas, in update_reference_list()
698 memcpy(s->ref_s[i].loop_filter_mode_deltas, header->loop_filter_mode_deltas, in update_reference_list()
700 memcpy(s->ref_s[i].feature_enabled, header->feature_enabled, in update_reference_list()
702 memcpy(s->ref_s[i].feature_value, header->feature_value, in update_reference_list()
708 lst2_buf_idx = s->raw_frame_header->ref_frame_idx[AV1_REF_FRAME_LAST2 - AV1_REF_FRAME_LAST]; in update_reference_list()
709 lst3_buf_idx = s->raw_frame_header->ref_frame_idx[AV1_REF_FRAME_LAST3 - AV1_REF_FRAME_LAST]; in update_reference_list()
710 … gld_buf_idx = s->raw_frame_header->ref_frame_idx[AV1_REF_FRAME_GOLDEN - AV1_REF_FRAME_LAST]; in update_reference_list()
711 … alt_buf_idx = s->raw_frame_header->ref_frame_idx[AV1_REF_FRAME_ALTREF - AV1_REF_FRAME_LAST]; in update_reference_list()
712 lst_buf_idx = s->raw_frame_header->ref_frame_idx[AV1_REF_FRAME_LAST - AV1_REF_FRAME_LAST]; in update_reference_list()
713 … bwd_buf_idx = s->raw_frame_header->ref_frame_idx[AV1_REF_FRAME_BWDREF - AV1_REF_FRAME_LAST]; in update_reference_list()
714 … alt2_buf_idx = s->raw_frame_header->ref_frame_idx[AV1_REF_FRAME_ALTREF2 - AV1_REF_FRAME_LAST]; in update_reference_list()
716 s->cur_frame.ref->lst2_frame_offset = s->ref[lst2_buf_idx].order_hint; in update_reference_list()
717 s->cur_frame.ref->lst3_frame_offset = s->ref[lst3_buf_idx].order_hint; in update_reference_list()
718 s->cur_frame.ref->gld_frame_offset = s->ref[gld_buf_idx].order_hint; in update_reference_list()
719 s->cur_frame.ref->alt_frame_offset = s->ref[alt_buf_idx].order_hint; in update_reference_list()
720 s->cur_frame.ref->lst_frame_offset = s->ref[lst_buf_idx].order_hint; in update_reference_list()
721 s->cur_frame.ref->bwd_frame_offset = s->ref[bwd_buf_idx].order_hint; in update_reference_list()
722 s->cur_frame.ref->alt2_frame_offset = s->ref[alt2_buf_idx].order_hint; in update_reference_list()
730 i, i, s->ref[i].slot_index); in update_reference_list()
731 if (s->ref[i].ref) in update_reference_list()
732 av1d_frame_unref(ctx, &s->ref[i]); in update_reference_list()
734 if ((ret = av1d_frame_ref(ctx, &s->ref[i], &s->cur_frame)) < 0) { in update_reference_list()
750 AV1Context *s = ctx->priv_data; in get_current_frame() local
752 AV1Frame *frame = &s->cur_frame; in get_current_frame()
759 mpp_frame_set_width(frame->f, s->frame_width); in get_current_frame()
760 mpp_frame_set_height(frame->f, s->frame_height); in get_current_frame()
768 mpp_frame_set_hor_stride(frame->f, MPP_ALIGN(s->frame_width * s->bit_depth / 8, 8)); in get_current_frame()
770 mpp_frame_set_hor_stride(frame->f, MPP_ALIGN(s->frame_width, 8)); in get_current_frame()
772 mpp_frame_set_ver_stride(frame->f, MPP_ALIGN(s->frame_height, 8)); in get_current_frame()
775 mpp_frame_set_pts(frame->f, s->pts); in get_current_frame()
776 mpp_frame_set_dts(frame->f, s->dts); in get_current_frame()
783 mpp_frame_set_mastering_display(frame->f, s->mastering_display); in get_current_frame()
784 mpp_frame_set_content_light(frame->f, s->content_light); in get_current_frame()
786 if (MPP_FRAME_FMT_IS_FBC(s->cfg->base.out_fmt)) { in get_current_frame()
789 mpp_slots_set_prop(s->slots, SLOTS_HOR_ALIGN, hor_align_16); in get_current_frame()
790 if (s->bit_depth == 10) { in get_current_frame()
798 ctx->pix_fmt |= s->cfg->base.out_fmt & (MPP_FRAME_FBC_MASK); in get_current_frame()
808 } else if (MPP_FRAME_FMT_IS_TILE(s->cfg->base.out_fmt)) { in get_current_frame()
809 ctx->pix_fmt |= s->cfg->base.out_fmt & (MPP_FRAME_TILE_FLAG); in get_current_frame()
812 if (s->is_hdr) in get_current_frame()
817 if (s->cfg->base.enable_thumbnail && s->hw_info && s->hw_info->cap_down_scale) in get_current_frame()
818 mpp_frame_set_thumbnail_en(frame->f, s->cfg->base.enable_thumbnail); in get_current_frame()
823 mpp_slots_set_prop(s->slots, SLOTS_NUMERATOR, &value); in get_current_frame()
825 mpp_slots_set_prop(s->slots, SLOTS_DENOMINATOR, &value); in get_current_frame()
826 mpp_buf_slot_get_unused(s->slots, &frame->slot_index); in get_current_frame()
828 mpp_buf_slot_set_prop(s->slots, frame->slot_index, SLOT_FRAME, frame->f); in get_current_frame()
829 mpp_buf_slot_set_flag(s->slots, frame->slot_index, SLOT_CODEC_USE); in get_current_frame()
830 mpp_buf_slot_set_flag(s->slots, frame->slot_index, SLOT_HAL_OUTPUT); in get_current_frame()
834 frame->ref->is_intra_frame = !s->raw_frame_header->frame_type; in get_current_frame()
835 frame->ref->intra_only = (s->raw_frame_header->frame_type == 2); in get_current_frame()
837 if (!s->raw_frame_header->show_frame && !s->raw_frame_header->showable_frame) { in get_current_frame()
851 global_motion_params(s); in get_current_frame()
852 skip_mode_params(s); in get_current_frame()
853 coded_lossless_param(s); in get_current_frame()
854 load_grain_params(s); in get_current_frame()
864 AV1Context *s = mpp_calloc(AV1Context, 1); in av1d_parser_init() local
865 ctx->priv_data = (void*)s; in av1d_parser_init()
871 s->seq_ref = mpp_calloc(AV1RawSequenceHeader, 1); in av1d_parser_init()
873 s->unit_types = unit_types; in av1d_parser_init()
874 s->nb_unit_types = MPP_ARRAY_ELEMS(unit_types); in av1d_parser_init()
875 s->packet_slots = init->packet_slots; in av1d_parser_init()
876 s->slots = init->frame_slots; in av1d_parser_init()
877 s->cfg = init->cfg; in av1d_parser_init()
878 s->hw_info = init->hw_info; in av1d_parser_init()
879 mpp_buf_slot_setup(s->slots, 25); in av1d_parser_init()
883 mpp_frame_init(&s->ref[i].f); in av1d_parser_init()
884 if (!s->ref[i].f) { in av1d_parser_init()
888 s->ref[i].slot_index = 0x7f; in av1d_parser_init()
889 s->ref[i].ref = NULL; in av1d_parser_init()
892 mpp_frame_init(&s->cur_frame.f); in av1d_parser_init()
893 s->cur_frame.ref = NULL; in av1d_parser_init()
894 s->cur_frame.slot_index = 0xff; in av1d_parser_init()
895 if (!s->cur_frame.f) { in av1d_parser_init()
899 s->cdfs = &s->default_cdfs; in av1d_parser_init()
900 s->cdfs_ndvc = &s->default_cdfs_ndvc; in av1d_parser_init()
901 AV1SetDefaultCDFs(s->cdfs, s->cdfs_ndvc); in av1d_parser_init()
915 AV1Context *s = ctx->priv_data; in av1d_parser_deinit() local
916 for ( i = 0; i < MPP_ARRAY_ELEMS(s->ref); i++) { in av1d_parser_deinit()
917 if (s->ref[i].ref) { in av1d_parser_deinit()
918 av1d_frame_unref(ctx, &s->ref[i]); in av1d_parser_deinit()
920 mpp_frame_deinit(&s->ref[i].f); in av1d_parser_deinit()
921 s->ref[i].f = NULL; in av1d_parser_deinit()
923 if (s->cur_frame.ref) { in av1d_parser_deinit()
924 av1d_frame_unref(ctx, &s->cur_frame); in av1d_parser_deinit()
926 mpp_frame_deinit(&s->cur_frame.f); in av1d_parser_deinit()
928 mpp_av1_fragment_reset(&s->current_obu); in av1d_parser_deinit()
929 MPP_FREE(s->current_obu.units); in av1d_parser_deinit()
930 MPP_FREE(s->frame_header); in av1d_parser_deinit()
931 MPP_FREE(s->seq_ref); in av1d_parser_deinit()
932 MPP_FREE((s->hdr_dynamic_meta)); in av1d_parser_deinit()
945 AV1Context *s = ctx->priv_data; in av1d_parser_frame() local
956 s->pts = mpp_packet_get_pts(ctx->pkt); in av1d_parser_frame()
957 s->dts = mpp_packet_get_dts(ctx->pkt); in av1d_parser_frame()
959 s->current_obu.data = data; in av1d_parser_frame()
960 s->current_obu.data_size = size; in av1d_parser_frame()
961 s->tile_offset = 0; in av1d_parser_frame()
962 ret = mpp_av1_split_fragment(s, &s->current_obu, 0); in av1d_parser_frame()
966 ret = mpp_av1_read_fragment_content(s, &s->current_obu); in av1d_parser_frame()
971 for (i = 0; i < s->current_obu.nb_units; i++) { in av1d_parser_frame()
972 Av1ObuUnit *unit = &s->current_obu.units[i]; in av1d_parser_frame()
983 memcpy(s->seq_ref, &obu->obu.sequence_header, sizeof(AV1RawSequenceHeader)); in av1d_parser_frame()
984 s->sequence_header = s->seq_ref; in av1d_parser_frame()
985 ret = mpp_av1_set_context_with_sequence(ctx, s->sequence_header); in av1d_parser_frame()
988 s->sequence_header = NULL; in av1d_parser_frame()
992 s->operating_point_idc = s->sequence_header->operating_point_idc[s->operating_point]; in av1d_parser_frame()
997 s->sequence_header = NULL; in av1d_parser_frame()
1002 if (s->raw_frame_header) in av1d_parser_frame()
1007 if (!s->sequence_header) { in av1d_parser_frame()
1014 s->raw_frame_header = &obu->obu.frame.header; in av1d_parser_frame()
1016 s->raw_frame_header = &obu->obu.frame_header; in av1d_parser_frame()
1018 if (s->raw_frame_header->show_existing_frame) { in av1d_parser_frame()
1019 if (s->cur_frame.ref) { in av1d_parser_frame()
1020 av1d_frame_unref(ctx, &s->cur_frame); in av1d_parser_frame()
1023 ret = av1d_frame_ref(ctx, &s->cur_frame, in av1d_parser_frame()
1024 &s->ref[s->raw_frame_header->frame_to_show_map_idx]); in av1d_parser_frame()
1040 s->raw_frame_header = NULL; in av1d_parser_frame()
1049 s->cur_frame.spatial_id = header->spatial_id; in av1d_parser_frame()
1050 s->cur_frame.temporal_id = header->temporal_id; in av1d_parser_frame()
1051 s->cur_frame.order_hint = s->raw_frame_header->order_hint; in av1d_parser_frame()
1057 if (!s->raw_frame_header) { in av1d_parser_frame()
1083 if (raw_tile_group && (s->tile_num == raw_tile_group->tg_end + 1)) { in av1d_parser_frame()
1090 task->output = s->cur_frame.slot_index; in av1d_parser_frame()
1094 int8_t ref_idx = s->raw_frame_header->ref_frame_idx[j]; in av1d_parser_frame()
1095 if (s->ref[ref_idx].slot_index < 0x7f) { in av1d_parser_frame()
1096 mpp_buf_slot_set_flag(s->slots, s->ref[ref_idx].slot_index, SLOT_HAL_INPUT); in av1d_parser_frame()
1098 task->refer[j] = s->ref[ref_idx].slot_index; in av1d_parser_frame()
1099 mpp_buf_slot_get_prop(s->slots, task->refer[j], SLOT_FRAME_PTR, &mframe); in av1d_parser_frame()
1112 if (s->raw_frame_header->show_frame) { in av1d_parser_frame()
1120 s->raw_frame_header = NULL; in av1d_parser_frame()
1124 if (s->eos) { in av1d_parser_frame()
1128 mpp_av1_fragment_reset(&s->current_obu); in av1d_parser_frame()
1130 s->raw_frame_header = NULL; in av1d_parser_frame()
1182 AV1Context *s = ctx->priv_data; in av1d_paser_reset() local
1185 for ( i = 0; i < MPP_ARRAY_ELEMS(s->ref); i++) { in av1d_paser_reset()
1186 AV1Frame *f = &s->ref[i]; in av1d_paser_reset()
1189 av1d_frame_unref(ctx, &s->ref[i]); in av1d_paser_reset()
1192 if (s->cur_frame.ref) { in av1d_paser_reset()
1193 av1d_frame_unref(ctx, &s->cur_frame); in av1d_paser_reset()