cpp-filetype
 
Loading...
Searching...
No Matches
video.hpp
1#ifndef FILETYPE_TYPES_VIDEO_TYPES_HPP
2#define FILETYPE_TYPES_VIDEO_TYPES_HPP
3
4#include <array>
5#include <cstdint>
6#include "filetype/type.hpp"
7
8namespace filetype {
9namespace video {
10
11using Type = ::filetype::Type;
12
13//------------------------------------------------------------------------------
14// Video file type definitions
15//------------------------------------------------------------------------------
16
17// MP4 video format
18// Magic: 00 00 00 XX 66 74 79 70 (....ftyp)
19// Common variants: iso2, iso3, iso4, isom, mp41, mp42, dash
20inline const std::array<uint8_t, 8> MP4_MAGIC = {0x00, 0x00, 0x00, 0x18, 0x66, 0x74, 0x79, 0x70};
21inline const Type TYPE_MP4{"video/mp4", "mp4"};
22
23// AVI video format
24// Magic: 52 49 46 46 XX XX XX XX 41 56 49 20 (RIFF....AVI )
25inline const std::array<uint8_t, 12> AVI_MAGIC = {
26 0x52, 0x49, 0x46, 0x46, 0x00, 0x00, 0x00, 0x00, 0x41, 0x56, 0x49, 0x20};
27inline const Type TYPE_AVI{"video/x-msvideo", "avi"};
28
29// MKV video format
30// Magic: 1A 45 DF A3 (.E..)
31inline const std::array<uint8_t, 4> MKV_MAGIC = {0x1A, 0x45, 0xDF, 0xA3};
32inline const Type TYPE_MKV{"video/x-matroska", "mkv"};
33
34// WebM video format
35// Magic: 1A 45 DF A3 (same as MKV)
36inline const std::array<uint8_t, 4> WEBM_MAGIC = {0x1A, 0x45, 0xDF, 0xA3};
37inline const Type TYPE_WEBM{"video/webm", "webm"};
38
39// MOV video format
40// Magic: 00 00 00 XX 66 74 79 70 71 74 20 20 (....ftypqt )
41inline const std::array<uint8_t, 12> MOV_MAGIC = {
42 0x00, 0x00, 0x00, 0x14, 0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20};
43inline const Type TYPE_MOV{"video/quicktime", "mov"};
44
45// FLV video format
46// Magic: 46 4C 56 01 (FLV.)
47inline const std::array<uint8_t, 4> FLV_MAGIC = {0x46, 0x4C, 0x56, 0x01};
48inline const Type TYPE_FLV{"video/x-flv", "flv"};
49
50// WMV video format
51// Magic: 30 26 B2 75 8E 66 CF 11 (same header as ASF)
52inline const std::array<uint8_t, 8> WMV_MAGIC = {0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11};
53inline const Type TYPE_WMV{"video/x-ms-wmv", "wmv"};
54
55// MPEG video format
56// Magic: 00 00 01 BA or 00 00 01 B3
57inline const std::array<uint8_t, 4> MPEG_MAGIC = {0x00, 0x00, 0x01, 0xBA};
58inline const std::array<uint8_t, 4> MPEG_MAGIC_ALT = {0x00, 0x00, 0x01, 0xB3};
59inline const Type TYPE_MPEG{"video/mpeg", "mpg"};
60
61// 3GP video format
62// Magic: 00 00 00 XX 66 74 79 70 33 67 70 (....ftyp3gp)
63inline const std::array<uint8_t, 11> THREEGP_MAGIC = {
64 0x00, 0x00, 0x00, 0x14, 0x66, 0x74, 0x79, 0x70, 0x33, 0x67, 0x70};
65inline const Type TYPE_3GP{"video/3gpp", "3gp"};
66
67} // namespace video
68} // namespace filetype
69
70#endif // FILETYPE_TYPES_VIDEO_TYPES_HPP