summaryrefslogtreecommitdiff
path: root/thirdparty/libvpx/vp8/common/treecoder.c
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2021-10-15 12:05:32 +0200
committerRémi Verschelde <rverschelde@gmail.com>2021-10-15 12:09:11 +0200
commitae74e78909ae0bc476112fb43b9580e969879dcd (patch)
tree49144c84e18719a7ca54a243effc319ea128ab70 /thirdparty/libvpx/vp8/common/treecoder.c
parente2bfb27efb858c4a1314d314386531cbcdfcf335 (diff)
Remove WebM support (and deps libvpx and opus)
We've had many issues with WebM support and specifically the libvpx library over the years, mostly due to its poor integration in Godot's buildsystem, but without anyone really interested in improving this state. With the new GDExtensions in Godot 4.0, we intend to move video decoding to first-party extensions, and this would likely be done using something like libvlc to expose more codecs. Removing the `webm` module means we can remove libsimplewebm, libvpx and opus, which we were only used for that purpose. Both libvpx and opus were fairly complex pieces of the buildsystem, so this is a nice cleanup. This also removes the compile-time dependency on `yasm`. Fixes lots of compilation or non-working WebM issues which will be linked in the PR.
Diffstat (limited to 'thirdparty/libvpx/vp8/common/treecoder.c')
-rw-r--r--thirdparty/libvpx/vp8/common/treecoder.c143
1 files changed, 0 insertions, 143 deletions
diff --git a/thirdparty/libvpx/vp8/common/treecoder.c b/thirdparty/libvpx/vp8/common/treecoder.c
deleted file mode 100644
index d80c64bdfa..0000000000
--- a/thirdparty/libvpx/vp8/common/treecoder.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#if CONFIG_DEBUG
-#include <assert.h>
-#endif
-#include <stdio.h>
-
-#include "treecoder.h"
-
-static void tree2tok(
- struct vp8_token_struct *const p,
- vp8_tree t,
- int i,
- int v,
- int L
-)
-{
- v += v;
- ++L;
-
- do
- {
- const vp8_tree_index j = t[i++];
-
- if (j <= 0)
- {
- p[-j].value = v;
- p[-j].Len = L;
- }
- else
- tree2tok(p, t, j, v, L);
- }
- while (++v & 1);
-}
-
-void vp8_tokens_from_tree(struct vp8_token_struct *p, vp8_tree t)
-{
- tree2tok(p, t, 0, 0, 0);
-}
-
-void vp8_tokens_from_tree_offset(struct vp8_token_struct *p, vp8_tree t,
- int offset)
-{
- tree2tok(p - offset, t, 0, 0, 0);
-}
-
-static void branch_counts(
- int n, /* n = size of alphabet */
- vp8_token tok [ /* n */ ],
- vp8_tree tree,
- unsigned int branch_ct [ /* n-1 */ ] [2],
- const unsigned int num_events[ /* n */ ]
-)
-{
- const int tree_len = n - 1;
- int t = 0;
-
-#if CONFIG_DEBUG
- assert(tree_len);
-#endif
-
- do
- {
- branch_ct[t][0] = branch_ct[t][1] = 0;
- }
- while (++t < tree_len);
-
- t = 0;
-
- do
- {
- int L = tok[t].Len;
- const int enc = tok[t].value;
- const unsigned int ct = num_events[t];
-
- vp8_tree_index i = 0;
-
- do
- {
- const int b = (enc >> --L) & 1;
- const int j = i >> 1;
-#if CONFIG_DEBUG
- assert(j < tree_len && 0 <= L);
-#endif
-
- branch_ct [j] [b] += ct;
- i = tree[ i + b];
- }
- while (i > 0);
-
-#if CONFIG_DEBUG
- assert(!L);
-#endif
- }
- while (++t < n);
-
-}
-
-
-void vp8_tree_probs_from_distribution(
- int n, /* n = size of alphabet */
- vp8_token tok [ /* n */ ],
- vp8_tree tree,
- vp8_prob probs [ /* n-1 */ ],
- unsigned int branch_ct [ /* n-1 */ ] [2],
- const unsigned int num_events[ /* n */ ],
- unsigned int Pfac,
- int rd
-)
-{
- const int tree_len = n - 1;
- int t = 0;
-
- branch_counts(n, tok, tree, branch_ct, num_events);
-
- do
- {
- const unsigned int *const c = branch_ct[t];
- const unsigned int tot = c[0] + c[1];
-
-#if CONFIG_DEBUG
- assert(tot < (1 << 24)); /* no overflow below */
-#endif
-
- if (tot)
- {
- const unsigned int p = ((c[0] * Pfac) + (rd ? tot >> 1 : 0)) / tot;
- probs[t] = p < 256 ? (p ? p : 1) : 255; /* agree w/old version for now */
- }
- else
- probs[t] = vp8_prob_half;
- }
- while (++t < tree_len);
-}