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
121b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx_config.h"
131b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx_rtcd.h"
1479f15823c34ae1e423108295e416213200bb280fAndreas Huber#include "vp8/common/blockd.h"
1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "vpx_mem/vpx_mem.h"
1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
171b362b15af34006e6a11974088a46d42b903418eJohann#if HAVE_NEON
1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_build_intra_predictors_mby_neon_func(
1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *y_buffer,
2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *ypred_ptr,
2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int y_stride,
2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int mode,
2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Up,
2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Left);
2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8_build_intra_predictors_mby_neon(MACROBLOCKD *x)
2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{
2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *y_buffer = x->dst.y_buffer;
2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *ypred_ptr = x->predictor;
3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int y_stride = x->dst.y_stride;
31f71323e297a928af368937089d3ed71239786f86Andreas Huber    int mode = x->mode_info_context->mbmi.mode;
3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Up = x->up_available;
3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Left = x->left_available;
3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_build_intra_predictors_mby_neon_func(y_buffer, ypred_ptr, y_stride, mode, Up, Left);
3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_build_intra_predictors_mby_s_neon_func(
3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *y_buffer,
4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *ypred_ptr,
4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int y_stride,
4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int mode,
4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Up,
4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Left);
4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8_build_intra_predictors_mby_s_neon(MACROBLOCKD *x)
4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{
4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *y_buffer = x->dst.y_buffer;
4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *ypred_ptr = x->predictor;
5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int y_stride = x->dst.y_stride;
51f71323e297a928af368937089d3ed71239786f86Andreas Huber    int mode = x->mode_info_context->mbmi.mode;
5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Up = x->up_available;
5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Left = x->left_available;
5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_build_intra_predictors_mby_s_neon_func(y_buffer, ypred_ptr, y_stride, mode, Up, Left);
5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif
59