1/*
2 *  Copyright (c) 2011 The WebM project authors. All Rights Reserved.
3 *
4 *  Use of this source code is governed by a BSD-style license
5 *  that can be found in the LICENSE file in the root of the source
6 *  tree. An additional intellectual property rights grant can be found
7 *  in the file PATENTS.  All contributing project authors may
8 *  be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef VP8_DECODER_EC_TYPES_H_
12#define VP8_DECODER_EC_TYPES_H_
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18#define MAX_OVERLAPS 16
19
20/* The area (pixel area in Q6) the block pointed to by bmi overlaps
21 * another block with.
22 */
23typedef struct {
24  int overlap;
25  union b_mode_info *bmi;
26} OVERLAP_NODE;
27
28/* Structure to keep track of overlapping blocks on a block level. */
29typedef struct {
30  /* TODO(holmer): This array should be exchanged for a linked list */
31  OVERLAP_NODE overlaps[MAX_OVERLAPS];
32} B_OVERLAP;
33
34/* Structure used to hold all the overlaps of a macroblock. The overlaps of a
35 * macroblock is further divided into block overlaps.
36 */
37typedef struct { B_OVERLAP overlaps[16]; } MB_OVERLAP;
38
39/* Structure for keeping track of motion vectors and which reference frame they
40 * refer to. Used for motion vector interpolation.
41 */
42typedef struct {
43  MV mv;
44  MV_REFERENCE_FRAME ref_frame;
45} EC_BLOCK;
46
47#ifdef __cplusplus
48}  // extern "C"
49#endif
50
51#endif  // VP8_DECODER_EC_TYPES_H_
52