LEFT | RIGHT |
1 // Copyright 2012 The Go Authors. All rights reserved. | 1 // Copyright 2012 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 package tiff | 5 package tiff |
6 | 6 |
7 import ( | 7 import ( |
8 "bytes" | 8 "bytes" |
9 "image" | 9 "image" |
10 "io/ioutil" | 10 "io/ioutil" |
11 "os" | 11 "os" |
12 "testing" | 12 "testing" |
13 ) | 13 ) |
14 | 14 |
15 var roundtripTests = []struct { | 15 var roundtripTests = []struct { |
16 filename string | 16 filename string |
17 opts *Options | 17 opts *Options |
18 }{ | 18 }{ |
19 {"video-001.tiff", nil}, | 19 {"video-001.tiff", nil}, |
20 //{"video-001-16bit.tiff", nil}, | |
21 {"video-001-gray.tiff", nil}, | 20 {"video-001-gray.tiff", nil}, |
22 {"video-001-gray-16bit.tiff", nil}, | 21 {"video-001-gray-16bit.tiff", nil}, |
23 {"video-001-paletted.tiff", nil}, | 22 {"video-001-paletted.tiff", nil}, |
24 {"bw-packbits.tiff", nil}, | 23 {"bw-packbits.tiff", nil}, |
25 {"video-001.tiff", &Options{Predictor: true}}, | 24 {"video-001.tiff", &Options{Predictor: true}}, |
26 {"video-001.tiff", &Options{Compression: Deflate}}, | 25 {"video-001.tiff", &Options{Compression: Deflate}}, |
27 {"video-001.tiff", &Options{Predictor: true, Compression: Deflate}}, | 26 {"video-001.tiff", &Options{Predictor: true, Compression: Deflate}}, |
28 } | 27 } |
29 | 28 |
30 func openImage(filename string) (image.Image, error) { | 29 func openImage(filename string) (image.Image, error) { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 if err := Encode(out, m0, nil); err != nil { | 66 if err := Encode(out, m0, nil); err != nil { |
68 t.Fatal(err) | 67 t.Fatal(err) |
69 } | 68 } |
70 m1, err := Decode(&buffer{buf: out.Bytes()}) | 69 m1, err := Decode(&buffer{buf: out.Bytes()}) |
71 if err != nil { | 70 if err != nil { |
72 t.Fatal(err) | 71 t.Fatal(err) |
73 } | 72 } |
74 compare(t, m0, m1) | 73 compare(t, m0, m1) |
75 } | 74 } |
76 | 75 |
77 // BenchmarkEncode benchmarks the encoding of an image. | 76 // BenchmarkEncode benchmarks the encoding of an image. |
78 func BenchmarkEncode(b *testing.B) { | 77 func BenchmarkEncode(b *testing.B) { |
79 » img, err := openImage("video-001.tiff") | 78 » benchmarkEncode(b, "video-001.tiff", 4) |
| 79 } |
| 80 |
| 81 func BenchmarkEncodePaletted(b *testing.B) { |
| 82 » benchmarkEncode(b, "video-001-paletted.tiff", 1) |
| 83 } |
| 84 |
| 85 func BenchmarkEncodeGray(b *testing.B) { |
| 86 » benchmarkEncode(b, "video-001-gray.tiff", 1) |
| 87 } |
| 88 |
| 89 func BenchmarkEncodeGray16(b *testing.B) { |
| 90 » benchmarkEncode(b, "video-001-gray-16bit.tiff", 2) |
| 91 } |
| 92 |
| 93 func benchmarkEncode(b *testing.B, name string, pixelSize int) { |
| 94 » img, err := openImage(name) |
80 if err != nil { | 95 if err != nil { |
81 b.Fatal(err) | 96 b.Fatal(err) |
82 } | 97 } |
83 s := img.Bounds().Size() | 98 s := img.Bounds().Size() |
84 » b.SetBytes(int64(s.X * s.Y * 4)) | 99 » b.SetBytes(int64(s.X * s.Y * pixelSize)) |
85 b.ResetTimer() | 100 b.ResetTimer() |
86 for i := 0; i < b.N; i++ { | 101 for i := 0; i < b.N; i++ { |
87 Encode(ioutil.Discard, img, nil) | 102 Encode(ioutil.Discard, img, nil) |
88 } | 103 } |
89 } | 104 } |
90 | |
91 func BenchmarkEncodePaletted(b *testing.B) { | |
92 img, err := openImage("video-001-paletted.tiff") | |
93 if err != nil { | |
94 b.Fatal(err) | |
95 } | |
96 s := img.Bounds().Size() | |
97 b.SetBytes(int64(s.X * s.Y * 4)) | |
98 b.ResetTimer() | |
99 for i := 0; i < b.N; i++ { | |
100 Encode(ioutil.Discard, img, nil) | |
101 } | |
102 } | |
103 | |
104 func BenchmarkEncodeGray(b *testing.B) { | |
105 img, err := openImage("video-001-gray.tiff") | |
106 if err != nil { | |
107 b.Fatal(err) | |
108 } | |
109 s := img.Bounds().Size() | |
110 b.SetBytes(int64(s.X * s.Y * 4)) | |
111 b.ResetTimer() | |
112 for i := 0; i < b.N; i++ { | |
113 Encode(ioutil.Discard, img, nil) | |
114 } | |
115 } | |
116 | |
117 func BenchmarkEncodeGray16(b *testing.B) { | |
118 img, err := openImage("video-001-gray-16bit.tiff") | |
119 if err != nil { | |
120 b.Fatal(err) | |
121 } | |
122 s := img.Bounds().Size() | |
123 b.SetBytes(int64(s.X * s.Y * 4)) | |
124 b.ResetTimer() | |
125 for i := 0; i < b.N; i++ { | |
126 Encode(ioutil.Discard, img, nil) | |
127 } | |
128 } | |
LEFT | RIGHT |