11b362b15af34006e6a11974088a46d42b903418eJohann/*
21b362b15af34006e6a11974088a46d42b903418eJohann *  Copyright (c) 2011 The WebM project authors. All Rights Reserved.
31b362b15af34006e6a11974088a46d42b903418eJohann *
41b362b15af34006e6a11974088a46d42b903418eJohann *  Use of this source code is governed by a BSD-style license
51b362b15af34006e6a11974088a46d42b903418eJohann *  that can be found in the LICENSE file in the root of the source
61b362b15af34006e6a11974088a46d42b903418eJohann *  tree. An additional intellectual property rights grant can be found
71b362b15af34006e6a11974088a46d42b903418eJohann *  in the file PATENTS.  All contributing project authors may
81b362b15af34006e6a11974088a46d42b903418eJohann *  be found in the AUTHORS file in the root of the source tree.
91b362b15af34006e6a11974088a46d42b903418eJohann */
101b362b15af34006e6a11974088a46d42b903418eJohann
11b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#ifndef VP8_DECODER_EC_TYPES_H_
12b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#define VP8_DECODER_EC_TYPES_H_
13b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian
14b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#ifdef __cplusplus
15b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanianextern "C" {
16b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#endif
171b362b15af34006e6a11974088a46d42b903418eJohann
181b362b15af34006e6a11974088a46d42b903418eJohann#define MAX_OVERLAPS 16
191b362b15af34006e6a11974088a46d42b903418eJohann
201b362b15af34006e6a11974088a46d42b903418eJohann
211b362b15af34006e6a11974088a46d42b903418eJohann/* The area (pixel area in Q6) the block pointed to by bmi overlaps
221b362b15af34006e6a11974088a46d42b903418eJohann * another block with.
231b362b15af34006e6a11974088a46d42b903418eJohann */
241b362b15af34006e6a11974088a46d42b903418eJohanntypedef struct
251b362b15af34006e6a11974088a46d42b903418eJohann{
261b362b15af34006e6a11974088a46d42b903418eJohann    int overlap;
271b362b15af34006e6a11974088a46d42b903418eJohann    union b_mode_info *bmi;
281b362b15af34006e6a11974088a46d42b903418eJohann} OVERLAP_NODE;
291b362b15af34006e6a11974088a46d42b903418eJohann
301b362b15af34006e6a11974088a46d42b903418eJohann/* Structure to keep track of overlapping blocks on a block level. */
311b362b15af34006e6a11974088a46d42b903418eJohanntypedef struct
321b362b15af34006e6a11974088a46d42b903418eJohann{
331b362b15af34006e6a11974088a46d42b903418eJohann    /* TODO(holmer): This array should be exchanged for a linked list */
341b362b15af34006e6a11974088a46d42b903418eJohann    OVERLAP_NODE overlaps[MAX_OVERLAPS];
351b362b15af34006e6a11974088a46d42b903418eJohann} B_OVERLAP;
361b362b15af34006e6a11974088a46d42b903418eJohann
371b362b15af34006e6a11974088a46d42b903418eJohann/* Structure used to hold all the overlaps of a macroblock. The overlaps of a
381b362b15af34006e6a11974088a46d42b903418eJohann * macroblock is further divided into block overlaps.
391b362b15af34006e6a11974088a46d42b903418eJohann */
401b362b15af34006e6a11974088a46d42b903418eJohanntypedef struct
411b362b15af34006e6a11974088a46d42b903418eJohann{
421b362b15af34006e6a11974088a46d42b903418eJohann    B_OVERLAP overlaps[16];
431b362b15af34006e6a11974088a46d42b903418eJohann} MB_OVERLAP;
441b362b15af34006e6a11974088a46d42b903418eJohann
451b362b15af34006e6a11974088a46d42b903418eJohann/* Structure for keeping track of motion vectors and which reference frame they
461b362b15af34006e6a11974088a46d42b903418eJohann * refer to. Used for motion vector interpolation.
471b362b15af34006e6a11974088a46d42b903418eJohann */
481b362b15af34006e6a11974088a46d42b903418eJohanntypedef struct
491b362b15af34006e6a11974088a46d42b903418eJohann{
501b362b15af34006e6a11974088a46d42b903418eJohann    MV mv;
511b362b15af34006e6a11974088a46d42b903418eJohann    MV_REFERENCE_FRAME ref_frame;
521b362b15af34006e6a11974088a46d42b903418eJohann} EC_BLOCK;
531b362b15af34006e6a11974088a46d42b903418eJohann
54b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#ifdef __cplusplus
55b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian}  // extern "C"
56b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#endif
57b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian
58b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#endif  // VP8_DECODER_EC_TYPES_H_
59