SyntaxElementCounter.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. enum class SyntaxElementType {
  11. Partition,
  12. DefaultIntraMode,
  13. DefaultUVMode,
  14. IntraMode,
  15. SubIntraMode,
  16. UVMode,
  17. SegmentID,
  18. Skip,
  19. SegIDPredicted,
  20. IsInter,
  21. CompMode,
  22. CompRef,
  23. SingleRefP1,
  24. SingleRefP2,
  25. MVSign,
  26. MVClass0Bit,
  27. MVBit,
  28. TXSize,
  29. InterMode,
  30. InterpFilter,
  31. MVJoint,
  32. MVClass,
  33. MVClass0FR,
  34. MVClass0HP,
  35. MVFR,
  36. MVHP,
  37. Token,
  38. MoreCoefs,
  39. };
  40. class SyntaxElementCounter final {
  41. public:
  42. /* (8.3) Clear Counts Process */
  43. void clear_counts();
  44. u8 m_counts_intra_mode[BLOCK_SIZE_GROUPS][INTRA_MODES];
  45. u8 m_counts_uv_mode[INTRA_MODES][INTRA_MODES];
  46. u8 m_counts_partition[PARTITION_CONTEXTS][PARTITION_TYPES];
  47. u8 m_counts_interp_filter[INTERP_FILTER_CONTEXTS][SWITCHABLE_FILTERS];
  48. u8 m_counts_inter_mode[INTER_MODE_CONTEXTS][INTER_MODES];
  49. u8 m_counts_tx_size[TX_SIZES][TX_SIZE_CONTEXTS][TX_SIZES];
  50. u8 m_counts_is_inter[IS_INTER_CONTEXTS][2];
  51. u8 m_counts_comp_mode[COMP_MODE_CONTEXTS][2];
  52. u8 m_counts_single_ref[REF_CONTEXTS][2][2];
  53. u8 m_counts_comp_ref[REF_CONTEXTS][2];
  54. u8 m_counts_skip[SKIP_CONTEXTS][2];
  55. u8 m_counts_mv_joint[MV_JOINTS];
  56. u8 m_counts_mv_sign[2][2];
  57. u8 m_counts_mv_class[2][MV_CLASSES];
  58. u8 m_counts_mv_class0_bit[2][CLASS0_SIZE];
  59. u8 m_counts_mv_class0_fr[2][CLASS0_SIZE][MV_FR_SIZE];
  60. u8 m_counts_mv_class0_hp[2][2];
  61. u8 m_counts_mv_bits[2][MV_OFFSET_BITS][2];
  62. u8 m_counts_mv_fr[2][MV_FR_SIZE];
  63. u8 m_counts_mv_hp[2][2];
  64. u8 m_counts_token[TX_SIZES][BLOCK_TYPES][REF_TYPES][COEF_BANDS][PREV_COEF_CONTEXTS][UNCONSTRAINED_NODES];
  65. u8 m_counts_more_coefs[TX_SIZES][BLOCK_TYPES][REF_TYPES][COEF_BANDS][PREV_COEF_CONTEXTS][2];
  66. };
  67. }