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 "blockd.h"
1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "reconintra.h"
1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "vpx_mem/vpx_mem.h"
1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "recon.h"
1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#if HAVE_ARMV7
1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_build_intra_predictors_mby_neon_func(
2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *y_buffer,
2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *ypred_ptr,
2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int y_stride,
2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int mode,
2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Up,
2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Left);
2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8_build_intra_predictors_mby_neon(MACROBLOCKD *x)
2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{
2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *y_buffer = x->dst.y_buffer;
3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *ypred_ptr = x->predictor;
3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int y_stride = x->dst.y_stride;
32f71323e297a928af368937089d3ed71239786f86Andreas Huber    int mode = x->mode_info_context->mbmi.mode;
3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Up = x->up_available;
3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Left = x->left_available;
3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_build_intra_predictors_mby_neon_func(y_buffer, ypred_ptr, y_stride, mode, Up, Left);
3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif
3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#if HAVE_ARMV7
4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_build_intra_predictors_mby_s_neon_func(
4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *y_buffer,
4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *ypred_ptr,
4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int y_stride,
4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int mode,
4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Up,
4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Left);
4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8_build_intra_predictors_mby_s_neon(MACROBLOCKD *x)
5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{
5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *y_buffer = x->dst.y_buffer;
5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned char *ypred_ptr = x->predictor;
5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int y_stride = x->dst.y_stride;
55f71323e297a928af368937089d3ed71239786f86Andreas Huber    int mode = x->mode_info_context->mbmi.mode;
5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Up = x->up_available;
5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Left = x->left_available;
5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_build_intra_predictors_mby_s_neon_func(y_buffer, ypred_ptr, y_stride, mode, Up, Left);
6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif
63