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