// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_FORMATS_MP4_FOURCCS_H_ #define MEDIA_FORMATS_MP4_FOURCCS_H_ #include #include "media/media_buildflags.h" namespace media { namespace mp4 { enum FourCC { FOURCC_NULL = 0, #if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO) FOURCC_AC3 = 0x61632d33, // "ac-3" FOURCC_EAC3 = 0x65632d33, // "ec-3" #endif #if BUILDFLAG(ENABLE_AV1_DECODER) FOURCC_AV01 = 0x61763031, // "av01" FOURCC_AV1C = 0x61763143, // "av1C" #endif FOURCC_AVC1 = 0x61766331, FOURCC_AVC3 = 0x61766333, FOURCC_AVCC = 0x61766343, FOURCC_BLOC = 0x626C6F63, FOURCC_CBCS = 0x63626373, FOURCC_CENC = 0x63656e63, FOURCC_CLLI = 0x636c6c69, FOURCC_COLL = 0x436f4c4c, // "CoLL" FOURCC_CO64 = 0x636f3634, FOURCC_COLR = 0x636f6c72, FOURCC_CTTS = 0x63747473, FOURCC_DFLA = 0x64664c61, // "dfLa" FOURCC_DINF = 0x64696e66, FOURCC_DOPS = 0x644f7073, // "dOps" #if BUILDFLAG(ENABLE_PLATFORM_DOLBY_VISION) FOURCC_DVA1 = 0x64766131, FOURCC_DVAV = 0x64766176, FOURCC_DVCC = 0x64766343, FOURCC_DVVC = 0x64767643, #if BUILDFLAG(ENABLE_PLATFORM_HEVC) FOURCC_DVH1 = 0x64766831, FOURCC_DVHE = 0x64766865, #endif #endif FOURCC_EDTS = 0x65647473, FOURCC_EMSG = 0x656d7367, FOURCC_ELST = 0x656c7374, FOURCC_ENCA = 0x656e6361, FOURCC_ENCV = 0x656e6376, FOURCC_ESDS = 0x65736473, FOURCC_FLAC = 0x664c6143, // "fLaC" FOURCC_FREE = 0x66726565, FOURCC_FRMA = 0x66726d61, FOURCC_FTYP = 0x66747970, FOURCC_HDLR = 0x68646c72, FOURCC_HINT = 0x68696e74, #if BUILDFLAG(ENABLE_PLATFORM_HEVC) FOURCC_HEV1 = 0x68657631, FOURCC_HVC1 = 0x68766331, FOURCC_HVCC = 0x68766343, #endif FOURCC_ID32 = 0x49443332, FOURCC_IODS = 0x696f6473, FOURCC_MDAT = 0x6d646174, FOURCC_MDCV = 0x6d646376, FOURCC_MDHD = 0x6d646864, FOURCC_MDIA = 0x6d646961, FOURCC_MECO = 0x6d65636f, FOURCC_MEHD = 0x6d656864, FOURCC_META = 0x6d657461, FOURCC_MFHD = 0x6d666864, FOURCC_MFRA = 0x6d667261, #if BUILDFLAG(ENABLE_PLATFORM_MPEG_H_AUDIO) FOURCC_MHM1 = 0x6d686d31, FOURCC_MHA1 = 0x6d686131, #endif FOURCC_MINF = 0x6d696e66, FOURCC_MOOF = 0x6d6f6f66, FOURCC_MOOV = 0x6d6f6f76, FOURCC_MP4A = 0x6d703461, FOURCC_MP4V = 0x6d703476, FOURCC_MVEX = 0x6d766578, FOURCC_MVHD = 0x6d766864, FOURCC_NCLX = 0x6e636c78, FOURCC_OPUS = 0x4f707573, // "Opus" FOURCC_PASP = 0x70617370, FOURCC_PDIN = 0x7064696e, FOURCC_PRFT = 0x70726674, FOURCC_PSSH = 0x70737368, FOURCC_SAIO = 0x7361696f, FOURCC_SAIZ = 0x7361697a, FOURCC_SBGP = 0x73626770, FOURCC_SBTL = 0x7362746c, FOURCC_SCHI = 0x73636869, FOURCC_SCHM = 0x7363686d, FOURCC_SDTP = 0x73647470, FOURCC_SEIG = 0x73656967, FOURCC_SENC = 0x73656e63, FOURCC_SGPD = 0x73677064, FOURCC_SIDX = 0x73696478, FOURCC_SINF = 0x73696e66, FOURCC_SKIP = 0x736b6970, FOURCC_SMDM = 0x536d446d, // "SmDm" FOURCC_SMHD = 0x736d6864, FOURCC_SOUN = 0x736f756e, FOURCC_SSIX = 0x73736978, FOURCC_STBL = 0x7374626c, FOURCC_STCO = 0x7374636f, FOURCC_STSC = 0x73747363, FOURCC_STSD = 0x73747364, FOURCC_STSS = 0x73747373, FOURCC_STSZ = 0x7374737a, FOURCC_STTS = 0x73747473, FOURCC_STYP = 0x73747970, FOURCC_SUBT = 0x73756274, FOURCC_TENC = 0x74656e63, FOURCC_TEXT = 0x74657874, FOURCC_TFDT = 0x74666474, FOURCC_TFHD = 0x74666864, FOURCC_TKHD = 0x746b6864, FOURCC_TRAF = 0x74726166, FOURCC_TRAK = 0x7472616b, FOURCC_TREX = 0x74726578, FOURCC_TRUN = 0x7472756e, FOURCC_UDTA = 0x75647461, FOURCC_UUID = 0x75756964, FOURCC_VIDE = 0x76696465, FOURCC_VMHD = 0x766d6864, FOURCC_VP09 = 0x76703039, FOURCC_VPCC = 0x76706343, FOURCC_WIDE = 0x77696465, #if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO) FOURCC_DTSC = 0x64747363, // "dtsc" FOURCC_DTSX = 0x64747378, // "dtsx" FOURCC_DDTS = 0x64647473, // "ddts" FOURCC_UDTS = 0x75647473, // "udts" #endif // BUILDFLAG(USE_PROPRIETARY_CODECS) && // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO) }; const inline std::string FourCCToString(FourCC fourcc) { char buf[5]; buf[0] = (fourcc >> 24) & 0xff; buf[1] = (fourcc >> 16) & 0xff; buf[2] = (fourcc >> 8) & 0xff; buf[3] = (fourcc) & 0xff; buf[4] = 0; // Return hex itself if characters can not be printed. Any character within // the "C" locale is considered printable. for (int i = 0; i < 4; ++i) { if (!(buf[i] > 0x1f && buf[i] < 0x7f)) { std::stringstream hex_string; hex_string << "0x" << std::hex << fourcc; return hex_string.str(); } } return std::string(buf); } } // namespace mp4 } // namespace media #endif // MEDIA_FORMATS_MP4_FOURCCS_H_