codec: derive column groups from generation sequence
[sheet.git] / codec-audio.inc.pl
1 use utf8;
2 +{
3 codec => {
4         mp3 => {
5                 name => '<abbr title="MPEG-1 Audio Layer III">MP3</abbr>',
6                 available => 1991,
7                 generation => 0,
8         },
9         vorbis => {
10                 name => 'Vorbis',
11                 available => 2000,
12                 generation => 1,
13         },
14         opus => {
15                 name => 'Opus',
16                 available => 2012,
17                 generation => 1,
18         },
19         aac => {
20                 name => '<abbr title="Advanced Audio Coding">AAC</abbr>',
21                 available => 1997,
22                 generation => 1,
23         },
24         atrac => {
25                 name => '<abbr title="Adaptive Transform Acoustic Coding">ATRAC</abbr>',
26                 available => 1992,
27                 generation => 0,
28         },
29 },
30 feature => {
31         default => {
32                 children => [qw( quality limits royalties support )],
33         },
34         quality => {
35                 name => 'compression quality',
36                 children => [qw( quality_music quality_speech quality_ll )],
37                 score => {
38                 },
39         },
40         quality_music => {
41                 name => 'music',
42                 score => {
43                         mp3  => 3,
44                         atrac => 2,
45                         vorbis => 4,
46                         aac  => 5,
47                         opus => 5,
48                 },
49         },
50         quality_speech => {
51                 name => 'speech',
52                 score => {
53                         mp3  => 3,
54                 },
55         },
56         quality_ll => {
57                 name => 'lossless',
58                 score => {
59                         mp3  => 'n',
60                         vorbis => 'n',
61                         opus => 'n',
62                         flac => 4,
63                 },
64         },
65         limits => {
66                 children => [qw( channels bitrate latency peeling )],
67                 score => {
68                 },
69         },
70         channels => {
71                 score => {
72                         mp3  => [3, 6, 'stereo, extended to upto 5.1'],
73                         vorbis => [4, 255],
74                         opus => [4, 255],
75                 },
76         },
77         peeling => {
78                 name => 'bitrate peeling',
79                 score => {
80                         vorbis => [3, undef, 'yes but "unusable" quality'],
81                         mp3  => 'n',
82                         opus => 'n',
83                         aac  => 'n',
84                 },
85         },
86         latency => {
87                 name => 'frame size (ms)',
88                 score => {
89                         mp3 => [3, 26, 'typical version and layer has 1152 samples at 44kHz'],
90                         opus => [5, 2.5],
91                 },
92         },
93         bitrate => {
94                 name => 'minimal bitrate',
95                 score => {
96                         mp3 => [4, 8],
97                         opus => [4, 6],
98                 },
99         },
100         royalties => {
101                 score => {
102                         mp3  => [5, undef, 'expired'],
103                         vorbis => 5,
104                         opus => [4, undef, 'open and free design'],
105                         atrac => [2, undef, 'proprietary, but the original patents have expired'],
106                 },
107         },
108         support => {
109                 score => {
110                         mp3  => 5,
111                         vorbis => 4,
112                         aac  => 4,
113                         opus => 4,
114                         atrac => 1,
115                 },
116         },
117 },
118 }