1ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org/* 2ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org * Copyright (c) 2013 The WebM project authors. All Rights Reserved. 3ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org * 4ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org * Use of this source code is governed by a BSD-style license 5ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org * that can be found in the LICENSE file in the root of the source 6ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org * tree. An additional intellectual property rights grant can be found 7ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org * in the file PATENTS. All contributing project authors may 8ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org * be found in the AUTHORS file in the root of the source tree. 9ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org */ 10ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org 11ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org#ifndef VP9_COMMON_VP9_SCAN_H_ 12ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org#define VP9_COMMON_VP9_SCAN_H_ 13ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org 14ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org#include "vpx/vpx_integer.h" 15ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org#include "vpx_ports/mem.h" 16ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org 17ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org#include "vp9/common/vp9_enums.h" 18d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "vp9/common/vp9_blockd.h" 19ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org 20dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus 21dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgextern "C" { 22dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif 23dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org 24ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org#define MAX_NEIGHBORS 2 25ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org 26ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.orgvoid vp9_init_neighbors(); 27ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org 28d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgtypedef struct { 29d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org const int16_t *scan; 30d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org const int16_t *iscan; 31d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org const int16_t *neighbors; 32d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org} scan_order; 33ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org 34d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgextern const scan_order vp9_default_scan_orders[TX_SIZES]; 35d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgextern const scan_order vp9_scan_orders[TX_SIZES][TX_TYPES]; 36ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org 37ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.orgstatic INLINE int get_coef_context(const int16_t *neighbors, 38d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org const uint8_t *token_cache, int c) { 39ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org return (1 + token_cache[neighbors[MAX_NEIGHBORS * c + 0]] + 40ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org token_cache[neighbors[MAX_NEIGHBORS * c + 1]]) >> 1; 41ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org} 42ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org 43dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus 44dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org} // extern "C" 45dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif 46dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org 47ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org#endif // VP9_COMMON_VP9_SCAN_H_ 48