annotate libmpcodecs/vf_test.c @ 28063:a318969a4f45

Set the base size window manager hint, otherwise some subtract the minimum size of 4x4 from the numbers displayed to the user which might be confusing. Based on patch by Bert Wesarg [bert wesarg googlemail com].
author reimar
date Fri, 05 Dec 2008 19:01:49 +0000
parents 82601a38e2a7
children a7b908875c14
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
1 /*
26727
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
2 * Copyright (C) 2002 Michael Niedermayer <michaelni@gmx.at>
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
3 *
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
4 * This file is part of MPlayer.
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
5 *
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
6 * MPlayer is free software; you can redistribute it and/or modify
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
7 * it under the terms of the GNU General Public License as published by
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
9 * (at your option) any later version.
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
10 *
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
11 * MPlayer is distributed in the hope that it will be useful,
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
14 * GNU General Public License for more details.
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
15 *
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
16 * You should have received a copy of the GNU General Public License along
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
17 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
82601a38e2a7 Use standard license headers.
diego
parents: 25221
diff changeset
19 */
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
20
a88b82461c17 test pattern filter
michael
parents:
diff changeset
21 #include <stdio.h>
a88b82461c17 test pattern filter
michael
parents:
diff changeset
22 #include <stdlib.h>
a88b82461c17 test pattern filter
michael
parents:
diff changeset
23 #include <string.h>
a88b82461c17 test pattern filter
michael
parents:
diff changeset
24 #include <inttypes.h>
a88b82461c17 test pattern filter
michael
parents:
diff changeset
25
17012
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 9593
diff changeset
26 #include "config.h"
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 9593
diff changeset
27 #include "mp_msg.h"
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17906
diff changeset
28 #include "help_mp.h"
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
29
a88b82461c17 test pattern filter
michael
parents:
diff changeset
30 #include "img_format.h"
a88b82461c17 test pattern filter
michael
parents:
diff changeset
31 #include "mp_image.h"
a88b82461c17 test pattern filter
michael
parents:
diff changeset
32 #include "vf.h"
a88b82461c17 test pattern filter
michael
parents:
diff changeset
33
a88b82461c17 test pattern filter
michael
parents:
diff changeset
34 //===========================================================================//
a88b82461c17 test pattern filter
michael
parents:
diff changeset
35
a88b82461c17 test pattern filter
michael
parents:
diff changeset
36 #include <inttypes.h>
a88b82461c17 test pattern filter
michael
parents:
diff changeset
37 #include <math.h>
a88b82461c17 test pattern filter
michael
parents:
diff changeset
38
a88b82461c17 test pattern filter
michael
parents:
diff changeset
39 #define MAX(a,b) ((a) > (b) ? (a) : (b))
a88b82461c17 test pattern filter
michael
parents:
diff changeset
40 #define MIN(a,b) ((a) < (b) ? (a) : (b))
a88b82461c17 test pattern filter
michael
parents:
diff changeset
41 #define ABS(a,b) ((a) > 0 ? (a) : -(a))
a88b82461c17 test pattern filter
michael
parents:
diff changeset
42
a88b82461c17 test pattern filter
michael
parents:
diff changeset
43 #define WIDTH 512
a88b82461c17 test pattern filter
michael
parents:
diff changeset
44 #define HEIGHT 512
a88b82461c17 test pattern filter
michael
parents:
diff changeset
45
6413
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
46 struct vf_priv_s {
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
47 int frame_num;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
48 };
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
49
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
50 static int config(struct vf_instance_s* vf,
a88b82461c17 test pattern filter
michael
parents:
diff changeset
51 int width, int height, int d_width, int d_height,
a88b82461c17 test pattern filter
michael
parents:
diff changeset
52 unsigned int flags, unsigned int outfmt){
a88b82461c17 test pattern filter
michael
parents:
diff changeset
53
a88b82461c17 test pattern filter
michael
parents:
diff changeset
54 if(vf_next_query_format(vf,IMGFMT_YV12)<=0){
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17906
diff changeset
55 mp_msg(MSGT_VFILTER, MSGL_WARN, MSGTR_MPCODECS_WarnNextFilterDoesntSupport, "YV12");
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
56 return 0;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
57 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
58
a88b82461c17 test pattern filter
michael
parents:
diff changeset
59 //hmm whats the meaning of these ... ;)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
60 d_width= width= WIDTH;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
61 d_height= height= HEIGHT;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
62
a88b82461c17 test pattern filter
michael
parents:
diff changeset
63 return vf_next_config(vf,width,height,d_width,d_height,flags,IMGFMT_YV12);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
64 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
65
a88b82461c17 test pattern filter
michael
parents:
diff changeset
66 static double c[64];
a88b82461c17 test pattern filter
michael
parents:
diff changeset
67
17566
f580a7755ac5 Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents: 17367
diff changeset
68 static void initIdct(void)
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
69 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
70 int i;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
71
a88b82461c17 test pattern filter
michael
parents:
diff changeset
72 for (i=0; i<8; i++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
73 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
74 double s= i==0 ? sqrt(0.125) : 0.5;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
75 int j;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
76
a88b82461c17 test pattern filter
michael
parents:
diff changeset
77 for(j=0; j<8; j++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
78 c[i*8+j]= s*cos((3.141592654/8.0)*i*(j+0.5));
a88b82461c17 test pattern filter
michael
parents:
diff changeset
79 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
80 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
81
a88b82461c17 test pattern filter
michael
parents:
diff changeset
82
a88b82461c17 test pattern filter
michael
parents:
diff changeset
83 static void idct(uint8_t *dst, int dstStride, int src[64])
a88b82461c17 test pattern filter
michael
parents:
diff changeset
84 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
85 int i, j, k;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
86 double tmp[64];
a88b82461c17 test pattern filter
michael
parents:
diff changeset
87
a88b82461c17 test pattern filter
michael
parents:
diff changeset
88 for(i=0; i<8; i++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
89 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
90 for(j=0; j<8; j++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
91 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
92 double sum= 0.0;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
93
a88b82461c17 test pattern filter
michael
parents:
diff changeset
94 for(k=0; k<8; k++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
95 sum+= c[k*8+j]*src[8*i+k];
a88b82461c17 test pattern filter
michael
parents:
diff changeset
96
a88b82461c17 test pattern filter
michael
parents:
diff changeset
97 tmp[8*i+j]= sum;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
98 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
99 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
100
a88b82461c17 test pattern filter
michael
parents:
diff changeset
101 for(j=0; j<8; j++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
102 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
103 for(i=0; i<8; i++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
104 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
105 int v;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
106 double sum= 0.0;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
107
a88b82461c17 test pattern filter
michael
parents:
diff changeset
108 for(k=0; k<8; k++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
109 sum+= c[k*8+i]*tmp[8*k+j];
a88b82461c17 test pattern filter
michael
parents:
diff changeset
110
6413
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
111 v= (int)floor(sum+0.5);
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
112 if(v<0) v=0;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
113 else if(v>255) v=255;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
114
a88b82461c17 test pattern filter
michael
parents:
diff changeset
115 dst[dstStride*i + j] = v;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
116 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
117 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
118 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
119
a88b82461c17 test pattern filter
michael
parents:
diff changeset
120 static void drawDc(uint8_t *dst, int stride, int color, int w, int h)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
121 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
122 int y;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
123 for(y=0; y<h; y++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
124 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
125 int x;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
126 for(x=0; x<w; x++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
127 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
128 dst[x + y*stride]= color;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
129 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
130 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
131 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
132
a88b82461c17 test pattern filter
michael
parents:
diff changeset
133 static void drawBasis(uint8_t *dst, int stride, int amp, int freq, int dc)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
134 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
135 int src[64];
a88b82461c17 test pattern filter
michael
parents:
diff changeset
136
a88b82461c17 test pattern filter
michael
parents:
diff changeset
137 memset(src, 0, 64*sizeof(int));
a88b82461c17 test pattern filter
michael
parents:
diff changeset
138 src[0]= dc;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
139 if(amp) src[freq]= amp;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
140 idct(dst, stride, src);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
141 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
142
a88b82461c17 test pattern filter
michael
parents:
diff changeset
143 static void drawCbp(uint8_t *dst[3], int stride[3], int cbp, int amp, int dc)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
144 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
145 if(cbp&1) drawBasis(dst[0] , stride[0], amp, 1, dc);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
146 if(cbp&2) drawBasis(dst[0]+8 , stride[0], amp, 1, dc);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
147 if(cbp&4) drawBasis(dst[0]+ 8*stride[0], stride[0], amp, 1, dc);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
148 if(cbp&8) drawBasis(dst[0]+8+8*stride[0], stride[0], amp, 1, dc);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
149 if(cbp&16)drawBasis(dst[1] , stride[1], amp, 1, dc);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
150 if(cbp&32)drawBasis(dst[2] , stride[2], amp, 1, dc);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
151 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
152
a88b82461c17 test pattern filter
michael
parents:
diff changeset
153 static void dc1Test(uint8_t *dst, int stride, int w, int h, int off)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
154 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
155 const int step= MAX(256/(w*h/256), 1);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
156 int y;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
157 int color=off;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
158 for(y=0; y<h; y+=16)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
159 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
160 int x;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
161 for(x=0; x<w; x+=16)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
162 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
163 drawDc(dst + x + y*stride, stride, color, 8, 8);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
164 color+=step;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
165 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
166 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
167 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
168
a88b82461c17 test pattern filter
michael
parents:
diff changeset
169 static void freq1Test(uint8_t *dst, int stride, int off)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
170 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
171 int y;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
172 int freq=0;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
173 for(y=0; y<8*16; y+=16)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
174 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
175 int x;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
176 for(x=0; x<8*16; x+=16)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
177 {
6413
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
178 drawBasis(dst + x + y*stride, stride, 4*(96+off), freq, 128*8);
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
179 freq++;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
180 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
181 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
182 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
183
a88b82461c17 test pattern filter
michael
parents:
diff changeset
184 static void amp1Test(uint8_t *dst, int stride, int off)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
185 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
186 int y;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
187 int amp=off;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
188 for(y=0; y<16*16; y+=16)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
189 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
190 int x;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
191 for(x=0; x<16*16; x+=16)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
192 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
193 drawBasis(dst + x + y*stride, stride, 4*(amp), 1, 128*8);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
194 amp++;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
195 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
196 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
197 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
198
a88b82461c17 test pattern filter
michael
parents:
diff changeset
199 static void cbp1Test(uint8_t *dst[3], int stride[3], int off)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
200 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
201 int y;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
202 int cbp=0;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
203 for(y=0; y<16*8; y+=16)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
204 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
205 int x;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
206 for(x=0; x<16*8; x+=16)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
207 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
208 uint8_t *dst1[3];
a88b82461c17 test pattern filter
michael
parents:
diff changeset
209 dst1[0]= dst[0] + x*2 + y*2*stride[0];
a88b82461c17 test pattern filter
michael
parents:
diff changeset
210 dst1[1]= dst[1] + x + y*stride[1];
a88b82461c17 test pattern filter
michael
parents:
diff changeset
211 dst1[2]= dst[2] + x + y*stride[2];
a88b82461c17 test pattern filter
michael
parents:
diff changeset
212
a88b82461c17 test pattern filter
michael
parents:
diff changeset
213 drawCbp(dst1, stride, cbp, (64+off)*4, 128*8);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
214 cbp++;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
215 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
216 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
217 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
218
a88b82461c17 test pattern filter
michael
parents:
diff changeset
219 static void mv1Test(uint8_t *dst, int stride, int off)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
220 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
221 int y;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
222 for(y=0; y<16*16; y++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
223 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
224 int x;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
225 if(y&16) continue;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
226 for(x=0; x<16*16; x++)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
227 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
228 dst[x + y*stride]= x + off*8/(y/32+1);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
229 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
230 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
231 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
232
6413
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
233 static void ring1Test(uint8_t *dst, int stride, int off)
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
234 {
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
235 int y;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
236 int color=0;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
237 for(y=off; y<16*16; y+=16)
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
238 {
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
239 int x;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
240 for(x=off; x<16*16; x+=16)
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
241 {
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
242 drawDc(dst + x + y*stride, stride, ((x+y)&16) ? color : -color, 16, 16);
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
243 // dst[x + y*stride]= 255 + (off&1);
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
244 color++;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
245 }
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
246 }
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
247 }
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
248
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
249 static void ring2Test(uint8_t *dst, int stride, int off)
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
250 {
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
251 int y;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
252 for(y=0; y<16*16; y++)
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
253 {
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
254 int x;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
255 for(x=0; x<16*16; x++)
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
256 {
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
257 double d= sqrt((x-8*16)*(x-8*16) + (y-8*16)*(y-8*16));
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
258 double r= d/20 - (int)(d/20);
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
259 if(r<off/30.0)
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
260 {
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
261 dst[x + y*stride]= 255;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
262 dst[x + y*stride+256]= 0;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
263 }
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
264 else{
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
265 dst[x + y*stride]= x;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
266 dst[x + y*stride+256]= x;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
267 }
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
268 }
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
269 }
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
270 }
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
271
17906
20aca9baf5d8 passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents: 17566
diff changeset
272 static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts){
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
273 mp_image_t *dmpi;
6413
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
274 int frame= vf->priv->frame_num;
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
275
a88b82461c17 test pattern filter
michael
parents:
diff changeset
276 // hope we'll get DR buffer:
a88b82461c17 test pattern filter
michael
parents:
diff changeset
277 dmpi=vf_get_image(vf->next,IMGFMT_YV12,
a88b82461c17 test pattern filter
michael
parents:
diff changeset
278 MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE,
a88b82461c17 test pattern filter
michael
parents:
diff changeset
279 WIDTH, HEIGHT);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
280
a88b82461c17 test pattern filter
michael
parents:
diff changeset
281 // clean
a88b82461c17 test pattern filter
michael
parents:
diff changeset
282 memset(dmpi->planes[0], 0, dmpi->stride[0]*dmpi->h);
6539
79b536a37e40 better planar support, chroma subsampling support and Y8/Y800 support
alex
parents: 6413
diff changeset
283 memset(dmpi->planes[1], 128, dmpi->stride[1]*dmpi->h>>dmpi->chroma_y_shift);
79b536a37e40 better planar support, chroma subsampling support and Y8/Y800 support
alex
parents: 6413
diff changeset
284 memset(dmpi->planes[2], 128, dmpi->stride[2]*dmpi->h>>dmpi->chroma_y_shift);
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
285
a88b82461c17 test pattern filter
michael
parents:
diff changeset
286 if(frame%30)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
287 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
288 switch(frame/30)
a88b82461c17 test pattern filter
michael
parents:
diff changeset
289 {
a88b82461c17 test pattern filter
michael
parents:
diff changeset
290 case 0: dc1Test(dmpi->planes[0], dmpi->stride[0], 256, 256, frame%30); break;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
291 case 1: dc1Test(dmpi->planes[1], dmpi->stride[1], 256, 256, frame%30); break;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
292 case 2: freq1Test(dmpi->planes[0], dmpi->stride[0], frame%30); break;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
293 case 3: freq1Test(dmpi->planes[1], dmpi->stride[1], frame%30); break;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
294 case 4: amp1Test(dmpi->planes[0], dmpi->stride[0], frame%30); break;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
295 case 5: amp1Test(dmpi->planes[1], dmpi->stride[1], frame%30); break;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
296 case 6: cbp1Test(dmpi->planes , dmpi->stride , frame%30); break;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
297 case 7: mv1Test(dmpi->planes[0], dmpi->stride[0], frame%30); break;
6413
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
298 case 8: ring1Test(dmpi->planes[0], dmpi->stride[0], frame%30); break;
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
299 case 9: ring2Test(dmpi->planes[0], dmpi->stride[0], frame%30); break;
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
300 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
301 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
302
a88b82461c17 test pattern filter
michael
parents:
diff changeset
303 frame++;
6413
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
304 vf->priv->frame_num= frame;
17906
20aca9baf5d8 passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents: 17566
diff changeset
305 return vf_next_put_image(vf,dmpi, pts);
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
306 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
307
a88b82461c17 test pattern filter
michael
parents:
diff changeset
308 //===========================================================================//
a88b82461c17 test pattern filter
michael
parents:
diff changeset
309
a88b82461c17 test pattern filter
michael
parents:
diff changeset
310 static int query_format(struct vf_instance_s* vf, unsigned int fmt){
a88b82461c17 test pattern filter
michael
parents:
diff changeset
311 return vf_next_query_format(vf,IMGFMT_YV12) & (~VFCAP_CSP_SUPPORTED_BY_HW);
a88b82461c17 test pattern filter
michael
parents:
diff changeset
312 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
313
a88b82461c17 test pattern filter
michael
parents:
diff changeset
314 static int open(vf_instance_t *vf, char* args){
a88b82461c17 test pattern filter
michael
parents:
diff changeset
315 vf->config=config;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
316 vf->put_image=put_image;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
317 vf->query_format=query_format;
6413
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
318 vf->priv=malloc(sizeof(struct vf_priv_s));
ac9c125ea627 rounding bugfix
michael
parents: 6278
diff changeset
319 vf->priv->frame_num= args ? atoi(args) : 0;
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
320 initIdct();
a88b82461c17 test pattern filter
michael
parents:
diff changeset
321 return 1;
a88b82461c17 test pattern filter
michael
parents:
diff changeset
322 }
a88b82461c17 test pattern filter
michael
parents:
diff changeset
323
25221
00fff9a3b735 Make all vf_info_t structs const
reimar
parents: 23373
diff changeset
324 const vf_info_t vf_info_test = {
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
325 "test pattern generator",
a88b82461c17 test pattern filter
michael
parents:
diff changeset
326 "test",
a88b82461c17 test pattern filter
michael
parents:
diff changeset
327 "Michael Niedermayer",
a88b82461c17 test pattern filter
michael
parents:
diff changeset
328 "",
9593
e9a2af584986 Add the new -vf option wich is the same as vop in reverse order.
albeu
parents: 7368
diff changeset
329 open,
e9a2af584986 Add the new -vf option wich is the same as vop in reverse order.
albeu
parents: 7368
diff changeset
330 NULL
6278
a88b82461c17 test pattern filter
michael
parents:
diff changeset
331 };
a88b82461c17 test pattern filter
michael
parents:
diff changeset
332
a88b82461c17 test pattern filter
michael
parents:
diff changeset
333 //===========================================================================//