1a9ffcceee9214342dab2085a35452acaa41003c5Christian König/************************************************************************** 2a9ffcceee9214342dab2085a35452acaa41003c5Christian König * 3a9ffcceee9214342dab2085a35452acaa41003c5Christian König * Copyright 2012 Christian König. 4a9ffcceee9214342dab2085a35452acaa41003c5Christian König * All Rights Reserved. 5a9ffcceee9214342dab2085a35452acaa41003c5Christian König * 6a9ffcceee9214342dab2085a35452acaa41003c5Christian König * Permission is hereby granted, free of charge, to any person obtaining a 7a9ffcceee9214342dab2085a35452acaa41003c5Christian König * copy of this software and associated documentation files (the 8a9ffcceee9214342dab2085a35452acaa41003c5Christian König * "Software"), to deal in the Software without restriction, including 9a9ffcceee9214342dab2085a35452acaa41003c5Christian König * without limitation the rights to use, copy, modify, merge, publish, 10a9ffcceee9214342dab2085a35452acaa41003c5Christian König * distribute, sub license, and/or sell copies of the Software, and to 11a9ffcceee9214342dab2085a35452acaa41003c5Christian König * permit persons to whom the Software is furnished to do so, subject to 12a9ffcceee9214342dab2085a35452acaa41003c5Christian König * the following conditions: 13a9ffcceee9214342dab2085a35452acaa41003c5Christian König * 14a9ffcceee9214342dab2085a35452acaa41003c5Christian König * The above copyright notice and this permission notice (including the 15a9ffcceee9214342dab2085a35452acaa41003c5Christian König * next paragraph) shall be included in all copies or substantial portions 16a9ffcceee9214342dab2085a35452acaa41003c5Christian König * of the Software. 17a9ffcceee9214342dab2085a35452acaa41003c5Christian König * 18a9ffcceee9214342dab2085a35452acaa41003c5Christian König * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19a9ffcceee9214342dab2085a35452acaa41003c5Christian König * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20a9ffcceee9214342dab2085a35452acaa41003c5Christian König * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21a9ffcceee9214342dab2085a35452acaa41003c5Christian König * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22a9ffcceee9214342dab2085a35452acaa41003c5Christian König * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23a9ffcceee9214342dab2085a35452acaa41003c5Christian König * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24a9ffcceee9214342dab2085a35452acaa41003c5Christian König * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25a9ffcceee9214342dab2085a35452acaa41003c5Christian König * 26a9ffcceee9214342dab2085a35452acaa41003c5Christian König **************************************************************************/ 27a9ffcceee9214342dab2085a35452acaa41003c5Christian König 28a9ffcceee9214342dab2085a35452acaa41003c5Christian König/* implementation of a median filter for noise reduction */ 29a9ffcceee9214342dab2085a35452acaa41003c5Christian König 30a9ffcceee9214342dab2085a35452acaa41003c5Christian König#ifndef vl_median_filter_h 31a9ffcceee9214342dab2085a35452acaa41003c5Christian König#define vl_median_filter_h 32a9ffcceee9214342dab2085a35452acaa41003c5Christian König 33a9ffcceee9214342dab2085a35452acaa41003c5Christian König#include "pipe/p_state.h" 34a9ffcceee9214342dab2085a35452acaa41003c5Christian König 35a9ffcceee9214342dab2085a35452acaa41003c5Christian Königenum vl_median_filter_shape 36a9ffcceee9214342dab2085a35452acaa41003c5Christian König{ 37a9ffcceee9214342dab2085a35452acaa41003c5Christian König VL_MEDIAN_FILTER_BOX, 38a9ffcceee9214342dab2085a35452acaa41003c5Christian König VL_MEDIAN_FILTER_CROSS, 39a9ffcceee9214342dab2085a35452acaa41003c5Christian König VL_MEDIAN_FILTER_X, 40a9ffcceee9214342dab2085a35452acaa41003c5Christian König VL_MEDIAN_FILTER_HORIZONTAL, 41a9ffcceee9214342dab2085a35452acaa41003c5Christian König VL_MEDIAN_FILTER_VERTICAL 42a9ffcceee9214342dab2085a35452acaa41003c5Christian König}; 43a9ffcceee9214342dab2085a35452acaa41003c5Christian König 44a9ffcceee9214342dab2085a35452acaa41003c5Christian Königstruct vl_median_filter 45a9ffcceee9214342dab2085a35452acaa41003c5Christian König{ 46a9ffcceee9214342dab2085a35452acaa41003c5Christian König struct pipe_context *pipe; 47a9ffcceee9214342dab2085a35452acaa41003c5Christian König struct pipe_vertex_buffer quad; 48a9ffcceee9214342dab2085a35452acaa41003c5Christian König 49a9ffcceee9214342dab2085a35452acaa41003c5Christian König void *rs_state; 50a9ffcceee9214342dab2085a35452acaa41003c5Christian König void *blend; 51a9ffcceee9214342dab2085a35452acaa41003c5Christian König void *sampler; 52a9ffcceee9214342dab2085a35452acaa41003c5Christian König void *ves; 53a9ffcceee9214342dab2085a35452acaa41003c5Christian König void *vs, *fs; 54a9ffcceee9214342dab2085a35452acaa41003c5Christian König}; 55a9ffcceee9214342dab2085a35452acaa41003c5Christian König 56a9ffcceee9214342dab2085a35452acaa41003c5Christian Königbool 57a9ffcceee9214342dab2085a35452acaa41003c5Christian Königvl_median_filter_init(struct vl_median_filter *filter, struct pipe_context *pipe, 58a9ffcceee9214342dab2085a35452acaa41003c5Christian König unsigned width, unsigned height, unsigned size, 59a9ffcceee9214342dab2085a35452acaa41003c5Christian König enum vl_median_filter_shape shape); 60a9ffcceee9214342dab2085a35452acaa41003c5Christian König 61a9ffcceee9214342dab2085a35452acaa41003c5Christian Königvoid 62a9ffcceee9214342dab2085a35452acaa41003c5Christian Königvl_median_filter_cleanup(struct vl_median_filter *filter); 63a9ffcceee9214342dab2085a35452acaa41003c5Christian König 64a9ffcceee9214342dab2085a35452acaa41003c5Christian König 65a9ffcceee9214342dab2085a35452acaa41003c5Christian Königvoid 66a9ffcceee9214342dab2085a35452acaa41003c5Christian Königvl_median_filter_render(struct vl_median_filter *filter, 67a9ffcceee9214342dab2085a35452acaa41003c5Christian König struct pipe_sampler_view *src, 68a9ffcceee9214342dab2085a35452acaa41003c5Christian König struct pipe_surface *dst); 69a9ffcceee9214342dab2085a35452acaa41003c5Christian König 70a9ffcceee9214342dab2085a35452acaa41003c5Christian König#endif /* vl_median_filter_h */ 71