File: codec.cpp

package info (click to toggle)
mkvtoolnix 97.0-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 60,284 kB
  • sloc: cpp: 217,034; ruby: 11,453; xml: 8,125; ansic: 6,885; sh: 5,274; python: 1,041; perl: 191; makefile: 113; awk: 16; javascript: 4
file content (273 lines) | stat: -rw-r--r-- 14,998 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
#include "common/common_pch.h"

#include "common/codec.h"
#include "common/fourcc.h"
#include "common/mp4.h"

#include "tests/unit/init.h"

namespace {

TEST(Codec, LookUpStringAudio) {
  EXPECT_TRUE(codec_c::look_up(MKV_A_AAC_2MAIN).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up(MKV_A_AAC_2LC).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up(MKV_A_AAC_2SSR).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up(MKV_A_AAC_2SBR).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up(MKV_A_AAC_4MAIN).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up(MKV_A_AAC_4LC).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up(MKV_A_AAC_4LC).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up(MKV_A_AAC_4SSR).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up(MKV_A_AAC_4LTP).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up(MKV_A_AAC_4SBR).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up(MKV_A_AAC).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up("mp4a").is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up("aac ").is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up("aacl").is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up("aach").is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up("raac").is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up("racp").is(codec_c::type_e::A_AAC));

  EXPECT_TRUE(codec_c::look_up(MKV_A_AC3).is(codec_c::type_e::A_AC3));
  EXPECT_TRUE(codec_c::look_up(MKV_A_EAC3).is(codec_c::type_e::A_AC3));
  EXPECT_TRUE(codec_c::look_up("a52 ").is(codec_c::type_e::A_AC3));
  EXPECT_TRUE(codec_c::look_up("a52b").is(codec_c::type_e::A_AC3));
  EXPECT_TRUE(codec_c::look_up("ac-3").is(codec_c::type_e::A_AC3));
  EXPECT_TRUE(codec_c::look_up("sac3").is(codec_c::type_e::A_AC3));
  EXPECT_TRUE(codec_c::look_up("dnet").is(codec_c::type_e::A_AC3));

  EXPECT_TRUE(codec_c::look_up(MKV_A_ALAC).is(codec_c::type_e::A_ALAC));
  EXPECT_TRUE(codec_c::look_up("ALAC").is(codec_c::type_e::A_ALAC));

  EXPECT_TRUE(codec_c::look_up(MKV_A_DTS).is(codec_c::type_e::A_DTS));
  EXPECT_TRUE(codec_c::look_up("dts ").is(codec_c::type_e::A_DTS));
  EXPECT_TRUE(codec_c::look_up("dtsb").is(codec_c::type_e::A_DTS));
  EXPECT_TRUE(codec_c::look_up("dtsc").is(codec_c::type_e::A_DTS));
  EXPECT_TRUE(codec_c::look_up("dtse").is(codec_c::type_e::A_DTS));
  EXPECT_TRUE(codec_c::look_up("dtsh").is(codec_c::type_e::A_DTS));
  EXPECT_TRUE(codec_c::look_up("dtsl").is(codec_c::type_e::A_DTS));

  EXPECT_TRUE(codec_c::look_up(MKV_A_MP2).is(codec_c::type_e::A_MP2));
  EXPECT_TRUE(codec_c::look_up("mp2a").is(codec_c::type_e::A_MP2));
  EXPECT_TRUE(codec_c::look_up(".mp1").is(codec_c::type_e::A_MP2));
  EXPECT_TRUE(codec_c::look_up(".mp2").is(codec_c::type_e::A_MP2));

  EXPECT_TRUE(codec_c::look_up(MKV_A_MP3).is(codec_c::type_e::A_MP3));
  EXPECT_TRUE(codec_c::look_up("mp3a").is(codec_c::type_e::A_MP3));
  EXPECT_TRUE(codec_c::look_up(".mp3").is(codec_c::type_e::A_MP3));

  EXPECT_TRUE(codec_c::look_up(MKV_A_PCM).is(codec_c::type_e::A_PCM));
  EXPECT_TRUE(codec_c::look_up(MKV_A_PCM_BE).is(codec_c::type_e::A_PCM));
  EXPECT_TRUE(codec_c::look_up(MKV_A_PCM_FLOAT).is(codec_c::type_e::A_PCM));
  EXPECT_TRUE(codec_c::look_up("twos").is(codec_c::type_e::A_PCM));
  EXPECT_TRUE(codec_c::look_up("sowt").is(codec_c::type_e::A_PCM));

  EXPECT_TRUE(codec_c::look_up(MKV_A_VORBIS).is(codec_c::type_e::A_VORBIS));
  EXPECT_TRUE(codec_c::look_up("vorb").is(codec_c::type_e::A_VORBIS));
  EXPECT_TRUE(codec_c::look_up("vor1").is(codec_c::type_e::A_VORBIS));

  EXPECT_TRUE(codec_c::look_up(MKV_A_OPUS).is(codec_c::type_e::A_OPUS));
  EXPECT_TRUE(codec_c::look_up(std::string{MKV_A_OPUS} + "/EXPERIMENTAL").is(codec_c::type_e::A_OPUS));
  EXPECT_TRUE(codec_c::look_up("opus").is(codec_c::type_e::A_OPUS));

  EXPECT_TRUE(codec_c::look_up(MKV_A_QDMC).is(codec_c::type_e::A_QDMC));
  EXPECT_TRUE(codec_c::look_up(MKV_A_QDMC2).is(codec_c::type_e::A_QDMC));
  EXPECT_TRUE(codec_c::look_up("qdm2").is(codec_c::type_e::A_QDMC));

  EXPECT_TRUE(codec_c::look_up(MKV_A_FLAC).is(codec_c::type_e::A_FLAC));
  EXPECT_TRUE(codec_c::look_up("flac").is(codec_c::type_e::A_FLAC));

  EXPECT_TRUE(codec_c::look_up(MKV_A_MLP).is(codec_c::type_e::A_MLP));
  EXPECT_TRUE(codec_c::look_up("mlp ").is(codec_c::type_e::A_MLP));

  EXPECT_TRUE(codec_c::look_up(MKV_A_TRUEHD).is(codec_c::type_e::A_TRUEHD));
  EXPECT_TRUE(codec_c::look_up("trhd").is(codec_c::type_e::A_TRUEHD));

  EXPECT_TRUE(codec_c::look_up(MKV_A_TTA).is(codec_c::type_e::A_TTA));
  EXPECT_TRUE(codec_c::look_up("tta1").is(codec_c::type_e::A_TTA));

  EXPECT_TRUE(codec_c::look_up(MKV_A_WAVPACK4).is(codec_c::type_e::A_WAVPACK4));
  EXPECT_TRUE(codec_c::look_up("wvpk").is(codec_c::type_e::A_WAVPACK4));

  EXPECT_TRUE(codec_c::look_up("A_REAL/COOK").is(codec_c::type_e::A_COOK));
  EXPECT_TRUE(codec_c::look_up("cook").is(codec_c::type_e::A_COOK));

  EXPECT_TRUE(codec_c::look_up("A_REAL/SIPR").is(codec_c::type_e::A_ACELP_NET));
  EXPECT_TRUE(codec_c::look_up("sipr").is(codec_c::type_e::A_ACELP_NET));

  EXPECT_TRUE(codec_c::look_up("A_REAL/ATRC").is(codec_c::type_e::A_ATRAC3));
  EXPECT_TRUE(codec_c::look_up("atrc").is(codec_c::type_e::A_ATRAC3));

  EXPECT_TRUE(codec_c::look_up("A_REAL/RALF").is(codec_c::type_e::A_RALF));
  EXPECT_TRUE(codec_c::look_up("ralf").is(codec_c::type_e::A_RALF));

  EXPECT_TRUE(codec_c::look_up("A_REAL/14_4").is(codec_c::type_e::A_VSELP));
  EXPECT_TRUE(codec_c::look_up("A_REAL/LPCJ").is(codec_c::type_e::A_VSELP));
  EXPECT_TRUE(codec_c::look_up("14_4").is(codec_c::type_e::A_VSELP));
  EXPECT_TRUE(codec_c::look_up("lpcJ").is(codec_c::type_e::A_VSELP));

  EXPECT_TRUE(codec_c::look_up("A_REAL/28_8").is(codec_c::type_e::A_LD_CELP));
  EXPECT_TRUE(codec_c::look_up("28_8").is(codec_c::type_e::A_LD_CELP));
}

TEST(Codec, LookUpStringVideo) {
  EXPECT_TRUE(codec_c::look_up(MKV_V_MPEG1).is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up(MKV_V_MPEG2).is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up("h262").is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up("mp1v").is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up("mp2v").is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up("mpeg").is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up("mpg2").is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up("mpgv").is(codec_c::type_e::V_MPEG12));

  EXPECT_TRUE(codec_c::look_up(MKV_V_MPEG4_SP).is(codec_c::type_e::V_MPEG4_P2));
  EXPECT_TRUE(codec_c::look_up(MKV_V_MPEG4_ASP).is(codec_c::type_e::V_MPEG4_P2));
  EXPECT_TRUE(codec_c::look_up(MKV_V_MPEG4_AP).is(codec_c::type_e::V_MPEG4_P2));
  EXPECT_TRUE(codec_c::look_up("3iv2").is(codec_c::type_e::V_MPEG4_P2));
  EXPECT_TRUE(codec_c::look_up("divx").is(codec_c::type_e::V_MPEG4_P2));
  EXPECT_TRUE(codec_c::look_up("dx50").is(codec_c::type_e::V_MPEG4_P2));
  EXPECT_TRUE(codec_c::look_up("fmp4").is(codec_c::type_e::V_MPEG4_P2));
  EXPECT_TRUE(codec_c::look_up("mp4v").is(codec_c::type_e::V_MPEG4_P2));
  EXPECT_TRUE(codec_c::look_up("xvid").is(codec_c::type_e::V_MPEG4_P2));
  EXPECT_TRUE(codec_c::look_up("xvix").is(codec_c::type_e::V_MPEG4_P2));

  EXPECT_TRUE(codec_c::look_up(MKV_V_MPEG4_AVC).is(codec_c::type_e::V_MPEG4_P10));
  EXPECT_TRUE(codec_c::look_up("h264").is(codec_c::type_e::V_MPEG4_P10));
  EXPECT_TRUE(codec_c::look_up("x264").is(codec_c::type_e::V_MPEG4_P10));
  EXPECT_TRUE(codec_c::look_up("avc1").is(codec_c::type_e::V_MPEG4_P10));

  EXPECT_TRUE(codec_c::look_up(MKV_V_MPEGH_HEVC).is(codec_c::type_e::V_MPEGH_P2));
  EXPECT_TRUE(codec_c::look_up("h265").is(codec_c::type_e::V_MPEGH_P2));
  EXPECT_TRUE(codec_c::look_up("x265").is(codec_c::type_e::V_MPEGH_P2));
  EXPECT_TRUE(codec_c::look_up("hevc").is(codec_c::type_e::V_MPEGH_P2));

  EXPECT_TRUE(codec_c::look_up(MKV_V_REALV1).is(codec_c::type_e::V_REAL));
  EXPECT_TRUE(codec_c::look_up(MKV_V_REALV2).is(codec_c::type_e::V_REAL));
  EXPECT_TRUE(codec_c::look_up(MKV_V_REALV3).is(codec_c::type_e::V_REAL));
  EXPECT_TRUE(codec_c::look_up(MKV_V_REALV4).is(codec_c::type_e::V_REAL));
  EXPECT_TRUE(codec_c::look_up("rv10").is(codec_c::type_e::V_REAL));
  EXPECT_TRUE(codec_c::look_up("rv20").is(codec_c::type_e::V_REAL));
  EXPECT_TRUE(codec_c::look_up("rv30").is(codec_c::type_e::V_REAL));
  EXPECT_TRUE(codec_c::look_up("rv40").is(codec_c::type_e::V_REAL));

  EXPECT_TRUE(codec_c::look_up(MKV_V_THEORA).is(codec_c::type_e::V_THEORA));
  EXPECT_TRUE(codec_c::look_up("theo").is(codec_c::type_e::V_THEORA));
  EXPECT_TRUE(codec_c::look_up("thra").is(codec_c::type_e::V_THEORA));

  EXPECT_TRUE(codec_c::look_up(MKV_V_DIRAC).is(codec_c::type_e::V_DIRAC));
  EXPECT_TRUE(codec_c::look_up("drac").is(codec_c::type_e::V_DIRAC));

  EXPECT_TRUE(codec_c::look_up(MKV_V_VP8).is(codec_c::type_e::V_VP8));
  EXPECT_TRUE(codec_c::look_up("vp80").is(codec_c::type_e::V_VP8));

  EXPECT_TRUE(codec_c::look_up(MKV_V_VP9).is(codec_c::type_e::V_VP9));
  EXPECT_TRUE(codec_c::look_up("vp90").is(codec_c::type_e::V_VP9));

  EXPECT_TRUE(codec_c::look_up("svq1").is(codec_c::type_e::V_SVQ1));
  EXPECT_TRUE(codec_c::look_up("svq1").is(codec_c::type_e::V_SVQ1));
  EXPECT_TRUE(codec_c::look_up("svqi").is(codec_c::type_e::V_SVQ1));

  EXPECT_TRUE(codec_c::look_up("svq3").is(codec_c::type_e::V_SVQ3));

  EXPECT_TRUE(codec_c::look_up("vc-1").is(codec_c::type_e::V_VC1));
  EXPECT_TRUE(codec_c::look_up("wvc1").is(codec_c::type_e::V_VC1));
}

TEST(Codec, LookUpStringSubtitles) {
  EXPECT_TRUE(codec_c::look_up(MKV_S_TEXTUTF8).is(codec_c::type_e::S_SRT));
  EXPECT_TRUE(codec_c::look_up(MKV_S_TEXTASCII).is(codec_c::type_e::S_SRT));

  EXPECT_TRUE(codec_c::look_up(MKV_S_TEXTSSA).is(codec_c::type_e::S_SSA_ASS));
  EXPECT_TRUE(codec_c::look_up(MKV_S_TEXTASS).is(codec_c::type_e::S_SSA_ASS));
  EXPECT_TRUE(codec_c::look_up("ssa ").is(codec_c::type_e::S_SSA_ASS));
  EXPECT_TRUE(codec_c::look_up("ass ").is(codec_c::type_e::S_SSA_ASS));

  EXPECT_TRUE(codec_c::look_up(MKV_S_TEXTUSF).is(codec_c::type_e::S_USF));
  EXPECT_TRUE(codec_c::look_up("usf ").is(codec_c::type_e::S_USF));

  EXPECT_TRUE(codec_c::look_up(MKV_S_VOBSUB).is(codec_c::type_e::S_VOBSUB));
  EXPECT_TRUE(codec_c::look_up(MKV_S_VOBSUBZLIB).is(codec_c::type_e::S_VOBSUB));

  EXPECT_TRUE(codec_c::look_up(MKV_S_KATE).is(codec_c::type_e::S_KATE));
  EXPECT_TRUE(codec_c::look_up("kate").is(codec_c::type_e::S_KATE));

  EXPECT_TRUE(codec_c::look_up(MKV_S_HDMV_TEXTST).is(codec_c::type_e::S_HDMV_TEXTST));

  EXPECT_TRUE(codec_c::look_up(MKV_S_HDMV_PGS).is(codec_c::type_e::S_HDMV_PGS));
}

TEST(Codec, LookUpAudioFormat) {
  EXPECT_TRUE(codec_c::look_up_audio_format(0x00ffu).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up_audio_format(0x706du).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up_audio_format(0x2000u).is(codec_c::type_e::A_AC3));
  EXPECT_TRUE(codec_c::look_up_audio_format(0x2001u).is(codec_c::type_e::A_DTS));
  EXPECT_TRUE(codec_c::look_up_audio_format(0x0050u).is(codec_c::type_e::A_MP2));
  EXPECT_TRUE(codec_c::look_up_audio_format(0x0055u).is(codec_c::type_e::A_MP3));
  EXPECT_TRUE(codec_c::look_up_audio_format(0x0001u).is(codec_c::type_e::A_PCM));
  EXPECT_TRUE(codec_c::look_up_audio_format(0x0003u).is(codec_c::type_e::A_PCM));
  EXPECT_TRUE(codec_c::look_up_audio_format(0x566fu).is(codec_c::type_e::A_VORBIS));
  EXPECT_TRUE(codec_c::look_up_audio_format(0xfffeu).is(codec_c::type_e::A_VORBIS));
}

TEST(Codec, LookUpFourCC) {
  EXPECT_TRUE(codec_c::look_up(fourcc_c{0x00000000u}).is(codec_c::type_e::V_UNCOMPRESSED));
  EXPECT_TRUE(codec_c::look_up(fourcc_c{0x01000000u}).is(codec_c::type_e::V_RLE8));
  EXPECT_TRUE(codec_c::look_up(fourcc_c{0x02000000u}).is(codec_c::type_e::V_RLE4));
  EXPECT_TRUE(codec_c::look_up(fourcc_c{0x03000000u}).is(codec_c::type_e::V_BITFIELDS));
}

TEST(Codec, LookUpObjectTypeId) {
  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG2AudioMain).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG2AudioLowComplexity).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG2AudioScaleableSamplingRate).is(codec_c::type_e::A_AAC));
  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG2AudioPart3).is(codec_c::type_e::A_MP3));

  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG1Audio).is(codec_c::type_e::A_MP2));

  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_DTS).is(codec_c::type_e::A_DTS));

  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG4Visual).is(codec_c::type_e::V_MPEG4_P2));

  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG2VisualSimple).is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG2VisualMain).is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG2VisualSNR).is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG2VisualSpatial).is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG2VisualHigh).is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG2Visual422).is(codec_c::type_e::V_MPEG12));
  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_MPEG1Visual).is(codec_c::type_e::V_MPEG12));

  EXPECT_TRUE(codec_c::look_up_object_type_id(mtx::mp4::OBJECT_TYPE_VOBSUB).is(codec_c::type_e::S_VOBSUB));
}

