|
1 #ifndef VPX_SCALE_RTCD_H_ |
|
2 #define VPX_SCALE_RTCD_H_ |
|
3 |
|
4 #ifdef RTCD_C |
|
5 #define RTCD_EXTERN |
|
6 #else |
|
7 #define RTCD_EXTERN extern |
|
8 #endif |
|
9 |
|
10 struct yv12_buffer_config; |
|
11 |
|
12 void vp8_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); |
|
13 #define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c |
|
14 |
|
15 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); |
|
16 #define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c |
|
17 |
|
18 void vp8_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); |
|
19 #define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c |
|
20 |
|
21 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); |
|
22 #define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c |
|
23 |
|
24 void vp8_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); |
|
25 #define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c |
|
26 |
|
27 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); |
|
28 #define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c |
|
29 |
|
30 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); |
|
31 #define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c |
|
32 |
|
33 void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf); |
|
34 void vp8_yv12_extend_frame_borders_neon(struct yv12_buffer_config *ybf); |
|
35 RTCD_EXTERN void (*vp8_yv12_extend_frame_borders)(struct yv12_buffer_config *ybf); |
|
36 |
|
37 void vp8_yv12_copy_frame_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); |
|
38 void vp8_yv12_copy_frame_neon(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); |
|
39 RTCD_EXTERN void (*vp8_yv12_copy_frame)(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); |
|
40 |
|
41 void vpx_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); |
|
42 void vpx_yv12_copy_y_neon(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); |
|
43 RTCD_EXTERN void (*vpx_yv12_copy_y)(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); |
|
44 |
|
45 void vp9_extend_frame_borders_c(struct yv12_buffer_config *ybf, int subsampling_x, int subsampling_y); |
|
46 #define vp9_extend_frame_borders vp9_extend_frame_borders_c |
|
47 |
|
48 void vp9_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, int subsampling_x, int subsampling_y); |
|
49 #define vp9_extend_frame_inner_borders vp9_extend_frame_inner_borders_c |
|
50 |
|
51 void vpx_scale_rtcd(void); |
|
52 #include "vpx_config.h" |
|
53 |
|
54 #ifdef RTCD_C |
|
55 #include "vpx_ports/arm.h" |
|
56 static void setup_rtcd_internal(void) |
|
57 { |
|
58 int flags = arm_cpu_caps(); |
|
59 |
|
60 (void)flags; |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 vp8_yv12_extend_frame_borders = vp8_yv12_extend_frame_borders_c; |
|
70 if (flags & HAS_NEON) vp8_yv12_extend_frame_borders = vp8_yv12_extend_frame_borders_neon; |
|
71 |
|
72 vp8_yv12_copy_frame = vp8_yv12_copy_frame_c; |
|
73 if (flags & HAS_NEON) vp8_yv12_copy_frame = vp8_yv12_copy_frame_neon; |
|
74 |
|
75 vpx_yv12_copy_y = vpx_yv12_copy_y_c; |
|
76 if (flags & HAS_NEON) vpx_yv12_copy_y = vpx_yv12_copy_y_neon; |
|
77 } |
|
78 #endif |
|
79 #endif |