1233d2500723e5594f3e7c70896ffeeef32b9c950ywan/* 2233d2500723e5594f3e7c70896ffeeef32b9c950ywan * Copyright (c) 2011 The WebM project authors. All Rights Reserved. 3233d2500723e5594f3e7c70896ffeeef32b9c950ywan * 4233d2500723e5594f3e7c70896ffeeef32b9c950ywan * Use of this source code is governed by a BSD-style license 5233d2500723e5594f3e7c70896ffeeef32b9c950ywan * that can be found in the LICENSE file in the root of the source 6233d2500723e5594f3e7c70896ffeeef32b9c950ywan * tree. An additional intellectual property rights grant can be found 7233d2500723e5594f3e7c70896ffeeef32b9c950ywan * in the file PATENTS. All contributing project authors may 8233d2500723e5594f3e7c70896ffeeef32b9c950ywan * be found in the AUTHORS file in the root of the source tree. 9233d2500723e5594f3e7c70896ffeeef32b9c950ywan */ 10233d2500723e5594f3e7c70896ffeeef32b9c950ywan 11233d2500723e5594f3e7c70896ffeeef32b9c950ywan 12233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vpx_ports/asm_offsets.h" 13233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vpx_config.h" 14233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "block.h" 15233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vp8/common/blockd.h" 16233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "onyx_int.h" 17233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "treewriter.h" 18233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "tokenize.h" 19233d2500723e5594f3e7c70896ffeeef32b9c950ywan 20233d2500723e5594f3e7c70896ffeeef32b9c950ywanBEGIN 21233d2500723e5594f3e7c70896ffeeef32b9c950ywan 22233d2500723e5594f3e7c70896ffeeef32b9c950ywan/* regular quantize */ 23233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_coeff, offsetof(BLOCK, coeff)); 24233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_zbin, offsetof(BLOCK, zbin)); 25233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_round, offsetof(BLOCK, round)); 26233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_quant, offsetof(BLOCK, quant)); 27233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_quant_fast, offsetof(BLOCK, quant_fast)); 28233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_zbin_extra, offsetof(BLOCK, zbin_extra)); 29233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_zrun_zbin_boost, offsetof(BLOCK, zrun_zbin_boost)); 30233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_quant_shift, offsetof(BLOCK, quant_shift)); 31233d2500723e5594f3e7c70896ffeeef32b9c950ywan 32233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_blockd_qcoeff, offsetof(BLOCKD, qcoeff)); 33233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_blockd_dequant, offsetof(BLOCKD, dequant)); 34233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_blockd_dqcoeff, offsetof(BLOCKD, dqcoeff)); 35233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_blockd_eob, offsetof(BLOCKD, eob)); 36233d2500723e5594f3e7c70896ffeeef32b9c950ywan 37233d2500723e5594f3e7c70896ffeeef32b9c950ywan/* subtract */ 38233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_base_src, offsetof(BLOCK, base_src)); 39233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_src, offsetof(BLOCK, src)); 40233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_src_diff, offsetof(BLOCK, src_diff)); 41233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_block_src_stride, offsetof(BLOCK, src_stride)); 42233d2500723e5594f3e7c70896ffeeef32b9c950ywan 43233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_blockd_predictor, offsetof(BLOCKD, predictor)); 44233d2500723e5594f3e7c70896ffeeef32b9c950ywan 45233d2500723e5594f3e7c70896ffeeef32b9c950ywan/* pack tokens */ 46233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_writer_lowvalue, offsetof(vp8_writer, lowvalue)); 47233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_writer_range, offsetof(vp8_writer, range)); 48233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_writer_count, offsetof(vp8_writer, count)); 49233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_writer_pos, offsetof(vp8_writer, pos)); 50233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_writer_buffer, offsetof(vp8_writer, buffer)); 51233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_writer_buffer_end, offsetof(vp8_writer, buffer_end)); 52233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_writer_error, offsetof(vp8_writer, error)); 53233d2500723e5594f3e7c70896ffeeef32b9c950ywan 54233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(tokenextra_token, offsetof(TOKENEXTRA, Token)); 55233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(tokenextra_extra, offsetof(TOKENEXTRA, Extra)); 56233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(tokenextra_context_tree, offsetof(TOKENEXTRA, context_tree)); 57233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(tokenextra_skip_eob_node, offsetof(TOKENEXTRA, skip_eob_node)); 58233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(TOKENEXTRA_SZ, sizeof(TOKENEXTRA)); 59233d2500723e5594f3e7c70896ffeeef32b9c950ywan 60233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_extra_bit_struct_sz, sizeof(vp8_extra_bit_struct)); 61233d2500723e5594f3e7c70896ffeeef32b9c950ywan 62233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_token_value, offsetof(vp8_token, value)); 63233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_token_len, offsetof(vp8_token, Len)); 64233d2500723e5594f3e7c70896ffeeef32b9c950ywan 65233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_extra_bit_struct_tree, offsetof(vp8_extra_bit_struct, tree)); 66233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_extra_bit_struct_prob, offsetof(vp8_extra_bit_struct, prob)); 67233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_extra_bit_struct_len, offsetof(vp8_extra_bit_struct, Len)); 68233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_extra_bit_struct_base_val, offsetof(vp8_extra_bit_struct, base_val)); 69233d2500723e5594f3e7c70896ffeeef32b9c950ywan 70233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_comp_tplist, offsetof(VP8_COMP, tplist)); 71233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_comp_common, offsetof(VP8_COMP, common)); 72233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_comp_bc , offsetof(VP8_COMP, bc)); 73233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_writer_sz , sizeof(vp8_writer)); 74233d2500723e5594f3e7c70896ffeeef32b9c950ywan 75233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(tokenlist_start, offsetof(TOKENLIST, start)); 76233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(tokenlist_stop, offsetof(TOKENLIST, stop)); 77233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(TOKENLIST_SZ, sizeof(TOKENLIST)); 78233d2500723e5594f3e7c70896ffeeef32b9c950ywan 79233d2500723e5594f3e7c70896ffeeef32b9c950ywanDEFINE(vp8_common_mb_rows, offsetof(VP8_COMMON, mb_rows)); 80233d2500723e5594f3e7c70896ffeeef32b9c950ywan 81233d2500723e5594f3e7c70896ffeeef32b9c950ywanEND 82233d2500723e5594f3e7c70896ffeeef32b9c950ywan 83233d2500723e5594f3e7c70896ffeeef32b9c950ywan/* add asserts for any offset that is not supported by assembly code 84233d2500723e5594f3e7c70896ffeeef32b9c950ywan * add asserts for any size that is not supported by assembly code 85233d2500723e5594f3e7c70896ffeeef32b9c950ywan 86233d2500723e5594f3e7c70896ffeeef32b9c950ywan * These are used in vp8cx_pack_tokens. They are hard coded so if their sizes 87233d2500723e5594f3e7c70896ffeeef32b9c950ywan * change they will have to be adjusted. 88233d2500723e5594f3e7c70896ffeeef32b9c950ywan */ 89233d2500723e5594f3e7c70896ffeeef32b9c950ywan 90233d2500723e5594f3e7c70896ffeeef32b9c950ywan#if HAVE_EDSP 91233d2500723e5594f3e7c70896ffeeef32b9c950ywanct_assert(TOKENEXTRA_SZ, sizeof(TOKENEXTRA) == 8) 92233d2500723e5594f3e7c70896ffeeef32b9c950ywanct_assert(vp8_extra_bit_struct_sz, sizeof(vp8_extra_bit_struct) == 16) 93233d2500723e5594f3e7c70896ffeeef32b9c950ywan#endif 94