From f85f557a1f4d2d6b15090a3e0bcf2cfe36cb61f1 Mon Sep 17 00:00:00 2001 From: FalseHonesty Date: Sun, 20 Jun 2021 19:02:48 -0400 Subject: [PATCH] LibVideo/VP9: Implement syntax element counting for supported elements With the progress made in the Decoder thus far, we have the ability to support most of the syntax element counters in the tree parser. Additionally, it will now crash when trying to count unsupported elements. --- .../Libraries/LibVideo/VP9/TreeParser.cpp | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/Userland/Libraries/LibVideo/VP9/TreeParser.cpp b/Userland/Libraries/LibVideo/VP9/TreeParser.cpp index 44d64539a2..62fb8344dc 100644 --- a/Userland/Libraries/LibVideo/VP9/TreeParser.cpp +++ b/Userland/Libraries/LibVideo/VP9/TreeParser.cpp @@ -209,26 +209,32 @@ void TreeParser::count_syntax_element(SyntaxElementType type, int value) switch (type) { case SyntaxElementType::Partition: m_decoder.m_syntax_element_counter->m_counts_partition[m_ctx][value]++; - break; + return; case SyntaxElementType::IntraMode: - break; case SyntaxElementType::SubIntraMode: - break; + m_decoder.m_syntax_element_counter->m_counts_intra_mode[m_ctx][value]++; + return; case SyntaxElementType::UVMode: - break; + m_decoder.m_syntax_element_counter->m_counts_uv_mode[m_ctx][value]++; + return; case SyntaxElementType::Skip: m_decoder.m_syntax_element_counter->m_counts_skip[m_ctx][value]++; - break; + return; case SyntaxElementType::IsInter: - break; + m_decoder.m_syntax_element_counter->m_counts_is_inter[m_ctx][value]++; + return; case SyntaxElementType::CompMode: - break; + m_decoder.m_syntax_element_counter->m_counts_comp_mode[m_ctx][value]++; + return; case SyntaxElementType::CompRef: - break; + m_decoder.m_syntax_element_counter->m_counts_comp_ref[m_ctx][value]++; + return; case SyntaxElementType::SingleRefP1: - break; + m_decoder.m_syntax_element_counter->m_counts_single_ref[m_ctx][0][value]++; + return; case SyntaxElementType::SingleRefP2: - break; + m_decoder.m_syntax_element_counter->m_counts_single_ref[m_ctx][1][value]++; + return; case SyntaxElementType::MVSign: break; case SyntaxElementType::MVClass0Bit: @@ -236,13 +242,17 @@ void TreeParser::count_syntax_element(SyntaxElementType type, int value) case SyntaxElementType::MVBit: break; case SyntaxElementType::TXSize: - break; + m_decoder.m_syntax_element_counter->m_counts_tx_size[m_decoder.m_max_tx_size][m_ctx][value]++; + return; case SyntaxElementType::InterMode: - break; + m_decoder.m_syntax_element_counter->m_counts_inter_mode[m_ctx][value]++; + return; case SyntaxElementType::InterpFilter: - break; + m_decoder.m_syntax_element_counter->m_counts_interp_filter[m_ctx][value]++; + return; case SyntaxElementType::MVJoint: - break; + m_decoder.m_syntax_element_counter->m_counts_mv_joint[value]++; + return; case SyntaxElementType::MVClass: break; case SyntaxElementType::MVClass0FR: @@ -261,8 +271,10 @@ void TreeParser::count_syntax_element(SyntaxElementType type, int value) case SyntaxElementType::DefaultUVMode: case SyntaxElementType::SegmentID: case SyntaxElementType::SegIDPredicted: - break; + // No counting required + return; } + VERIFY_NOT_REACHED(); } TreeParser::TreeSelection::TreeSelection(int const* values)