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