annotate libmpcodecs/vf_boxblur.c @ 27265:aa77b7a4a6bf

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