1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef MEDIA_FORMATS_MP4_FOURCCS_H_
6#define MEDIA_FORMATS_MP4_FOURCCS_H_
7
8#include <string>
9
10namespace media {
11namespace mp4 {
12
13enum FourCC {
14  FOURCC_NULL = 0,
15  FOURCC_AVC1 = 0x61766331,
16  FOURCC_AVC3 = 0x61766333,
17  FOURCC_AVCC = 0x61766343,
18  FOURCC_BLOC = 0x626C6F63,
19  FOURCC_CENC = 0x63656e63,
20  FOURCC_CO64 = 0x636f3634,
21  FOURCC_CTTS = 0x63747473,
22  FOURCC_DINF = 0x64696e66,
23  FOURCC_EDTS = 0x65647473,
24  FOURCC_EMSG = 0x656d7367,
25  FOURCC_ELST = 0x656c7374,
26  FOURCC_ENCA = 0x656e6361,
27  FOURCC_ENCV = 0x656e6376,
28  FOURCC_ESDS = 0x65736473,
29  FOURCC_FREE = 0x66726565,
30  FOURCC_FRMA = 0x66726d61,
31  FOURCC_FTYP = 0x66747970,
32  FOURCC_HDLR = 0x68646c72,
33  FOURCC_HINT = 0x68696e74,
34  FOURCC_IODS = 0x696f6473,
35  FOURCC_MDAT = 0x6d646174,
36  FOURCC_MDHD = 0x6d646864,
37  FOURCC_MDIA = 0x6d646961,
38  FOURCC_MECO = 0x6d65636f,
39  FOURCC_MEHD = 0x6d656864,
40  FOURCC_META = 0x6d657461,
41  FOURCC_MFHD = 0x6d666864,
42  FOURCC_MFRA = 0x6d667261,
43  FOURCC_MINF = 0x6d696e66,
44  FOURCC_MOOF = 0x6d6f6f66,
45  FOURCC_MOOV = 0x6d6f6f76,
46  FOURCC_MP4A = 0x6d703461,
47  FOURCC_MP4V = 0x6d703476,
48  FOURCC_MVEX = 0x6d766578,
49  FOURCC_MVHD = 0x6d766864,
50  FOURCC_PASP = 0x70617370,
51  FOURCC_PDIN = 0x7064696e,
52  FOURCC_PRFT = 0x70726674,
53  FOURCC_PSSH = 0x70737368,
54  FOURCC_SAIO = 0x7361696f,
55  FOURCC_SAIZ = 0x7361697a,
56  FOURCC_SBGP = 0x73626770,
57  FOURCC_SCHI = 0x73636869,
58  FOURCC_SCHM = 0x7363686d,
59  FOURCC_SDTP = 0x73647470,
60  FOURCC_SEIG = 0x73656967,
61  FOURCC_SGPD = 0x73677064,
62  FOURCC_SIDX = 0x73696478,
63  FOURCC_SINF = 0x73696e66,
64  FOURCC_SKIP = 0x736b6970,
65  FOURCC_SMHD = 0x736d6864,
66  FOURCC_SOUN = 0x736f756e,
67  FOURCC_SSIX = 0x73736978,
68  FOURCC_STBL = 0x7374626c,
69  FOURCC_STCO = 0x7374636f,
70  FOURCC_STSC = 0x73747363,
71  FOURCC_STSD = 0x73747364,
72  FOURCC_STSS = 0x73747373,
73  FOURCC_STSZ = 0x7374737a,
74  FOURCC_STTS = 0x73747473,
75  FOURCC_STYP = 0x73747970,
76  FOURCC_TENC = 0x74656e63,
77  FOURCC_TFDT = 0x74666474,
78  FOURCC_TFHD = 0x74666864,
79  FOURCC_TKHD = 0x746b6864,
80  FOURCC_TRAF = 0x74726166,
81  FOURCC_TRAK = 0x7472616b,
82  FOURCC_TREX = 0x74726578,
83  FOURCC_TRUN = 0x7472756e,
84  FOURCC_UDTA = 0x75647461,
85  FOURCC_UUID = 0x75756964,
86  FOURCC_VIDE = 0x76696465,
87  FOURCC_VMHD = 0x766d6864,
88  FOURCC_WIDE = 0x77696465,
89};
90
91const inline std::string FourCCToString(FourCC fourcc) {
92  char buf[5];
93  buf[0] = (fourcc >> 24) & 0xff;
94  buf[1] = (fourcc >> 16) & 0xff;
95  buf[2] = (fourcc >> 8) & 0xff;
96  buf[3] = (fourcc) & 0xff;
97  buf[4] = 0;
98  return std::string(buf);
99}
100
101}  // namespace mp4
102}  // namespace media
103
104#endif  // MEDIA_FORMATS_MP4_FOURCCS_H_
105