1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-26 00:45:06 +00:00
serenity/Userland/Libraries/LibVideo/VP9/SyntaxElementCounter.h
Zaggy1024 907816e629 LibVideo: Create TokensContext struct for token parsing parameters
With the addition of this struct, both the bool to determine if coefs
should be parsed and the token parse itself can take specific
parameters.

This is the last step in parameterizing all the tree parsing, so the
old functions in TreeParser are now unused. This patch is very
satisfying :^)

There's still more work to be done to clean up how the parameters are
passed from Parser, but that's work for another day.
2022-11-12 10:17:27 -07:00

43 lines
1.5 KiB
C++

/*
* Copyright (c) 2021, Hunter Salyer <thefalsehonesty@gmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include "Symbols.h"
#include <AK/Types.h>
namespace Video::VP9 {
class SyntaxElementCounter final {
public:
/* (8.3) Clear Counts Process */
void clear_counts();
u8 m_counts_intra_mode[BLOCK_SIZE_GROUPS][INTRA_MODES];
u8 m_counts_uv_mode[INTRA_MODES][INTRA_MODES];
u8 m_counts_partition[PARTITION_CONTEXTS][PARTITION_TYPES];
u8 m_counts_interp_filter[INTERP_FILTER_CONTEXTS][SWITCHABLE_FILTERS];
u8 m_counts_inter_mode[INTER_MODE_CONTEXTS][INTER_MODES];
u8 m_counts_tx_size[TX_SIZES][TX_SIZE_CONTEXTS][TX_SIZES];
u8 m_counts_is_inter[IS_INTER_CONTEXTS][2];
u8 m_counts_comp_mode[COMP_MODE_CONTEXTS][2];
u8 m_counts_single_ref[REF_CONTEXTS][2][2];
u8 m_counts_comp_ref[REF_CONTEXTS][2];
u8 m_counts_skip[SKIP_CONTEXTS][2];
u8 m_counts_mv_joint[MV_JOINTS];
u8 m_counts_mv_sign[2][2];
u8 m_counts_mv_class[2][MV_CLASSES];
u8 m_counts_mv_class0_bit[2][CLASS0_SIZE];
u8 m_counts_mv_class0_fr[2][CLASS0_SIZE][MV_FR_SIZE];
u8 m_counts_mv_class0_hp[2][2];
u8 m_counts_mv_bits[2][MV_OFFSET_BITS][2];
u8 m_counts_mv_fr[2][MV_FR_SIZE];
u8 m_counts_mv_hp[2][2];
u8 m_counts_token[TX_SIZES][BLOCK_TYPES][REF_TYPES][COEF_BANDS][PREV_COEF_CONTEXTS][UNCONSTRAINED_NODES];
u8 m_counts_more_coefs[TX_SIZES][BLOCK_TYPES][REF_TYPES][COEF_BANDS][PREV_COEF_CONTEXTS][2];
};
}