xref: /aosp_15_r20/external/libvpx/vp8/common/entropymv.h (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
1*fb1b10abSAndroid Build Coastguard Worker /*
2*fb1b10abSAndroid Build Coastguard Worker  *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3*fb1b10abSAndroid Build Coastguard Worker  *
4*fb1b10abSAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*fb1b10abSAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*fb1b10abSAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*fb1b10abSAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*fb1b10abSAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*fb1b10abSAndroid Build Coastguard Worker  */
10*fb1b10abSAndroid Build Coastguard Worker 
11*fb1b10abSAndroid Build Coastguard Worker #ifndef VPX_VP8_COMMON_ENTROPYMV_H_
12*fb1b10abSAndroid Build Coastguard Worker #define VPX_VP8_COMMON_ENTROPYMV_H_
13*fb1b10abSAndroid Build Coastguard Worker 
14*fb1b10abSAndroid Build Coastguard Worker #include "treecoder.h"
15*fb1b10abSAndroid Build Coastguard Worker 
16*fb1b10abSAndroid Build Coastguard Worker #ifdef __cplusplus
17*fb1b10abSAndroid Build Coastguard Worker extern "C" {
18*fb1b10abSAndroid Build Coastguard Worker #endif
19*fb1b10abSAndroid Build Coastguard Worker 
20*fb1b10abSAndroid Build Coastguard Worker enum {
21*fb1b10abSAndroid Build Coastguard Worker   mv_max = 1023,             /* max absolute value of a MV component */
22*fb1b10abSAndroid Build Coastguard Worker   MVvals = (2 * mv_max) + 1, /* # possible values "" */
23*fb1b10abSAndroid Build Coastguard Worker   mvfp_max = 255, /* max absolute value of a full pixel MV component */
24*fb1b10abSAndroid Build Coastguard Worker   MVfpvals = (2 * mvfp_max) + 1, /* # possible full pixel MV values */
25*fb1b10abSAndroid Build Coastguard Worker 
26*fb1b10abSAndroid Build Coastguard Worker   mvlong_width = 10, /* Large MVs have 9 bit magnitudes */
27*fb1b10abSAndroid Build Coastguard Worker   mvnum_short = 8,   /* magnitudes 0 through 7 */
28*fb1b10abSAndroid Build Coastguard Worker 
29*fb1b10abSAndroid Build Coastguard Worker   /* probability offsets for coding each MV component */
30*fb1b10abSAndroid Build Coastguard Worker 
31*fb1b10abSAndroid Build Coastguard Worker   mvpis_short = 0, /* short (<= 7) vs long (>= 8) */
32*fb1b10abSAndroid Build Coastguard Worker   MVPsign,         /* sign for non-zero */
33*fb1b10abSAndroid Build Coastguard Worker   MVPshort,        /* 8 short values = 7-position tree */
34*fb1b10abSAndroid Build Coastguard Worker 
35*fb1b10abSAndroid Build Coastguard Worker   MVPbits = MVPshort + mvnum_short - 1, /* mvlong_width long value bits */
36*fb1b10abSAndroid Build Coastguard Worker   MVPcount = MVPbits + mvlong_width     /* (with independent probabilities) */
37*fb1b10abSAndroid Build Coastguard Worker };
38*fb1b10abSAndroid Build Coastguard Worker 
39*fb1b10abSAndroid Build Coastguard Worker typedef struct mv_context {
40*fb1b10abSAndroid Build Coastguard Worker   vp8_prob prob[MVPcount]; /* often come in row, col pairs */
41*fb1b10abSAndroid Build Coastguard Worker } MV_CONTEXT;
42*fb1b10abSAndroid Build Coastguard Worker 
43*fb1b10abSAndroid Build Coastguard Worker extern const MV_CONTEXT vp8_mv_update_probs[2], vp8_default_mv_context[2];
44*fb1b10abSAndroid Build Coastguard Worker 
45*fb1b10abSAndroid Build Coastguard Worker #ifdef __cplusplus
46*fb1b10abSAndroid Build Coastguard Worker }  // extern "C"
47*fb1b10abSAndroid Build Coastguard Worker #endif
48*fb1b10abSAndroid Build Coastguard Worker 
49*fb1b10abSAndroid Build Coastguard Worker #endif  // VPX_VP8_COMMON_ENTROPYMV_H_
50