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.
15 #define prototype_postproc_inplace(sym)\
16 void sym (unsigned char *dst, int pitch, int rows, int cols,int flimit)
18 #define prototype_postproc(sym)\
19 void sym (unsigned char *src, unsigned char *dst, int src_pitch,\
20 int dst_pitch, int rows, int cols, int flimit)
22 #define prototype_postproc_addnoise(sym) \
23 void sym (unsigned char *s, char *noise, char blackclamp[16],\
24 char whiteclamp[16], char bothclamp[16],\
25 unsigned int w, unsigned int h, int pitch)
27 #define prototype_postproc_blend_mb_inner(sym)\
28 void sym (unsigned char *y, unsigned char *u, unsigned char *v,\
29 int y1, int u1, int v1, int alpha, int stride)
31 #define prototype_postproc_blend_mb_outer(sym)\
32 void sym (unsigned char *y, unsigned char *u, unsigned char *v,\
33 int y1, int u1, int v1, int alpha, int stride)
35 #define prototype_postproc_blend_b(sym)\
36 void sym (unsigned char *y, unsigned char *u, unsigned char *v,\
37 int y1, int u1, int v1, int alpha, int stride)
39 #if ARCH_X86 || ARCH_X86_64
40 #include "x86/postproc_x86.h"
43 #ifndef vp8_postproc_down
44 #define vp8_postproc_down vp8_mbpost_proc_down_c
46 extern prototype_postproc_inplace(vp8_postproc_down
);
48 #ifndef vp8_postproc_across
49 #define vp8_postproc_across vp8_mbpost_proc_across_ip_c
51 extern prototype_postproc_inplace(vp8_postproc_across
);
53 #ifndef vp8_postproc_downacross
54 #define vp8_postproc_downacross vp8_post_proc_down_and_across_c
56 extern prototype_postproc(vp8_postproc_downacross
);
58 #ifndef vp8_postproc_addnoise
59 #define vp8_postproc_addnoise vp8_plane_add_noise_c
61 extern prototype_postproc_addnoise(vp8_postproc_addnoise
);
63 #ifndef vp8_postproc_blend_mb_inner
64 #define vp8_postproc_blend_mb_inner vp8_blend_mb_inner_c
66 extern prototype_postproc_blend_mb_inner(vp8_postproc_blend_mb_inner
);
68 #ifndef vp8_postproc_blend_mb_outer
69 #define vp8_postproc_blend_mb_outer vp8_blend_mb_outer_c
71 extern prototype_postproc_blend_mb_outer(vp8_postproc_blend_mb_outer
);
73 #ifndef vp8_postproc_blend_b
74 #define vp8_postproc_blend_b vp8_blend_b_c
76 extern prototype_postproc_blend_b(vp8_postproc_blend_b
);
78 typedef prototype_postproc((*vp8_postproc_fn_t
));
79 typedef prototype_postproc_inplace((*vp8_postproc_inplace_fn_t
));
80 typedef prototype_postproc_addnoise((*vp8_postproc_addnoise_fn_t
));
81 typedef prototype_postproc_blend_mb_inner((*vp8_postproc_blend_mb_inner_fn_t
));
82 typedef prototype_postproc_blend_mb_outer((*vp8_postproc_blend_mb_outer_fn_t
));
83 typedef prototype_postproc_blend_b((*vp8_postproc_blend_b_fn_t
));
86 vp8_postproc_inplace_fn_t down
;
87 vp8_postproc_inplace_fn_t across
;
88 vp8_postproc_fn_t downacross
;
89 vp8_postproc_addnoise_fn_t addnoise
;
90 vp8_postproc_blend_mb_inner_fn_t blend_mb_inner
;
91 vp8_postproc_blend_mb_outer_fn_t blend_mb_outer
;
92 vp8_postproc_blend_b_fn_t blend_b
;
93 } vp8_postproc_rtcd_vtable_t
;
95 #if CONFIG_RUNTIME_CPU_DETECT
96 #define POSTPROC_INVOKE(ctx,fn) (ctx)->fn
98 #define POSTPROC_INVOKE(ctx,fn) vp8_postproc_##fn
101 #include "vpx_ports/mem.h"
102 struct postproc_state
107 DECLARE_ALIGNED(16, char, blackclamp
[16]);
108 DECLARE_ALIGNED(16, char, whiteclamp
[16]);
109 DECLARE_ALIGNED(16, char, bothclamp
[16]);
111 #include "onyxc_int.h"
113 int vp8_post_proc_frame(struct VP8Common
*oci
, YV12_BUFFER_CONFIG
*dest
,
114 vp8_ppflags_t
*flags
);
117 void vp8_de_noise(YV12_BUFFER_CONFIG
*source
,
118 YV12_BUFFER_CONFIG
*post
,
122 vp8_postproc_rtcd_vtable_t
*rtcd
);
124 void vp8_deblock(YV12_BUFFER_CONFIG
*source
,
125 YV12_BUFFER_CONFIG
*post
,
129 vp8_postproc_rtcd_vtable_t
*rtcd
);