190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/*
2f71323e297a928af368937089d3ed71239786f86Andreas Huber *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *
4f71323e297a928af368937089d3ed71239786f86Andreas Huber *  Use of this source code is governed by a BSD-style license
5f71323e297a928af368937089d3ed71239786f86Andreas Huber *  that can be found in the LICENSE file in the root of the source
6f71323e297a928af368937089d3ed71239786f86Andreas Huber *  tree. An additional intellectual property rights grant can be found
7f71323e297a928af368937089d3ed71239786f86Andreas Huber *  in the file PATENTS.  All contributing project authors may
8f71323e297a928af368937089d3ed71239786f86Andreas Huber *  be found in the AUTHORS file in the root of the source tree.
990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber */
1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "vpx_ports/config.h"
1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include <stddef.h>
1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#if CONFIG_VP8_ENCODER
1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "vpx_scale/yv12config.h"
1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif
1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#if CONFIG_VP8_DECODER
2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "onyxd_int.h"
2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif
2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#define DEFINE(sym, val) int sym = val;
2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/*
2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#define BLANK() asm volatile("\n->" : : )
2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber*/
2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/*
3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * int main(void)
3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * {
3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber */
3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#if CONFIG_VP8_DECODER || CONFIG_VP8_ENCODER
35f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(yv12_buffer_config_y_width,              offsetof(YV12_BUFFER_CONFIG, y_width));
36f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(yv12_buffer_config_y_height,             offsetof(YV12_BUFFER_CONFIG, y_height));
37f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(yv12_buffer_config_y_stride,             offsetof(YV12_BUFFER_CONFIG, y_stride));
38f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(yv12_buffer_config_uv_width,             offsetof(YV12_BUFFER_CONFIG, uv_width));
39f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(yv12_buffer_config_uv_height,            offsetof(YV12_BUFFER_CONFIG, uv_height));
40f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(yv12_buffer_config_uv_stride,            offsetof(YV12_BUFFER_CONFIG, uv_stride));
41f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(yv12_buffer_config_y_buffer,             offsetof(YV12_BUFFER_CONFIG, y_buffer));
42f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(yv12_buffer_config_u_buffer,             offsetof(YV12_BUFFER_CONFIG, u_buffer));
43f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(yv12_buffer_config_v_buffer,             offsetof(YV12_BUFFER_CONFIG, v_buffer));
4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberDEFINE(yv12_buffer_config_border,               offsetof(YV12_BUFFER_CONFIG, border));
4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif
4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#if CONFIG_VP8_DECODER
4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberDEFINE(mb_diff,                                 offsetof(MACROBLOCKD, diff));
4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberDEFINE(mb_predictor,                            offsetof(MACROBLOCKD, predictor));
50f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(mb_dst_y_stride,                         offsetof(MACROBLOCKD, dst.y_stride));
51f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(mb_dst_y_buffer,                         offsetof(MACROBLOCKD, dst.y_buffer));
52f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(mb_dst_u_buffer,                         offsetof(MACROBLOCKD, dst.u_buffer));
53f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(mb_dst_v_buffer,                         offsetof(MACROBLOCKD, dst.v_buffer));
54f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(mb_up_available,                         offsetof(MACROBLOCKD, up_available));
55f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(mb_left_available,                       offsetof(MACROBLOCKD, left_available));
5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberDEFINE(detok_scan,                              offsetof(DETOK, scan));
58f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(detok_ptr_block2leftabove,               offsetof(DETOK, ptr_block2leftabove));
59f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(detok_coef_tree_ptr,                     offsetof(DETOK, vp8_coef_tree_ptr));
60f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(detok_teb_base_ptr,                      offsetof(DETOK, teb_base_ptr));
61f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(detok_norm_ptr,                          offsetof(DETOK, norm_ptr));
62f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(detok_ptr_coef_bands_x,                  offsetof(DETOK, ptr_coef_bands_x));
6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
64f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(detok_A,                                 offsetof(DETOK, A));
65f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(detok_L,                                 offsetof(DETOK, L));
6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
67f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(detok_qcoeff_start_ptr,                  offsetof(DETOK, qcoeff_start_ptr));
68f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(detok_current_bc,                        offsetof(DETOK, current_bc));
69f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(detok_coef_probs,                        offsetof(DETOK, coef_probs));
7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberDEFINE(detok_eob,                               offsetof(DETOK, eob));
7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
72f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(bool_decoder_user_buffer_end,            offsetof(BOOL_DECODER, user_buffer_end));
73f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(bool_decoder_user_buffer,                offsetof(BOOL_DECODER, user_buffer));
7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberDEFINE(bool_decoder_value,                      offsetof(BOOL_DECODER, value));
7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberDEFINE(bool_decoder_count,                      offsetof(BOOL_DECODER, count));
76f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(bool_decoder_range,                      offsetof(BOOL_DECODER, range));
7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
78f71323e297a928af368937089d3ed71239786f86Andreas HuberDEFINE(tokenextrabits_min_val,                  offsetof(TOKENEXTRABITS, min_val));
7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberDEFINE(tokenextrabits_length,                   offsetof(TOKENEXTRABITS, Length));
8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif
8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber//add asserts for any offset that is not supported by assembly code
8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber//add asserts for any size that is not supported by assembly code
8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/*
8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * return 0;
8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * }
8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber */
88