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