Lines Matching refs:s
102 VP9ParseContext *s = (VP9ParseContext *)ctx->priv_data; in split_parse_frame() local
112 ctx->pts = s->pts; in split_parse_frame()
113 s->pts = -1; in split_parse_frame()
115 s->pts = ctx->pts; in split_parse_frame()
126 VP9ParseContext *s = (VP9ParseContext *)ctx->priv_data; in vp9d_split_frame() local
137 if (s->n_frames > 0) { in vp9d_split_frame()
139 *out_size = s->size[--s->n_frames]; in vp9d_split_frame()
142 return s->n_frames > 0 ? *out_size : size /* i.e. include idx tail */; in vp9d_split_frame()
161 s->n_frames = 0; \ in vp9d_split_frame()
172 s->n_frames = n_frames; \ in vp9d_split_frame()
174 s->size[n_frames] = sz; \ in vp9d_split_frame()
257 VP9Context *s = ctx->priv_data; in vp9_ref_frame() local
269 mpp_buf_slot_get_prop(s->slots, src->slot_index, SLOT_FRAME, &dst->f); in vp9_ref_frame()
275 static void vp9_unref_frame( VP9Context *s, VP9Frame *f) in vp9_unref_frame() argument
287 mpp_buf_slot_get_prop(s->slots, f->slot_index, SLOT_BUFFER, &framebuf); in vp9_unref_frame()
291 mpp_buf_slot_clr_flag(s->slots, f->slot_index, SLOT_CODEC_USE); in vp9_unref_frame()
302 static RK_S32 vp9_frame_free(VP9Context *s) in vp9_frame_free() argument
306 if (s->frames[i].ref) { in vp9_frame_free()
307 vp9_unref_frame(s, &s->frames[i]); in vp9_frame_free()
309 mpp_frame_deinit(&s->frames[i].f); in vp9_frame_free()
312 if (s->refs[i].ref) { in vp9_frame_free()
313 vp9_unref_frame(s, &s->refs[i]); in vp9_frame_free()
315 mpp_frame_deinit(&s->refs[i].f); in vp9_frame_free()
320 static RK_S32 vp9_frame_init(VP9Context *s) in vp9_frame_init() argument
324 mpp_frame_init(&s->frames[i].f); in vp9_frame_init()
325 if (!s->frames[i].f) { in vp9_frame_init()
326 vp9_frame_free(s); in vp9_frame_init()
330 s->frames[i].slot_index = 0x7f; in vp9_frame_init()
331 s->frames[i].ref = NULL; in vp9_frame_init()
335 mpp_frame_init(&(s->refs[i].f)); in vp9_frame_init()
336 if (!s->refs[i].f) { in vp9_frame_init()
337 vp9_frame_free(s); in vp9_frame_init()
341 s->refs[i].slot_index = 0x7f; in vp9_frame_init()
342 s->refs[i].ref = NULL; in vp9_frame_init()
349 VP9Context *s = mpp_calloc(VP9Context, 1); in vp9d_parser_init() local
350 vp9_ctx->priv_data = (void*)s; in vp9d_parser_init()
355 vp9_frame_init(s); in vp9d_parser_init()
356 s->last_bpp = 0; in vp9d_parser_init()
357 s->filter.sharpness = -1; in vp9d_parser_init()
363 s->packet_slots = init->packet_slots; in vp9d_parser_init()
364 s->slots = init->frame_slots; in vp9d_parser_init()
365 s->cfg = init->cfg; in vp9d_parser_init()
366 s->hw_info = init->hw_info; in vp9d_parser_init()
367 mpp_buf_slot_setup(s->slots, 25); in vp9d_parser_init()
376 VP9Context *s = vp9_ctx->priv_data; in vp9d_parser_deinit() local
377 vp9_frame_free(s); in vp9d_parser_deinit()
378 mpp_free(s->c_b); in vp9d_parser_deinit()
379 s->c_b_size = 0; in vp9d_parser_deinit()
386 VP9Context *s = ctx->priv_data; in vp9_alloc_frame() local
394 mpp_frame_set_pts(frame->f, s->pts); in vp9_alloc_frame()
395 mpp_frame_set_dts(frame->f, s->dts); in vp9_alloc_frame()
397 s->cur_poc++; in vp9_alloc_frame()
398 mpp_frame_set_poc(frame->f, s->cur_poc); in vp9_alloc_frame()
400 if (MPP_FRAME_FMT_IS_FBC(s->cfg->base.out_fmt)) { in vp9_alloc_frame()
403 mpp_slots_set_prop(s->slots, SLOTS_HOR_ALIGN, mpp_align_64); in vp9_alloc_frame()
404 mpp_frame_set_fmt(frame->f, ctx->pix_fmt | ((s->cfg->base.out_fmt & (MPP_FRAME_FBC_MASK)))); in vp9_alloc_frame()
412 mpp_slots_set_prop(s->slots, SLOTS_HOR_ALIGN, mpp_align_128_odd_plus_64); in vp9_alloc_frame()
414 mpp_slots_set_prop(s->slots, SLOTS_HOR_ALIGN, mpp_align_256_odd); in vp9_alloc_frame()
415 mpp_slots_set_prop(s->slots, SLOTS_VER_ALIGN, mpp_align_64); in vp9_alloc_frame()
416 if (MPP_FRAME_FMT_IS_TILE(s->cfg->base.out_fmt)) in vp9_alloc_frame()
417 … mpp_frame_set_fmt(frame->f, ctx->pix_fmt | ((s->cfg->base.out_fmt & (MPP_FRAME_TILE_FLAG)))); in vp9_alloc_frame()
422 if (s->cfg->base.enable_thumbnail && s->hw_info->cap_down_scale) in vp9_alloc_frame()
423 mpp_frame_set_thumbnail_en(frame->f, s->cfg->base.enable_thumbnail); in vp9_alloc_frame()
427 mpp_buf_slot_get_unused(s->slots, &frame->slot_index); in vp9_alloc_frame()
428 mpp_buf_slot_set_prop(s->slots, frame->slot_index, SLOT_FRAME, frame->f); in vp9_alloc_frame()
429 mpp_buf_slot_set_flag(s->slots, frame->slot_index, SLOT_CODEC_USE); in vp9_alloc_frame()
430 mpp_buf_slot_set_flag(s->slots, frame->slot_index, SLOT_HAL_OUTPUT); in vp9_alloc_frame()
433 frame->ref->invisible = s->invisible; in vp9_alloc_frame()
455 VP9Context *s = ctx->priv_data; in update_size() local
463 s->sb_cols = (w + 63) >> 6; in update_size()
464 s->sb_rows = (h + 63) >> 6; in update_size()
465 s->cols = (w + 7) >> 3; in update_size()
466 s->rows = (h + 7) >> 3; in update_size()
469 if (s->bpp != s->last_bpp) { in update_size()
470 s->last_bpp = s->bpp; in update_size()
564 VP9Context *s = ctx->priv_data; in read_colorspace_details() local
566 RK_S32 bits = ctx->profile <= 1 ? 0 : 1 + mpp_get_bit1(&s->gb); // 0:8, 1:10, 2:12 in read_colorspace_details()
569 s->bpp_index = bits; in read_colorspace_details()
570 s->bpp = 8 + bits * 2; in read_colorspace_details()
571 s->bytesperpixel = (7 + s->bpp) >> 3; in read_colorspace_details()
572 ctx->colorspace = colorspaces[mpp_get_bits(&s->gb, 3)]; in read_colorspace_details()
592 ctx->color_range = mpp_get_bit1(&s->gb) ? MPP_FRAME_RANGE_JPEG : MPP_FRAME_RANGE_MPEG; in read_colorspace_details()
595 s->ss_h = mpp_get_bit1(&s->gb); in read_colorspace_details()
596 vp9d_dbg(VP9D_DBG_HEADER, "subsampling_x %d", s->ss_h); in read_colorspace_details()
597 s->ss_v = mpp_get_bit1(&s->gb); in read_colorspace_details()
598 vp9d_dbg(VP9D_DBG_HEADER, "subsampling_y %d", s->ss_v); in read_colorspace_details()
599 s->extra_plane = 0; in read_colorspace_details()
600 res = pix_fmt_for_ss[bits][s->ss_v][s->ss_h]; in read_colorspace_details()
604 } else if (mpp_get_bit1(&s->gb)) { in read_colorspace_details()
605 s->extra_plane = 1; in read_colorspace_details()
611 s->extra_plane = 0; in read_colorspace_details()
612 s->ss_h = s->ss_v = 1; in read_colorspace_details()
633 VP9Context *s = ctx->priv_data; in decode_parser_header() local
651 mpp_set_bitread_ctx(&s->gb, (RK_U8*)data, size); in decode_parser_header()
652 if (mpp_get_bits(&s->gb, 2) != 0x2) { // frame marker in decode_parser_header()
657 ctx->profile = mpp_get_bit1(&s->gb); in decode_parser_header()
658 ctx->profile |= mpp_get_bit1(&s->gb) << 1; in decode_parser_header()
660 if (ctx->profile == 3) ctx->profile += mpp_get_bit1(&s->gb); in decode_parser_header()
667 s->show_existing_frame = mpp_get_bit1(&s->gb); in decode_parser_header()
668 vp9d_dbg(VP9D_DBG_HEADER, "show_existing_frame %d", s->show_existing_frame); in decode_parser_header()
670 if (s->show_existing_frame) { in decode_parser_header()
671 *refo = mpp_get_bits(&s->gb, 3); in decode_parser_header()
676 s->last_keyframe = s->keyframe; in decode_parser_header()
677 s->keyframe = !mpp_get_bit1(&s->gb); in decode_parser_header()
678 vp9d_dbg(VP9D_DBG_HEADER, "frame_type %d", s->keyframe); in decode_parser_header()
679 last_invisible = s->invisible; in decode_parser_header()
680 s->invisible = !mpp_get_bit1(&s->gb); in decode_parser_header()
681 vp9d_dbg(VP9D_DBG_HEADER, "show_frame_flag %d", s->invisible); in decode_parser_header()
682 s->errorres = mpp_get_bit1(&s->gb); in decode_parser_header()
683 vp9d_dbg(VP9D_DBG_HEADER, "error_resilient_mode %d", s->errorres); in decode_parser_header()
684 s->use_last_frame_mvs = !s->errorres && !last_invisible; in decode_parser_header()
685 s->got_keyframes += s->keyframe ? 1 : 0; in decode_parser_header()
687 s->keyframe, s->intraonly, s->got_keyframes); in decode_parser_header()
689 if (!s->got_keyframes) { in decode_parser_header()
696 s->mvscale[i][0] = 16; in decode_parser_header()
697 s->mvscale[i][1] = 16; in decode_parser_header()
700 if (s->keyframe) { in decode_parser_header()
701 if (mpp_get_bits(&s->gb, 24) != VP9_SYNCCODE) { // synccode in decode_parser_header()
709 s->refreshrefmask = 0xff; in decode_parser_header()
710 w = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
712 h = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
714 if (mpp_get_bit1(&s->gb)) {// display size in decode_parser_header()
717 dw = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
719 dh = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
724 s->intraonly = s->invisible ? mpp_get_bit1(&s->gb) : 0; in decode_parser_header()
725 vp9d_dbg(VP9D_DBG_HEADER, "intra_only %d", s->intraonly); in decode_parser_header()
726 s->resetctx = s->errorres ? 0 : mpp_get_bits(&s->gb, 2); in decode_parser_header()
727 vp9d_dbg(VP9D_DBG_HEADER, "reset_frame_context_value %d", s->resetctx); in decode_parser_header()
728 if (s->intraonly) { in decode_parser_header()
729 if (mpp_get_bits(&s->gb, 24) != VP9_SYNCCODE) { // synccode in decode_parser_header()
737 s->ss_h = s->ss_v = 1; in decode_parser_header()
738 s->bpp = 8; in decode_parser_header()
739 s->bpp_index = 0; in decode_parser_header()
740 s->bytesperpixel = 1; in decode_parser_header()
745 s->refreshrefmask = mpp_get_bits(&s->gb, 8); in decode_parser_header()
746 vp9d_dbg(VP9D_DBG_HEADER, "refresh_frame_flags %d", s->refreshrefmask); in decode_parser_header()
747 w = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
749 h = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
751 if (mpp_get_bit1(&s->gb)) {// display size in decode_parser_header()
754 dw = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
756 dh = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
761 s->refreshrefmask = mpp_get_bits(&s->gb, 8); in decode_parser_header()
762 vp9d_dbg(VP9D_DBG_HEADER, "refresh_frame_flags %d", s->refreshrefmask); in decode_parser_header()
763 s->refidx[0] = mpp_get_bits(&s->gb, 3); in decode_parser_header()
764 s->signbias[0] = mpp_get_bit1(&s->gb) && !s->errorres; in decode_parser_header()
765 s->refidx[1] = mpp_get_bits(&s->gb, 3); in decode_parser_header()
766 s->signbias[1] = mpp_get_bit1(&s->gb) && !s->errorres; in decode_parser_header()
767 s->refidx[2] = mpp_get_bits(&s->gb, 3); in decode_parser_header()
768 s->signbias[2] = mpp_get_bit1(&s->gb) && !s->errorres; in decode_parser_header()
770 s->refidx[0], s->refidx[1], s->refidx[2]); in decode_parser_header()
772 s->signbias[0], s->signbias[1], s->signbias[2]); in decode_parser_header()
773 if (!s->refs[s->refidx[0]].ref || in decode_parser_header()
774 !s->refs[s->refidx[1]].ref || in decode_parser_header()
775 !s->refs[s->refidx[2]].ref ) { in decode_parser_header()
779 if (mpp_get_bit1(&s->gb)) { in decode_parser_header()
782 w = mpp_frame_get_width(s->refs[s->refidx[0]].f); in decode_parser_header()
783 h = mpp_frame_get_height(s->refs[s->refidx[0]].f); in decode_parser_header()
784 } else if (mpp_get_bit1(&s->gb)) { in decode_parser_header()
786 w = mpp_frame_get_width(s->refs[s->refidx[1]].f); in decode_parser_header()
787 h = mpp_frame_get_height(s->refs[s->refidx[1]].f); in decode_parser_header()
788 } else if (mpp_get_bit1(&s->gb)) { in decode_parser_header()
790 w = mpp_frame_get_width(s->refs[s->refidx[2]].f); in decode_parser_header()
791 h = mpp_frame_get_height(s->refs[s->refidx[2]].f); in decode_parser_header()
793 w = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
795 h = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
805 s->use_last_frame_mvs &= mpp_frame_get_width(s->frames[CUR_FRAME].f) == w && in decode_parser_header()
806 mpp_frame_get_height(s->frames[CUR_FRAME].f) == h; in decode_parser_header()
807 if (mpp_get_bit1(&s->gb)) {// display size in decode_parser_header()
810 dw = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
812 dh = mpp_get_bits(&s->gb, 16) + 1; in decode_parser_header()
816 s->highprecisionmvs = mpp_get_bit1(&s->gb); in decode_parser_header()
817 vp9d_dbg(VP9D_DBG_HEADER, "allow_high_precision_mv %d", s->highprecisionmvs); in decode_parser_header()
818 s->filtermode = mpp_get_bit1(&s->gb) ? FILTER_SWITCHABLE : in decode_parser_header()
819 mpp_get_bits(&s->gb, 2); in decode_parser_header()
820 vp9d_dbg(VP9D_DBG_HEADER, "filtermode %d", s->filtermode); in decode_parser_header()
821 s->allowcompinter = (s->signbias[0] != s->signbias[1] || in decode_parser_header()
822 s->signbias[0] != s->signbias[2]); in decode_parser_header()
823 if (s->allowcompinter) { in decode_parser_header()
824 if (s->signbias[0] == s->signbias[1]) { in decode_parser_header()
825 s->fixcompref = 2; in decode_parser_header()
826 s->varcompref[0] = 0; in decode_parser_header()
827 s->varcompref[1] = 1; in decode_parser_header()
828 } else if (s->signbias[0] == s->signbias[2]) { in decode_parser_header()
829 s->fixcompref = 1; in decode_parser_header()
830 s->varcompref[0] = 0; in decode_parser_header()
831 s->varcompref[1] = 2; in decode_parser_header()
833 s->fixcompref = 0; in decode_parser_header()
834 s->varcompref[0] = 1; in decode_parser_header()
835 s->varcompref[1] = 2; in decode_parser_header()
840 RK_U32 refw = mpp_frame_get_width(s->refs[s->refidx[i]].f); in decode_parser_header()
841 RK_U32 refh = mpp_frame_get_height(s->refs[s->refidx[i]].f); in decode_parser_header()
842 RK_S32 reffmt = mpp_frame_get_fmt(s->refs[s->refidx[i]].f) & MPP_FRAME_FMT_MASK; in decode_parser_header()
844 vp9d_dbg(VP9D_DBG_REF, "ref get width frame slot %p", s->refs[s->refidx[i]].f); in decode_parser_header()
851 s->mvscale[i][0] = (refw << 14) / w; in decode_parser_header()
852 s->mvscale[i][1] = (refh << 14) / h; in decode_parser_header()
859 s->mvscale[i][0] = (refw << 14) / w; in decode_parser_header()
860 s->mvscale[i][1] = (refh << 14) / h; in decode_parser_header()
861 s->mvstep[i][0] = 16 * s->mvscale[i][0] >> 14; in decode_parser_header()
862 s->mvstep[i][1] = 16 * s->mvscale[i][1] >> 14; in decode_parser_header()
868 s->refreshctx = s->errorres ? 0 : mpp_get_bit1(&s->gb); in decode_parser_header()
869 vp9d_dbg(VP9D_DBG_HEADER, "refresh_frame_context_flag %d", s->refreshctx); in decode_parser_header()
870 s->parallelmode = s->errorres ? 1 : mpp_get_bit1(&s->gb); in decode_parser_header()
871 vp9d_dbg(VP9D_DBG_HEADER, "frame_parallel_decoding_mode %d", s->parallelmode); in decode_parser_header()
872 s->framectxid = c = mpp_get_bits(&s->gb, 2); in decode_parser_header()
873 vp9d_dbg(VP9D_DBG_HEADER, "frame_context_idx %d", s->framectxid); in decode_parser_header()
876 if (s->keyframe || s->errorres || s->intraonly) { in decode_parser_header()
878 s->lf_delta.ref[0] = 1; in decode_parser_header()
879 s->lf_delta.ref[1] = 0; in decode_parser_header()
880 s->lf_delta.ref[2] = -1; in decode_parser_header()
881 s->lf_delta.ref[3] = -1; in decode_parser_header()
882 s->lf_delta.mode[0] = 0; in decode_parser_header()
883 s->lf_delta.mode[1] = 0; in decode_parser_header()
885 s->filter.level = mpp_get_bits(&s->gb, 6); in decode_parser_header()
886 vp9d_dbg(VP9D_DBG_HEADER, "filter_level %d", s->filter.level); in decode_parser_header()
887 sharp = mpp_get_bits(&s->gb, 3); in decode_parser_header()
891 if (s->filter.sharpness != sharp) in decode_parser_header()
892 memset(s->filter.lim_lut, 0, sizeof(s->filter.lim_lut)); in decode_parser_header()
893 s->filter.sharpness = sharp; in decode_parser_header()
895 if ((s->lf_delta.enabled = mpp_get_bit1(&s->gb))) { in decode_parser_header()
897 if ((s->lf_delta.update = mpp_get_bit1(&s->gb))) { in decode_parser_header()
900 if (mpp_get_bit1(&s->gb)) in decode_parser_header()
901 s->lf_delta.ref[i] = get_sbits_inv(&s->gb, 6); in decode_parser_header()
902 vp9d_dbg(VP9D_DBG_HEADER, "ref_deltas %d", s->lf_delta.ref[i]); in decode_parser_header()
905 if (mpp_get_bit1(&s->gb)) in decode_parser_header()
906 s->lf_delta.mode[i] = get_sbits_inv(&s->gb, 6); in decode_parser_header()
907 vp9d_dbg(VP9D_DBG_HEADER, "mode_deltas %d", s->lf_delta.mode[i]); in decode_parser_header()
913 s->yac_qi = mpp_get_bits(&s->gb, 8); in decode_parser_header()
914 vp9d_dbg(VP9D_DBG_HEADER, "base_qindex %d", s->yac_qi); in decode_parser_header()
915 s->ydc_qdelta = mpp_get_bit1(&s->gb) ? get_sbits_inv(&s->gb, 4) : 0; in decode_parser_header()
916 vp9d_dbg(VP9D_DBG_HEADER, "ydc_qdelta %d", s->ydc_qdelta); in decode_parser_header()
917 s->uvdc_qdelta = mpp_get_bit1(&s->gb) ? get_sbits_inv(&s->gb, 4) : 0; in decode_parser_header()
918 vp9d_dbg(VP9D_DBG_HEADER, "uvdc_qdelta %d", s->uvdc_qdelta); in decode_parser_header()
919 s->uvac_qdelta = mpp_get_bit1(&s->gb) ? get_sbits_inv(&s->gb, 4) : 0; in decode_parser_header()
920 vp9d_dbg(VP9D_DBG_HEADER, "uvac_qdelta %d", s->uvac_qdelta); in decode_parser_header()
921 s->lossless = s->yac_qi == 0 && s->ydc_qdelta == 0 && in decode_parser_header()
922 s->uvdc_qdelta == 0 && s->uvac_qdelta == 0; in decode_parser_header()
925 s->segmentation.update_map = 0; in decode_parser_header()
926 s->segmentation.ignore_refmap = 0; in decode_parser_header()
927 if ((s->segmentation.enabled = mpp_get_bit1(&s->gb))) { in decode_parser_header()
929 if ((s->segmentation.update_map = mpp_get_bit1(&s->gb))) { in decode_parser_header()
932 s->prob.seg[i] = mpp_get_bit1(&s->gb) ? in decode_parser_header()
933 mpp_get_bits(&s->gb, 8) : 255; in decode_parser_header()
934 vp9d_dbg(VP9D_DBG_HEADER, "tree_probs %d value 0x%x", i, s->prob.seg[i]); in decode_parser_header()
936 s->segmentation.temporal = mpp_get_bit1(&s->gb); in decode_parser_header()
937 if (s->segmentation.temporal) { in decode_parser_header()
940 s->prob.segpred[i] = mpp_get_bit1(&s->gb) ? in decode_parser_header()
941 mpp_get_bits(&s->gb, 8) : 255; in decode_parser_header()
942 vp9d_dbg(VP9D_DBG_HEADER, "pred_probs %d", i, s->prob.segpred[i]); in decode_parser_header()
946 s->prob.segpred[i] = 0xff; in decode_parser_header()
949 if ((!s->segmentation.update_map || s->segmentation.temporal) && in decode_parser_header()
950 (w != mpp_frame_get_width(s->frames[CUR_FRAME].f) || in decode_parser_header()
951 h != mpp_frame_get_height(s->frames[CUR_FRAME].f))) { in decode_parser_header()
959 if (mpp_get_bit1(&s->gb)) { in decode_parser_header()
961 s->segmentation.absolute_vals = mpp_get_bit1(&s->gb); in decode_parser_header()
962 vp9d_dbg(VP9D_DBG_HEADER, "abs_delta %d", s->segmentation.absolute_vals); in decode_parser_header()
964 if ((s->segmentation.feat[i].q_enabled = mpp_get_bit1(&s->gb))) in decode_parser_header()
965 s->segmentation.feat[i].q_val = get_sbits_inv(&s->gb, 8); in decode_parser_header()
966 vp9d_dbg(VP9D_DBG_HEADER, "frame_qp_delta %d", s->segmentation.feat[i].q_val); in decode_parser_header()
967 if ((s->segmentation.feat[i].lf_enabled = mpp_get_bit1(&s->gb))) in decode_parser_header()
968 s->segmentation.feat[i].lf_val = get_sbits_inv(&s->gb, 6); in decode_parser_header()
969 … vp9d_dbg(VP9D_DBG_HEADER, "frame_loopfilter_value %d", i, s->segmentation.feat[i].lf_val); in decode_parser_header()
970 if ((s->segmentation.feat[i].ref_enabled = mpp_get_bit1(&s->gb))) in decode_parser_header()
971 s->segmentation.feat[i].ref_val = mpp_get_bits(&s->gb, 2); in decode_parser_header()
972 … vp9d_dbg(VP9D_DBG_HEADER, "frame_reference_info %d", i, s->segmentation.feat[i].ref_val); in decode_parser_header()
973 s->segmentation.feat[i].skip_enabled = mpp_get_bit1(&s->gb); in decode_parser_header()
974 vp9d_dbg(VP9D_DBG_HEADER, "frame_skip %d", i, s->segmentation.feat[i].skip_enabled); in decode_parser_header()
979 s->segmentation.feat[0].q_enabled = 0; in decode_parser_header()
980 s->segmentation.feat[0].lf_enabled = 0; in decode_parser_header()
981 s->segmentation.feat[0].skip_enabled = 0; in decode_parser_header()
982 s->segmentation.feat[0].ref_enabled = 0; in decode_parser_header()
986 for (i = 0; i < (s->segmentation.enabled ? 8 : 1); i++) { in decode_parser_header()
989 if (s->segmentation.feat[i].q_enabled) { in decode_parser_header()
990 if (s->segmentation.absolute_vals) in decode_parser_header()
991 qyac = s->segmentation.feat[i].q_val; in decode_parser_header()
993 qyac = s->yac_qi + s->segmentation.feat[i].q_val; in decode_parser_header()
995 qyac = s->yac_qi; in decode_parser_header()
997 qydc = av_clip_uintp2(qyac + s->ydc_qdelta, 8); in decode_parser_header()
998 quvdc = av_clip_uintp2(qyac + s->uvdc_qdelta, 8); in decode_parser_header()
999 quvac = av_clip_uintp2(qyac + s->uvac_qdelta, 8); in decode_parser_header()
1002 s->segmentation.feat[i].qmul[0][0] = vp9_dc_qlookup[s->bpp_index][qydc]; in decode_parser_header()
1003 s->segmentation.feat[i].qmul[0][1] = vp9_ac_qlookup[s->bpp_index][qyac]; in decode_parser_header()
1004 s->segmentation.feat[i].qmul[1][0] = vp9_dc_qlookup[s->bpp_index][quvdc]; in decode_parser_header()
1005 s->segmentation.feat[i].qmul[1][1] = vp9_ac_qlookup[s->bpp_index][quvac]; in decode_parser_header()
1007 sh = s->filter.level >= 32; in decode_parser_header()
1008 if (s->segmentation.feat[i].lf_enabled) { in decode_parser_header()
1009 if (s->segmentation.absolute_vals) in decode_parser_header()
1010 lflvl = av_clip_uintp2(s->segmentation.feat[i].lf_val, 6); in decode_parser_header()
1012 lflvl = av_clip_uintp2(s->filter.level + s->segmentation.feat[i].lf_val, 6); in decode_parser_header()
1014 lflvl = s->filter.level; in decode_parser_header()
1016 if (s->lf_delta.enabled) { in decode_parser_header()
1017 s->segmentation.feat[i].lflvl[0][0] = in decode_parser_header()
1018 s->segmentation.feat[i].lflvl[0][1] = in decode_parser_header()
1019 av_clip_uintp2(lflvl + (s->lf_delta.ref[0] << sh), 6); in decode_parser_header()
1021 s->segmentation.feat[i].lflvl[j][0] = in decode_parser_header()
1022 av_clip_uintp2(lflvl + ((s->lf_delta.ref[j] + in decode_parser_header()
1023 s->lf_delta.mode[0]) * (1 << sh)), 6); in decode_parser_header()
1024 s->segmentation.feat[i].lflvl[j][1] = in decode_parser_header()
1025 av_clip_uintp2(lflvl + ((s->lf_delta.ref[j] + in decode_parser_header()
1026 s->lf_delta.mode[1]) * (1 << sh)), 6); in decode_parser_header()
1029 memset(s->segmentation.feat[i].lflvl, lflvl, in decode_parser_header()
1030 sizeof(s->segmentation.feat[i].lflvl)); in decode_parser_header()
1040 for (s->tiling.log2_tile_cols = 0; in decode_parser_header()
1041 (s->sb_cols >> s->tiling.log2_tile_cols) > 64; in decode_parser_header()
1042 s->tiling.log2_tile_cols++) ; in decode_parser_header()
1043 for (max = 0; (s->sb_cols >> max) >= 4; max++) ; in decode_parser_header()
1045 while ((RK_U32)max > s->tiling.log2_tile_cols) { in decode_parser_header()
1046 if (mpp_get_bit1(&s->gb)) { in decode_parser_header()
1047 s->tiling.log2_tile_cols++; in decode_parser_header()
1054 s->tiling.log2_tile_rows = decode012(&s->gb); in decode_parser_header()
1055 vp9d_dbg(VP9D_DBG_HEADER, "log2_tile_rows %d", s->tiling.log2_tile_rows); in decode_parser_header()
1056 s->tiling.tile_rows = 1 << s->tiling.log2_tile_rows; in decode_parser_header()
1057 if (s->tiling.tile_cols != (1U << s->tiling.log2_tile_cols)) { in decode_parser_header()
1058 s->tiling.tile_cols = 1 << s->tiling.log2_tile_cols; in decode_parser_header()
1060 RK_U32 min_size = sizeof(VpxRangeCoder) * s->tiling.tile_cols; in decode_parser_header()
1061 if (min_size > s->c_b_size) { in decode_parser_header()
1062 s->c_b = (VpxRangeCoder *)mpp_malloc(RK_U8, min_size); in decode_parser_header()
1063 s->c_b_size = min_size; in decode_parser_header()
1066 if (!s->c_b) { in decode_parser_header()
1072 if (s->keyframe || s->errorres || in decode_parser_header()
1073 (s->intraonly && s->resetctx == 3)) { in decode_parser_header()
1074 s->prob_ctx[0].p = s->prob_ctx[1].p = s->prob_ctx[2].p = in decode_parser_header()
1075 s->prob_ctx[3].p = vp9_default_probs; in decode_parser_header()
1076 memcpy(s->prob_ctx[0].coef, vp9_default_coef_probs, in decode_parser_header()
1078 memcpy(s->prob_ctx[1].coef, vp9_default_coef_probs, in decode_parser_header()
1080 memcpy(s->prob_ctx[2].coef, vp9_default_coef_probs, in decode_parser_header()
1082 memcpy(s->prob_ctx[3].coef, vp9_default_coef_probs, in decode_parser_header()
1084 } else if (s->intraonly && s->resetctx == 2) { in decode_parser_header()
1085 s->prob_ctx[c].p = vp9_default_probs; in decode_parser_header()
1086 memcpy(s->prob_ctx[c].coef, vp9_default_coef_probs, in decode_parser_header()
1089 if (s->keyframe || s->errorres || s->intraonly) in decode_parser_header()
1090 s->framectxid = c = 0; in decode_parser_header()
1093 size2 = mpp_get_bits(&s->gb, 16); in decode_parser_header()
1095 s->first_partition_size = size2; in decode_parser_header()
1096 data2 = mpp_align_get_bits(&s->gb); in decode_parser_header()
1098 s->uncompress_head_size_in_byte = data2 - data; in decode_parser_header()
1103 vpx_init_range_decoder(&s->c, data2, size2); in decode_parser_header()
1104 if (vpx_rac_get_prob_branchy(&s->c, 128)) { // marker bit in decode_parser_header()
1109 if (s->keyframe || s->intraonly) { in decode_parser_header()
1110 memset(s->counts.coef, 0, sizeof(s->counts.coef)); in decode_parser_header()
1111 memset(s->counts.eob, 0, sizeof(s->counts.eob)); in decode_parser_header()
1113 memset(&s->counts, 0, sizeof(s->counts)); in decode_parser_header()
1118 s->prob.p = s->prob_ctx[c].p; in decode_parser_header()
1119 memset(&s->prob_flag_delta, 0, sizeof(s->prob_flag_delta)); in decode_parser_header()
1121 if (s->lossless) { in decode_parser_header()
1122 s->txfmmode = TX_4X4; in decode_parser_header()
1124 s->txfmmode = vpx_rac_get_uint(&s->c, 2); in decode_parser_header()
1125 if (s->txfmmode == 3) in decode_parser_header()
1126 s->txfmmode += vpx_rac_get(&s->c); in decode_parser_header()
1128 if (s->txfmmode == TX_SWITCHABLE) { in decode_parser_header()
1131 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1132 s->prob_flag_delta.p_flag.tx8p[i] = 1; in decode_parser_header()
1133 s->prob.p.tx8p[i] = update_prob(&s->c, s->prob.p.tx8p[i], in decode_parser_header()
1134 &s->prob_flag_delta.p_delta.tx8p[i]); in decode_parser_header()
1141 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1142 s->prob_flag_delta.p_flag.tx16p[i][j] = 1; in decode_parser_header()
1143 s->prob.p.tx16p[i][j] = in decode_parser_header()
1144 update_prob(&s->c, s->prob.p.tx16p[i][j], in decode_parser_header()
1145 &s->prob_flag_delta.p_delta.tx16p[i][j]); in decode_parser_header()
1151 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1152 s->prob_flag_delta.p_flag.tx32p[i][j] = 1; in decode_parser_header()
1153 s->prob.p.tx32p[i][j] = in decode_parser_header()
1154 update_prob(&s->c, s->prob.p.tx32p[i][j], in decode_parser_header()
1155 &s->prob_flag_delta.p_delta.tx32p[i][j]); in decode_parser_header()
1163 RK_U8 (*ref)[2][6][6][3] = s->prob_ctx[c].coef[i]; in decode_parser_header()
1164 if (vpx_rac_get(&s->c)) { in decode_parser_header()
1169 RK_U8 *p = s->prob.coef[i][j][k][l][m]; in decode_parser_header()
1170 RK_U8 *p_flag = s->prob_flag_delta.coef_flag[i][j][k][l][m]; in decode_parser_header()
1171 RK_U8 *p_delta = s->prob_flag_delta.coef_delta[i][j][k][l][m]; in decode_parser_header()
1176 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1178 p[n] = update_prob(&s->c, r[n], &p_delta[n]); in decode_parser_header()
1190 RK_U8 *p = s->prob.coef[i][j][k][l][m]; in decode_parser_header()
1197 if (s->txfmmode == (RK_U32)i) in decode_parser_header()
1204 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1205 s->prob_flag_delta.p_flag.skip[i] = 1; in decode_parser_header()
1206 s->prob.p.skip[i] = update_prob(&s->c, s->prob.p.skip[i], in decode_parser_header()
1207 &s->prob_flag_delta.p_delta.skip[i]); in decode_parser_header()
1211 if (!s->keyframe && !s->intraonly) { in decode_parser_header()
1214 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1215 s->prob_flag_delta.p_flag.mv_mode[i][j] = 1; in decode_parser_header()
1216 s->prob.p.mv_mode[i][j] = in decode_parser_header()
1217 update_prob(&s->c, s->prob.p.mv_mode[i][j], in decode_parser_header()
1218 &s->prob_flag_delta.p_delta.mv_mode[i][j]); in decode_parser_header()
1222 if (s->filtermode == FILTER_SWITCHABLE) in decode_parser_header()
1225 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1226 s->prob_flag_delta.p_flag.filter[i][j] = 1; in decode_parser_header()
1227 s->prob.p.filter[i][j] = in decode_parser_header()
1228 update_prob(&s->c, s->prob.p.filter[i][j], in decode_parser_header()
1229 &s->prob_flag_delta.p_delta.filter[i][j]); in decode_parser_header()
1235 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1236 s->prob_flag_delta.p_flag.intra[i] = 1; in decode_parser_header()
1237 s->prob.p.intra[i] = update_prob(&s->c, s->prob.p.intra[i], in decode_parser_header()
1238 &s->prob_flag_delta.p_delta.intra[i]); in decode_parser_header()
1243 if (s->allowcompinter) { in decode_parser_header()
1244 s->comppredmode = vpx_rac_get(&s->c); in decode_parser_header()
1245 if (s->comppredmode) in decode_parser_header()
1246 s->comppredmode += vpx_rac_get(&s->c); in decode_parser_header()
1247 if (s->comppredmode == PRED_SWITCHABLE) in decode_parser_header()
1249 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1250 s->prob_flag_delta.p_flag.comp[i] = 1; in decode_parser_header()
1251 s->prob.p.comp[i] = in decode_parser_header()
1252 update_prob(&s->c, s->prob.p.comp[i], in decode_parser_header()
1253 &s->prob_flag_delta.p_delta.comp[i]); in decode_parser_header()
1257 s->comppredmode = PRED_SINGLEREF; in decode_parser_header()
1260 if (s->comppredmode != PRED_COMPREF) { in decode_parser_header()
1262 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1263 s->prob_flag_delta.p_flag.single_ref[i][0] = 1; in decode_parser_header()
1264 s->prob.p.single_ref[i][0] = in decode_parser_header()
1265 update_prob(&s->c, s->prob.p.single_ref[i][0], in decode_parser_header()
1266 &s->prob_flag_delta.p_delta.single_ref[i][0]); in decode_parser_header()
1268 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1269 s->prob_flag_delta.p_flag.single_ref[i][1] = 1; in decode_parser_header()
1270 s->prob.p.single_ref[i][1] = in decode_parser_header()
1271 update_prob(&s->c, s->prob.p.single_ref[i][1], in decode_parser_header()
1272 &s->prob_flag_delta.p_delta.single_ref[i][1]); in decode_parser_header()
1277 if (s->comppredmode != PRED_SINGLEREF) { in decode_parser_header()
1279 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1280 s->prob_flag_delta.p_flag.comp_ref[i] = 1; in decode_parser_header()
1281 s->prob.p.comp_ref[i] = in decode_parser_header()
1282 update_prob(&s->c, s->prob.p.comp_ref[i], in decode_parser_header()
1283 &s->prob_flag_delta.p_delta.comp_ref[i]); in decode_parser_header()
1290 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1291 s->prob_flag_delta.p_flag.y_mode[i][j] = 1; in decode_parser_header()
1292 s->prob.p.y_mode[i][j] = in decode_parser_header()
1293 update_prob(&s->c, s->prob.p.y_mode[i][j], in decode_parser_header()
1294 &s->prob_flag_delta.p_delta.y_mode[i][j]); in decode_parser_header()
1301 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1302 s->prob_flag_delta.p_flag.partition[3 - i][j][k] = 1; in decode_parser_header()
1303 s->prob.p.partition[3 - i][j][k] = in decode_parser_header()
1304 update_prob(&s->c, s->prob.p.partition[3 - i][j][k], in decode_parser_header()
1305 &s->prob_flag_delta.p_delta.partition[3 - i][j][k]); in decode_parser_header()
1311 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1312 s->prob_flag_delta.p_flag.mv_joint[i] = 1; in decode_parser_header()
1313 s->prob_flag_delta.p_delta.mv_joint[i] = in decode_parser_header()
1314 s->prob.p.mv_joint[i] = (vpx_rac_get_uint(&s->c, 7) << 1) | 1; in decode_parser_header()
1319 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1320 s->prob_flag_delta.p_flag.mv_comp[i].sign = 1; in decode_parser_header()
1321 s->prob_flag_delta.p_delta.mv_comp[i].sign = in decode_parser_header()
1322 s->prob.p.mv_comp[i].sign = (vpx_rac_get_uint(&s->c, 7) << 1) | 1; in decode_parser_header()
1326 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1327 s->prob_flag_delta.p_flag.mv_comp[i].classes[j] = 1; in decode_parser_header()
1328 s->prob_flag_delta.p_delta.mv_comp[i].classes[j] = in decode_parser_header()
1329 s->prob.p.mv_comp[i].classes[j] = (vpx_rac_get_uint(&s->c, 7) << 1) | 1; in decode_parser_header()
1332 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1333 s->prob_flag_delta.p_flag.mv_comp[i].class0 = 1; in decode_parser_header()
1334 s->prob_flag_delta.p_delta.mv_comp[i].class0 = in decode_parser_header()
1335 s->prob.p.mv_comp[i].class0 = (vpx_rac_get_uint(&s->c, 7) << 1) | 1; in decode_parser_header()
1339 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1340 s->prob_flag_delta.p_flag.mv_comp[i].bits[j] = 1; in decode_parser_header()
1341 s->prob_flag_delta.p_delta.mv_comp[i].bits[j] = in decode_parser_header()
1342 s->prob.p.mv_comp[i].bits[j] = (vpx_rac_get_uint(&s->c, 7) << 1) | 1; in decode_parser_header()
1349 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1350 s->prob_flag_delta.p_flag.mv_comp[i].class0_fp[j][k] = 1; in decode_parser_header()
1351 s->prob_flag_delta.p_delta.mv_comp[i].class0_fp[j][k] = in decode_parser_header()
1352 … s->prob.p.mv_comp[i].class0_fp[j][k] = (vpx_rac_get_uint(&s->c, 7) << 1) | 1; in decode_parser_header()
1356 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1357 s->prob_flag_delta.p_flag.mv_comp[i].fp[j] = 1; in decode_parser_header()
1358 s->prob_flag_delta.p_delta.mv_comp[i].fp[j] = in decode_parser_header()
1359 s->prob.p.mv_comp[i].fp[j] = in decode_parser_header()
1360 (vpx_rac_get_uint(&s->c, 7) << 1) | 1; in decode_parser_header()
1364 if (s->highprecisionmvs) { in decode_parser_header()
1366 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1367 s->prob_flag_delta.p_flag.mv_comp[i].class0_hp = 1; in decode_parser_header()
1368 s->prob_flag_delta.p_delta.mv_comp[i].class0_hp = in decode_parser_header()
1369 s->prob.p.mv_comp[i].class0_hp = (vpx_rac_get_uint(&s->c, 7) << 1) | 1; in decode_parser_header()
1372 if (vpx_rac_get_prob_branchy(&s->c, 252)) { in decode_parser_header()
1373 s->prob_flag_delta.p_flag.mv_comp[i].hp = 1; in decode_parser_header()
1374 s->prob_flag_delta.p_delta.mv_comp[i].hp = in decode_parser_header()
1375 s->prob.p.mv_comp[i].hp = (vpx_rac_get_uint(&s->c, 7) << 1) | 1; in decode_parser_header()
1402 static void adapt_probs(VP9Context *s) in adapt_probs() argument
1405 prob_context *p = &s->prob_ctx[s->framectxid].p; in adapt_probs()
1406 RK_S32 uf = (s->keyframe || s->intraonly || !s->last_keyframe) ? 112 : 128; in adapt_probs()
1414 RK_U8 *pp = s->prob_ctx[s->framectxid].coef[i][j][k][l][m]; in adapt_probs()
1415 RK_U32 *e = s->counts.eob[i][j][k][l][m]; in adapt_probs()
1416 RK_U32 *c = s->counts.coef[i][j][k][l][m]; in adapt_probs()
1433 fwrite(&s->counts, 1, sizeof(s->counts), vp9_p_fp); in adapt_probs()
1437 if (s->keyframe || s->intraonly) { in adapt_probs()
1438 memcpy(p->skip, s->prob.p.skip, sizeof(p->skip)); in adapt_probs()
1439 memcpy(p->tx32p, s->prob.p.tx32p, sizeof(p->tx32p)); in adapt_probs()
1440 memcpy(p->tx16p, s->prob.p.tx16p, sizeof(p->tx16p)); in adapt_probs()
1441 memcpy(p->tx8p, s->prob.p.tx8p, sizeof(p->tx8p)); in adapt_probs()
1447 adapt_prob(&p->skip[i], s->counts.skip[i][0], s->counts.skip[i][1], 20, 128); in adapt_probs()
1451 adapt_prob(&p->intra[i], s->counts.intra[i][0], s->counts.intra[i][1], 20, 128); in adapt_probs()
1454 if (s->comppredmode == PRED_SWITCHABLE) { in adapt_probs()
1456 adapt_prob(&p->comp[i], s->counts.comp[i][0], s->counts.comp[i][1], 20, 128); in adapt_probs()
1460 if (s->comppredmode != PRED_SINGLEREF) { in adapt_probs()
1462 adapt_prob(&p->comp_ref[i], s->counts.comp_ref[i][0], in adapt_probs()
1463 s->counts.comp_ref[i][1], 20, 128); in adapt_probs()
1466 if (s->comppredmode != PRED_COMPREF) { in adapt_probs()
1469 RK_U32 (*c)[2] = s->counts.single_ref[i]; in adapt_probs()
1480 RK_U32 *c = s->counts.partition[i][j]; in adapt_probs()
1490 if (s->txfmmode == TX_SWITCHABLE) { in adapt_probs()
1492 RK_U32 *c16 = s->counts.tx16p[i], *c32 = s->counts.tx32p[i]; in adapt_probs()
1494 adapt_prob(&p->tx8p[i], s->counts.tx8p[i][0], s->counts.tx8p[i][1], 20, 128); in adapt_probs()
1504 if (s->filtermode == FILTER_SWITCHABLE) { in adapt_probs()
1507 RK_U32 *c = s->counts.filter[i]; in adapt_probs()
1517 RK_U32 *c = s->counts.mv_mode[i]; in adapt_probs()
1527 RK_U32 *c = s->counts.mv_joint; in adapt_probs()
1539 adapt_prob(&p->mv_comp[i].sign, s->counts.sign[i][0], in adapt_probs()
1540 s->counts.sign[i][1], 20, 128); in adapt_probs()
1543 c = s->counts.classes[i]; in adapt_probs()
1560 adapt_prob(&p->mv_comp[i].class0, s->counts.class0[i][0], in adapt_probs()
1561 s->counts.class0[i][1], 20, 128); in adapt_probs()
1563 c2 = s->counts.bits[i]; in adapt_probs()
1569 c = s->counts.class0_fp[i][j]; in adapt_probs()
1575 c = s->counts.fp[i]; in adapt_probs()
1580 if (s->highprecisionmvs) { in adapt_probs()
1581 adapt_prob(&p->mv_comp[i].class0_hp, s->counts.class0_hp[i][0], in adapt_probs()
1582 s->counts.class0_hp[i][1], 20, 128); in adapt_probs()
1583 adapt_prob(&p->mv_comp[i].hp, s->counts.hp[i][0], in adapt_probs()
1584 s->counts.hp[i][1], 20, 128); in adapt_probs()
1591 RK_U32 *c = s->counts.y_mode[i], sum, s2; in adapt_probs()
1615 RK_U32 *c = s->counts.uv_mode[i], sum, s2; in adapt_probs()
1636 fwrite(s->counts.y_mode, 1, sizeof(s->counts.y_mode), vp9_p_fp1); in adapt_probs()
1637 fwrite(s->counts.uv_mode, 1, sizeof(s->counts.uv_mode), vp9_p_fp1); in adapt_probs()
1648 VP9Context *s = (VP9Context *)ctx->priv_data; in vp9_parser_frame() local
1659 s->pts = mpp_packet_get_pts(ctx->pkt); in vp9_parser_frame()
1660 s->dts = mpp_packet_get_dts(ctx->pkt); in vp9_parser_frame()
1669 if (!s->refs[ref].ref) { in vp9_parser_frame()
1676 mpp_buf_slot_get_prop(s->slots, s->refs[ref].slot_index, SLOT_FRAME_PTR, &frame); in vp9_parser_frame()
1677 mpp_frame_set_pts(frame, s->pts); in vp9_parser_frame()
1678 mpp_frame_set_dts(frame, s->dts); in vp9_parser_frame()
1679 mpp_buf_slot_set_flag(s->slots, s->refs[ref].slot_index, SLOT_QUEUE_USE); in vp9_parser_frame()
1680 mpp_buf_slot_enqueue(s->slots, s->refs[ref].slot_index, QUEUE_DISPLAY); in vp9_parser_frame()
1681 s->refs[ref].ref->is_output = 1; in vp9_parser_frame()
1684 mpp_log("out repeat num %d", s->outframe_num++); in vp9_parser_frame()
1690 if (s->frames[REF_FRAME_MVPAIR].ref) in vp9_parser_frame()
1691 vp9_unref_frame(s, &s->frames[REF_FRAME_MVPAIR]); in vp9_parser_frame()
1693 if (!s->intraonly && !s->keyframe && !s->errorres && s->frames[CUR_FRAME].ref) { in vp9_parser_frame()
1694 if ((res = vp9_ref_frame(ctx, &s->frames[REF_FRAME_MVPAIR], &s->frames[CUR_FRAME])) < 0) in vp9_parser_frame()
1698 if (s->frames[CUR_FRAME].ref) in vp9_parser_frame()
1699 vp9_unref_frame(s, &s->frames[CUR_FRAME]); in vp9_parser_frame()
1701 if ((res = vp9_alloc_frame(ctx, &s->frames[CUR_FRAME])) < 0) in vp9_parser_frame()
1704 if (s->refreshctx && s->parallelmode) { in vp9_parser_frame()
1712 memcpy(s->prob_ctx[s->framectxid].coef[i][j][k][l][m], in vp9_parser_frame()
1713 s->prob.coef[i][j][k][l][m], 3); in vp9_parser_frame()
1714 if ((RK_S32)s->txfmmode == i) in vp9_parser_frame()
1717 s->prob_ctx[s->framectxid].p = s->prob.p; in vp9_parser_frame()
1725 task->output = s->frames[CUR_FRAME].slot_index; in vp9_parser_frame()
1729 if (s->refs[s->refidx[i]].slot_index < 0x7f) { in vp9_parser_frame()
1731 mpp_buf_slot_set_flag(s->slots, s->refs[s->refidx[i]].slot_index, SLOT_HAL_INPUT); in vp9_parser_frame()
1732 task->refer[i] = s->refs[s->refidx[i]].slot_index; in vp9_parser_frame()
1733 mpp_buf_slot_get_prop(s->slots, task->refer[i], SLOT_FRAME_PTR, &mframe); in vp9_parser_frame()
1734 if (mframe && !s->keyframe && !s->intraonly) in vp9_parser_frame()
1742 if (s->eos) { in vp9_parser_frame()
1746 if (!s->invisible) { in vp9_parser_frame()
1747 mpp_buf_slot_set_flag(s->slots, s->frames[CUR_FRAME].slot_index, SLOT_QUEUE_USE); in vp9_parser_frame()
1748 mpp_buf_slot_enqueue(s->slots, s->frames[CUR_FRAME].slot_index, QUEUE_DISPLAY); in vp9_parser_frame()
1751 s->refreshrefmask, s->frames[CUR_FRAME].slot_index); in vp9_parser_frame()
1753 if (s->refs[s->refidx[i]].ref != NULL) { in vp9_parser_frame()
1754 vp9d_dbg(VP9D_DBG_REF, "ref buf select %d", s->refs[s->refidx[i]].slot_index); in vp9_parser_frame()
1759 vp9d_dbg(VP9D_DBG_REF, "s->refreshrefmask = 0x%x", s->refreshrefmask); in vp9_parser_frame()
1761 if (s->refreshrefmask & (1 << i)) { in vp9_parser_frame()
1762 if (s->refs[i].ref) in vp9_parser_frame()
1763 vp9_unref_frame(s, &s->refs[i]); in vp9_parser_frame()
1765 res = vp9_ref_frame(ctx, &s->refs[i], &s->frames[CUR_FRAME]); in vp9_parser_frame()
1768 if (s->refs[i].ref) in vp9_parser_frame()
1769 vp9d_dbg(VP9D_DBG_REF, "s->refs[%d] = %d", i, s->refs[i].slot_index); in vp9_parser_frame()
1779 VP9Context *s = ctx->priv_data; in vp9d_paser_reset() local
1783 s->got_keyframes = 0; in vp9d_paser_reset()
1784 s->cur_poc = 0; in vp9d_paser_reset()
1786 if (s->frames[i].ref) { in vp9d_paser_reset()
1787 vp9_unref_frame(s, &s->frames[i]); in vp9d_paser_reset()
1791 if (s->refs[i].ref) { in vp9d_paser_reset()
1792 vp9_unref_frame(s, &s->refs[i]); in vp9d_paser_reset()
1797 s->eos = 0; in vp9d_paser_reset()
1803 static void inv_count_data(VP9Context *s) in inv_count_data() argument
1819 memcpy(&partition_probs, s->counts.partition, sizeof(s->counts.partition)); in inv_count_data()
1822 memcpy(&s->counts.partition[j], &partition_probs[i], 64); in inv_count_data()
1825 if (!(s->keyframe || s->intraonly)) { in inv_count_data()
1826 memcpy(count_y_mode, s->counts.y_mode, sizeof(s->counts.y_mode)); in inv_count_data()
1832 s->counts.y_mode[i][2] = value; in inv_count_data()
1834 s->counts.y_mode[i][0] = value; in inv_count_data()
1836 s->counts.y_mode[i][1] = value; in inv_count_data()
1838 s->counts.y_mode[i][8] = value; in inv_count_data()
1840 s->counts.y_mode[i][7] = value; in inv_count_data()
1842 s->counts.y_mode[i][j] = value; in inv_count_data()
1848 memcpy(count_uv, s->counts.uv_mode, sizeof(s->counts.uv_mode)); in inv_count_data()
1868 dst_uv = s->counts.uv_mode[2]; //dc in inv_count_data()
1870 dst_uv = s->counts.uv_mode[0]; //h in inv_count_data()
1872 dst_uv = s->counts.uv_mode[1]; //h in inv_count_data()
1874 dst_uv = s->counts.uv_mode[8]; //d207 in inv_count_data()
1876 dst_uv = s->counts.uv_mode[7]; //d63 in inv_count_data()
1878 dst_uv = s->counts.uv_mode[i]; in inv_count_data()
1902 VP9Context *s = ctx->priv_data; in vp9_parser_update() local
1924 memcpy((void *)&s->counts, count_info, sizeof(s->counts)); in vp9_parser_update()
1926 if (s->refreshctx && !s->parallelmode) { in vp9_parser_update()
1930 inv_count_data(s); in vp9_parser_update()
1931 adapt_probs(s); in vp9_parser_update()