Define RDCOST only once
[libvpx.git] / vp8 / encoder / asm_enc_offsets.c
blob9c81c8d0a5e7e7e3089bd3c80f9028bde4254f46
1 /*
2 * Copyright (c) 2011 The WebM project authors. All Rights Reserved.
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
12 #include "vpx_ports/config.h"
13 #include <stddef.h>
15 #include "block.h"
16 #include "vp8/common/blockd.h"
17 #include "onyx_int.h"
18 #include "treewriter.h"
19 #include "tokenize.h"
21 #define ct_assert(name,cond) \
22 static void assert_##name(void) UNUSED;\
23 static void assert_##name(void) {switch(0){case 0:case !!(cond):;}}
25 #define DEFINE(sym, val) int sym = val;
28 #define BLANK() asm volatile("\n->" : : )
32 * int main(void)
33 * {
36 //regular quantize
37 DEFINE(vp8_block_coeff, offsetof(BLOCK, coeff));
38 DEFINE(vp8_block_zbin, offsetof(BLOCK, zbin));
39 DEFINE(vp8_block_round, offsetof(BLOCK, round));
40 DEFINE(vp8_block_quant, offsetof(BLOCK, quant));
41 DEFINE(vp8_block_quant_fast, offsetof(BLOCK, quant_fast));
42 DEFINE(vp8_block_zbin_extra, offsetof(BLOCK, zbin_extra));
43 DEFINE(vp8_block_zrun_zbin_boost, offsetof(BLOCK, zrun_zbin_boost));
44 DEFINE(vp8_block_quant_shift, offsetof(BLOCK, quant_shift));
46 DEFINE(vp8_blockd_qcoeff, offsetof(BLOCKD, qcoeff));
47 DEFINE(vp8_blockd_dequant, offsetof(BLOCKD, dequant));
48 DEFINE(vp8_blockd_dqcoeff, offsetof(BLOCKD, dqcoeff));
49 DEFINE(vp8_blockd_eob, offsetof(BLOCKD, eob));
51 // subtract
52 DEFINE(vp8_block_base_src, offsetof(BLOCK, base_src));
53 DEFINE(vp8_block_src, offsetof(BLOCK, src));
54 DEFINE(vp8_block_src_diff, offsetof(BLOCK, src_diff));
55 DEFINE(vp8_block_src_stride, offsetof(BLOCK, src_stride));
57 DEFINE(vp8_blockd_predictor, offsetof(BLOCKD, predictor));
59 //pack tokens
60 DEFINE(vp8_writer_lowvalue, offsetof(vp8_writer, lowvalue));
61 DEFINE(vp8_writer_range, offsetof(vp8_writer, range));
62 DEFINE(vp8_writer_value, offsetof(vp8_writer, value));
63 DEFINE(vp8_writer_count, offsetof(vp8_writer, count));
64 DEFINE(vp8_writer_pos, offsetof(vp8_writer, pos));
65 DEFINE(vp8_writer_buffer, offsetof(vp8_writer, buffer));
67 DEFINE(tokenextra_token, offsetof(TOKENEXTRA, Token));
68 DEFINE(tokenextra_extra, offsetof(TOKENEXTRA, Extra));
69 DEFINE(tokenextra_context_tree, offsetof(TOKENEXTRA, context_tree));
70 DEFINE(tokenextra_skip_eob_node, offsetof(TOKENEXTRA, skip_eob_node));
71 DEFINE(TOKENEXTRA_SZ, sizeof(TOKENEXTRA));
73 DEFINE(vp8_extra_bit_struct_sz, sizeof(vp8_extra_bit_struct));
75 DEFINE(vp8_token_value, offsetof(vp8_token, value));
76 DEFINE(vp8_token_len, offsetof(vp8_token, Len));
78 DEFINE(vp8_extra_bit_struct_tree, offsetof(vp8_extra_bit_struct, tree));
79 DEFINE(vp8_extra_bit_struct_prob, offsetof(vp8_extra_bit_struct, prob));
80 DEFINE(vp8_extra_bit_struct_len, offsetof(vp8_extra_bit_struct, Len));
81 DEFINE(vp8_extra_bit_struct_base_val, offsetof(vp8_extra_bit_struct, base_val));
83 DEFINE(vp8_comp_tplist, offsetof(VP8_COMP, tplist));
84 DEFINE(vp8_comp_common, offsetof(VP8_COMP, common));
85 DEFINE(vp8_comp_bc2, offsetof(VP8_COMP, bc2));
87 DEFINE(tokenlist_start, offsetof(TOKENLIST, start));
88 DEFINE(tokenlist_stop, offsetof(TOKENLIST, stop));
89 DEFINE(TOKENLIST_SZ, sizeof(TOKENLIST));
91 DEFINE(vp8_common_mb_rows, offsetof(VP8_COMMON, mb_rows));
93 // These two sizes are used in vp8cx_pack_tokens. They are hard coded
94 // so if the size changes this will have to be adjusted.
95 #if HAVE_ARMV5TE
96 ct_assert(TOKENEXTRA_SZ, sizeof(TOKENEXTRA) == 8)
97 ct_assert(vp8_extra_bit_struct_sz, sizeof(vp8_extra_bit_struct) == 16)
98 #endif
100 //add asserts for any offset that is not supported by assembly code
101 //add asserts for any size that is not supported by assembly code
103 * return 0;