1474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/*
2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  Copyright (c) 2011 The WebM project authors. All Rights Reserved.
3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *
4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  Use of this source code is governed by a BSD-style license
5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  that can be found in the LICENSE file in the root of the source
6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  tree. An additional intellectual property rights grant can be found
7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  in the file PATENTS.  All contributing project authors may
8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  be found in the AUTHORS file in the root of the source tree.
9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org */
10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
118b26fe55f3e4daa2311dbd2d95e8ac2b4e080685johannkoenig@chromium.org#ifndef VP8_DECODER_EC_TYPES_H_
128b26fe55f3e4daa2311dbd2d95e8ac2b4e080685johannkoenig@chromium.org#define VP8_DECODER_EC_TYPES_H_
13474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
14dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus
15dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgextern "C" {
16dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif
17dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org
18474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define MAX_OVERLAPS 16
19474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
20474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
21474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* The area (pixel area in Q6) the block pointed to by bmi overlaps
22474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * another block with.
23474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org */
24474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgtypedef struct
25474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{
26474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    int overlap;
27474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    union b_mode_info *bmi;
28474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} OVERLAP_NODE;
29474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
30474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* Structure to keep track of overlapping blocks on a block level. */
31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgtypedef struct
32474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{
33474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    /* TODO(holmer): This array should be exchanged for a linked list */
34474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    OVERLAP_NODE overlaps[MAX_OVERLAPS];
35474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} B_OVERLAP;
36474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
37474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* Structure used to hold all the overlaps of a macroblock. The overlaps of a
38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * macroblock is further divided into block overlaps.
39474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org */
40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgtypedef struct
41474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{
42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    B_OVERLAP overlaps[16];
43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} MB_OVERLAP;
44474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* Structure for keeping track of motion vectors and which reference frame they
46474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * refer to. Used for motion vector interpolation.
47474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org */
48474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgtypedef struct
49474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{
50474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    MV mv;
51474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    MV_REFERENCE_FRAME ref_frame;
52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} EC_BLOCK;
53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
54dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus
55dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org}  // extern "C"
56dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif
57dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org
588b26fe55f3e4daa2311dbd2d95e8ac2b4e080685johannkoenig@chromium.org#endif  // VP8_DECODER_EC_TYPES_H_
59