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#ifndef VPXSCALE_H 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#define VPXSCALE_H 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "vpx_scale/yv12config.h" 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_horizontal_line_4_5_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_last_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_horizontal_line_2_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_last_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_horizontal_line_3_5_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_last_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_horizontal_line_3_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_last_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_horizontal_line_1_2_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_last_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_vertical_band_5_4_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_vertical_band_5_3_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_vertical_band_2_1_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8cx_vertical_band_2_1_scale_i_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_vertical_band_4_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_last_vertical_band_4_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_vertical_band_2_3_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_last_vertical_band_2_3_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_vertical_band_3_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_last_vertical_band_3_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_vertical_band_3_4_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_last_vertical_band_3_4_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_horizontal_line_1_2_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_horizontal_line_3_4_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_horizontal_line_3_5_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_horizontal_line_2_3_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_horizontal_line_4_5_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_vertical_band_1_2_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_last_vertical_band_1_2_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_vertical_band_5_4_scale)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_vertical_band_5_3_scale)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_vertical_band_2_1_scale)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_vertical_band_2_1_scale_i)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_horizontal_line_2_1_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_horizontal_line_5_3_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_horizontal_line_5_4_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid horizontal_line_4_5_scale_armv4(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid horizontal_line_2_3_scale_armv4(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid horizontal_line_3_5_scale_armv4(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid horizontal_line_3_4_scale_armv4(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid horizontal_line_1_2_scale_armv4(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); 6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vertical_band_4_5_scale_armv4(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vertical_band_2_3_scale_armv4(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vertical_band_3_5_scale_armv4(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vertical_band_3_4_scale_armv4(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vertical_band_1_2_scale_armv4(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); 7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void dmachine_specific_config(int mmx_enabled, int xmm_enabled, int wmt_enabled); 7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_yv12_scale_or_center 7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber( 7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber YV12_BUFFER_CONFIG *src_yuv_config, 7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber YV12_BUFFER_CONFIG *dst_yuv_config, 8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int expanded_frame_width, 8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int expanded_frame_height, 8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int scaling_mode, 8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int HScale, 8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int HRatio, 8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int VScale, 8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int VRatio 8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber); 8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_scale_frame 8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber( 9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber YV12_BUFFER_CONFIG *src, 9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber YV12_BUFFER_CONFIG *dst, 9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber unsigned char *temp_area, 9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber unsigned char temp_height, 9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber unsigned int hscale, 9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber unsigned int hratio, 9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber unsigned int vscale, 9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber unsigned int vratio, 9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber unsigned int interlaced 9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber); 10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_scale_machine_specific_config(void); 10190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_yv12_extend_frame_borders_ptr)(YV12_BUFFER_CONFIG *ybf); 10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_yv12_extend_frame_borders(YV12_BUFFER_CONFIG *ybf); 10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_yv12_extend_frame_borders_neon(YV12_BUFFER_CONFIG *ybf); 10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_yv12_copy_frame_yonly_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); 10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_yv12_copy_frame_yonly(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); 10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_yv12_copy_frame_yonly_neon(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); 10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void (*vp8_yv12_copy_frame_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); 11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_yv12_copy_frame(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); 11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_yv12_copy_frame_neon(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); 11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif 115