1 /*
2    mkvmerge -- utility for splicing together matroska files
3    from component media subtypes
4 
5    Distributed under the GPL v2
6    see the file COPYING for details
7    or visit https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
8 
9    common definitions for MP4 files
10 
11    Written by Moritz Bunkus <moritz@bunkus.org>.
12 */
13 
14 #pragma once
15 
16 namespace mtx::mp4 {
17 
18 // Object type identifications.
19 // See http://gpac.sourceforge.net/tutorial/mediatypes.htm
20 constexpr auto OBJECT_TYPE_MPEG4Systems1                   = 0x01;
21 constexpr auto OBJECT_TYPE_MPEG4Systems2                   = 0x02;
22 constexpr auto OBJECT_TYPE_MPEG4Visual                     = 0x20;
23 constexpr auto OBJECT_TYPE_MPEG4Audio                      = 0x40;
24 constexpr auto OBJECT_TYPE_MPEG2VisualSimple               = 0x60;
25 constexpr auto OBJECT_TYPE_MPEG2VisualMain                 = 0x61;
26 constexpr auto OBJECT_TYPE_MPEG2VisualSNR                  = 0x62;
27 constexpr auto OBJECT_TYPE_MPEG2VisualSpatial              = 0x63;
28 constexpr auto OBJECT_TYPE_MPEG2VisualHigh                 = 0x64;
29 constexpr auto OBJECT_TYPE_MPEG2Visual422                  = 0x65;
30 constexpr auto OBJECT_TYPE_MPEG2AudioMain                  = 0x66;
31 constexpr auto OBJECT_TYPE_MPEG2AudioLowComplexity         = 0x67;
32 constexpr auto OBJECT_TYPE_MPEG2AudioScaleableSamplingRate = 0x68;
33 constexpr auto OBJECT_TYPE_MPEG2AudioPart3                 = 0x69;
34 constexpr auto OBJECT_TYPE_MPEG1Visual                     = 0x6A;
35 constexpr auto OBJECT_TYPE_MPEG1Audio                      = 0x6B;
36 constexpr auto OBJECT_TYPE_JPEG                            = 0x6C;
37 constexpr auto OBJECT_TYPE_DTS                             = 0xA9;
38 constexpr auto OBJECT_TYPE_VORBIS                          = 0xDD;
39 constexpr auto OBJECT_TYPE_VOBSUB                          = 0xE0;
40 
41 // Audio object type identifactors
42 // This list comes from
43 constexpr auto AUDIO_OBJECT_TYPE_AAC_MAIN                  = 0x01; // Main
44 constexpr auto AUDIO_OBJECT_TYPE_AAC_LC                    = 0x02; // Low Complexity
45 constexpr auto AUDIO_OBJECT_TYPE_AAC_SSR                   = 0x03; // Scalable Sample Rate
46 constexpr auto AUDIO_OBJECT_TYPE_AAC_LTP                   = 0x04; // Long Term Prediction
47 constexpr auto AUDIO_OBJECT_TYPE_SBR                       = 0x05; // Spectral Band Replication
48 constexpr auto AUDIO_OBJECT_TYPE_AAC_SCALABLE              = 0x06; // Scalable
49 constexpr auto AUDIO_OBJECT_TYPE_TWINVQ                    = 0x07; // TwinVQ Vector Quantizer
50 constexpr auto AUDIO_OBJECT_TYPE_CELP                      = 0x08; // Code Excited Linear Prediction
51 constexpr auto AUDIO_OBJECT_TYPE_HVXC                      = 0x09; // Harmonic Vector eXcitation Coding
52 constexpr auto AUDIO_OBJECT_TYPE_TTSI                      = 0x0c; // Text-To-Speech Interface
53 constexpr auto AUDIO_OBJECT_TYPE_MAINSYNTH                 = 0x0d; // Main Synthesis
54 constexpr auto AUDIO_OBJECT_TYPE_WAVESYNTH                 = 0x0e; // Wavetable Synthesis
55 constexpr auto AUDIO_OBJECT_TYPE_MIDI                      = 0x0f; // General MIDI
56 constexpr auto AUDIO_OBJECT_TYPE_SAFX                      = 0x10; // Algorithmic Synthesis and Audio Effects
57 constexpr auto AUDIO_OBJECT_TYPE_ER_AAC_LC                 = 0x11; // Error Resilient Low Complexity
58 constexpr auto AUDIO_OBJECT_TYPE_ER_AAC_LTP                = 0x13; // Error Resilient Long Term Prediction
59 constexpr auto AUDIO_OBJECT_TYPE_ER_AAC_SCALABLE           = 0x14; // Error Resilient Scalable
60 constexpr auto AUDIO_OBJECT_TYPE_ER_TWINVQ                 = 0x15; // Error Resilient Twin Vector Quantizer
61 constexpr auto AUDIO_OBJECT_TYPE_ER_BSAC                   = 0x16; // Error Resilient Bit-Sliced Arithmetic Coding
62 constexpr auto AUDIO_OBJECT_TYPE_ER_AAC_LD                 = 0x17; // Error Resilient Low Delay
63 constexpr auto AUDIO_OBJECT_TYPE_ER_CELP                   = 0x18; // Error Resilient Code Excited Linear Prediction
64 constexpr auto AUDIO_OBJECT_TYPE_ER_HVXC                   = 0x19; // Error Resilient Harmonic Vector eXcitation Coding
65 constexpr auto AUDIO_OBJECT_TYPE_ER_HILN                   = 0x1a; // Error Resilient Harmonic and Individual Lines plus Noise
66 constexpr auto AUDIO_OBJECT_TYPE_ER_PARAM                  = 0x1b; // Error Resilient Parametric
67 constexpr auto AUDIO_OBJECT_TYPE_SSC                       = 0x1c; // SinuSoidal Coding
68 constexpr auto AUDIO_OBJECT_TYPE_PS                        = 0x1d; // Parametric Stereo
69 constexpr auto AUDIO_OBJECT_TYPE_SURROUND                  = 0x1e; // MPEG Surround
70 constexpr auto AUDIO_OBJECT_TYPE_L1                        = 0x20; // Layer 1
71 constexpr auto AUDIO_OBJECT_TYPE_L2                        = 0x21; // Layer 2
72 constexpr auto AUDIO_OBJECT_TYPE_L3                        = 0x22; // Layer 3
73 constexpr auto AUDIO_OBJECT_TYPE_DST                       = 0x23; // Direct Stream Transfer
74 constexpr auto AUDIO_OBJECT_TYPE_ALS                       = 0x24; // Audio LosslesS
75 constexpr auto AUDIO_OBJECT_TYPE_SLS                       = 0x25; // Scalable LosslesS
76 constexpr auto AUDIO_OBJECT_TYPE_SLS_NON_CORE              = 0x26; // Scalable LosslesS (non core)
77 constexpr auto AUDIO_OBJECT_TYPE_ER_AAC_ELD                = 0x27; // Error Resilient Enhanced Low Delay
78 constexpr auto AUDIO_OBJECT_TYPE_SMR_SIMPLE                = 0x28; // Symbolic Music Representation Simple
79 constexpr auto AUDIO_OBJECT_TYPE_SMR_MAIN                  = 0x29; // Symbolic Music Representation Main
80 constexpr auto AUDIO_OBJECT_TYPE_USAC_NOSBR                = 0x2a; // Unified Speech and Audio Coding (no SBR)
81 constexpr auto AUDIO_OBJECT_TYPE_SAOC                      = 0x2b; // Spatial Audio Object Coding
82 constexpr auto AUDIO_OBJECT_TYPE_LD_SURROUND               = 0x2c; // Low Delay MPEG Surround
83 constexpr auto AUDIO_OBJECT_TYPE_USAC                      = 0x2d; // Unified Speech and Audio Coding
84 
85 // Atom data types for free-form data
86 constexpr auto ATOM_DATA_TYPE_JPEG                         = 0x0d;        // JPEG image
87 constexpr auto ATOM_DATA_TYPE_PNG                          = 0x0e;        // PNG image
88 constexpr auto ATOM_DATA_TYPE_BMP                          = 0x1b;        // BMP image
89 
90 // ESDS descriptor types (tags)
91 constexpr auto DESCRIPTOR_TYPE_O                           = 0x01;
92 constexpr auto DESCRIPTOR_TYPE_IO                          = 0x02;
93 constexpr auto DESCRIPTOR_TYPE_ES                          = 0x03;
94 constexpr auto DESCRIPTOR_TYPE_DEC_CONFIG                  = 0x04;
95 constexpr auto DESCRIPTOR_TYPE_DEC_SPECIFIC                = 0x05;
96 constexpr auto DESCRIPTOR_TYPE_SL_CONFIG                   = 0x06;
97 constexpr auto DESCRIPTOR_TYPE_CONTENT_ID                  = 0x07;
98 constexpr auto DESCRIPTOR_TYPE_SUPPL_CONTENT_ID            = 0x08;
99 constexpr auto DESCRIPTOR_TYPE_IP_PTR                      = 0x09;
100 constexpr auto DESCRIPTOR_TYPE_IPMP_PTR                    = 0x0A;
101 constexpr auto DESCRIPTOR_TYPE_IPMP                        = 0x0B;
102 constexpr auto DESCRIPTOR_TYPE_REGISTRATION                = 0x0D;
103 constexpr auto DESCRIPTOR_TYPE_ESID_INC                    = 0x0E;
104 constexpr auto DESCRIPTOR_TYPE_ESID_REF                    = 0x0F;
105 constexpr auto DESCRIPTOR_TYPE_FILE_IO                     = 0x10;
106 constexpr auto DESCRIPTOR_TYPE_FILE_O                      = 0x11;
107 constexpr auto DESCRIPTOR_TYPE_EXT_PROFILE_LEVEL           = 0x13;
108 constexpr auto DESCRIPTOR_TYPE_TAGS_START                  = 0x80;
109 constexpr auto DESCRIPTOR_TYPE_TAGS_END                    = 0xFE;
110 
111 } // namespace mtx::mp4
112