2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
14 #include "loopfilter.h"
17 #include "onyxc_int.h"
19 void (*vp8_short_idct4x4
)(short *input
, short *output
, int pitch
);
20 void (*vp8_short_idct4x4_1
)(short *input
, short *output
, int pitch
);
21 void (*vp8_dc_only_idct
)(short input_dc
, short *output
, int pitch
);
23 extern void (*vp8_post_proc_down_and_across
)(
24 unsigned char *src_ptr
,
25 unsigned char *dst_ptr
,
26 int src_pixels_per_line
,
27 int dst_pixels_per_line
,
33 extern void (*vp8_mbpost_proc_down
)(unsigned char *dst
, int pitch
, int rows
, int cols
, int flimit
);
34 extern void vp8_mbpost_proc_down_c(unsigned char *dst
, int pitch
, int rows
, int cols
, int flimit
);
35 extern void (*vp8_mbpost_proc_across_ip
)(unsigned char *src
, int pitch
, int rows
, int cols
, int flimit
);
36 extern void vp8_mbpost_proc_across_ip_c(unsigned char *src
, int pitch
, int rows
, int cols
, int flimit
);
38 extern void vp8_post_proc_down_and_across_c
40 unsigned char *src_ptr
,
41 unsigned char *dst_ptr
,
42 int src_pixels_per_line
,
43 int dst_pixels_per_line
,
48 void vp8_plane_add_noise_c(unsigned char *Start
, unsigned int Width
, unsigned int Height
, int Pitch
, int q
, int a
);
50 extern copy_mem_block_function
*vp8_copy_mem16x16
;
51 extern copy_mem_block_function
*vp8_copy_mem8x8
;
52 extern copy_mem_block_function
*vp8_copy_mem8x4
;
55 extern subpixel_predict_function sixtap_predict_ppc
;
56 extern subpixel_predict_function sixtap_predict8x4_ppc
;
57 extern subpixel_predict_function sixtap_predict8x8_ppc
;
58 extern subpixel_predict_function sixtap_predict16x16_ppc
;
59 extern subpixel_predict_function bilinear_predict4x4_ppc
;
60 extern subpixel_predict_function bilinear_predict8x4_ppc
;
61 extern subpixel_predict_function bilinear_predict8x8_ppc
;
62 extern subpixel_predict_function bilinear_predict16x16_ppc
;
64 extern copy_mem_block_function copy_mem16x16_ppc
;
66 void recon_b_ppc(short *diff_ptr
, unsigned char *pred_ptr
, unsigned char *dst_ptr
, int stride
);
67 void recon2b_ppc(short *diff_ptr
, unsigned char *pred_ptr
, unsigned char *dst_ptr
, int stride
);
68 void recon4b_ppc(short *diff_ptr
, unsigned char *pred_ptr
, unsigned char *dst_ptr
, int stride
);
70 extern void short_idct4x4llm_ppc(short *input
, short *output
, int pitch
);
73 extern subpixel_predict_function vp8_sixtap_predict_c
;
74 extern subpixel_predict_function vp8_sixtap_predict8x4_c
;
75 extern subpixel_predict_function vp8_sixtap_predict8x8_c
;
76 extern subpixel_predict_function vp8_sixtap_predict16x16_c
;
77 extern subpixel_predict_function vp8_bilinear_predict4x4_c
;
78 extern subpixel_predict_function vp8_bilinear_predict8x4_c
;
79 extern subpixel_predict_function vp8_bilinear_predict8x8_c
;
80 extern subpixel_predict_function vp8_bilinear_predict16x16_c
;
82 extern copy_mem_block_function vp8_copy_mem16x16_c
;
83 extern copy_mem_block_function vp8_copy_mem8x8_c
;
84 extern copy_mem_block_function vp8_copy_mem8x4_c
;
86 void vp8_recon_b_c(short *diff_ptr
, unsigned char *pred_ptr
, unsigned char *dst_ptr
, int stride
);
87 void vp8_recon2b_c(short *diff_ptr
, unsigned char *pred_ptr
, unsigned char *dst_ptr
, int stride
);
88 void vp8_recon4b_c(short *diff_ptr
, unsigned char *pred_ptr
, unsigned char *dst_ptr
, int stride
);
90 extern void vp8_short_idct4x4llm_1_c(short *input
, short *output
, int pitch
);
91 extern void vp8_short_idct4x4llm_c(short *input
, short *output
, int pitch
);
92 extern void vp8_dc_only_idct_c(short input_dc
, short *output
, int pitch
);
95 extern loop_filter_block_function loop_filter_mbv_ppc
;
96 extern loop_filter_block_function loop_filter_bv_ppc
;
97 extern loop_filter_block_function loop_filter_mbh_ppc
;
98 extern loop_filter_block_function loop_filter_bh_ppc
;
100 extern loop_filter_block_function loop_filter_mbvs_ppc
;
101 extern loop_filter_block_function loop_filter_bvs_ppc
;
102 extern loop_filter_block_function loop_filter_mbhs_ppc
;
103 extern loop_filter_block_function loop_filter_bhs_ppc
;
106 extern loop_filter_block_function vp8_loop_filter_mbv_c
;
107 extern loop_filter_block_function vp8_loop_filter_bv_c
;
108 extern loop_filter_block_function vp8_loop_filter_mbh_c
;
109 extern loop_filter_block_function vp8_loop_filter_bh_c
;
111 extern loop_filter_block_function vp8_loop_filter_mbvs_c
;
112 extern loop_filter_block_function vp8_loop_filter_bvs_c
;
113 extern loop_filter_block_function vp8_loop_filter_mbhs_c
;
114 extern loop_filter_block_function vp8_loop_filter_bhs_c
;
116 extern loop_filter_block_function
*vp8_lf_mbvfull
;
117 extern loop_filter_block_function
*vp8_lf_mbhfull
;
118 extern loop_filter_block_function
*vp8_lf_bvfull
;
119 extern loop_filter_block_function
*vp8_lf_bhfull
;
121 extern loop_filter_block_function
*vp8_lf_mbvsimple
;
122 extern loop_filter_block_function
*vp8_lf_mbhsimple
;
123 extern loop_filter_block_function
*vp8_lf_bvsimple
;
124 extern loop_filter_block_function
*vp8_lf_bhsimple
;
126 void vp8_clear_c(void)
130 void vp8_machine_specific_config(void)
133 vp8_clear_system_state
= vp8_clear_c
;
134 vp8_recon_b
= vp8_recon_b_c
;
135 vp8_recon4b
= vp8_recon4b_c
;
136 vp8_recon2b
= vp8_recon2b_c
;
138 vp8_bilinear_predict16x16
= bilinear_predict16x16_ppc
;
139 vp8_bilinear_predict8x8
= bilinear_predict8x8_ppc
;
140 vp8_bilinear_predict8x4
= bilinear_predict8x4_ppc
;
141 vp8_bilinear_predict
= bilinear_predict4x4_ppc
;
143 vp8_sixtap_predict16x16
= sixtap_predict16x16_ppc
;
144 vp8_sixtap_predict8x8
= sixtap_predict8x8_ppc
;
145 vp8_sixtap_predict8x4
= sixtap_predict8x4_ppc
;
146 vp8_sixtap_predict
= sixtap_predict_ppc
;
148 vp8_short_idct4x4_1
= vp8_short_idct4x4llm_1_c
;
149 vp8_short_idct4x4
= short_idct4x4llm_ppc
;
150 vp8_dc_only_idct
= vp8_dc_only_idct_c
;
152 vp8_lf_mbvfull
= loop_filter_mbv_ppc
;
153 vp8_lf_bvfull
= loop_filter_bv_ppc
;
154 vp8_lf_mbhfull
= loop_filter_mbh_ppc
;
155 vp8_lf_bhfull
= loop_filter_bh_ppc
;
157 vp8_lf_mbvsimple
= loop_filter_mbvs_ppc
;
158 vp8_lf_bvsimple
= loop_filter_bvs_ppc
;
159 vp8_lf_mbhsimple
= loop_filter_mbhs_ppc
;
160 vp8_lf_bhsimple
= loop_filter_bhs_ppc
;
162 vp8_post_proc_down_and_across
= vp8_post_proc_down_and_across_c
;
163 vp8_mbpost_proc_down
= vp8_mbpost_proc_down_c
;
164 vp8_mbpost_proc_across_ip
= vp8_mbpost_proc_across_ip_c
;
165 vp8_plane_add_noise
= vp8_plane_add_noise_c
;
167 vp8_copy_mem16x16
= copy_mem16x16_ppc
;
168 vp8_copy_mem8x8
= vp8_copy_mem8x8_c
;
169 vp8_copy_mem8x4
= vp8_copy_mem8x4_c
;