SyntaxElementCounter.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * Copyright (c) 2021, Hunter Salyer <thefalsehonesty@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include "Symbols.h"
  8. #include <AK/Types.h>
  9. namespace Video::VP9 {
  10. class SyntaxElementCounter final {
  11. public:
  12. SyntaxElementCounter();
  13. /* (8.3) Clear Counts Process */
  14. void clear_counts();
  15. u32 m_counts_intra_mode[BLOCK_SIZE_GROUPS][INTRA_MODES];
  16. u32 m_counts_uv_mode[INTRA_MODES][INTRA_MODES];
  17. u32 m_counts_partition[PARTITION_CONTEXTS][PARTITION_TYPES];
  18. u32 m_counts_interp_filter[INTERP_FILTER_CONTEXTS][SWITCHABLE_FILTERS];
  19. u32 m_counts_inter_mode[INTER_MODE_CONTEXTS][INTER_MODES];
  20. u32 m_counts_tx_size[TX_SIZES][TX_SIZE_CONTEXTS][TX_SIZES];
  21. u32 m_counts_is_inter[IS_INTER_CONTEXTS][2];
  22. u32 m_counts_comp_mode[COMP_MODE_CONTEXTS][2];
  23. u32 m_counts_single_ref[REF_CONTEXTS][2][2];
  24. u32 m_counts_comp_ref[REF_CONTEXTS][2];
  25. u32 m_counts_skip[SKIP_CONTEXTS][2];
  26. u32 m_counts_mv_joint[MV_JOINTS];
  27. u32 m_counts_mv_sign[2][2];
  28. u32 m_counts_mv_class[2][MV_CLASSES];
  29. u32 m_counts_mv_class0_bit[2][CLASS0_SIZE];
  30. u32 m_counts_mv_class0_fr[2][CLASS0_SIZE][MV_FR_SIZE];
  31. u32 m_counts_mv_class0_hp[2][2];
  32. u32 m_counts_mv_bits[2][MV_OFFSET_BITS][2];
  33. u32 m_counts_mv_fr[2][MV_FR_SIZE];
  34. u32 m_counts_mv_hp[2][2];
  35. u32 m_counts_token[TX_SIZES][BLOCK_TYPES][REF_TYPES][COEF_BANDS][PREV_COEF_CONTEXTS][UNCONSTRAINED_NODES];
  36. u32 m_counts_more_coefs[TX_SIZES][BLOCK_TYPES][REF_TYPES][COEF_BANDS][PREV_COEF_CONTEXTS][2];
  37. SyntaxElementCounter operator+(SyntaxElementCounter const&) const;
  38. SyntaxElementCounter& operator+=(SyntaxElementCounter const&);
  39. };
  40. }