| /* |
| * Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| |
| #ifndef POSTPROC_H |
| #define POSTPROC_H |
| |
| #define prototype_postproc_inplace(sym)\ |
| void sym (unsigned char *dst, int pitch, int rows, int cols,int flimit) |
| |
| #define prototype_postproc(sym)\ |
| void sym (unsigned char *src, unsigned char *dst, int src_pitch,\ |
| int dst_pitch, int rows, int cols, int flimit) |
| |
| #define prototype_postproc_addnoise(sym) \ |
| void sym (unsigned char *s, char *noise, char blackclamp[16],\ |
| char whiteclamp[16], char bothclamp[16],\ |
| unsigned int w, unsigned int h, int pitch) |
| |
| #if ARCH_X86 || ARCH_X86_64 |
| #include "x86/postproc_x86.h" |
| #endif |
| |
| #ifndef vp8_postproc_down |
| #define vp8_postproc_down vp8_mbpost_proc_down_c |
| #endif |
| extern prototype_postproc_inplace(vp8_postproc_down); |
| |
| #ifndef vp8_postproc_across |
| #define vp8_postproc_across vp8_mbpost_proc_across_ip_c |
| #endif |
| extern prototype_postproc_inplace(vp8_postproc_across); |
| |
| #ifndef vp8_postproc_downacross |
| #define vp8_postproc_downacross vp8_post_proc_down_and_across_c |
| #endif |
| extern prototype_postproc(vp8_postproc_downacross); |
| |
| #ifndef vp8_postproc_addnoise |
| #define vp8_postproc_addnoise vp8_plane_add_noise_c |
| #endif |
| extern prototype_postproc_addnoise(vp8_postproc_addnoise); |
| |
| |
| typedef prototype_postproc((*vp8_postproc_fn_t)); |
| typedef prototype_postproc_inplace((*vp8_postproc_inplace_fn_t)); |
| typedef prototype_postproc_addnoise((*vp8_postproc_addnoise_fn_t)); |
| typedef struct |
| { |
| vp8_postproc_inplace_fn_t down; |
| vp8_postproc_inplace_fn_t across; |
| vp8_postproc_fn_t downacross; |
| vp8_postproc_addnoise_fn_t addnoise; |
| } vp8_postproc_rtcd_vtable_t; |
| |
| #if CONFIG_RUNTIME_CPU_DETECT |
| #define POSTPROC_INVOKE(ctx,fn) (ctx)->fn |
| #else |
| #define POSTPROC_INVOKE(ctx,fn) vp8_postproc_##fn |
| #endif |
| |
| #include "vpx_ports/mem.h" |
| struct postproc_state |
| { |
| int last_q; |
| int last_noise; |
| char noise[3072]; |
| DECLARE_ALIGNED(16, char, blackclamp[16]); |
| DECLARE_ALIGNED(16, char, whiteclamp[16]); |
| DECLARE_ALIGNED(16, char, bothclamp[16]); |
| }; |
| #include "onyxc_int.h" |
| #include "ppflags.h" |
| int vp8_post_proc_frame(struct VP8Common *oci, YV12_BUFFER_CONFIG *dest, |
| int deblock_level, int noise_level, int flags); |
| |
| |
| void vp8_de_noise(YV12_BUFFER_CONFIG *source, |
| YV12_BUFFER_CONFIG *post, |
| int q, |
| int low_var_thresh, |
| int flag, |
| vp8_postproc_rtcd_vtable_t *rtcd); |
| |
| void vp8_deblock(YV12_BUFFER_CONFIG *source, |
| YV12_BUFFER_CONFIG *post, |
| int q, |
| int low_var_thresh, |
| int flag, |
| vp8_postproc_rtcd_vtable_t *rtcd); |
| #endif |