On Mon, Sep 13, 2010 at 2:36 AM, Martin Renold <[email protected]> wrote:
> On Sun, Sep 12, 2010 at 06:59:50PM +0200, Martin Renold wrote:
>> [...]
>> That should be acceptable, why didn't I think of it before...
>
> Doh. I should have wondered why I had that idea now. It's because I /did/
> think of it before.  It is what the old code did...

I've just added a test for roundtripping (patch attached), and this
fully explains the problems we've been having!
I initially thought that my dithering code must have some mistake, but
the below results did not change at all after reverting my dithering
commit.

In summary, on about 75% of roundtrips 8>16>8, the result is +1 vs the input.

(logged output follows -- only wrong roundtrips are printed.)
-----

1 roundtrips as 2
2 roundtrips as 3
3 roundtrips as 4
4 roundtrips as 5
5 roundtrips as 6
6 roundtrips as 7
7 roundtrips as 8
8 roundtrips as 9
9 roundtrips as 10
10 roundtrips as 11
11 roundtrips as 12
13 roundtrips as 14
15 roundtrips as 16
17 roundtrips as 18
19 roundtrips as 20
21 roundtrips as 22
23 roundtrips as 24
25 roundtrips as 26
27 roundtrips as 28
29 roundtrips as 30
30 roundtrips as 31
31 roundtrips as 32
33 roundtrips as 34
35 roundtrips as 36
37 roundtrips as 38
39 roundtrips as 40
41 roundtrips as 42
43 roundtrips as 44
44 roundtrips as 45
45 roundtrips as 46
46 roundtrips as 47
47 roundtrips as 48
49 roundtrips as 50
51 roundtrips as 52
53 roundtrips as 54
54 roundtrips as 55
55 roundtrips as 56
57 roundtrips as 58
59 roundtrips as 60
60 roundtrips as 61
61 roundtrips as 62
62 roundtrips as 63
63 roundtrips as 64
65 roundtrips as 66
67 roundtrips as 68
68 roundtrips as 69
69 roundtrips as 70
70 roundtrips as 71
71 roundtrips as 72
73 roundtrips as 74
75 roundtrips as 76
76 roundtrips as 77
77 roundtrips as 78
78 roundtrips as 79
79 roundtrips as 80
81 roundtrips as 82
83 roundtrips as 84
84 roundtrips as 85
85 roundtrips as 86
86 roundtrips as 87
87 roundtrips as 88
89 roundtrips as 90
91 roundtrips as 92
92 roundtrips as 93
93 roundtrips as 94
94 roundtrips as 95
95 roundtrips as 96
97 roundtrips as 98
99 roundtrips as 100
100 roundtrips as 101
101 roundtrips as 102
102 roundtrips as 103
103 roundtrips as 104
105 roundtrips as 106
107 roundtrips as 108
108 roundtrips as 109
109 roundtrips as 110
110 roundtrips as 111
111 roundtrips as 112
113 roundtrips as 114
115 roundtrips as 116
116 roundtrips as 117
117 roundtrips as 118
118 roundtrips as 119
119 roundtrips as 120
121 roundtrips as 122
123 roundtrips as 124
124 roundtrips as 125
125 roundtrips as 126
126 roundtrips as 127
127 roundtrips as 128
129 roundtrips as 130
131 roundtrips as 132
132 roundtrips as 133
133 roundtrips as 134
134 roundtrips as 135
135 roundtrips as 136
137 roundtrips as 138
139 roundtrips as 140
140 roundtrips as 141
141 roundtrips as 142
142 roundtrips as 143
143 roundtrips as 144
145 roundtrips as 146
147 roundtrips as 148
148 roundtrips as 149
149 roundtrips as 150
150 roundtrips as 151
151 roundtrips as 152
153 roundtrips as 154
155 roundtrips as 156
156 roundtrips as 157
157 roundtrips as 158
158 roundtrips as 159
159 roundtrips as 160
161 roundtrips as 162
163 roundtrips as 164
164 roundtrips as 165
165 roundtrips as 166
166 roundtrips as 167
167 roundtrips as 168
169 roundtrips as 170
171 roundtrips as 172
172 roundtrips as 173
173 roundtrips as 174
174 roundtrips as 175
175 roundtrips as 176
177 roundtrips as 178
179 roundtrips as 180
180 roundtrips as 181
181 roundtrips as 182
182 roundtrips as 183
183 roundtrips as 184
185 roundtrips as 186
187 roundtrips as 188
188 roundtrips as 189
189 roundtrips as 190
190 roundtrips as 191
191 roundtrips as 192
193 roundtrips as 194
195 roundtrips as 196
196 roundtrips as 197
197 roundtrips as 198
198 roundtrips as 199
199 roundtrips as 200
201 roundtrips as 202
203 roundtrips as 204
204 roundtrips as 205
205 roundtrips as 206
206 roundtrips as 207
207 roundtrips as 208
209 roundtrips as 210
211 roundtrips as 212
212 roundtrips as 213
213 roundtrips as 214
214 roundtrips as 215
215 roundtrips as 216
216 roundtrips as 217
217 roundtrips as 218
218 roundtrips as 219
219 roundtrips as 220
220 roundtrips as 221
221 roundtrips as 222
222 roundtrips as 223
223 roundtrips as 224
225 roundtrips as 226
227 roundtrips as 228
228 roundtrips as 229
229 roundtrips as 230
230 roundtrips as 231
231 roundtrips as 232
232 roundtrips as 233
233 roundtrips as 234
234 roundtrips as 235
235 roundtrips as 236
236 roundtrips as 237
237 roundtrips as 238
238 roundtrips as 239
239 roundtrips as 240
241 roundtrips as 242
243 roundtrips as 244
244 roundtrips as 245
245 roundtrips as 246
246 roundtrips as 247
247 roundtrips as 248
248 roundtrips as 249
249 roundtrips as 250
250 roundtrips as 251
251 roundtrips as 252
252 roundtrips as 253
253 roundtrips as 254
254 roundtrips as 255
From 88e3fb5920a5ed3d1abcf4b4d2d722db64553483 Mon Sep 17 00:00:00 2001
From: David Gowers <[email protected]>
Date: Mon, 13 Sep 2010 14:41:33 +0930
Subject: [PATCH] testing: test 8bpp->16bpp->8bpp roundtrip precision.

---
 tests/test_mypaintlib.py |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/tests/test_mypaintlib.py b/tests/test_mypaintlib.py
index 184cad0..410bf76 100755
--- a/tests/test_mypaintlib.py
+++ b/tests/test_mypaintlib.py
@@ -21,6 +21,19 @@ def tileConversions():
     dst = zeros((N, N, 4), 'uint8')
     mypaintlib.tile_convert_rgba16_to_rgba8(src, dst)
     assert (dst[:,:,3] == 255).all()
+    #8>16>8 roundtrip is lossless
+    fill = list (range (255+1)) * ((N*N*4) / 256)
+    src = empty((N,N,4), 'uint8')
+    src.flat[:] = fill
+    dst = zeros((N, N, 4), 'uint16')
+    dst2 = zeros((N, N, 4), 'uint8')
+    mypaintlib.tile_convert_rgba8_to_rgba16 (src, dst)
+    mypaintlib.tile_convert_rgba16_to_rgba8 (dst, dst2)
+    for i in range (255+1):
+        if src.flat[i] != dst2.flat[i]:
+            print ("%d roundtrips as %d" % (src.flat[i], dst2.flat[i]))
+    assert (src == dst2).all()
+
 
 def directPaint():
 
-- 
1.7.2

_______________________________________________
Mypaint-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/mypaint-discuss

Reply via email to