michael@0: #ifndef VPX_SCALE_RTCD_H_ michael@0: #define VPX_SCALE_RTCD_H_ michael@0: michael@0: #ifdef RTCD_C michael@0: #define RTCD_EXTERN michael@0: #else michael@0: #define RTCD_EXTERN extern michael@0: #endif michael@0: michael@0: struct yv12_buffer_config; michael@0: michael@0: void vp8_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); michael@0: #define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c michael@0: michael@0: void vp8_vertical_band_5_4_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); michael@0: #define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c michael@0: michael@0: void vp8_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); michael@0: #define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c michael@0: michael@0: void vp8_vertical_band_5_3_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); michael@0: #define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c michael@0: michael@0: void vp8_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); michael@0: #define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c michael@0: michael@0: void vp8_vertical_band_2_1_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width); michael@0: #define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c michael@0: michael@0: void vp8_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); michael@0: #define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c michael@0: michael@0: void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf); michael@0: void vp8_yv12_extend_frame_borders_neon(struct yv12_buffer_config *ybf); michael@0: RTCD_EXTERN void (*vp8_yv12_extend_frame_borders)(struct yv12_buffer_config *ybf); michael@0: michael@0: void vp8_yv12_copy_frame_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); michael@0: void vp8_yv12_copy_frame_neon(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); michael@0: RTCD_EXTERN void (*vp8_yv12_copy_frame)(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); michael@0: michael@0: void vpx_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); michael@0: void vpx_yv12_copy_y_neon(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); michael@0: RTCD_EXTERN void (*vpx_yv12_copy_y)(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); michael@0: michael@0: void vp9_extend_frame_borders_c(struct yv12_buffer_config *ybf, int subsampling_x, int subsampling_y); michael@0: #define vp9_extend_frame_borders vp9_extend_frame_borders_c michael@0: michael@0: void vp9_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, int subsampling_x, int subsampling_y); michael@0: #define vp9_extend_frame_inner_borders vp9_extend_frame_inner_borders_c michael@0: michael@0: void vpx_scale_rtcd(void); michael@0: #include "vpx_config.h" michael@0: michael@0: #ifdef RTCD_C michael@0: #include "vpx_ports/arm.h" michael@0: static void setup_rtcd_internal(void) michael@0: { michael@0: int flags = arm_cpu_caps(); michael@0: michael@0: (void)flags; michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: vp8_yv12_extend_frame_borders = vp8_yv12_extend_frame_borders_c; michael@0: if (flags & HAS_NEON) vp8_yv12_extend_frame_borders = vp8_yv12_extend_frame_borders_neon; michael@0: michael@0: vp8_yv12_copy_frame = vp8_yv12_copy_frame_c; michael@0: if (flags & HAS_NEON) vp8_yv12_copy_frame = vp8_yv12_copy_frame_neon; michael@0: michael@0: vpx_yv12_copy_y = vpx_yv12_copy_y_c; michael@0: if (flags & HAS_NEON) vpx_yv12_copy_y = vpx_yv12_copy_y_neon; michael@0: } michael@0: #endif michael@0: #endif