/src/serenity/Userland/Libraries/LibMedia/Video/VP9/SyntaxElementCounter.cpp
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2021, Hunter Salyer <thefalsehonesty@gmail.com> |
3 | | * |
4 | | * SPDX-License-Identifier: BSD-2-Clause |
5 | | */ |
6 | | |
7 | | #include "SyntaxElementCounter.h" |
8 | | #include <AK/Format.h> |
9 | | |
10 | | namespace Media::Video::VP9 { |
11 | | |
12 | | SyntaxElementCounter::SyntaxElementCounter() |
13 | 6.41k | { |
14 | 6.41k | __builtin_memset(m_counts_intra_mode, 0, sizeof(m_counts_intra_mode)); |
15 | 6.41k | __builtin_memset(m_counts_uv_mode, 0, sizeof(m_counts_uv_mode)); |
16 | 6.41k | __builtin_memset(m_counts_partition, 0, sizeof(m_counts_partition)); |
17 | 6.41k | __builtin_memset(m_counts_interp_filter, 0, sizeof(m_counts_interp_filter)); |
18 | 6.41k | __builtin_memset(m_counts_inter_mode, 0, sizeof(m_counts_inter_mode)); |
19 | 6.41k | __builtin_memset(m_counts_tx_size, 0, sizeof(m_counts_tx_size)); |
20 | 6.41k | __builtin_memset(m_counts_is_inter, 0, sizeof(m_counts_is_inter)); |
21 | 6.41k | __builtin_memset(m_counts_comp_mode, 0, sizeof(m_counts_comp_mode)); |
22 | 6.41k | __builtin_memset(m_counts_single_ref, 0, sizeof(m_counts_single_ref)); |
23 | 6.41k | __builtin_memset(m_counts_comp_ref, 0, sizeof(m_counts_comp_ref)); |
24 | 6.41k | __builtin_memset(m_counts_skip, 0, sizeof(m_counts_skip)); |
25 | 6.41k | __builtin_memset(m_counts_mv_joint, 0, sizeof(m_counts_mv_joint)); |
26 | 6.41k | __builtin_memset(m_counts_mv_sign, 0, sizeof(m_counts_mv_sign)); |
27 | 6.41k | __builtin_memset(m_counts_mv_class, 0, sizeof(m_counts_mv_class)); |
28 | 6.41k | __builtin_memset(m_counts_mv_class0_bit, 0, sizeof(m_counts_mv_class0_bit)); |
29 | 6.41k | __builtin_memset(m_counts_mv_class0_fr, 0, sizeof(m_counts_mv_class0_fr)); |
30 | 6.41k | __builtin_memset(m_counts_mv_class0_hp, 0, sizeof(m_counts_mv_class0_hp)); |
31 | 6.41k | __builtin_memset(m_counts_mv_bits, 0, sizeof(m_counts_mv_bits)); |
32 | 6.41k | __builtin_memset(m_counts_mv_fr, 0, sizeof(m_counts_mv_fr)); |
33 | 6.41k | __builtin_memset(m_counts_mv_hp, 0, sizeof(m_counts_mv_hp)); |
34 | 6.41k | __builtin_memset(m_counts_token, 0, sizeof(m_counts_token)); |
35 | 6.41k | __builtin_memset(m_counts_more_coefs, 0, sizeof(m_counts_more_coefs)); |
36 | 6.41k | } |
37 | | |
38 | | template<typename T, size_t size> |
39 | | static void sum_arrays(T (&destination)[size], T const (&left)[size], T const (&right)[size]) |
40 | 2.39M | { |
41 | 8.66M | for (size_t i = 0; i < size; i++) { |
42 | 6.27M | destination[i] = left[i] + right[i]; |
43 | 6.27M | } |
44 | 2.39M | } SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 10ul>(unsigned int (&) [10ul], unsigned int const (&) [10ul], unsigned int const (&) [10ul]) Line | Count | Source | 40 | 26.4k | { | 41 | 291k | for (size_t i = 0; i < size; i++) { | 42 | 264k | destination[i] = left[i] + right[i]; | 43 | 264k | } | 44 | 26.4k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 3ul>(unsigned int (&) [3ul], unsigned int const (&) [3ul], unsigned int const (&) [3ul]) Line | Count | Source | 40 | 1.09M | { | 41 | 4.38M | for (size_t i = 0; i < size; i++) { | 42 | 3.29M | destination[i] = left[i] + right[i]; | 43 | 3.29M | } | 44 | 1.09M | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 2ul>(unsigned int (&) [2ul], unsigned int const (&) [2ul], unsigned int const (&) [2ul]) Line | Count | Source | 40 | 1.19M | { | 41 | 3.58M | for (size_t i = 0; i < size; i++) { | 42 | 2.38M | destination[i] = left[i] + right[i]; | 43 | 2.38M | } | 44 | 1.19M | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 4ul>(unsigned int (&) [4ul], unsigned int const (&) [4ul], unsigned int const (&) [4ul]) Line | Count | Source | 40 | 71.8k | { | 41 | 359k | for (size_t i = 0; i < size; i++) { | 42 | 287k | destination[i] = left[i] + right[i]; | 43 | 287k | } | 44 | 71.8k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 11ul>(unsigned int (&) [11ul], unsigned int const (&) [11ul], unsigned int const (&) [11ul]) Line | Count | Source | 40 | 3.78k | { | 41 | 45.4k | for (size_t i = 0; i < size; i++) { | 42 | 41.6k | destination[i] = left[i] + right[i]; | 43 | 41.6k | } | 44 | 3.78k | } |
|
45 | | |
46 | | template<typename T, size_t size, size_t size_2> |
47 | | static void sum_arrays(T (&destination)[size][size_2], T const (&left)[size][size_2], T const (&right)[size][size_2]) |
48 | 533k | { |
49 | 3.41M | for (size_t i = 0; i < size; i++) { |
50 | 2.88M | sum_arrays(destination[i], left[i], right[i]); |
51 | 2.88M | } |
52 | 533k | } SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 4ul, 10ul>(unsigned int (&) [4ul][10ul], unsigned int const (&) [4ul][10ul], unsigned int const (&) [4ul][10ul]) Line | Count | Source | 48 | 1.89k | { | 49 | 9.46k | for (size_t i = 0; i < size; i++) { | 50 | 7.56k | sum_arrays(destination[i], left[i], right[i]); | 51 | 7.56k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 10ul, 10ul>(unsigned int (&) [10ul][10ul], unsigned int const (&) [10ul][10ul], unsigned int const (&) [10ul][10ul]) Line | Count | Source | 48 | 1.89k | { | 49 | 20.8k | for (size_t i = 0; i < size; i++) { | 50 | 18.9k | sum_arrays(destination[i], left[i], right[i]); | 51 | 18.9k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 16ul, 4ul>(unsigned int (&) [16ul][4ul], unsigned int const (&) [16ul][4ul], unsigned int const (&) [16ul][4ul]) Line | Count | Source | 48 | 1.89k | { | 49 | 32.1k | for (size_t i = 0; i < size; i++) { | 50 | 30.2k | sum_arrays(destination[i], left[i], right[i]); | 51 | 30.2k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 4ul, 3ul>(unsigned int (&) [4ul][3ul], unsigned int const (&) [4ul][3ul], unsigned int const (&) [4ul][3ul]) Line | Count | Source | 48 | 1.89k | { | 49 | 9.46k | for (size_t i = 0; i < size; i++) { | 50 | 7.56k | sum_arrays(destination[i], left[i], right[i]); | 51 | 7.56k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 7ul, 4ul>(unsigned int (&) [7ul][4ul], unsigned int const (&) [7ul][4ul], unsigned int const (&) [7ul][4ul]) Line | Count | Source | 48 | 1.89k | { | 49 | 15.1k | for (size_t i = 0; i < size; i++) { | 50 | 13.2k | sum_arrays(destination[i], left[i], right[i]); | 51 | 13.2k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [4], 4ul, 2ul>(unsigned int (&) [4ul][2ul][4], unsigned int const (&) [4ul][2ul][4], unsigned int const (&) [4ul][2ul][4]) Line | Count | Source | 48 | 1.89k | { | 49 | 9.46k | for (size_t i = 0; i < size; i++) { | 50 | 7.56k | sum_arrays(destination[i], left[i], right[i]); | 51 | 7.56k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 4ul, 2ul>(unsigned int (&) [4ul][2ul], unsigned int const (&) [4ul][2ul], unsigned int const (&) [4ul][2ul]) Line | Count | Source | 48 | 1.89k | { | 49 | 9.46k | for (size_t i = 0; i < size; i++) { | 50 | 7.56k | sum_arrays(destination[i], left[i], right[i]); | 51 | 7.56k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 5ul, 2ul>(unsigned int (&) [5ul][2ul], unsigned int const (&) [5ul][2ul], unsigned int const (&) [5ul][2ul]) Line | Count | Source | 48 | 3.78k | { | 49 | 22.7k | for (size_t i = 0; i < size; i++) { | 50 | 18.9k | sum_arrays(destination[i], left[i], right[i]); | 51 | 18.9k | } | 52 | 3.78k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [2], 5ul, 2ul>(unsigned int (&) [5ul][2ul][2], unsigned int const (&) [5ul][2ul][2], unsigned int const (&) [5ul][2ul][2]) Line | Count | Source | 48 | 1.89k | { | 49 | 11.3k | for (size_t i = 0; i < size; i++) { | 50 | 9.46k | sum_arrays(destination[i], left[i], right[i]); | 51 | 9.46k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 3ul, 2ul>(unsigned int (&) [3ul][2ul], unsigned int const (&) [3ul][2ul], unsigned int const (&) [3ul][2ul]) Line | Count | Source | 48 | 1.89k | { | 49 | 7.56k | for (size_t i = 0; i < size; i++) { | 50 | 5.67k | sum_arrays(destination[i], left[i], right[i]); | 51 | 5.67k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 2ul, 2ul>(unsigned int (&) [2ul][2ul], unsigned int const (&) [2ul][2ul], unsigned int const (&) [2ul][2ul]) Line | Count | Source | 48 | 17.0k | { | 49 | 51.0k | for (size_t i = 0; i < size; i++) { | 50 | 34.0k | sum_arrays(destination[i], left[i], right[i]); | 51 | 34.0k | } | 52 | 17.0k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 2ul, 11ul>(unsigned int (&) [2ul][11ul], unsigned int const (&) [2ul][11ul], unsigned int const (&) [2ul][11ul]) Line | Count | Source | 48 | 1.89k | { | 49 | 5.67k | for (size_t i = 0; i < size; i++) { | 50 | 3.78k | sum_arrays(destination[i], left[i], right[i]); | 51 | 3.78k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [4], 2ul, 2ul>(unsigned int (&) [2ul][2ul][4], unsigned int const (&) [2ul][2ul][4], unsigned int const (&) [2ul][2ul][4]) Line | Count | Source | 48 | 1.89k | { | 49 | 5.67k | for (size_t i = 0; i < size; i++) { | 50 | 3.78k | sum_arrays(destination[i], left[i], right[i]); | 51 | 3.78k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [2], 2ul, 10ul>(unsigned int (&) [2ul][10ul][2], unsigned int const (&) [2ul][10ul][2], unsigned int const (&) [2ul][10ul][2]) Line | Count | Source | 48 | 1.89k | { | 49 | 5.67k | for (size_t i = 0; i < size; i++) { | 50 | 3.78k | sum_arrays(destination[i], left[i], right[i]); | 51 | 3.78k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 10ul, 2ul>(unsigned int (&) [10ul][2ul], unsigned int const (&) [10ul][2ul], unsigned int const (&) [10ul][2ul]) Line | Count | Source | 48 | 3.78k | { | 49 | 41.6k | for (size_t i = 0; i < size; i++) { | 50 | 37.8k | sum_arrays(destination[i], left[i], right[i]); | 51 | 37.8k | } | 52 | 3.78k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 2ul, 4ul>(unsigned int (&) [2ul][4ul], unsigned int const (&) [2ul][4ul], unsigned int const (&) [2ul][4ul]) Line | Count | Source | 48 | 13.2k | { | 49 | 39.7k | for (size_t i = 0; i < size; i++) { | 50 | 26.4k | sum_arrays(destination[i], left[i], right[i]); | 51 | 26.4k | } | 52 | 13.2k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [2][6][6][3], 4ul, 2ul>(unsigned int (&) [4ul][2ul][2][6][6][3], unsigned int const (&) [4ul][2ul][2][6][6][3], unsigned int const (&) [4ul][2ul][2][6][6][3]) Line | Count | Source | 48 | 1.89k | { | 49 | 9.46k | for (size_t i = 0; i < size; i++) { | 50 | 7.56k | sum_arrays(destination[i], left[i], right[i]); | 51 | 7.56k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [6][6][3], 2ul, 2ul>(unsigned int (&) [2ul][2ul][6][6][3], unsigned int const (&) [2ul][2ul][6][6][3], unsigned int const (&) [2ul][2ul][6][6][3]) Line | Count | Source | 48 | 7.56k | { | 49 | 22.7k | for (size_t i = 0; i < size; i++) { | 50 | 15.1k | sum_arrays(destination[i], left[i], right[i]); | 51 | 15.1k | } | 52 | 7.56k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [6][3], 2ul, 6ul>(unsigned int (&) [2ul][6ul][6][3], unsigned int const (&) [2ul][6ul][6][3], unsigned int const (&) [2ul][6ul][6][3]) Line | Count | Source | 48 | 15.1k | { | 49 | 45.4k | for (size_t i = 0; i < size; i++) { | 50 | 30.2k | sum_arrays(destination[i], left[i], right[i]); | 51 | 30.2k | } | 52 | 15.1k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [3], 6ul, 6ul>(unsigned int (&) [6ul][6ul][3], unsigned int const (&) [6ul][6ul][3], unsigned int const (&) [6ul][6ul][3]) Line | Count | Source | 48 | 30.2k | { | 49 | 211k | for (size_t i = 0; i < size; i++) { | 50 | 181k | sum_arrays(destination[i], left[i], right[i]); | 51 | 181k | } | 52 | 30.2k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 6ul, 3ul>(unsigned int (&) [6ul][3ul], unsigned int const (&) [6ul][3ul], unsigned int const (&) [6ul][3ul]) Line | Count | Source | 48 | 181k | { | 49 | 1.27M | for (size_t i = 0; i < size; i++) { | 50 | 1.08M | sum_arrays(destination[i], left[i], right[i]); | 51 | 1.08M | } | 52 | 181k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [2][6][6][2], 4ul, 2ul>(unsigned int (&) [4ul][2ul][2][6][6][2], unsigned int const (&) [4ul][2ul][2][6][6][2], unsigned int const (&) [4ul][2ul][2][6][6][2]) Line | Count | Source | 48 | 1.89k | { | 49 | 9.46k | for (size_t i = 0; i < size; i++) { | 50 | 7.56k | sum_arrays(destination[i], left[i], right[i]); | 51 | 7.56k | } | 52 | 1.89k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [6][6][2], 2ul, 2ul>(unsigned int (&) [2ul][2ul][6][6][2], unsigned int const (&) [2ul][2ul][6][6][2], unsigned int const (&) [2ul][2ul][6][6][2]) Line | Count | Source | 48 | 7.56k | { | 49 | 22.7k | for (size_t i = 0; i < size; i++) { | 50 | 15.1k | sum_arrays(destination[i], left[i], right[i]); | 51 | 15.1k | } | 52 | 7.56k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [6][2], 2ul, 6ul>(unsigned int (&) [2ul][6ul][6][2], unsigned int const (&) [2ul][6ul][6][2], unsigned int const (&) [2ul][6ul][6][2]) Line | Count | Source | 48 | 15.1k | { | 49 | 45.4k | for (size_t i = 0; i < size; i++) { | 50 | 30.2k | sum_arrays(destination[i], left[i], right[i]); | 51 | 30.2k | } | 52 | 15.1k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int [2], 6ul, 6ul>(unsigned int (&) [6ul][6ul][2], unsigned int const (&) [6ul][6ul][2], unsigned int const (&) [6ul][6ul][2]) Line | Count | Source | 48 | 30.2k | { | 49 | 211k | for (size_t i = 0; i < size; i++) { | 50 | 181k | sum_arrays(destination[i], left[i], right[i]); | 51 | 181k | } | 52 | 30.2k | } |
SyntaxElementCounter.cpp:void Media::Video::VP9::sum_arrays<unsigned int, 6ul, 2ul>(unsigned int (&) [6ul][2ul], unsigned int const (&) [6ul][2ul], unsigned int const (&) [6ul][2ul]) Line | Count | Source | 48 | 181k | { | 49 | 1.27M | for (size_t i = 0; i < size; i++) { | 50 | 1.08M | sum_arrays(destination[i], left[i], right[i]); | 51 | 1.08M | } | 52 | 181k | } |
|
53 | | |
54 | | SyntaxElementCounter SyntaxElementCounter::operator+(SyntaxElementCounter const& other) const |
55 | 1.89k | { |
56 | 1.89k | SyntaxElementCounter result; |
57 | 1.89k | sum_arrays(result.m_counts_intra_mode, this->m_counts_intra_mode, other.m_counts_intra_mode); |
58 | 1.89k | sum_arrays(result.m_counts_uv_mode, this->m_counts_uv_mode, other.m_counts_uv_mode); |
59 | 1.89k | sum_arrays(result.m_counts_partition, this->m_counts_partition, other.m_counts_partition); |
60 | 1.89k | sum_arrays(result.m_counts_interp_filter, this->m_counts_interp_filter, other.m_counts_interp_filter); |
61 | 1.89k | sum_arrays(result.m_counts_inter_mode, this->m_counts_inter_mode, other.m_counts_inter_mode); |
62 | 1.89k | sum_arrays(result.m_counts_tx_size, this->m_counts_tx_size, other.m_counts_tx_size); |
63 | 1.89k | sum_arrays(result.m_counts_is_inter, this->m_counts_is_inter, other.m_counts_is_inter); |
64 | 1.89k | sum_arrays(result.m_counts_comp_mode, this->m_counts_comp_mode, other.m_counts_comp_mode); |
65 | 1.89k | sum_arrays(result.m_counts_single_ref, this->m_counts_single_ref, other.m_counts_single_ref); |
66 | 1.89k | sum_arrays(result.m_counts_comp_ref, this->m_counts_comp_ref, other.m_counts_comp_ref); |
67 | 1.89k | sum_arrays(result.m_counts_skip, this->m_counts_skip, other.m_counts_skip); |
68 | 1.89k | sum_arrays(result.m_counts_mv_joint, this->m_counts_mv_joint, other.m_counts_mv_joint); |
69 | 1.89k | sum_arrays(result.m_counts_mv_sign, this->m_counts_mv_sign, other.m_counts_mv_sign); |
70 | 1.89k | sum_arrays(result.m_counts_mv_class, this->m_counts_mv_class, other.m_counts_mv_class); |
71 | 1.89k | sum_arrays(result.m_counts_mv_class0_bit, this->m_counts_mv_class0_bit, other.m_counts_mv_class0_bit); |
72 | 1.89k | sum_arrays(result.m_counts_mv_class0_fr, this->m_counts_mv_class0_fr, other.m_counts_mv_class0_fr); |
73 | 1.89k | sum_arrays(result.m_counts_mv_class0_hp, this->m_counts_mv_class0_hp, other.m_counts_mv_class0_hp); |
74 | 1.89k | sum_arrays(result.m_counts_mv_bits, this->m_counts_mv_bits, other.m_counts_mv_bits); |
75 | 1.89k | sum_arrays(result.m_counts_mv_fr, this->m_counts_mv_fr, other.m_counts_mv_fr); |
76 | 1.89k | sum_arrays(result.m_counts_mv_hp, this->m_counts_mv_hp, other.m_counts_mv_hp); |
77 | 1.89k | sum_arrays(result.m_counts_token, this->m_counts_token, other.m_counts_token); |
78 | 1.89k | sum_arrays(result.m_counts_more_coefs, this->m_counts_more_coefs, other.m_counts_more_coefs); |
79 | 1.89k | return result; |
80 | 1.89k | } |
81 | | |
82 | | SyntaxElementCounter& SyntaxElementCounter::operator+=(SyntaxElementCounter const& other) |
83 | 1.89k | { |
84 | 1.89k | *this = *this + other; |
85 | 1.89k | return *this; |
86 | 1.89k | } |
87 | | |
88 | | } |