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
11 11
12# Windows resource file12# Windows resource file
13SHLIBOBJS-$(HAVE_GNU_WINDRES) += postprocres.o13SHLIBOBJS-$(HAVE_GNU_WINDRES) += postprocres.o
14
15TESTPROGS = 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
25typedef const uint8_t *cuint8;
26
27static 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
42static 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
57static 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);
89end:
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
98int 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
207include $(SRC_PATH)/tests/fate/libavutil.mak207include $(SRC_PATH)/tests/fate/libavutil.mak
208include $(SRC_PATH)/tests/fate/libswresample.mak208include $(SRC_PATH)/tests/fate/libswresample.mak
209include $(SRC_PATH)/tests/fate/libswscale.mak209include $(SRC_PATH)/tests/fate/libswscale.mak
210include $(SRC_PATH)/tests/fate/libpostproc.mak
210include $(SRC_PATH)/tests/fate/lossless-audio.mak211include $(SRC_PATH)/tests/fate/lossless-audio.mak
211include $(SRC_PATH)/tests/fate/lossless-video.mak212include $(SRC_PATH)/tests/fate/lossless-video.mak
212include $(SRC_PATH)/tests/fate/matroska.mak213include $(SRC_PATH)/tests/fate/matroska.mak
tests/fate/libpostproc.mak+6−0
@@ -0,0 +1,6 @@
1FATE_LIBPOSTPROC += fate-blocktest
2fate-blocktest: libpostproc/tests/blocktest$(EXESUF)
3fate-blocktest: CMD = run libpostproc/tests/blocktest$(EXESUF)
4
5FATE-$(CONFIG_POSTPROC) += $(FATE_LIBPOSTPROC)
6fate-libpostproc: $(FATE_LIBPOSTPROC)
tests/ref/fate/blocktest+300−0
@@ -0,0 +1,300 @@
1blocktest 8x8 b:1 q:0 result 2C2DD9F5
2blocktest 8x8 b:1 q:1 result 2C2DD9F5
3blocktest 8x8 b:1 q:3 result 2C2DD9F5
4blocktest 8x8 b:1 q:7 result 802FD88A
5blocktest 8x8 b:1 q:15 result 802FD88A
6blocktest 8x8 b:2 q:0 result D3A760F5
7blocktest 8x8 b:2 q:1 result D3A760F5
8blocktest 8x8 b:2 q:3 result D3A760F5
9blocktest 8x8 b:2 q:7 result A7BC55BB
10blocktest 8x8 b:2 q:15 result A7BC55BB
11blocktest 8x8 b:4 q:0 result 908DDCF5
12blocktest 8x8 b:4 q:1 result 908DDCF5
13blocktest 8x8 b:4 q:3 result 908DDCF5
14blocktest 8x8 b:4 q:7 result 36D7B48B
15blocktest 8x8 b:4 q:15 result 36D7B48B
16blocktest 8x8 b:8 q:0 result FC8129D7
17blocktest 8x8 b:8 q:1 result FC8129D7
18blocktest 8x8 b:8 q:3 result FC8129D7
19blocktest 8x8 b:8 q:7 result FC8129D7
20blocktest 8x8 b:8 q:15 result FC8129D7
21blocktest 8x8 b:16 q:0 result EC1AB989
22blocktest 8x8 b:16 q:1 result EC1AB989
23blocktest 8x8 b:16 q:3 result EC1AB989
24blocktest 8x8 b:16 q:7 result EC1AB989
25blocktest 8x8 b:16 q:15 result EC1AB989
26blocktest 8x33 b:1 q:0 result 2C2DD9F5
27blocktest 8x33 b:1 q:1 result 2C2DD9F5
28blocktest 8x33 b:1 q:3 result 2C2DD9F5
29blocktest 8x33 b:1 q:7 result 802FD88A
30blocktest 8x33 b:1 q:15 result 802FD88A
31blocktest 8x33 b:2 q:0 result D3A760F5
32blocktest 8x33 b:2 q:1 result D3A760F5
33blocktest 8x33 b:2 q:3 result D3A760F5
34blocktest 8x33 b:2 q:7 result A7BC55BB
35blocktest 8x33 b:2 q:15 result A7BC55BB
36blocktest 8x33 b:4 q:0 result 908DDCF5
37blocktest 8x33 b:4 q:1 result 908DDCF5
38blocktest 8x33 b:4 q:3 result 908DDCF5
39blocktest 8x33 b:4 q:7 result 36D7B48B
40blocktest 8x33 b:4 q:15 result 36D7B48B
41blocktest 8x33 b:8 q:0 result FC8129D7
42blocktest 8x33 b:8 q:1 result FC8129D7
43blocktest 8x33 b:8 q:3 result FC8129D7
44blocktest 8x33 b:8 q:7 result FC8129D7
45blocktest 8x33 b:8 q:15 result FC8129D7
46blocktest 8x33 b:16 q:0 result EC1AB989
47blocktest 8x33 b:16 q:1 result EC1AB989
48blocktest 8x33 b:16 q:3 result EC1AB989
49blocktest 8x33 b:16 q:7 result EC1AB989
50blocktest 8x33 b:16 q:15 result EC1AB989
51blocktest 8x158 b:1 q:0 result 2C2DD9F5
52blocktest 8x158 b:1 q:1 result 2C2DD9F5
53blocktest 8x158 b:1 q:3 result 2C2DD9F5
54blocktest 8x158 b:1 q:7 result 802FD88A
55blocktest 8x158 b:1 q:15 result 802FD88A
56blocktest 8x158 b:2 q:0 result D3A760F5
57blocktest 8x158 b:2 q:1 result D3A760F5
58blocktest 8x158 b:2 q:3 result D3A760F5
59blocktest 8x158 b:2 q:7 result A7BC55BB
60blocktest 8x158 b:2 q:15 result A7BC55BB
61blocktest 8x158 b:4 q:0 result 908DDCF5
62blocktest 8x158 b:4 q:1 result 908DDCF5
63blocktest 8x158 b:4 q:3 result 908DDCF5
64blocktest 8x158 b:4 q:7 result 36D7B48B
65blocktest 8x158 b:4 q:15 result 36D7B48B
66blocktest 8x158 b:8 q:0 result FC8129D7
67blocktest 8x158 b:8 q:1 result FC8129D7
68blocktest 8x158 b:8 q:3 result FC8129D7
69blocktest 8x158 b:8 q:7 result FC8129D7
70blocktest 8x158 b:8 q:15 result FC8129D7
71blocktest 8x158 b:16 q:0 result EC1AB989
72blocktest 8x158 b:16 q:1 result EC1AB989
73blocktest 8x158 b:16 q:3 result EC1AB989
74blocktest 8x158 b:16 q:7 result EC1AB989
75blocktest 8x158 b:16 q:15 result EC1AB989
76blocktest 23x8 b:1 q:0 result 2C2DD9F5
77blocktest 23x8 b:1 q:1 result 2C2DD9F5
78blocktest 23x8 b:1 q:3 result 2C2DD9F5
79blocktest 23x8 b:1 q:7 result 802FD88A
80blocktest 23x8 b:1 q:15 result 802FD88A
81blocktest 23x8 b:2 q:0 result D3A760F5
82blocktest 23x8 b:2 q:1 result D3A760F5
83blocktest 23x8 b:2 q:3 result D3A760F5
84blocktest 23x8 b:2 q:7 result A7BC55BB
85blocktest 23x8 b:2 q:15 result A7BC55BB
86blocktest 23x8 b:4 q:0 result 908DDCF5
87blocktest 23x8 b:4 q:1 result 908DDCF5
88blocktest 23x8 b:4 q:3 result 908DDCF5
89blocktest 23x8 b:4 q:7 result 36D7B48B
90blocktest 23x8 b:4 q:15 result 36D7B48B
91blocktest 23x8 b:8 q:0 result FC8129D7
92blocktest 23x8 b:8 q:1 result FC8129D7
93blocktest 23x8 b:8 q:3 result FC8129D7
94blocktest 23x8 b:8 q:7 result FC8129D7
95blocktest 23x8 b:8 q:15 result FC8129D7
96blocktest 23x8 b:16 q:0 result EC1AB989
97blocktest 23x8 b:16 q:1 result EC1AB989
98blocktest 23x8 b:16 q:3 result EC1AB989
99blocktest 23x8 b:16 q:7 result EC1AB989
100blocktest 23x8 b:16 q:15 result EC1AB989
101blocktest 23x33 b:1 q:0 result 2C2DD9F5
102blocktest 23x33 b:1 q:1 result 2C2DD9F5
103blocktest 23x33 b:1 q:3 result 2C2DD9F5
104blocktest 23x33 b:1 q:7 result 802FD88A
105blocktest 23x33 b:1 q:15 result 802FD88A
106blocktest 23x33 b:2 q:0 result D3A760F5
107blocktest 23x33 b:2 q:1 result D3A760F5
108blocktest 23x33 b:2 q:3 result D3A760F5
109blocktest 23x33 b:2 q:7 result A7BC55BB
110blocktest 23x33 b:2 q:15 result A7BC55BB
111blocktest 23x33 b:4 q:0 result 908DDCF5
112blocktest 23x33 b:4 q:1 result 908DDCF5
113blocktest 23x33 b:4 q:3 result 908DDCF5
114blocktest 23x33 b:4 q:7 result 36D7B48B
115blocktest 23x33 b:4 q:15 result 36D7B48B
116blocktest 23x33 b:8 q:0 result FC8129D7
117blocktest 23x33 b:8 q:1 result FC8129D7
118blocktest 23x33 b:8 q:3 result FC8129D7
119blocktest 23x33 b:8 q:7 result FC8129D7
120blocktest 23x33 b:8 q:15 result FC8129D7
121blocktest 23x33 b:16 q:0 result EC1AB989
122blocktest 23x33 b:16 q:1 result EC1AB989
123blocktest 23x33 b:16 q:3 result EC1AB989
124blocktest 23x33 b:16 q:7 result EC1AB989
125blocktest 23x33 b:16 q:15 result EC1AB989
126blocktest 23x158 b:1 q:0 result 2C2DD9F5
127blocktest 23x158 b:1 q:1 result 2C2DD9F5
128blocktest 23x158 b:1 q:3 result 2C2DD9F5
129blocktest 23x158 b:1 q:7 result 802FD88A
130blocktest 23x158 b:1 q:15 result 802FD88A
131blocktest 23x158 b:2 q:0 result D3A760F5
132blocktest 23x158 b:2 q:1 result D3A760F5
133blocktest 23x158 b:2 q:3 result D3A760F5
134blocktest 23x158 b:2 q:7 result A7BC55BB
135blocktest 23x158 b:2 q:15 result A7BC55BB
136blocktest 23x158 b:4 q:0 result 908DDCF5
137blocktest 23x158 b:4 q:1 result 908DDCF5
138blocktest 23x158 b:4 q:3 result 908DDCF5
139blocktest 23x158 b:4 q:7 result 36D7B48B
140blocktest 23x158 b:4 q:15 result 36D7B48B
141blocktest 23x158 b:8 q:0 result FC8129D7
142blocktest 23x158 b:8 q:1 result FC8129D7
143blocktest 23x158 b:8 q:3 result FC8129D7
144blocktest 23x158 b:8 q:7 result FC8129D7
145blocktest 23x158 b:8 q:15 result FC8129D7
146blocktest 23x158 b:16 q:0 result EC1AB989
147blocktest 23x158 b:16 q:1 result EC1AB989
148blocktest 23x158 b:16 q:3 result EC1AB989
149blocktest 23x158 b:16 q:7 result EC1AB989
150blocktest 23x158 b:16 q:15 result EC1AB989
151blocktest 68x8 b:1 q:0 result 2C2DD9F5
152blocktest 68x8 b:1 q:1 result 2C2DD9F5
153blocktest 68x8 b:1 q:3 result 2C2DD9F5
154blocktest 68x8 b:1 q:7 result 802FD88A
155blocktest 68x8 b:1 q:15 result 802FD88A
156blocktest 68x8 b:2 q:0 result D3A760F5
157blocktest 68x8 b:2 q:1 result D3A760F5
158blocktest 68x8 b:2 q:3 result D3A760F5
159blocktest 68x8 b:2 q:7 result A7BC55BB
160blocktest 68x8 b:2 q:15 result A7BC55BB
161blocktest 68x8 b:4 q:0 result 908DDCF5
162blocktest 68x8 b:4 q:1 result 908DDCF5
163blocktest 68x8 b:4 q:3 result 908DDCF5
164blocktest 68x8 b:4 q:7 result 36D7B48B
165blocktest 68x8 b:4 q:15 result 36D7B48B
166blocktest 68x8 b:8 q:0 result FC8129D7
167blocktest 68x8 b:8 q:1 result FC8129D7
168blocktest 68x8 b:8 q:3 result FC8129D7
169blocktest 68x8 b:8 q:7 result FC8129D7
170blocktest 68x8 b:8 q:15 result FC8129D7
171blocktest 68x8 b:16 q:0 result EC1AB989
172blocktest 68x8 b:16 q:1 result EC1AB989
173blocktest 68x8 b:16 q:3 result EC1AB989
174blocktest 68x8 b:16 q:7 result EC1AB989
175blocktest 68x8 b:16 q:15 result EC1AB989
176blocktest 68x33 b:1 q:0 result 2C2DD9F5
177blocktest 68x33 b:1 q:1 result 2C2DD9F5
178blocktest 68x33 b:1 q:3 result 2C2DD9F5
179blocktest 68x33 b:1 q:7 result 802FD88A
180blocktest 68x33 b:1 q:15 result 802FD88A
181blocktest 68x33 b:2 q:0 result D3A760F5
182blocktest 68x33 b:2 q:1 result D3A760F5
183blocktest 68x33 b:2 q:3 result D3A760F5
184blocktest 68x33 b:2 q:7 result A7BC55BB
185blocktest 68x33 b:2 q:15 result A7BC55BB
186blocktest 68x33 b:4 q:0 result 908DDCF5
187blocktest 68x33 b:4 q:1 result 908DDCF5
188blocktest 68x33 b:4 q:3 result 908DDCF5
189blocktest 68x33 b:4 q:7 result 36D7B48B
190blocktest 68x33 b:4 q:15 result 36D7B48B
191blocktest 68x33 b:8 q:0 result FC8129D7
192blocktest 68x33 b:8 q:1 result FC8129D7
193blocktest 68x33 b:8 q:3 result FC8129D7
194blocktest 68x33 b:8 q:7 result FC8129D7
195blocktest 68x33 b:8 q:15 result FC8129D7
196blocktest 68x33 b:16 q:0 result EC1AB989
197blocktest 68x33 b:16 q:1 result EC1AB989
198blocktest 68x33 b:16 q:3 result EC1AB989
199blocktest 68x33 b:16 q:7 result EC1AB989
200blocktest 68x33 b:16 q:15 result EC1AB989
201blocktest 68x158 b:1 q:0 result 2C2DD9F5
202blocktest 68x158 b:1 q:1 result 2C2DD9F5
203blocktest 68x158 b:1 q:3 result 2C2DD9F5
204blocktest 68x158 b:1 q:7 result 802FD88A
205blocktest 68x158 b:1 q:15 result 802FD88A
206blocktest 68x158 b:2 q:0 result D3A760F5
207blocktest 68x158 b:2 q:1 result D3A760F5
208blocktest 68x158 b:2 q:3 result D3A760F5
209blocktest 68x158 b:2 q:7 result A7BC55BB
210blocktest 68x158 b:2 q:15 result A7BC55BB
211blocktest 68x158 b:4 q:0 result 908DDCF5
212blocktest 68x158 b:4 q:1 result 908DDCF5
213blocktest 68x158 b:4 q:3 result 908DDCF5
214blocktest 68x158 b:4 q:7 result 36D7B48B
215blocktest 68x158 b:4 q:15 result 36D7B48B
216blocktest 68x158 b:8 q:0 result FC8129D7
217blocktest 68x158 b:8 q:1 result FC8129D7
218blocktest 68x158 b:8 q:3 result FC8129D7
219blocktest 68x158 b:8 q:7 result FC8129D7
220blocktest 68x158 b:8 q:15 result FC8129D7
221blocktest 68x158 b:16 q:0 result EC1AB989
222blocktest 68x158 b:16 q:1 result EC1AB989
223blocktest 68x158 b:16 q:3 result EC1AB989
224blocktest 68x158 b:16 q:7 result EC1AB989
225blocktest 68x158 b:16 q:15 result EC1AB989
226blocktest 203x8 b:1 q:0 result 2C2DD9F5
227blocktest 203x8 b:1 q:1 result 2C2DD9F5
228blocktest 203x8 b:1 q:3 result 2C2DD9F5
229blocktest 203x8 b:1 q:7 result 802FD88A
230blocktest 203x8 b:1 q:15 result 802FD88A
231blocktest 203x8 b:2 q:0 result D3A760F5
232blocktest 203x8 b:2 q:1 result D3A760F5
233blocktest 203x8 b:2 q:3 result D3A760F5
234blocktest 203x8 b:2 q:7 result A7BC55BB
235blocktest 203x8 b:2 q:15 result A7BC55BB
236blocktest 203x8 b:4 q:0 result 908DDCF5
237blocktest 203x8 b:4 q:1 result 908DDCF5
238blocktest 203x8 b:4 q:3 result 908DDCF5
239blocktest 203x8 b:4 q:7 result 36D7B48B
240blocktest 203x8 b:4 q:15 result 36D7B48B
241blocktest 203x8 b:8 q:0 result FC8129D7
242blocktest 203x8 b:8 q:1 result FC8129D7
243blocktest 203x8 b:8 q:3 result FC8129D7
244blocktest 203x8 b:8 q:7 result FC8129D7
245blocktest 203x8 b:8 q:15 result FC8129D7
246blocktest 203x8 b:16 q:0 result EC1AB989
247blocktest 203x8 b:16 q:1 result EC1AB989
248blocktest 203x8 b:16 q:3 result EC1AB989
249blocktest 203x8 b:16 q:7 result EC1AB989
250blocktest 203x8 b:16 q:15 result EC1AB989
251blocktest 203x33 b:1 q:0 result 2C2DD9F5
252blocktest 203x33 b:1 q:1 result 2C2DD9F5
253blocktest 203x33 b:1 q:3 result 2C2DD9F5
254blocktest 203x33 b:1 q:7 result 802FD88A
255blocktest 203x33 b:1 q:15 result 802FD88A
256blocktest 203x33 b:2 q:0 result D3A760F5
257blocktest 203x33 b:2 q:1 result D3A760F5
258blocktest 203x33 b:2 q:3 result D3A760F5
259blocktest 203x33 b:2 q:7 result A7BC55BB
260blocktest 203x33 b:2 q:15 result A7BC55BB
261blocktest 203x33 b:4 q:0 result 908DDCF5
262blocktest 203x33 b:4 q:1 result 908DDCF5
263blocktest 203x33 b:4 q:3 result 908DDCF5
264blocktest 203x33 b:4 q:7 result 36D7B48B
265blocktest 203x33 b:4 q:15 result 36D7B48B
266blocktest 203x33 b:8 q:0 result FC8129D7
267blocktest 203x33 b:8 q:1 result FC8129D7
268blocktest 203x33 b:8 q:3 result FC8129D7
269blocktest 203x33 b:8 q:7 result FC8129D7
270blocktest 203x33 b:8 q:15 result FC8129D7
271blocktest 203x33 b:16 q:0 result EC1AB989
272blocktest 203x33 b:16 q:1 result EC1AB989
273blocktest 203x33 b:16 q:3 result EC1AB989
274blocktest 203x33 b:16 q:7 result EC1AB989
275blocktest 203x33 b:16 q:15 result EC1AB989
276blocktest 203x158 b:1 q:0 result 2C2DD9F5
277blocktest 203x158 b:1 q:1 result 2C2DD9F5
278blocktest 203x158 b:1 q:3 result 2C2DD9F5
279blocktest 203x158 b:1 q:7 result 802FD88A
280blocktest 203x158 b:1 q:15 result 802FD88A
281blocktest 203x158 b:2 q:0 result D3A760F5
282blocktest 203x158 b:2 q:1 result D3A760F5
283blocktest 203x158 b:2 q:3 result D3A760F5
284blocktest 203x158 b:2 q:7 result A7BC55BB
285blocktest 203x158 b:2 q:15 result A7BC55BB
286blocktest 203x158 b:4 q:0 result 908DDCF5
287blocktest 203x158 b:4 q:1 result 908DDCF5
288blocktest 203x158 b:4 q:3 result 908DDCF5
289blocktest 203x158 b:4 q:7 result 36D7B48B
290blocktest 203x158 b:4 q:15 result 36D7B48B
291blocktest 203x158 b:8 q:0 result FC8129D7
292blocktest 203x158 b:8 q:1 result FC8129D7
293blocktest 203x158 b:8 q:3 result FC8129D7
294blocktest 203x158 b:8 q:7 result FC8129D7
295blocktest 203x158 b:8 q:15 result FC8129D7
296blocktest 203x158 b:16 q:0 result EC1AB989
297blocktest 203x158 b:16 q:1 result EC1AB989
298blocktest 203x158 b:16 q:3 result EC1AB989
299blocktest 203x158 b:16 q:7 result EC1AB989
300blocktest 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