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