X-Git-Url: http://git.shiar.net/sheet.git/blobdiff_plain/1676865de8be5f051b97cc3d4b4fcc959732d3ef..c3ef3326d8ca3d9209afd34f6220f78b1eb0dbc2:/codec.inc.pl
diff --git a/codec.inc.pl b/codec.inc.pl
index 925c2fe..6b6b4e0 100644
--- a/codec.inc.pl
+++ b/codec.inc.pl
@@ -5,6 +5,10 @@ codec => {
name => 'JPEG',
available => 1992,
},
+ gif => {
+ name => 'GIF',
+ available => 1987,
+ },
png => {
name => 'PNG',
available => 1996,
@@ -38,6 +42,7 @@ feature => {
name => 'compression (photo)',
score => {
jpeg => 3,
+ gif => 1,
png => 1,
jp2k => 4,
webp => 3,
@@ -49,15 +54,16 @@ feature => {
},
quality_photo_1 => {
parent => 'quality_photo',
- name => 'low fidelity',
+ name => 'thumbnails',
score => {
jpeg => 2,
+ gif => 1,
png => 1,
jp2k => 3,
- webp => 3,
+ webp => 4,
heic => 5,
avif => 5,
- jxl => 4,
+ jxl => 3,
},
},
quality_photo_2 => {
@@ -65,6 +71,7 @@ feature => {
name => 'medium fidelity',
score => {
jpeg => 3,
+ gif => 1,
png => 1,
jp2k => 4,
webp => 3,
@@ -78,6 +85,7 @@ feature => {
name => 'high fidelity',
score => {
jpeg => 3,
+ gif => 1,
png => 2,
jp2k => 4,
webp => 2,
@@ -91,6 +99,7 @@ feature => {
name => 'lossless',
score => {
jpeg => 1,
+ gif => 1,
png => 2,
jp2k => 4,
webp => 3,
@@ -103,6 +112,7 @@ feature => {
name => 'compression (other images)',
score => {
jpeg => 2,
+ gif => 1,
png => 3,
jp2k => 2,
webp => 4,
@@ -116,6 +126,7 @@ feature => {
name => 'lossy non-photographic',
score => {
jpeg => 2,
+ gif => 2,
png => 3,
jp2k => 2,
webp => 4,
@@ -128,6 +139,7 @@ feature => {
name => 'lossless non-photographic',
score => {
jpeg => 1,
+ gif => 1,
png => 4,
jp2k => 2,
webp => 5,
@@ -140,6 +152,7 @@ feature => {
name => 'mixed photo/nonphoto',
score => {
jpeg => 2,
+ gif => 1,
png => 2,
jp2k => 2,
webp => 3,
@@ -151,6 +164,7 @@ feature => {
speed => {
score => {
jpeg => 5,
+ gif => 4,
png => 4,
jp2k => 3,
webp => 4,
@@ -165,6 +179,7 @@ feature => {
name => 'single-core encode',
score => {
jpeg => 5,
+ gif => 3, # palette conversion
png => 3,
jp2k => 4,
webp => 4,
@@ -178,6 +193,7 @@ feature => {
name => 'single-core decode',
score => {
jpeg => 5,
+ gif => 5,
png => 5,
jp2k => 4,
webp => 5,
@@ -191,6 +207,7 @@ feature => {
name => 'pararellizable',
score => {
jpeg => 2,
+ gif => 2,
png => 2,
jp2k => 4,
webp => 2,
@@ -202,6 +219,7 @@ feature => {
limits => {
score => {
jpeg => 3,
+ gif => 2,
png => 4,
jp2k => 5,
webp => 2,
@@ -216,6 +234,7 @@ feature => {
name => 'maximum image dimensions',
score => {
jpeg => 3,
+ gif => 3,
png => 4,
jp2k => 5,
webp => 1,
@@ -225,6 +244,7 @@ feature => {
},
data => {
jpeg => '65k²', # 2**16
+ gif => '65k²', # 2**16
png => '2G²', # 2**31
jp2k => '4G²', # 2**32
webp => '16k²', # 2**14
@@ -238,6 +258,7 @@ feature => {
name => 'precision (max. bit depth)',
score => {
jpeg => 2,
+ gif => 2,
png => 4,
jp2k => 5,
webp => 2,
@@ -247,6 +268,7 @@ feature => {
},
data => {
jpeg => 8,
+ gif => 8,
png => 16,
jp2k => 38,
webp => 8,
@@ -260,6 +282,7 @@ feature => {
name => 'can do (lossy) 4:4:4',
score => {
jpeg => 'y',
+ gif => 'y',
png => 'y',
jp2k => 'y',
webp => 'n',
@@ -273,6 +296,7 @@ feature => {
name => 'wide gamut/HDR',
score => {
jpeg => 'n',
+ gif => 'n',
png => 'y',
jp2k => 'y',
webp => 'n',
@@ -286,6 +310,7 @@ feature => {
name => 'maximum number of channels',
score => {
jpeg => 2,
+ gif => 1,
png => 2,
jp2k => 5,
webp => 2,
@@ -295,6 +320,7 @@ feature => {
},
data => {
jpeg => 4, # cmyk
+ gif => 3,
png => 4, # cmyk
jp2k => 2**15,
webp => 4,
@@ -306,6 +332,7 @@ feature => {
features => {
score => {
jpeg => 2,
+ gif => 2,
png => 3,
jp2k => 4,
webp => 2,
@@ -320,6 +347,7 @@ feature => {
name => 'supports animation',
score => {
jpeg => 2,
+ gif => 'y',
png => 4,
jp2k => 2,
webp => 'y',
@@ -338,6 +366,7 @@ feature => {
name => 'progressive decoding',
score => {
jpeg => 4,
+ gif => 2,
png => 2,
jp2k => 5,
webp => 'n',
@@ -351,6 +380,7 @@ feature => {
name => 'alpha transparency',
score => {
jpeg => 'n',
+ gif => 3,
png => 'y',
jp2k => 'y',
webp => 'y',
@@ -358,12 +388,16 @@ feature => {
avif => 'y',
jxl => 'y',
},
+ data => {
+ gif => '1 bit',
+ },
},
depthmap => {
parent => 'features',
name => 'depth map',
score => {
jpeg => 'n',
+ gif => 'n',
png => 'n',
jp2k => 'n',
webp => 'n',
@@ -374,9 +408,10 @@ feature => {
},
overlays => {
parent => 'features',
- name => 'overlays',
+ name => 'overlays (layers)',
score => {
jpeg => 'n',
+ gif => 'y',
png => 'n',
jp2k => 'n',
webp => 'n',
@@ -390,6 +425,7 @@ feature => {
name => 'authoring workflow suitability',
score => {
jpeg => 2,
+ gif => 2,
png => 3,
jp2k => 3,
webp => 2,
@@ -403,7 +439,8 @@ feature => {
name => 'generation loss resilience',
score => {
jpeg => 4,
- png => 'n/a',
+ png => 0,
+ gif => 0,
jp2k => 3,
webp => 2,
heic => 3,
@@ -411,6 +448,7 @@ feature => {
jxl => 4,
},
data => {
+ gif => 'n/a',
png => 'n/a',
},
},
@@ -419,6 +457,7 @@ feature => {
name => 'lossless JPEG recompression',
score => {
jpeg => 0,
+ gif => 'n',
png => 'n',
jp2k => 'n',
webp => 'n',
@@ -434,8 +473,8 @@ feature => {
name => 'royalty-free',
score => {
jpeg => 5,
- png => 5,
gif => 5, # patents expired
+ png => 5,
jp2k => 3, # specs not freely available
webp => 4, # submarine risk
heic => 'n', # patents enforced