History

tests: Add libpostproc blocktest

Michael Niedermayer committed 1 year ago

Commit 342869a1 parent 142eb905 files · +421 −0Browse files

Unified · Split

5 files
  1. libpostproc/Makefile +2 −0
  2. libpostproc/tests/blocktest.c +112 −0
  3. tests/Makefile +1 −0
  4. tests/fate/libpostproc.mak +6 −0
  5. tests/ref/fate/blocktest +300 −0
libpostproc/Makefile+2−0
@@ -11,3 +11,5 @@ OBJS = postprocess.o \ · 10 unmodified lines
1111
1212 # Windows resource file
1313 SHLIBOBJS-$(HAVE_GNU_WINDRES) += postprocres.o
14+
15+TESTPROGS = blocktest
libpostproc/tests/blocktest.c+112−0
@@ -0,0 +1,112 @@
1+/*
2+ * Copyright (c) 2025 Michael Niedermayer
3+ *
4+ * This file is part of FFmpeg.
5+ *
6+ * FFmpeg is free software; you can redistribute it and/or
7+ * modify it under the terms of the GNU Lesser General Public
8+ * License as published by the Free Software Foundation; either
9+ * version 2.1 of the License, or (at your option) any later version.
10+ *
11+ * FFmpeg is distributed in the hope that it will be useful,
12+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14+ * Lesser General Public License for more details.
15+ *
16+ * You should have received a copy of the GNU Lesser General Public
17+ * License along with FFmpeg; if not, write to the Free Software
18+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19+ */
20+
21+#include "libavutil/frame.h"
22+#include "libavutil/adler32.h"
23+#include "libpostproc/postprocess.h"
24+
25+typedef const uint8_t *cuint8;
26+
27+static void blocks(AVFrame *frame, int blocksize, int mul)
28+{
29+ for(int y=0; y<frame->height; y++) {
30+ for(int x=0; x<frame->width; x++) {
31+ frame->data[0][x + y*frame->linesize[0]] = x/blocksize*mul + y/blocksize*mul;
32+ }
33+ }
34+ for(int y=0; y<(frame->height+1)/2; y++) {
35+ for(int x=0; x<(frame->width+1)/2; x++) {
36+ frame->data[1][x + y*frame->linesize[1]] = x/blocksize*mul + y/blocksize*mul;
37+ frame->data[2][x + y*frame->linesize[2]] = x/blocksize * (y/blocksize)*mul;
38+ }
39+ }
40+}
41+
42+static int64_t chksum(AVFrame *f)
43+{
44+ AVAdler a = 123;
45+
46+ for(int y=0; y<f->height; y++) {
47+ a = av_adler32_update(a, &f->data[0][y*f->linesize[0]], f->width);
48+ }
49+ for(int y=0; y<(f->height+1)/2; y++) {
50+ a = av_adler32_update(a, &f->data[1][y*f->linesize[1]], (f->width+1)/2);
51+ a = av_adler32_update(a, &f->data[2][y*f->linesize[2]], (f->width+1)/2);
52+ }
53+
54+ return a;
55+}
56+
57+static int64_t test(int width, int height, int blocksize, int flags, int pict_type, int quality) {
58+ AVFrame *in = av_frame_alloc();
59+ AVFrame *out = av_frame_alloc();
60+ pp_context *context = pp_get_context(width, height, flags);
61+ pp_mode *mode = pp_get_mode_by_name_and_quality("be,de", quality);
62+ int64_t ret;
63+
64+ if (!in || !out || !context || !mode) {
65+ ret = AVERROR(ENOMEM);
66+ goto end;
67+ }
68+
69+ in-> width = out->width = width;
70+ in->height = out->height = height;
71+ in->format = out->format = AV_PIX_FMT_YUV420P;
72+
73+ ret = av_frame_get_buffer(in, 0);
74+ if (ret < 0)
75+ goto end;
76+
77+ ret = av_frame_get_buffer(out, 0);
78+ if (ret < 0)
79+ goto end;
80+
81+ blocks(in, blocksize, 11);
82+
83+ pp_postprocess( (cuint8[]){in->data[0], in->data[1], in->data[2]}, in->linesize,
84+ out->data, out->linesize,
85+ width, height, NULL, 0,
86+ mode, context, pict_type);
87+
88+ ret = chksum(out);
89+end:
90+ av_frame_free(&in);
91+ av_frame_free(&out);
92+ pp_free_context(context);
93+ pp_free_mode(mode);
94+
95+ return ret;
96+}
97+
98+int main(int argc, char **argv) {
99+
100+ for (int w=8; w< 352; w=w*3-1) {
101+ for (int h=8; h< 352; h=h*5-7) {
102+ for (int b=1; b<17; b*=2) {
103+ for (int q=0; q<17; q = 2*q+1) {
104+ int64_t ret = test(352, 288, b, PP_FORMAT_420, 0, q);
105+ printf("blocktest %dx%d b:%d q:%d result %"PRIX64"\n", w, h, b, q, ret);
106+ }
107+ }
108+ }
109+ }
110+
111+ return 0;
112+}
tests/Makefile+1−0
@@ -207,6 +207,7 @@ include $(SRC_PATH)/tests/fate/libavformat.mak · 206 unmodified lines
207207 include $(SRC_PATH)/tests/fate/libavutil.mak
208208 include $(SRC_PATH)/tests/fate/libswresample.mak
209209 include $(SRC_PATH)/tests/fate/libswscale.mak
210+include $(SRC_PATH)/tests/fate/libpostproc.mak
210211 include $(SRC_PATH)/tests/fate/lossless-audio.mak
211212 include $(SRC_PATH)/tests/fate/lossless-video.mak
212213 include $(SRC_PATH)/tests/fate/matroska.mak
tests/fate/libpostproc.mak+6−0
@@ -0,0 +1,6 @@
1+FATE_LIBPOSTPROC += fate-blocktest
2+fate-blocktest: libpostproc/tests/blocktest$(EXESUF)
3+fate-blocktest: CMD = run libpostproc/tests/blocktest$(EXESUF)
4+
5+FATE-$(CONFIG_POSTPROC) += $(FATE_LIBPOSTPROC)
6+fate-libpostproc: $(FATE_LIBPOSTPROC)
tests/ref/fate/blocktest+300−0
@@ -0,0 +1,300 @@
1+blocktest 8x8 b:1 q:0 result 2C2DD9F5
2+blocktest 8x8 b:1 q:1 result 2C2DD9F5
3+blocktest 8x8 b:1 q:3 result 2C2DD9F5
4+blocktest 8x8 b:1 q:7 result 802FD88A
5+blocktest 8x8 b:1 q:15 result 802FD88A
6+blocktest 8x8 b:2 q:0 result D3A760F5
7+blocktest 8x8 b:2 q:1 result D3A760F5
8+blocktest 8x8 b:2 q:3 result D3A760F5
9+blocktest 8x8 b:2 q:7 result A7BC55BB
10+blocktest 8x8 b:2 q:15 result A7BC55BB
11+blocktest 8x8 b:4 q:0 result 908DDCF5
12+blocktest 8x8 b:4 q:1 result 908DDCF5
13+blocktest 8x8 b:4 q:3 result 908DDCF5
14+blocktest 8x8 b:4 q:7 result 36D7B48B
15+blocktest 8x8 b:4 q:15 result 36D7B48B
16+blocktest 8x8 b:8 q:0 result FC8129D7
17+blocktest 8x8 b:8 q:1 result FC8129D7
18+blocktest 8x8 b:8 q:3 result FC8129D7
19+blocktest 8x8 b:8 q:7 result FC8129D7
20+blocktest 8x8 b:8 q:15 result FC8129D7
21+blocktest 8x8 b:16 q:0 result EC1AB989
22+blocktest 8x8 b:16 q:1 result EC1AB989
23+blocktest 8x8 b:16 q:3 result EC1AB989
24+blocktest 8x8 b:16 q:7 result EC1AB989
25+blocktest 8x8 b:16 q:15 result EC1AB989
26+blocktest 8x33 b:1 q:0 result 2C2DD9F5
27+blocktest 8x33 b:1 q:1 result 2C2DD9F5
28+blocktest 8x33 b:1 q:3 result 2C2DD9F5
29+blocktest 8x33 b:1 q:7 result 802FD88A
30+blocktest 8x33 b:1 q:15 result 802FD88A
31+blocktest 8x33 b:2 q:0 result D3A760F5
32+blocktest 8x33 b:2 q:1 result D3A760F5
33+blocktest 8x33 b:2 q:3 result D3A760F5
34+blocktest 8x33 b:2 q:7 result A7BC55BB
35+blocktest 8x33 b:2 q:15 result A7BC55BB
36+blocktest 8x33 b:4 q:0 result 908DDCF5
37+blocktest 8x33 b:4 q:1 result 908DDCF5
38+blocktest 8x33 b:4 q:3 result 908DDCF5
39+blocktest 8x33 b:4 q:7 result 36D7B48B
40+blocktest 8x33 b:4 q:15 result 36D7B48B
41+blocktest 8x33 b:8 q:0 result FC8129D7
42+blocktest 8x33 b:8 q:1 result FC8129D7
43+blocktest 8x33 b:8 q:3 result FC8129D7
44+blocktest 8x33 b:8 q:7 result FC8129D7
45+blocktest 8x33 b:8 q:15 result FC8129D7
46+blocktest 8x33 b:16 q:0 result EC1AB989
47+blocktest 8x33 b:16 q:1 result EC1AB989
48+blocktest 8x33 b:16 q:3 result EC1AB989
49+blocktest 8x33 b:16 q:7 result EC1AB989
50+blocktest 8x33 b:16 q:15 result EC1AB989
51+blocktest 8x158 b:1 q:0 result 2C2DD9F5
52+blocktest 8x158 b:1 q:1 result 2C2DD9F5
53+blocktest 8x158 b:1 q:3 result 2C2DD9F5
54+blocktest 8x158 b:1 q:7 result 802FD88A
55+blocktest 8x158 b:1 q:15 result 802FD88A
56+blocktest 8x158 b:2 q:0 result D3A760F5
57+blocktest 8x158 b:2 q:1 result D3A760F5
58+blocktest 8x158 b:2 q:3 result D3A760F5
59+blocktest 8x158 b:2 q:7 result A7BC55BB
60+blocktest 8x158 b:2 q:15 result A7BC55BB
61+blocktest 8x158 b:4 q:0 result 908DDCF5
62+blocktest 8x158 b:4 q:1 result 908DDCF5
63+blocktest 8x158 b:4 q:3 result 908DDCF5
64+blocktest 8x158 b:4 q:7 result 36D7B48B
65+blocktest 8x158 b:4 q:15 result 36D7B48B
66+blocktest 8x158 b:8 q:0 result FC8129D7
67+blocktest 8x158 b:8 q:1 result FC8129D7
68+blocktest 8x158 b:8 q:3 result FC8129D7
69+blocktest 8x158 b:8 q:7 result FC8129D7
70+blocktest 8x158 b:8 q:15 result FC8129D7
71+blocktest 8x158 b:16 q:0 result EC1AB989
72+blocktest 8x158 b:16 q:1 result EC1AB989
73+blocktest 8x158 b:16 q:3 result EC1AB989
74+blocktest 8x158 b:16 q:7 result EC1AB989
75+blocktest 8x158 b:16 q:15 result EC1AB989
76+blocktest 23x8 b:1 q:0 result 2C2DD9F5
77+blocktest 23x8 b:1 q:1 result 2C2DD9F5
78+blocktest 23x8 b:1 q:3 result 2C2DD9F5
79+blocktest 23x8 b:1 q:7 result 802FD88A
80+blocktest 23x8 b:1 q:15 result 802FD88A
81+blocktest 23x8 b:2 q:0 result D3A760F5
82+blocktest 23x8 b:2 q:1 result D3A760F5
83+blocktest 23x8 b:2 q:3 result D3A760F5
84+blocktest 23x8 b:2 q:7 result A7BC55BB
85+blocktest 23x8 b:2 q:15 result A7BC55BB
86+blocktest 23x8 b:4 q:0 result 908DDCF5
87+blocktest 23x8 b:4 q:1 result 908DDCF5
88+blocktest 23x8 b:4 q:3 result 908DDCF5
89+blocktest 23x8 b:4 q:7 result 36D7B48B
90+blocktest 23x8 b:4 q:15 result 36D7B48B
91+blocktest 23x8 b:8 q:0 result FC8129D7
92+blocktest 23x8 b:8 q:1 result FC8129D7
93+blocktest 23x8 b:8 q:3 result FC8129D7
94+blocktest 23x8 b:8 q:7 result FC8129D7
95+blocktest 23x8 b:8 q:15 result FC8129D7
96+blocktest 23x8 b:16 q:0 result EC1AB989
97+blocktest 23x8 b:16 q:1 result EC1AB989
98+blocktest 23x8 b:16 q:3 result EC1AB989
99+blocktest 23x8 b:16 q:7 result EC1AB989
100+blocktest 23x8 b:16 q:15 result EC1AB989
101+blocktest 23x33 b:1 q:0 result 2C2DD9F5
102+blocktest 23x33 b:1 q:1 result 2C2DD9F5
103+blocktest 23x33 b:1 q:3 result 2C2DD9F5
104+blocktest 23x33 b:1 q:7 result 802FD88A
105+blocktest 23x33 b:1 q:15 result 802FD88A
106+blocktest 23x33 b:2 q:0 result D3A760F5
107+blocktest 23x33 b:2 q:1 result D3A760F5
108+blocktest 23x33 b:2 q:3 result D3A760F5
109+blocktest 23x33 b:2 q:7 result A7BC55BB
110+blocktest 23x33 b:2 q:15 result A7BC55BB
111+blocktest 23x33 b:4 q:0 result 908DDCF5
112+blocktest 23x33 b:4 q:1 result 908DDCF5
113+blocktest 23x33 b:4 q:3 result 908DDCF5
114+blocktest 23x33 b:4 q:7 result 36D7B48B
115+blocktest 23x33 b:4 q:15 result 36D7B48B
116+blocktest 23x33 b:8 q:0 result FC8129D7
117+blocktest 23x33 b:8 q:1 result FC8129D7
118+blocktest 23x33 b:8 q:3 result FC8129D7
119+blocktest 23x33 b:8 q:7 result FC8129D7
120+blocktest 23x33 b:8 q:15 result FC8129D7
121+blocktest 23x33 b:16 q:0 result EC1AB989
122+blocktest 23x33 b:16 q:1 result EC1AB989
123+blocktest 23x33 b:16 q:3 result EC1AB989
124+blocktest 23x33 b:16 q:7 result EC1AB989
125+blocktest 23x33 b:16 q:15 result EC1AB989
126+blocktest 23x158 b:1 q:0 result 2C2DD9F5
127+blocktest 23x158 b:1 q:1 result 2C2DD9F5
128+blocktest 23x158 b:1 q:3 result 2C2DD9F5
129+blocktest 23x158 b:1 q:7 result 802FD88A
130+blocktest 23x158 b:1 q:15 result 802FD88A
131+blocktest 23x158 b:2 q:0 result D3A760F5
132+blocktest 23x158 b:2 q:1 result D3A760F5
133+blocktest 23x158 b:2 q:3 result D3A760F5
134+blocktest 23x158 b:2 q:7 result A7BC55BB
135+blocktest 23x158 b:2 q:15 result A7BC55BB
136+blocktest 23x158 b:4 q:0 result 908DDCF5
137+blocktest 23x158 b:4 q:1 result 908DDCF5
138+blocktest 23x158 b:4 q:3 result 908DDCF5
139+blocktest 23x158 b:4 q:7 result 36D7B48B
140+blocktest 23x158 b:4 q:15 result 36D7B48B
141+blocktest 23x158 b:8 q:0 result FC8129D7
142+blocktest 23x158 b:8 q:1 result FC8129D7
143+blocktest 23x158 b:8 q:3 result FC8129D7
144+blocktest 23x158 b:8 q:7 result FC8129D7
145+blocktest 23x158 b:8 q:15 result FC8129D7
146+blocktest 23x158 b:16 q:0 result EC1AB989
147+blocktest 23x158 b:16 q:1 result EC1AB989
148+blocktest 23x158 b:16 q:3 result EC1AB989
149+blocktest 23x158 b:16 q:7 result EC1AB989
150+blocktest 23x158 b:16 q:15 result EC1AB989
151+blocktest 68x8 b:1 q:0 result 2C2DD9F5
152+blocktest 68x8 b:1 q:1 result 2C2DD9F5
153+blocktest 68x8 b:1 q:3 result 2C2DD9F5
154+blocktest 68x8 b:1 q:7 result 802FD88A
155+blocktest 68x8 b:1 q:15 result 802FD88A
156+blocktest 68x8 b:2 q:0 result D3A760F5
157+blocktest 68x8 b:2 q:1 result D3A760F5
158+blocktest 68x8 b:2 q:3 result D3A760F5
159+blocktest 68x8 b:2 q:7 result A7BC55BB
160+blocktest 68x8 b:2 q:15 result A7BC55BB
161+blocktest 68x8 b:4 q:0 result 908DDCF5
162+blocktest 68x8 b:4 q:1 result 908DDCF5
163+blocktest 68x8 b:4 q:3 result 908DDCF5
164+blocktest 68x8 b:4 q:7 result 36D7B48B
165+blocktest 68x8 b:4 q:15 result 36D7B48B
166+blocktest 68x8 b:8 q:0 result FC8129D7
167+blocktest 68x8 b:8 q:1 result FC8129D7
168+blocktest 68x8 b:8 q:3 result FC8129D7
169+blocktest 68x8 b:8 q:7 result FC8129D7
170+blocktest 68x8 b:8 q:15 result FC8129D7
171+blocktest 68x8 b:16 q:0 result EC1AB989
172+blocktest 68x8 b:16 q:1 result EC1AB989
173+blocktest 68x8 b:16 q:3 result EC1AB989
174+blocktest 68x8 b:16 q:7 result EC1AB989
175+blocktest 68x8 b:16 q:15 result EC1AB989
176+blocktest 68x33 b:1 q:0 result 2C2DD9F5
177+blocktest 68x33 b:1 q:1 result 2C2DD9F5
178+blocktest 68x33 b:1 q:3 result 2C2DD9F5
179+blocktest 68x33 b:1 q:7 result 802FD88A
180+blocktest 68x33 b:1 q:15 result 802FD88A
181+blocktest 68x33 b:2 q:0 result D3A760F5
182+blocktest 68x33 b:2 q:1 result D3A760F5
183+blocktest 68x33 b:2 q:3 result D3A760F5
184+blocktest 68x33 b:2 q:7 result A7BC55BB
185+blocktest 68x33 b:2 q:15 result A7BC55BB
186+blocktest 68x33 b:4 q:0 result 908DDCF5
187+blocktest 68x33 b:4 q:1 result 908DDCF5
188+blocktest 68x33 b:4 q:3 result 908DDCF5
189+blocktest 68x33 b:4 q:7 result 36D7B48B
190+blocktest 68x33 b:4 q:15 result 36D7B48B
191+blocktest 68x33 b:8 q:0 result FC8129D7
192+blocktest 68x33 b:8 q:1 result FC8129D7
193+blocktest 68x33 b:8 q:3 result FC8129D7
194+blocktest 68x33 b:8 q:7 result FC8129D7
195+blocktest 68x33 b:8 q:15 result FC8129D7
196+blocktest 68x33 b:16 q:0 result EC1AB989
197+blocktest 68x33 b:16 q:1 result EC1AB989
198+blocktest 68x33 b:16 q:3 result EC1AB989
199+blocktest 68x33 b:16 q:7 result EC1AB989
200+blocktest 68x33 b:16 q:15 result EC1AB989
201+blocktest 68x158 b:1 q:0 result 2C2DD9F5
202+blocktest 68x158 b:1 q:1 result 2C2DD9F5
203+blocktest 68x158 b:1 q:3 result 2C2DD9F5
204+blocktest 68x158 b:1 q:7 result 802FD88A
205+blocktest 68x158 b:1 q:15 result 802FD88A
206+blocktest 68x158 b:2 q:0 result D3A760F5
207+blocktest 68x158 b:2 q:1 result D3A760F5
208+blocktest 68x158 b:2 q:3 result D3A760F5
209+blocktest 68x158 b:2 q:7 result A7BC55BB
210+blocktest 68x158 b:2 q:15 result A7BC55BB
211+blocktest 68x158 b:4 q:0 result 908DDCF5
212+blocktest 68x158 b:4 q:1 result 908DDCF5
213+blocktest 68x158 b:4 q:3 result 908DDCF5
214+blocktest 68x158 b:4 q:7 result 36D7B48B
215+blocktest 68x158 b:4 q:15 result 36D7B48B
216+blocktest 68x158 b:8 q:0 result FC8129D7
217+blocktest 68x158 b:8 q:1 result FC8129D7
218+blocktest 68x158 b:8 q:3 result FC8129D7
219+blocktest 68x158 b:8 q:7 result FC8129D7
220+blocktest 68x158 b:8 q:15 result FC8129D7
221+blocktest 68x158 b:16 q:0 result EC1AB989
222+blocktest 68x158 b:16 q:1 result EC1AB989
223+blocktest 68x158 b:16 q:3 result EC1AB989
224+blocktest 68x158 b:16 q:7 result EC1AB989
225+blocktest 68x158 b:16 q:15 result EC1AB989
226+blocktest 203x8 b:1 q:0 result 2C2DD9F5
227+blocktest 203x8 b:1 q:1 result 2C2DD9F5
228+blocktest 203x8 b:1 q:3 result 2C2DD9F5
229+blocktest 203x8 b:1 q:7 result 802FD88A
230+blocktest 203x8 b:1 q:15 result 802FD88A
231+blocktest 203x8 b:2 q:0 result D3A760F5
232+blocktest 203x8 b:2 q:1 result D3A760F5
233+blocktest 203x8 b:2 q:3 result D3A760F5
234+blocktest 203x8 b:2 q:7 result A7BC55BB
235+blocktest 203x8 b:2 q:15 result A7BC55BB
236+blocktest 203x8 b:4 q:0 result 908DDCF5
237+blocktest 203x8 b:4 q:1 result 908DDCF5
238+blocktest 203x8 b:4 q:3 result 908DDCF5
239+blocktest 203x8 b:4 q:7 result 36D7B48B
240+blocktest 203x8 b:4 q:15 result 36D7B48B
241+blocktest 203x8 b:8 q:0 result FC8129D7
242+blocktest 203x8 b:8 q:1 result FC8129D7
243+blocktest 203x8 b:8 q:3 result FC8129D7
244+blocktest 203x8 b:8 q:7 result FC8129D7
245+blocktest 203x8 b:8 q:15 result FC8129D7
246+blocktest 203x8 b:16 q:0 result EC1AB989
247+blocktest 203x8 b:16 q:1 result EC1AB989
248+blocktest 203x8 b:16 q:3 result EC1AB989
249+blocktest 203x8 b:16 q:7 result EC1AB989
250+blocktest 203x8 b:16 q:15 result EC1AB989
251+blocktest 203x33 b:1 q:0 result 2C2DD9F5
252+blocktest 203x33 b:1 q:1 result 2C2DD9F5
253+blocktest 203x33 b:1 q:3 result 2C2DD9F5
254+blocktest 203x33 b:1 q:7 result 802FD88A
255+blocktest 203x33 b:1 q:15 result 802FD88A
256+blocktest 203x33 b:2 q:0 result D3A760F5
257+blocktest 203x33 b:2 q:1 result D3A760F5
258+blocktest 203x33 b:2 q:3 result D3A760F5
259+blocktest 203x33 b:2 q:7 result A7BC55BB
260+blocktest 203x33 b:2 q:15 result A7BC55BB
261+blocktest 203x33 b:4 q:0 result 908DDCF5
262+blocktest 203x33 b:4 q:1 result 908DDCF5
263+blocktest 203x33 b:4 q:3 result 908DDCF5
264+blocktest 203x33 b:4 q:7 result 36D7B48B
265+blocktest 203x33 b:4 q:15 result 36D7B48B
266+blocktest 203x33 b:8 q:0 result FC8129D7
267+blocktest 203x33 b:8 q:1 result FC8129D7
268+blocktest 203x33 b:8 q:3 result FC8129D7
269+blocktest 203x33 b:8 q:7 result FC8129D7
270+blocktest 203x33 b:8 q:15 result FC8129D7
271+blocktest 203x33 b:16 q:0 result EC1AB989
272+blocktest 203x33 b:16 q:1 result EC1AB989
273+blocktest 203x33 b:16 q:3 result EC1AB989
274+blocktest 203x33 b:16 q:7 result EC1AB989
275+blocktest 203x33 b:16 q:15 result EC1AB989
276+blocktest 203x158 b:1 q:0 result 2C2DD9F5
277+blocktest 203x158 b:1 q:1 result 2C2DD9F5
278+blocktest 203x158 b:1 q:3 result 2C2DD9F5
279+blocktest 203x158 b:1 q:7 result 802FD88A
280+blocktest 203x158 b:1 q:15 result 802FD88A
281+blocktest 203x158 b:2 q:0 result D3A760F5
282+blocktest 203x158 b:2 q:1 result D3A760F5
283+blocktest 203x158 b:2 q:3 result D3A760F5
284+blocktest 203x158 b:2 q:7 result A7BC55BB
285+blocktest 203x158 b:2 q:15 result A7BC55BB
286+blocktest 203x158 b:4 q:0 result 908DDCF5
287+blocktest 203x158 b:4 q:1 result 908DDCF5
288+blocktest 203x158 b:4 q:3 result 908DDCF5
289+blocktest 203x158 b:4 q:7 result 36D7B48B
290+blocktest 203x158 b:4 q:15 result 36D7B48B
291+blocktest 203x158 b:8 q:0 result FC8129D7
292+blocktest 203x158 b:8 q:1 result FC8129D7
293+blocktest 203x158 b:8 q:3 result FC8129D7
294+blocktest 203x158 b:8 q:7 result FC8129D7
295+blocktest 203x158 b:8 q:15 result FC8129D7
296+blocktest 203x158 b:16 q:0 result EC1AB989
297+blocktest 203x158 b:16 q:1 result EC1AB989
298+blocktest 203x158 b:16 q:3 result EC1AB989
299+blocktest 203x158 b:16 q:7 result EC1AB989
300+blocktest 203x158 b:16 q:15 result EC1AB989

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t