162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Hantro VP9 codec driver 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2021 Collabora Ltd. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_cistruct hantro_g2_mv_probs { 962306a36Sopenharmony_ci u8 joint[3]; 1062306a36Sopenharmony_ci u8 sign[2]; 1162306a36Sopenharmony_ci u8 class0_bit[2][1]; 1262306a36Sopenharmony_ci u8 fr[2][3]; 1362306a36Sopenharmony_ci u8 class0_hp[2]; 1462306a36Sopenharmony_ci u8 hp[2]; 1562306a36Sopenharmony_ci u8 classes[2][10]; 1662306a36Sopenharmony_ci u8 class0_fr[2][2][3]; 1762306a36Sopenharmony_ci u8 bits[2][10]; 1862306a36Sopenharmony_ci}; 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_cistruct hantro_g2_probs { 2162306a36Sopenharmony_ci u8 inter_mode[7][4]; 2262306a36Sopenharmony_ci u8 is_inter[4]; 2362306a36Sopenharmony_ci u8 uv_mode[10][8]; 2462306a36Sopenharmony_ci u8 tx8[2][1]; 2562306a36Sopenharmony_ci u8 tx16[2][2]; 2662306a36Sopenharmony_ci u8 tx32[2][3]; 2762306a36Sopenharmony_ci u8 y_mode_tail[4][1]; 2862306a36Sopenharmony_ci u8 y_mode[4][8]; 2962306a36Sopenharmony_ci u8 partition[2][16][4]; /* [keyframe][][], [inter][][] */ 3062306a36Sopenharmony_ci u8 uv_mode_tail[10][1]; 3162306a36Sopenharmony_ci u8 interp_filter[4][2]; 3262306a36Sopenharmony_ci u8 comp_mode[5]; 3362306a36Sopenharmony_ci u8 skip[3]; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci u8 pad1[1]; 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci struct hantro_g2_mv_probs mv; 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci u8 single_ref[5][2]; 4062306a36Sopenharmony_ci u8 comp_ref[5]; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci u8 pad2[17]; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci u8 coef[4][2][2][6][6][4]; 4562306a36Sopenharmony_ci}; 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_cistruct hantro_g2_all_probs { 4862306a36Sopenharmony_ci u8 kf_y_mode_prob[10][10][8]; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci u8 kf_y_mode_prob_tail[10][10][1]; 5162306a36Sopenharmony_ci u8 ref_pred_probs[3]; 5262306a36Sopenharmony_ci u8 mb_segment_tree_probs[7]; 5362306a36Sopenharmony_ci u8 segment_pred_probs[3]; 5462306a36Sopenharmony_ci u8 ref_scores[4]; 5562306a36Sopenharmony_ci u8 prob_comppred[2]; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci u8 pad1[9]; 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci u8 kf_uv_mode_prob[10][8]; 6062306a36Sopenharmony_ci u8 kf_uv_mode_prob_tail[10][1]; 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci u8 pad2[6]; 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci struct hantro_g2_probs probs; 6562306a36Sopenharmony_ci}; 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_cistruct mv_counts { 6862306a36Sopenharmony_ci u32 joints[4]; 6962306a36Sopenharmony_ci u32 sign[2][2]; 7062306a36Sopenharmony_ci u32 classes[2][11]; 7162306a36Sopenharmony_ci u32 class0[2][2]; 7262306a36Sopenharmony_ci u32 bits[2][10][2]; 7362306a36Sopenharmony_ci u32 class0_fp[2][2][4]; 7462306a36Sopenharmony_ci u32 fp[2][4]; 7562306a36Sopenharmony_ci u32 class0_hp[2][2]; 7662306a36Sopenharmony_ci u32 hp[2][2]; 7762306a36Sopenharmony_ci}; 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_cistruct symbol_counts { 8062306a36Sopenharmony_ci u32 inter_mode_counts[7][3][2]; 8162306a36Sopenharmony_ci u32 sb_ymode_counts[4][10]; 8262306a36Sopenharmony_ci u32 uv_mode_counts[10][10]; 8362306a36Sopenharmony_ci u32 partition_counts[16][4]; 8462306a36Sopenharmony_ci u32 switchable_interp_counts[4][3]; 8562306a36Sopenharmony_ci u32 intra_inter_count[4][2]; 8662306a36Sopenharmony_ci u32 comp_inter_count[5][2]; 8762306a36Sopenharmony_ci u32 single_ref_count[5][2][2]; 8862306a36Sopenharmony_ci u32 comp_ref_count[5][2]; 8962306a36Sopenharmony_ci u32 tx32x32_count[2][4]; 9062306a36Sopenharmony_ci u32 tx16x16_count[2][3]; 9162306a36Sopenharmony_ci u32 tx8x8_count[2][2]; 9262306a36Sopenharmony_ci u32 mbskip_count[3][2]; 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci struct mv_counts mv_counts; 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci u32 count_coeffs[2][2][6][6][4]; 9762306a36Sopenharmony_ci u32 count_coeffs8x8[2][2][6][6][4]; 9862306a36Sopenharmony_ci u32 count_coeffs16x16[2][2][6][6][4]; 9962306a36Sopenharmony_ci u32 count_coeffs32x32[2][2][6][6][4]; 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci u32 count_eobs[4][2][2][6][6]; 10262306a36Sopenharmony_ci}; 103