annotate libmpcodecs/vf_boxblur.c @ 24576:6704a924d4aa

According to MSDN a thread must call CoUninitialize once for each successful call it has made to CoInitialize or CoInitializeEx, including any call that returns S_FALSE. Only the CoUninitialize call corresponding to the CoInitialize or CoInitializeEx call that initialized the library can close it. patch by Gianluigi Tiesi, mplayer netfarm it
author diego
date Sun, 23 Sep 2007 20:37:33 +0000
parents f8d4f8eff72b
children c2b7ba444ade
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8010
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
1 /*
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
2 Copyright (C) 2002 Michael Niedermayer <michaelni@gmx.at>
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
3
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
4 This program is free software; you can redistribute it and/or modify
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
6 the Free Software Foundation; either version 2 of the License, or
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
7 (at your option) any later version.
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
8
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
12 GNU General Public License for more details.
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
13
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
15 along with this program; if not, write to the Free Software
17367
401b440a6d76 Update licensing information: The FSF changed postal address.
diego
parents: 17012
diff changeset
16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
8010
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
17 */
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
18
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
19 #include <stdio.h>
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
20 #include <stdlib.h>
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
21 #include <string.h>
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
22 #include <inttypes.h>
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
23 #include <assert.h>
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
24
17012
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 16155
diff changeset
25 #include "config.h"
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 16155
diff changeset
26 #include "mp_msg.h"
8010
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
27
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
28 #ifdef HAVE_MALLOC_H
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
29 #include <malloc.h>
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
30 #endif
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
31
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
32 #include "img_format.h"
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
33 #include "mp_image.h"
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
34 #include "vf.h"
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
35
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
36
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
37 //===========================================================================//
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
38
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
39 typedef struct FilterParam{
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
40 int radius;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
41 int power;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
42 }FilterParam;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
43
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
44 struct vf_priv_s {
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
45 FilterParam lumaParam;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
46 FilterParam chromaParam;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
47 };
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
48
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
49
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
50 /***************************************************************************/
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
51
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
52
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
53 static int config(struct vf_instance_s* vf,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
54 int width, int height, int d_width, int d_height,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
55 unsigned int flags, unsigned int outfmt){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
56
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
57 return vf_next_config(vf,width,height,d_width,d_height,flags,outfmt);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
58 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
59
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
60 static inline void blur(uint8_t *dst, uint8_t *src, int w, int radius, int dstStep, int srcStep){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
61 int x;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
62 const int length= radius*2 + 1;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
63 const int inv= ((1<<16) + length/2)/length;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
64
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
65 int sum= 0;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
66
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
67 for(x=0; x<radius; x++){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
68 sum+= src[x*srcStep]<<1;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
69 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
70 sum+= src[radius*srcStep];
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
71
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
72 for(x=0; x<=radius; x++){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
73 sum+= src[(radius+x)*srcStep] - src[(radius-x)*srcStep];
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
74 dst[x*dstStep]= (sum*inv + (1<<15))>>16;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
75 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
76
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
77 for(; x<w-radius; x++){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
78 sum+= src[(radius+x)*srcStep] - src[(x-radius-1)*srcStep];
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
79 dst[x*dstStep]= (sum*inv + (1<<15))>>16;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
80 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
81
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
82 for(; x<w; x++){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
83 sum+= src[(2*w-radius-x-1)*srcStep] - src[(x-radius-1)*srcStep];
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
84 dst[x*dstStep]= (sum*inv + (1<<15))>>16;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
85 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
86 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
87
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
88 static inline void blur2(uint8_t *dst, uint8_t *src, int w, int radius, int power, int dstStep, int srcStep){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
89 uint8_t temp[2][4096];
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
90 uint8_t *a= temp[0], *b=temp[1];
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
91
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
92 if(radius){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
93 blur(a, src, w, radius, 1, srcStep);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
94 for(; power>2; power--){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
95 uint8_t *c;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
96 blur(b, a, w, radius, 1, 1);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
97 c=a; a=b; b=c;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
98 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
99 if(power>1)
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
100 blur(dst, a, w, radius, dstStep, 1);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
101 else{
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
102 int i;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
103 for(i=0; i<w; i++)
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
104 dst[i*dstStep]= a[i];
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
105 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
106 }else{
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
107 int i;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
108 for(i=0; i<w; i++)
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
109 dst[i*dstStep]= src[i*srcStep];
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
110 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
111 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
112
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
113 static void hBlur(uint8_t *dst, uint8_t *src, int w, int h, int dstStride, int srcStride, int radius, int power){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
114 int y;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
115
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
116 if(radius==0 && dst==src) return;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
117
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
118 for(y=0; y<h; y++){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
119 blur2(dst + y*dstStride, src + y*srcStride, w, radius, power, 1, 1);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
120 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
121 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
122
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
123 //FIXME optimize (x before y !!!)
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
124 static void vBlur(uint8_t *dst, uint8_t *src, int w, int h, int dstStride, int srcStride, int radius, int power){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
125 int x;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
126
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
127 if(radius==0 && dst==src) return;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
128
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
129 for(x=0; x<w; x++){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
130 blur2(dst + x, src + x, h, radius, power, dstStride, srcStride);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
131 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
132 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
133
17906
20aca9baf5d8 passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents: 17367
diff changeset
134 static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts){
8010
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
135 int cw= mpi->w >> mpi->chroma_x_shift;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
136 int ch= mpi->h >> mpi->chroma_y_shift;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
137
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
138 mp_image_t *dmpi=vf_get_image(vf->next,mpi->imgfmt,
16155
c0ab9ab83f4c vBlur reads from dmpi, so request a readable one
reimar
parents: 9593
diff changeset
139 MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE | MP_IMGFLAG_READABLE,
8010
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
140 mpi->w,mpi->h);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
141
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
142 assert(mpi->flags&MP_IMGFLAG_PLANAR);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
143
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
144 hBlur(dmpi->planes[0], mpi->planes[0], mpi->w,mpi->h,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
145 dmpi->stride[0], mpi->stride[0], vf->priv->lumaParam.radius, vf->priv->lumaParam.power);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
146 hBlur(dmpi->planes[1], mpi->planes[1], cw,ch,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
147 dmpi->stride[1], mpi->stride[1], vf->priv->chromaParam.radius, vf->priv->chromaParam.power);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
148 hBlur(dmpi->planes[2], mpi->planes[2], cw,ch,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
149 dmpi->stride[2], mpi->stride[2], vf->priv->chromaParam.radius, vf->priv->chromaParam.power);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
150
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
151 vBlur(dmpi->planes[0], dmpi->planes[0], mpi->w,mpi->h,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
152 dmpi->stride[0], dmpi->stride[0], vf->priv->lumaParam.radius, vf->priv->lumaParam.power);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
153 vBlur(dmpi->planes[1], dmpi->planes[1], cw,ch,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
154 dmpi->stride[1], dmpi->stride[1], vf->priv->chromaParam.radius, vf->priv->chromaParam.power);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
155 vBlur(dmpi->planes[2], dmpi->planes[2], cw,ch,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
156 dmpi->stride[2], dmpi->stride[2], vf->priv->chromaParam.radius, vf->priv->chromaParam.power);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
157
17906
20aca9baf5d8 passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents: 17367
diff changeset
158 return vf_next_put_image(vf,dmpi, pts);
8010
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
159 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
160
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
161 //===========================================================================//
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
162
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
163 static int query_format(struct vf_instance_s* vf, unsigned int fmt){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
164 switch(fmt)
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
165 {
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
166 case IMGFMT_YV12:
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
167 case IMGFMT_I420:
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
168 case IMGFMT_IYUV:
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
169 case IMGFMT_YVU9:
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
170 case IMGFMT_444P:
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
171 case IMGFMT_422P:
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
172 case IMGFMT_411P:
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
173 return vf_next_query_format(vf, fmt);
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
174 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
175 return 0;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
176 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
177
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
178 static int open(vf_instance_t *vf, char* args){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
179 int e;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
180
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
181 vf->config=config;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
182 vf->put_image=put_image;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
183 // vf->get_image=get_image;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
184 vf->query_format=query_format;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
185 vf->priv=malloc(sizeof(struct vf_priv_s));
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
186 memset(vf->priv, 0, sizeof(struct vf_priv_s));
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
187
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
188 if(args==NULL) return 0;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
189
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
190 e=sscanf(args, "%d:%d:%d:%d",
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
191 &vf->priv->lumaParam.radius,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
192 &vf->priv->lumaParam.power,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
193 &vf->priv->chromaParam.radius,
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
194 &vf->priv->chromaParam.power
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
195 );
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
196
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
197 if(e==2){
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
198 vf->priv->chromaParam.radius= vf->priv->lumaParam.radius;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
199 vf->priv->chromaParam.power = vf->priv->lumaParam.power;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
200 }else if(e!=4)
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
201 return 0;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
202
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
203 if(vf->priv->lumaParam.radius < 0) return 0;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
204 if(vf->priv->chromaParam.radius < 0) return 0;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
205
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
206 return 1;
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
207 }
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
208
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
209 vf_info_t vf_info_boxblur = {
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
210 "box blur",
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
211 "boxblur",
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
212 "Michael Niedermayer",
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
213 "",
9593
e9a2af584986 Add the new -vf option wich is the same as vop in reverse order.
albeu
parents: 8123
diff changeset
214 open,
e9a2af584986 Add the new -vf option wich is the same as vop in reverse order.
albeu
parents: 8123
diff changeset
215 NULL
8010
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
216 };
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
217
329e9a5a154f boxblur, another useless filter
michael
parents:
diff changeset
218 //===========================================================================//