TEST(Codec, LookUpOverloading) {
  EXPECT_TRUE(codec_c::look_up("kate").is(codec_c::type_e::S_KATE));
  EXPECT_TRUE(codec_c::look_up("kate"s).is(codec_c::type_e::S_KATE));
  EXPECT_TRUE(codec_c::look_up(fourcc_c{"kate"}).is(codec_c::type_e::S_KATE));
  EXPECT_TRUE(codec_c::look_up(codec_c::type_e::S_KATE).is(codec_c::type_e::S_KATE));
}

TEST(Codec, LookUpValidity) {
  EXPECT_FALSE(codec_c::look_up("DOES-NOT-EXIST").valid());
  EXPECT_FALSE(codec_c::look_up_audio_format(0x0000u).valid());
  EXPECT_FALSE(codec_c::look_up_audio_format(0x4711).valid());
  EXPECT_FALSE(codec_c::look_up_object_type_id(0x0000u).valid());
  EXPECT_FALSE(codec_c::look_up_object_type_id(0x4711).valid());
}

TEST(Codec, HandlingOfUnknownCodec) {
  EXPECT_TRUE(codec_c::look_up(codec_c::type_e::UNKNOWN).is(codec_c::type_e::UNKNOWN));
  EXPECT_FALSE(codec_c::look_up(codec_c::type_e::UNKNOWN).valid());
}

TEST(Codec, GetNameFallbacks) {
  EXPECT_EQ(codec_c::look_up("DOES-NOT-EXIST").get_name("HelloWorld"), "HelloWorld");
  EXPECT_EQ(codec_c::look_up("DOES-NOT-EXIST").get_name(),             "");
}

TEST(Codec, TrackTypes) {
  EXPECT_EQ(codec_c::look_up(MKV_A_AAC).get_track_type(),    track_audio);
  EXPECT_EQ(codec_c::look_up(MKV_V_VP9).get_track_type(),    track_video);
  EXPECT_EQ(codec_c::look_up(MKV_S_VOBSUB).get_track_type(), track_subtitle);
  EXPECT_EQ(codec_c::look_up(MKV_B_VOBBTN).get_track_type(), track_buttons);
}

}