1*fbb6c848SEzequiel Garcia /* SPDX-License-Identifier: GPL-2.0 */ 2*fbb6c848SEzequiel Garcia /* 3*fbb6c848SEzequiel Garcia * Hantro VP9 codec driver 4*fbb6c848SEzequiel Garcia * 5*fbb6c848SEzequiel Garcia * Copyright (C) 2021 Collabora Ltd. 6*fbb6c848SEzequiel Garcia */ 7*fbb6c848SEzequiel Garcia 8*fbb6c848SEzequiel Garcia struct hantro_g2_mv_probs { 9*fbb6c848SEzequiel Garcia u8 joint[3]; 10*fbb6c848SEzequiel Garcia u8 sign[2]; 11*fbb6c848SEzequiel Garcia u8 class0_bit[2][1]; 12*fbb6c848SEzequiel Garcia u8 fr[2][3]; 13*fbb6c848SEzequiel Garcia u8 class0_hp[2]; 14*fbb6c848SEzequiel Garcia u8 hp[2]; 15*fbb6c848SEzequiel Garcia u8 classes[2][10]; 16*fbb6c848SEzequiel Garcia u8 class0_fr[2][2][3]; 17*fbb6c848SEzequiel Garcia u8 bits[2][10]; 18*fbb6c848SEzequiel Garcia }; 19*fbb6c848SEzequiel Garcia 20*fbb6c848SEzequiel Garcia struct hantro_g2_probs { 21*fbb6c848SEzequiel Garcia u8 inter_mode[7][4]; 22*fbb6c848SEzequiel Garcia u8 is_inter[4]; 23*fbb6c848SEzequiel Garcia u8 uv_mode[10][8]; 24*fbb6c848SEzequiel Garcia u8 tx8[2][1]; 25*fbb6c848SEzequiel Garcia u8 tx16[2][2]; 26*fbb6c848SEzequiel Garcia u8 tx32[2][3]; 27*fbb6c848SEzequiel Garcia u8 y_mode_tail[4][1]; 28*fbb6c848SEzequiel Garcia u8 y_mode[4][8]; 29*fbb6c848SEzequiel Garcia u8 partition[2][16][4]; /* [keyframe][][], [inter][][] */ 30*fbb6c848SEzequiel Garcia u8 uv_mode_tail[10][1]; 31*fbb6c848SEzequiel Garcia u8 interp_filter[4][2]; 32*fbb6c848SEzequiel Garcia u8 comp_mode[5]; 33*fbb6c848SEzequiel Garcia u8 skip[3]; 34*fbb6c848SEzequiel Garcia 35*fbb6c848SEzequiel Garcia u8 pad1[1]; 36*fbb6c848SEzequiel Garcia 37*fbb6c848SEzequiel Garcia struct hantro_g2_mv_probs mv; 38*fbb6c848SEzequiel Garcia 39*fbb6c848SEzequiel Garcia u8 single_ref[5][2]; 40*fbb6c848SEzequiel Garcia u8 comp_ref[5]; 41*fbb6c848SEzequiel Garcia 42*fbb6c848SEzequiel Garcia u8 pad2[17]; 43*fbb6c848SEzequiel Garcia 44*fbb6c848SEzequiel Garcia u8 coef[4][2][2][6][6][4]; 45*fbb6c848SEzequiel Garcia }; 46*fbb6c848SEzequiel Garcia 47*fbb6c848SEzequiel Garcia struct hantro_g2_all_probs { 48*fbb6c848SEzequiel Garcia u8 kf_y_mode_prob[10][10][8]; 49*fbb6c848SEzequiel Garcia 50*fbb6c848SEzequiel Garcia u8 kf_y_mode_prob_tail[10][10][1]; 51*fbb6c848SEzequiel Garcia u8 ref_pred_probs[3]; 52*fbb6c848SEzequiel Garcia u8 mb_segment_tree_probs[7]; 53*fbb6c848SEzequiel Garcia u8 segment_pred_probs[3]; 54*fbb6c848SEzequiel Garcia u8 ref_scores[4]; 55*fbb6c848SEzequiel Garcia u8 prob_comppred[2]; 56*fbb6c848SEzequiel Garcia 57*fbb6c848SEzequiel Garcia u8 pad1[9]; 58*fbb6c848SEzequiel Garcia 59*fbb6c848SEzequiel Garcia u8 kf_uv_mode_prob[10][8]; 60*fbb6c848SEzequiel Garcia u8 kf_uv_mode_prob_tail[10][1]; 61*fbb6c848SEzequiel Garcia 62*fbb6c848SEzequiel Garcia u8 pad2[6]; 63*fbb6c848SEzequiel Garcia 64*fbb6c848SEzequiel Garcia struct hantro_g2_probs probs; 65*fbb6c848SEzequiel Garcia }; 66*fbb6c848SEzequiel Garcia 67*fbb6c848SEzequiel Garcia struct mv_counts { 68*fbb6c848SEzequiel Garcia u32 joints[4]; 69*fbb6c848SEzequiel Garcia u32 sign[2][2]; 70*fbb6c848SEzequiel Garcia u32 classes[2][11]; 71*fbb6c848SEzequiel Garcia u32 class0[2][2]; 72*fbb6c848SEzequiel Garcia u32 bits[2][10][2]; 73*fbb6c848SEzequiel Garcia u32 class0_fp[2][2][4]; 74*fbb6c848SEzequiel Garcia u32 fp[2][4]; 75*fbb6c848SEzequiel Garcia u32 class0_hp[2][2]; 76*fbb6c848SEzequiel Garcia u32 hp[2][2]; 77*fbb6c848SEzequiel Garcia }; 78*fbb6c848SEzequiel Garcia 79*fbb6c848SEzequiel Garcia struct symbol_counts { 80*fbb6c848SEzequiel Garcia u32 inter_mode_counts[7][3][2]; 81*fbb6c848SEzequiel Garcia u32 sb_ymode_counts[4][10]; 82*fbb6c848SEzequiel Garcia u32 uv_mode_counts[10][10]; 83*fbb6c848SEzequiel Garcia u32 partition_counts[16][4]; 84*fbb6c848SEzequiel Garcia u32 switchable_interp_counts[4][3]; 85*fbb6c848SEzequiel Garcia u32 intra_inter_count[4][2]; 86*fbb6c848SEzequiel Garcia u32 comp_inter_count[5][2]; 87*fbb6c848SEzequiel Garcia u32 single_ref_count[5][2][2]; 88*fbb6c848SEzequiel Garcia u32 comp_ref_count[5][2]; 89*fbb6c848SEzequiel Garcia u32 tx32x32_count[2][4]; 90*fbb6c848SEzequiel Garcia u32 tx16x16_count[2][3]; 91*fbb6c848SEzequiel Garcia u32 tx8x8_count[2][2]; 92*fbb6c848SEzequiel Garcia u32 mbskip_count[3][2]; 93*fbb6c848SEzequiel Garcia 94*fbb6c848SEzequiel Garcia struct mv_counts mv_counts; 95*fbb6c848SEzequiel Garcia 96*fbb6c848SEzequiel Garcia u32 count_coeffs[2][2][6][6][4]; 97*fbb6c848SEzequiel Garcia u32 count_coeffs8x8[2][2][6][6][4]; 98*fbb6c848SEzequiel Garcia u32 count_coeffs16x16[2][2][6][6][4]; 99*fbb6c848SEzequiel Garcia u32 count_coeffs32x32[2][2][6][6][4]; 100*fbb6c848SEzequiel Garcia 101*fbb6c848SEzequiel Garcia u32 count_eobs[4][2][2][6][6]; 102*fbb6c848SEzequiel Garcia }; 103