15ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang/* 25ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang * Copyright (c) 2013 The WebM project authors. All Rights Reserved. 35ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang * 45ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang * Use of this source code is governed by a BSD-style license 55ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang * that can be found in the LICENSE file in the root of the source 65ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang * tree. An additional intellectual property rights grant can be found 75ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang * in the file PATENTS. All contributing project authors may 85ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang * be found in the AUTHORS file in the root of the source tree. 95ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang */ 105ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#ifndef VP9_COMMON_VP9_SCAN_H_ 125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#define VP9_COMMON_VP9_SCAN_H_ 135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 145ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#include "vpx/vpx_integer.h" 155ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#include "vpx_ports/mem.h" 165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#include "vp9/common/vp9_enums.h" 18b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#include "vp9/common/vp9_blockd.h" 195ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 20b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#ifdef __cplusplus 21b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanianextern "C" { 22b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#endif 235ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 24b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#define MAX_NEIGHBORS 2 255ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 265ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangvoid vp9_init_neighbors(); 275ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 28b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramaniantypedef struct { 29b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian const int16_t *scan; 30b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian const int16_t *iscan; 31b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian const int16_t *neighbors; 32b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian} scan_order; 335ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 34b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanianextern const scan_order vp9_default_scan_orders[TX_SIZES]; 35b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanianextern const scan_order vp9_scan_orders[TX_SIZES][TX_TYPES]; 365ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 375ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangstatic INLINE int get_coef_context(const int16_t *neighbors, 385ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang const uint8_t *token_cache, int c) { 395ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang return (1 + token_cache[neighbors[MAX_NEIGHBORS * c + 0]] + 405ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang token_cache[neighbors[MAX_NEIGHBORS * c + 1]]) >> 1; 415ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang} 425ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 43b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#ifdef __cplusplus 44b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian} // extern "C" 45b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#endif 46b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 475ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#endif // VP9_COMMON_VP9_SCAN_H_ 48