vp9_quantize.h revision 4fb68e5dd4e93c7599dc905d861de11ac39c5585
1ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang/* 2ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * 4ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * Use of this source code is governed by a BSD-style license 5ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * that can be found in the LICENSE file in the root of the source 6ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * tree. An additional intellectual property rights grant can be found 7ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * in the file PATENTS. All contributing project authors may 8ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * be found in the AUTHORS file in the root of the source tree. 9ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang */ 10ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 11ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#ifndef VP9_ENCODER_VP9_QUANTIZE_H_ 12ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#define VP9_ENCODER_VP9_QUANTIZE_H_ 13ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 14ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#include "vp9/encoder/vp9_block.h" 15ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 162ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#ifdef __cplusplus 172ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianextern "C" { 182ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#endif 192ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 204fb68e5dd4e93c7599dc905d861de11ac39c5585hkuangtypedef struct { 214fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, y_quant[QINDEX_RANGE][8]); 224fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, y_quant_shift[QINDEX_RANGE][8]); 234fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, y_zbin[QINDEX_RANGE][8]); 244fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, y_round[QINDEX_RANGE][8]); 254fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang 264fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, uv_quant[QINDEX_RANGE][8]); 274fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, uv_quant_shift[QINDEX_RANGE][8]); 284fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, uv_zbin[QINDEX_RANGE][8]); 294fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, uv_round[QINDEX_RANGE][8]); 304fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang 314fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang#if CONFIG_ALPHA 324fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, a_quant[QINDEX_RANGE][8]); 334fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, a_quant_shift[QINDEX_RANGE][8]); 344fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, a_zbin[QINDEX_RANGE][8]); 354fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang DECLARE_ALIGNED(16, int16_t, a_round[QINDEX_RANGE][8]); 364fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang#endif 374fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang} QUANTS; 384fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang 392ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvoid vp9_regular_quantize_b_4x4(MACROBLOCK *x, int plane, int block, 405ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang const int16_t *scan, const int16_t *iscan); 41ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 42ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangstruct VP9_COMP; 434fb68e5dd4e93c7599dc905d861de11ac39c5585hkuangstruct VP9Common; 44ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 455ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangvoid vp9_frame_init_quantizer(struct VP9_COMP *cpi); 46ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 475ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangvoid vp9_update_zbin_extra(struct VP9_COMP *cpi, MACROBLOCK *x); 48ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 492ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvoid vp9_init_plane_quantizers(struct VP9_COMP *cpi, MACROBLOCK *x); 50ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 515ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangvoid vp9_init_quantizer(struct VP9_COMP *cpi); 52ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 534fb68e5dd4e93c7599dc905d861de11ac39c5585hkuangvoid vp9_set_quantizer(struct VP9Common *cm, int q); 544fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang 552ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#ifdef __cplusplus 562ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} // extern "C" 572ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#endif 582ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 59ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#endif // VP9_ENCODER_VP9_QUANTIZE_H_ 60