2018-03-06 23:09:15 +01:00
# ifndef TAG_PARSER_MP4IDS_H
# define TAG_PARSER_MP4IDS_H
2016-08-29 15:43:05 +02:00
# include "../global.h"
2019-03-13 19:06:42 +01:00
# include <cstdint>
2021-01-30 21:53:06 +01:00
# include <string_view>
2016-08-29 15:43:05 +02:00
2018-03-07 01:17:50 +01:00
namespace TagParser {
2016-08-29 15:43:05 +02:00
class MediaFormat ;
namespace Mp4AtomIds {
2019-03-13 19:06:42 +01:00
enum KnownValue : std : : uint32_t {
2020-04-22 21:02:34 +02:00
Av1Configuration = 0x61763143 , /**< av1C */
AvcConfiguration = 0x61766343 , /**< avcC */
BitrateBox = 0x62747274 , /**< btrt */
CleanAperature = 0x636c6170 , /**< clap */
ChunkOffset64 = 0x636f3634 , /**< co64 */
CompositionTimeToSample = 0x63747473 , /**< ctts */
Data = 0x64617461 , /**< data */
DataInformation = 0x64696e66 , /**< dinf */
DataReference = 0x64726566 , /**< dref */
Drms = 0x64726D73 , /**< drms */
Edts = 0x65647473 , /**< FIXME v10: remove in next major release */
Edit = 0x65647473 , /**< edts */
EditList = 0x656C7374 , /**< elst */
Free = 0x66726565 , /**< free */
FileType = 0x66747970 , /**< ftyp */
HandlerReference = 0x68646c72 , /**< hdlr */
HintMediaHeader = 0x686D6864 , /**< hmhd */
ItunesList = 0x696c7374 , /**< ilst */
MediaData = 0x6d646174 , /**< mdat */
MediaHeader = 0x6d646864 , /**< mdhd */
Media = 0x6d646961 , /**< mdia */
Mean = 0x6D65616E , /**< mean */
MovieExtendsHeader = 0x6D656864 , /**< mehd */
Meta = 0x6d657461 , /**< meta */
MovieFragmentHeader = 0x6D666864 , /**< mfhd */
MovieFragmentRandomAccess = 0x6d667261 , /**< mfra */
MediaInformation = 0x6d696e66 , /**< minf */
MediaInformationHeader = 0x676D6864 , /**< gmhd */
MediaInformationBase = 0x676D696E , /**< gmin */
MediaInformationText = 0x74657874 , /**< text */
MovieFragment = 0x6d6f6f66 , /**< moof */
Movie = 0x6d6f6f76 , /**< moov */
MovieExtends = 0x6D766578 , /**< mvex */
MovieHeader = 0x6D766864 , /**< mvhd */
Name = 0x6E616D65 , /**< name */
NullMediaHeaderBox = 0x6E6D6864 , /**< nmhd */
PaddingBits = 0x70616462 , /**< padb */
PixalAspectRatio = 0x70617370 , /**< pasp */
ProgressiveDownloadInformation = 0x7064696e , /**< pdin */
SampleToGroup = 0x73626770 , /**< sbgp */
IndependentAndDisposableSamples = 0x73647470 , /**< sdtp */
SampleGroupDescription = 0x73677064 , /**< sgpd */
Skip = 0x736b6970 , /**< skip */
SoundMediaHeader = 0x736D6864 , /**< smhd */
SampleTable = 0x7374626c , /**< stbl */
ChunkOffset = 0x7374636f , /**< stco */
DegradationPriority = 0x73746470 , /**< stdp */
SampleToChunk = 0x73747363 , /**< stsc */
SampleDescription = 0x73747364 , /**< stsd */
ShadowSyncSample = 0x73747368 , /**< stsh */
SyncSample = 0x73747373 , /**< stss */
SampleSize = 0x7374737A , /**< stsz */
DecodingTimeToSample = 0x73747473 , /**< stts */
CompactSampleSize = 0x73747a32 , /**< stz2 */
SubSampleInformation = 0x73756273 , /**< subs */
TrackFragmentHeader = 0x74666864 , /**< tfhd */
TrackHeader = 0x746b6864 , /**< tkhd */
TrackFragment = 0x74726166 , /**< traf */
Track = 0x7472616b , /**< trak */
TrackReference = 0x74726566 , /**< tref */
TrackExtends = 0x74726578 , /**< trex */
TrackFragmentRun = 0x7472756E , /**< trun */
UserData = 0x75647461 , /**< udta */
DataEntryUrl = 0x75726C20 , /**< url */
DataEntryUrn = 0x75726E20 , /**< urn */
VideoMediaHeader = 0x766D6864 , /**< vmhd */
Wide = 0x77696465 , /**< wide */
2016-08-29 15:43:05 +02:00
} ;
}
namespace Mp4TagAtomIds {
2019-03-13 19:06:42 +01:00
enum KnownValue : std : : uint32_t {
2020-04-22 21:02:34 +02:00
Album = 0xA9616c62 , /**< ©alb */
AlbumArtist = 0x61415254 , /**< aART */
Artist = 0xA9415254 , /**< ©ART */
Bpm = 0x746d706f , /**< tmpo */
Category = 0x63617467 , /**< catg */
Comment = 0xA9636d74 , /**< ©cmt */
Composer = 0xA9777274 , /**< ©wrt */
Copyright = 0x63707274 , /**< cprt */
Cover = 0x636f7672 , /**< covr */
Description = 0x64657363 , /**< desc */
DiskPosition = 0x6469736b , /**< disk */
Encoder = 0xA9746f6f , /**< ©too */
EpisodeGlobalUniqueId = 0x65676964 , /**< egid */
Extended = 0x2d2d2d2d , /**< ---- */
GaplessPlayback = 0x70676170 , /**< pgap */
Genre = 0xA967656e , /**< ©gen */
Grouping = 0xA9677270 , /**< ©grp */
Keywords = 0x6b657977 , /**< keyw */
Lyricist = 0xA9737766 , /**< ©swf */
Lyrics = 0xA96c7972 , /**< ©lyr */
MediaType = 0x7374696B , /**< stik */
Performers = 0xA9707266 , /**< ©prf */
Podcast = 0x70637374 , /**< pcst */
PodcastUrl = 0x7075726c , /**< purl */
PreDefinedGenre = 0x676e7265 , /**< gnre */
Producer = 0xA9707264 , /**< ©prd */
PurchaseDate = 0x70757264 , /**< purd */
Rating = 0x72746e67 , /**< rtng */
RecordLabel = 0xA96c6162 , /**< ©lab */
Title = 0xA96e616d , /**< ©nam */
TrackPosition = 0x74726b6e , /**< trkn */
TvEpisode = 0x74766573 , /**< tves */
TvEpisodeName = 0x7476656e , /**< tven */
TvNetworkName = 0x74766e6e , /**< tvnn */
TvSeason = 0x7476736e , /**< tvsn */
TvShowName = 0x74767368 , /**< tvsh */
Year = 0xA9646179 , /**< ©day */
2016-08-29 15:43:05 +02:00
} ;
}
namespace Mp4TagExtendedMeanIds {
2021-01-30 21:53:06 +01:00
extern std : : string_view iTunes ;
2016-08-29 15:43:05 +02:00
}
namespace Mp4TagExtendedNameIds {
2021-01-30 21:53:06 +01:00
extern std : : string_view cdec ;
extern std : : string_view label ;
2018-03-07 01:17:50 +01:00
} // namespace Mp4TagExtendedNameIds
2016-08-29 15:43:05 +02:00
namespace Mp4MediaTypeIds {
2019-03-13 19:06:42 +01:00
enum KnownValue : std : : uint32_t {
2020-04-22 21:02:34 +02:00
Sound = 0x736f756e , /**< soun: Sound/Audio */
Video = 0x76696465 , /**< vide: Video */
Hint = 0x68696e74 , /**< hint: Hint */
Meta = 0x6d657461 , /**< meta: Meta */
2016-08-29 15:43:05 +02:00
} ;
}
namespace FourccIds {
2019-03-13 19:06:42 +01:00
enum KnownValue : std : : uint32_t {
2020-04-22 21:02:34 +02:00
Ac3 = 0x61632d33 , /**< ac-3: Dolby Digital */
Ac4 = 0x61632d34 , /**< ac-4: ? */
AdpcmAcm = 0x6D730002 , /**< ms??: ? */
Agsm = 0x6167736D , /**< agsm */
Alac = 0x616C6163 , /**< alac: Apple Losless Audio Codec */
Alaw = 0x616C6177 , /**< alaw */
Alaw21 = 0x616C6177 , /**< alaw */
AlphaCompositor = 0x626C6E64 , /**< blnd */
AlphaGain = 0x6761696E , /**< gain */
Amr = 0x73617762 , /**< sawb */
AmrNarrowband = 0x73616D72 , /**< samr */
Animation = 0x726C6520 , /**< rle : Animation */
Appl1 = 0x6476690 , /**< ?Gf? */
Appl2 = 0x6C70630 , /**< ?Ç?0 */
Apple16BitGray = 0x62313667 , /**< b16g */
Apple32BitGrayWithAlpha = 0x62333261 , /**< b32a */
Apple48BitRgb = 0x62343872 , /**< b48r */
Apple64BitArgb1 = 0x62363461 , /**< b64a */
Apple64BitArgb2 = 0x62617365 , /**< base */
Apple64BitArgb3 = 0x626C6974 , /**< blit */
AppleAnimation = 0x726C6520 , /**< rle */
AppleAvrJpeg = 0x61767220 , /**< avr */
AppleBmp = 0x57524C45 , /**< WRLE */
AppleCinepak = 0x63766964 , /**< cvid */
AppleCmyk = 0x636D796B , /**< cmyk */
AppleComponentVideoYuv422 = 0x79757632 , /**< yuv2 */
AppleCurve = 0x70617468 , /**< path */
AppleDvc = 0x64766320 , /**< dvc */
AppleDvcpro = 0x64767070 , /**< dvpp */
AppleDvcpro501 = 0x6476356E , /**< dv5n */
AppleDvcpro502 = 0x64763570 , /**< dv5p */
AppleDvcpro50Ntsc = 0x6476356E , /**< dv5n */
AppleDvcpro50Pal = 0x64763570 , /**< dv5p */
AppleDvcproPal = 0x64767070 , /**< dvpp */
AppleDvDvcproNtsc = 0x6476630 , /**< ?Gf0 */
AppleDvp = 0x64766370 , /**< dvcp */
AppleDvPal = 0x64766370 , /**< dvcp */
AppleFlc = 0x666C6963 , /**< flic */
AppleGif = 0x67696620 , /**< gif */
AppleGraphics = 0x736D630 , /**< ?6Ö0 */
AppleGsm101 = 0x6167736D , /**< agsm */
2020-10-01 19:09:01 +02:00
AppleH261 = 0x68323631 , /**< H.261 */
2020-04-22 21:02:34 +02:00
AppleIntermediateCodec = 0x69636F64 , /**< icod */
AppleLossless = 0x616C6163 , /**< alac */
AppleMacpaint = 0x504E5447 , /**< PNTG */
AppleMicrosoftVideo1 = 0x6D737663 , /**< msvc */
AppleMotionJpegA = 0x6D6A7061 , /**< mjpa */
AppleMotionJpegB = 0x6D6A7062 , /**< mjpb */
AppleMpeg4Compressor = 0x6D703476 , /**< mp4v */
AppleMpeg4Decompressor = 0x6D703476 , /**< mp4v */
AppleOpendmlJpeg = 0x646D6231 , /**< dmb1 */
ApplePhotoCd = 0x6B706364 , /**< kpcd */
ApplePhotoJpeg = 0x6A706567 , /**< jpeg */
ApplePixletVideo = 0x70786C74 , /**< pxlt */
ApplePlanarRgb = 0x38425053 , /**< 8BPS */
ApplePng = 0x706E670 , /**< ??æp */
AppleQuickdraw = 0x71647277 , /**< qdrw */
AppleR408 = 0x72343038 , /**< r408 */
AppleScalingCodec = 0x7363616C , /**< scal */
AppleSgi = 0x2E534749 , /**< .SGI */
AppleSorensonYuv9Codec = 0x73797639 , /**< syv9 */
AppleTextAtsuiCodec = 0x74657874 , /**< text */
AppleTga = 0x7467610 , /**< ?Fv? */
AppleTiff = 0x74696666 , /**< tiff */
AppleV408 = 0x76343038 , /**< v408 */
AppleVcH263 = 0x68323633 , /**< h263 */
AppleVideo = 0x72707A61 , /**< rpza: Apple video */
AppleYuv420Codec1 = 0x6A343230 , /**< j420 */
AppleYuv420Codec2 = 0x6D797576 , /**< myuv */
AppleYuv420Codec3 = 0x79343230 , /**< y420 */
AppleYuv422Codec2Vuy = 0x32767579 , /**< 2vuy */
AppleYuv422Codec4 = 0x79757678 , /**< yuvx */
AppleYuv422CodecYuvs = 0x79757673 , /**< yuvs */
AppleYuv422CodecYuvu = 0x79757675 , /**< yuvu */
Avc0Media = 0x64726D69 , /**< drmi */
Avc1 = 0x61766331 , /**< avc1: H.264/MPEG-4 AVC video */
Avc2 = 0x61766332 , /**< avc2: H.264/MPEG-4 AVC video */
Avc3 = 0x61766333 , /**< avc3: H.264/MPEG-4 AVC video */
Avc4 = 0x61766334 , /**< avc4: H.264/MPEG-4 AVC video */
Av1_IVF = 0x41563031 , /**< AV01: AV1 video (found in IVF) */
Av1_ISOBMFF = 0x61763031 , /**< av01: AV1 video (found in ISOBMFF) */
Blur = 0x626C7572 , /**< blur */
Bps8 = 0x38627073 , /**< 8bps */
BrightnessAndContrast = 0x6272636F , /**< brco */
ChannelCompositor = 0x6368616E , /**< chan */
ChromaKey = 0x636B6579 , /**< ckey */
Cinepak = 0x63766964 , /**< cvid: Cinepak */
Cloud = 0x636C6F75 , /**< clou */
ColorStyle = 0x736F6C72 , /**< solr */
Colorsync = 0x73796E63 , /**< sync */
ColorTint = 0x74696E74 , /**< tint */
CrossFade = 0x64736C76 , /**< dslv */
Cvid = 0x63766964 , /**< cvid */
Divx3Decoder1 = 0x41503431 , /**< AP41 */
Divx3Decoder2 = 0x434F4C30 , /**< COL0 */
Divx3Decoder3 = 0x434F4C31 , /**< COL1 */
Divx3Decoder4 = 0x44495633 , /**< DIV3 */
Divx3Decoder5 = 0x44495634 , /**< DIV4 */
Divx3Decoder6 = 0x44495635 , /**< DIV5 */
Divx3Decoder7 = 0x44495636 , /**< DIV6 */
Divx3Decoder8 = 0x4D504733 , /**< MPG3 */
Divx3Decoder9 = 0x6D706733 , /**< mpg3 */
Divx3Decoder10 = 0x636F6C30 , /**< col0 */
Divx3Decoder11 = 0x636F6C31 , /**< col1 */
Divx3Decoder12 = 0x64697633 , /**< div3 */
Divx3Decoder13 = 0x64697634 , /**< div4 */
Divx3Decoder14 = 0x64697635 , /**< div5 */
Divx3Decoder15 = 0x64697636 , /**< div6 */
Divx4Decoder1 = 0x44495658 , /**< DIVX */
Divx4Decoder2 = 0x64697678 , /**< divx */
Divx5Decoder = 0x44583530 , /**< DX50 */
Drms = 0x64726D73 , /**< drms */
Drmi = 0x64726D69 , /**< drmi */
Dts = 0x6474736C , /**< dtsl */
DtsH = 0x64747368 , /**< dtsh */
DtsE = 0x64747365 , /**< dtse */
Dvca = 0x64766361 , /**< dvca */
DvcPro501 = 0x64763570 , /**< dv5p */
DvcPro502 = 0x6476356E , /**< dv5n */
DvcProPal = 0x64767070 , /**< dvpp */
EAc3 = 0x65632D33 , /**< ec-3 */
EdgeDetection = 0x65646765 , /**< edge */
Emboss = 0x656D6273 , /**< embs */
Explode = 0x78706C6F , /**< xplo */
FilmNoise = 0x666D6E73 , /**< fmns */
Fire = 0x66697265 , /**< fire */
Flac = 0x664C6143 , /**< fLaC */
FlashPixImage = 0x66706978 , /**< fpix */
FlashScreenVideoDecoder = 0x46535631 , /**< FSV1 */
FloatingPoint32Bit = 0x666C3332 , /**< fl32 */
FloatingPoint64Bit = 0x666C3634 , /**< fl64 */
GeneralConvolution = 0x67656E6B , /**< genk */
Gif = 0x67696620 , /**< gif : CompuServe Graphics Interchange Format */
Glass = 0x676C6173 , /**< glas */
GradientWipe = 0x6D617474 , /**< matt */
Graphics = 0x736D6320 , /**< smc : Graphics */
2020-10-01 19:09:01 +02:00
H263Quicktime = 0x68323633 , /**< h263: H.263 (Quicktime) */
2020-04-22 21:02:34 +02:00
H2633GPP = 0x73323633 , /**< s263: H.263 (3GPP format) */
H264Decoder1 = 0x44415643 , /**< DAVC */
H264Decoder2 = 0x48323634 , /**< H264 */
H264Decoder3 = 0x56535348 , /**< VSSH */
H264Decoder4 = 0x58323634 , /**< X264 */
H264Decoder5 = 0x68323634 , /**< h264 */
H264Decoder6 = 0x78323634 , /**< x264 */
Hdv3 = 0x68647633 , /**< hdv3 */
Hevc1 = 0x68766331 , /**< hvc1: H.265/High Efficiency Video Coding */
Hevc2 = 0x68657631 , /**< hev1: H.265/High Efficiency Video Coding */
HslBalance = 0x68736C62 , /**< hslb */
Ima4 = 0x696D6134 , /**< ima4 */
Ima41 = 0x696D6134 , /**< ima4 */
ImaadpcmAcm = 0x6D730011 , /**< ms??: ? */
Implode = 0x6D706C6F , /**< mplo */
Int16Be = 0x74776F73 , /**< twos */
Int16Le = 0x736F7774 , /**< sowt */
Int24 = 0x696E3234 , /**< in24 */
Int32 = 0x696E3332 , /**< in32 */
Iris = 0x736D7032 , /**< smp2 */
IvxDecoder1 = 0x33495632 , /**< 3IV2 */
IvxDecoder2 = 0x33495644 , /**< 3IVD */
IvxDecoder3 = 0x33697632 , /**< 3iv2 */
IvxDecoder4 = 0x33697664 , /**< 3ivd */
Jpeg = 0x6a706567 , /**< jpeg: JPEG */
Jpeg2000Decoder = 0x6D6A7032 , /**< mjp2 */
Law21 = 0x756C6177 , /**< ulaw */
LensFlare = 0x6C656E73 , /**< lens */
Lle = 0x726C6520 , /**< rle */
Mac3 = 0x6D616333 , /**< mac3 */
Mac6 = 0x6D616336 , /**< mac6 */
Mace31 = 0x4D414333 , /**< MAC3 */
Mace61 = 0x4D414336 , /**< MAC6 */
MatrixWipe = 0x736D7034 , /**< smp4 */
DolbyMpl = 0x6D6C7061 , /**< mlpa */
MotionJpegA = 0x6D6A7061 , /**< mjpa: Motion-JPEG (format A) */
MotionJpegB = 0x6D6A7062 , /**< mjpb: Motion-JPEG (format B) */
Mp3 = 0x2e6d7033 , /**< .mp3: MPEG-1 Layer 3 */
Mp3CbrOnly = 0x6D730055 , /**< ms?U: MPEG-1 Layer 3 (constant bitrate only) */
Mpeg = 0x4D504547 , /**< MPEG */
Mpeg2Imx30 = 0x6D78336E , /**< mx3n */
Mpeg2Imx50 = 0x6D783570 , /**< mx5p */
Mpeg4Audio = 0x6d703461 , /**< mp4a: MPEG-4 audio */
Mpeg4Decoder1 = 0x464D5034 , /**< FMP4 */
Mpeg4Decoder2 = 0x53454447 , /**< SEDG */
Mpeg4Decoder3 = 0x57563146 , /**< WV1F */
Mpeg4Sample = 0x6d703473 , /**< mp4s: MPEG-4 stream (other than video/audio) */
Mpeg4TimedText = 0x74783367 , /**< tx3g: MPEG-4 Timed Text / Streaming text format / Part 17 */
Mpeg4Video = 0x6d703476 , /**< mp4v: MPEG-4 video */
MsMpeg4V1Decoder1 = 0x44495631 , /**< DIV1 */
MsMpeg4V1Decoder2 = 0x64697631 , /**< div1 */
MsMpeg4V1Decoder3 = 0x4D504734 , /**< MPG4 */
MsMpeg4V1Decoder4 = 0x6D706734 , /**< mpg4 */
MsMpeg4V1Decoder5 = 0x4D504731 , /**< MPG1 */
MsMpeg4V1Decoder6 = 0x6D706731 , /**< mpg1 */
MsMpeg4V2Decoder1 = 0x44495632 , /**< DIV2 */
MsMpeg4V2Decoder2 = 0x64697632 , /**< div2 */
MsMpeg4V2Decoder3 = 0x4D503432 , /**< MP42 */
MsMpeg4V2Decoder4 = 0x6D703432 , /**< mp42 */
MsMpeg4V3Decoder1 = 0x4D503433 , /**< MP43 */
MsMpeg4V3Decoder2 = 0x6D703433 , /**< mp43 */
NtscDv25Video = 0x64766320 , /**< dvc : NTSC DV-25 video */
Oggs = 0x4F676753 , /**< OggS */
Opus = 0x4F707573 , /**< Opus */
PalDv25Video = 0x64766370 , /**< dvcp: PAL DV-25 video */
PdfImage = 0x70646620 , /**< pdf */
Png = 0x706E6720 , /**< png : Portable Network Graphics */
Push = 0x70757368 , /**< push */
Qclp = 0x51636C70 , /**< Qclp */
QdesignMusic1Decoder = 0x51444D43 , /**< QDMC */
QdesignMusic2 = 0x51444D32 , /**< QDM2 */
Qdmc = 0x51444D43 , /**< QDMC */
Qdrw = 0x71647277 , /**< qdrw */
QtvrCubicCodec = 0x63757061 , /**< cupa */
QtvrCylindricalCodec = 0x6C747061 , /**< ltpa */
QualcommPurevoice = 0x51636C70 , /**< Qclp */
QualcommQcelp = 0x51636C71 , /**< Qclq */
Radial = 0x736D7033 , /**< smp3 */
Raw = 0x72617720 , /**< raw : Uncompressed RGB */
RgbBalance = 0x72676262 , /**< rgbb */
Ripple = 0x7269706C , /**< ripl */
Rpza = 0x72707A61 , /**< rpza */
Rv20 = 0x52563230 , /**< RV20 */
Rv30 = 0x52563330 , /**< RV30 */
Rv40 = 0x52563430 , /**< RV40 */
Sharpen = 0x73687270 , /**< shrp */
Slide = 0x736C6964 , /**< slid */
Smc = 0x736D6320 , /**< smc */
SorensonH263Decoder = 0x464C5631 , /**< FLV1 */
SorensonVideo3Compressor = 0x53565133 , /**< SVQ3 */
SorensonVideoDecompressor = 0x53565131 , /**< SVQ1 */
Sowt = 0x736F7774 , /**< sowt */
SpecialEffectsAndFilters = 0x67656666 , /**< geff */
Svq1 = 0x73767131 , /**< svq1 */
Svq3 = 0x73767133 , /**< svq3 */
Tiff = 0x74696666 , /**< tiff: Tagged Image File Format */
TravelingMatte = 0x74726176 , /**< trav */
TruemotionVp6Decoder1 = 0x56503632 , /**< VP62 */
TruemotionVp6Decoder2 = 0x56503646 , /**< VP6F */
Twos = 0x74776F73 , /**< twos */
Ulaw = 0x756C6177 , /**< ulaw */
Ulaw21 = 0x756C6177 , /**< ulaw */
VcmImageCodec = 0x4D6A7067 , /**< Mjpg */
Vdva = 0x76647661 , /**< vdva */
Vp8 = 0x56503830 , /**< VP80: VP8 video */
Vp9 = 0x56503930 , /**< VP90: VP9 video */
2019-09-25 22:05:25 +02:00
Vp9_2 = 0x76703039 , /**< VP9 video */
2020-04-22 21:02:34 +02:00
WavPack = 0x5756504B , /**< WVPK */
WindowsMediaAudio = 0x6F776D61 , /**< owma: ? */
WindowsMediaAudio7 = 0x574D4131 , /**< WMA1 */
WindowsMediaAudio9Professional = 0x574D4133 , /**< WMA3 */
WindowsMediaAudio9Standard = 0x574D4132 , /**< WMA2 */
WindowsMediaVideoV17 = 0x574D5637 , /**< WMV7 */
WindowsMediaVideoV2 = 0x574D5632 , /**< WMV2 */
WindowsMediaVideoV8 = 0x574D5638 , /**< WMV8 */
Wipe = 0x736D7074 , /**< smpt */
WmvImageCodec1 = 0x4D347332 , /**< M4s2 */
WmvImageCodec2 = 0x4D703432 , /**< Mp42 */
WmvImageCodec3 = 0x4D703433 , /**< Mp43 */
WmvImageCodec4 = 0x4D703453 , /**< Mp4S */
WmvImageCodec5 = 0x574D5631 , /**< WMV1 */
WmvImageCodec6 = 0x574D5632 , /**< WMV2 */
WmvImageCodec7 = 0x574D5633 , /**< WMV3 */
XvidDecoder1 = 0x424C5A30 , /**< BLZ0 */
XvidDecoder2 = 0x58564944 , /**< XVID */
XvidDecoder3 = 0x58564958 , /**< XVIX */
XvidDecoder4 = 0x58766944 , /**< XviD */
XvidDecoder5 = 0x78766964 , /**< xvid */
Yuv422HardwareAccelerationCodecYuvs1 = 0x32767579 , /**< 2vuy */
Yuv422HardwareAccelerationCodecYuvs2 = 0x61633136 , /**< ac16 */
Yuv422HardwareAccelerationCodecYuvs3 = 0x61633332 , /**< ac32 */
Yuv422HardwareAccelerationCodecYuvs4 = 0x61634247 , /**< acBG */
Yuv422HardwareAccelerationCodecYuvs5 = 0x79757673 , /**< yuvs */
Zoom = 0x7A6F6F6D , /**< zoom */
2016-08-29 15:43:05 +02:00
} ;
2019-03-13 19:06:42 +01:00
TAG_PARSER_EXPORT MediaFormat fourccToMediaFormat ( std : : uint32_t fourccId ) ;
2016-08-29 15:43:05 +02:00
2018-03-07 01:17:50 +01:00
} // namespace FourccIds
2016-08-29 15:43:05 +02:00
namespace Mp4FormatExtensionIds {
2019-03-13 19:06:42 +01:00
enum KnownValue : std : : uint32_t {
2018-03-07 01:17:50 +01:00
GammaLevel
2020-04-22 21:02:34 +02:00
= 0x67616D61 , /**< gama: A 32-bit fixed-point number indicating the gamma level at which the image was captured. The decompressor can use this value to gamma-correct at display time. */
FieldHandling = 0x6669656C , /**< fiel: Two 8-bit integers that define field handling. */
DefaultQuantizationTable = 0x6D6A7174 , /**< mjqt: The default quantization table for a Motion-JPEG data stream. */
DefaultHuffmanTable = 0x6D6A6874 , /**< mjht: The default Huffman table for a Motion-JPEG data stream. */
Mpeg4ElementaryStreamDescriptor
= 0x65736473 , /**< esds: An MPEG-4 elementary stream descriptor atom. This extension is required for MPEG-4 video. */
Mpeg4ElementaryStreamDescriptor2 = 0x6D346473 , /**< m4ds: Alternative if encoded to AVC stanard. */
AvcConfiguration
= 0x61766343 , /**< avcC: An H.264 AVCConfigurationBox. This extension is required for H.264 video as defined in ISO/IEC 14496-15. */
PixelAspectRatio = 0x70617370 , /**< pasp: Pixel aspect ratio. This extension is mandatory for video formats that use non-square pixels. */
ColorParameters = 0x636F6C72 , /**< colr: An image description extension required for all uncompressed Y´ CbCr video types. */
CleanAperature = 0x636C6170 , /**< clap: Spatial relationship of Y´ CbCr components relative to a canonical image center. */
2016-08-29 15:43:05 +02:00
} ;
}
namespace Mpeg4ElementaryStreamObjectIds {
2019-03-13 19:06:42 +01:00
enum KnownValue : std : : uint8_t {
2016-08-29 15:43:05 +02:00
SystemsIso144961 = 0x01 , /**< Systems */
SystemsIso144961v2 , /**< Systems (version 2) */
InteractionStream , /**< Interaction Stream */
AfxStream = 0x05 , /**< AFX Stream */
FontDataStream , /**< Font Data Stream */
SynthesizedTextureStream , /**< Synthesized Texture Stream */
StreamingTextStream , /**< Streaming Text Stream */
Mpeg4Visual = 0x20 , /**< MPEG-4 Visual */
Avc , /**< Advanced Video Coding */
ParameterSetsForAvc , /**< Parameter Sets for Advanced Video Coding */
Als = 0x24 , /**< ALS */
Sa0c = 0x2B , /**< SAOC */
Aac = 0x40 , /**< Audio ISO/IEC 14496-3 (AAC) */
Mpeg2VideoSimpleProfile = 0x60 , /**< MPEG-2 Video Simple Profile */
Mpeg2VideoMainProfile , /**< MPEG-2 Video Main Profile */
Mpeg2VideoSnrProfile , /**< MPEG-2 Video SNR Profile */
Mpeg2VideoSpatialProfile , /**< MPEG-2 Video Spatial Profile */
Mpeg2VideoHighProfile , /**< MPEG-2 Video High Profile */
Mpeg2Video422Profile , /**< MPEG-2 Video 422 Profile */
Mpeg2AacMainProfile , /**< Advanced Audio Coding Main Profile */
Mpeg2AacLowComplexityProfile , /**< Advanced Audio Coding Low Complexity Profile */
Mpeg2AacScaleableSamplingRateProfile , /**< Advanced Audio Coding Scaleable Sampling Rate Profile */
Mpeg2Audio , /**< MPEG-2 Audio */
Mpeg1Video , /**< MPEG-1 Video */
Mpeg1Audio , /**< MPEG-1 Audio */
Jpeg , /**< JPEG */
Png , /**< PNG */
Evrc = 0xA0 , /**< EVRC */
Smv , /**< SMV */
Gpp2Cmf , /**< 3GPP2 Compact Multimedia Format (CMF) */
Vc1 , /**< VC-1 */
Dirac , /**< Dirac */
Ac3 , /**< AC-3 */
EAc3 , /**< E-AC-3 */
Dts , /**< DTS */
DtsHdHighResolution , /**< DTS-HD High Resolution */
DtsHdMasterAudio , /**< DTS-HD Master Audio */
DtsHdExpress , /**< DTS-HD Express */
PrivateEvrc = 0xD1 , /**< EVRC */
PrivateAc3 = 0xD3 , /**< AC-3 */
PrivateDts , /**< DTS */
PrivateOgg = 0xDD , /**< Ogg */
PrivateOgg2 , /**< Ogg */
2019-03-10 16:40:51 +01:00
PrivateVobSub = 0xE0 , /**< VobSub */
PrivateQcelp = 0xE1 , /**< QCELP */
2016-08-29 15:43:05 +02:00
} ;
2019-03-13 19:06:42 +01:00
TAG_PARSER_EXPORT MediaFormat streamObjectTypeFormat ( std : : uint8_t streamObjectTypeId ) ;
2016-08-29 15:43:05 +02:00
2018-03-07 01:17:50 +01:00
} // namespace Mpeg4ElementaryStreamObjectIds
2016-08-29 15:43:05 +02:00
namespace Mpeg4ElementaryStreamTypeIds {
2019-03-13 19:06:42 +01:00
enum KnownValue : std : : uint8_t {
2016-08-29 15:43:05 +02:00
ObjectDescriptor = 0x01 ,
ClockReference ,
SceneDescriptor ,
Visual ,
Audio ,
Mpeg7 ,
Ipmps ,
ObjectContentInfo ,
MpegJava ,
Interaction ,
Ipmp ,
FontData ,
StreamingText
} ;
2021-01-30 21:53:06 +01:00
TAG_PARSER_EXPORT std : : string_view streamTypeName ( std : : uint8_t streamTypeId ) ;
2016-08-29 15:43:05 +02:00
2018-03-07 01:17:50 +01:00
} // namespace Mpeg4ElementaryStreamTypeIds
2016-08-29 15:43:05 +02:00
namespace Mpeg4DescriptorIds {
2019-03-13 19:06:42 +01:00
enum KnownValue : std : : uint8_t {
2016-08-29 15:43:05 +02:00
ObjectDescr = 0x01 ,
InitialObjectDescr ,
ElementaryStreamDescr ,
DecoderConfigDescr ,
DecoderSpecificInfo ,
SlConfigDescr ,
ContentIdentDescr ,
SupplContentIdentDescr ,
IpiDescPointer ,
IpmpDescPointer ,
IpmpDescr ,
QoSDescr ,
RegistrationDescr ,
EsIdInc ,
EsIdRef ,
Mp4I0d ,
Mp40d ,
IplDescrPointerRef ,
ExtendedProfileLevelDescr ,
ProfileLevelIndicationIndexDescr ,
ContentClassificationDescr = 0x40 ,
KeyWordDescr ,
RatingDescr ,
LanguageDescr ,
ShortTextualDescr ,
ExpandedTextualDescr ,
ContentCreatorNameDescr ,
ContentCreationDateDescr ,
IcicCreatorDateDescr ,
SmpteCameraPositionDescr ,
SegmentDescr ,
MediaTimeDescr ,
IpmpToolsListDescr = 0x60 ,
IpmpToolTag ,
FlexMuxTimingDescr ,
FlexMuxCodeTableDescr ,
ExtSlConfigDescr ,
FlexMuxIdentDescr ,
DependencyPointer ,
DependencyMaker ,
FlexMuxChannelDescr ,
UserPrivate = 0xC0
} ;
}
namespace Mpeg4AudioObjectIds {
2019-03-13 19:06:42 +01:00
enum KnownValue : std : : uint8_t {
2016-08-29 15:43:05 +02:00
Null = 0 ,
AacMain ,
AacLc , /**< low complexity */
AacSsr , /**< scalable sample rate */
AacLtp , /**< long term prediction */
Sbr , /**< spectral band replication */
AacScalable ,
TwinVq ,
Celp , /**< code excited linear prediction */
Hxvc , /**< harmonic vector excitation coding */
Ttsi = 12 , /**< text-to-speech interface */
MainSynthesis ,
WavetableSynthesis ,
GeneralMidi ,
AlgorithmicSynthesisAudioEffects ,
ErAacLc , /**< error resillent AAC LC */
ErAacLtp = 19 ,
ErAacScalable ,
ErTwinVq ,
ErBsac ,
ErAacLd ,
ErCelp ,
ErHvxc ,
ErHiln ,
ErParametric ,
Ssc ,
Ps ,
MpegSurround ,
EscapeValue ,
Layer1 ,
Layer2 ,
Layer3 ,
Dst ,
Als , /**< audio lossless */
Sls , /**< scalable lossless */
ErAacEld , /**< enhanced low delay */
SmrSimple , /**< symbolic music representation */
SmrMain ,
UsacNoSbr , /**< unified speech and audio coding */
Saoc , /**< spatial audio object coding (no SBR) */
LdMpegSurround ,
Usac /**< unified speech and audio coding */
} ;
2019-03-13 19:06:42 +01:00
TAG_PARSER_EXPORT MediaFormat idToMediaFormat ( std : : uint8_t mpeg4AudioObjectId , bool sbrPresent = false , bool psPresent = false ) ;
2016-08-29 15:43:05 +02:00
2018-03-07 01:17:50 +01:00
} // namespace Mpeg4AudioObjectIds
2016-08-29 15:43:05 +02:00
2019-03-13 19:06:42 +01:00
extern std : : uint32_t mpeg4SamplingFrequencyTable [ 13 ] ;
2016-08-29 15:43:05 +02:00
namespace Mpeg4ChannelConfigs {
2019-03-13 19:06:42 +01:00
enum Mpeg4ChannelConfig : std : : uint8_t {
2016-08-29 15:43:05 +02:00
AotSpecificConfig = 0 ,
FrontCenter ,
FrontLeftFrontRight ,
FrontCenterFrontLeftFrontRight ,
FrontCenterFrontLeftFrontRightBackCenter ,
FrontCenterFrontLeftFrontRightBackLeftBackRight ,
FrontCenterFrontLeftFrontRightBackLeftBackRightLFEChannel ,
FrontCenterFrontLeftFrontRightSideLeftSideRightBackLeftBackRightLFEChannel
} ;
2021-01-30 21:53:06 +01:00
TAG_PARSER_EXPORT std : : string_view channelConfigString ( std : : uint8_t config ) ;
2019-03-13 19:06:42 +01:00
TAG_PARSER_EXPORT std : : uint8_t channelCount ( std : : uint8_t config ) ;
2016-08-29 15:43:05 +02:00
2018-03-07 01:17:50 +01:00
} // namespace Mpeg4ChannelConfigs
2016-08-29 15:43:05 +02:00
namespace Mpeg4VideoCodes {
2019-03-13 19:06:42 +01:00
enum KnownValue : std : : uint8_t {
2016-08-29 15:43:05 +02:00
VideoObjectStart = 0x00 ,
VideoObjectLayerStart = 0x20 ,
VisualObjectSequenceStart = 0xB0 ,
VisualObjectSequendeEnd = 0xB1 ,
UserDataStart = 0xB2 ,
GroupOfVopStart = 0xB3 ,
VideoSessionError = 0xB4 ,
VisualObjectStart = 0xB5 ,
VopStart = 0xB6 ,
FbaObjectStart = 0xBA ,
FbaObjectPlaneStart = 0xBB ,
MeshObjectStart = 0xBC ,
MeshObjectPlaneStart = 0xBD ,
StillTextureObjectStart = 0xBE ,
TextureSpatialLayerStart = 0xBF ,
TextureSnrLayerStart = 0xC0 ,
TextureTitleStart = 0xC1 ,
TextureShapeLayerStart = 0xC2 ,
StuffingStart = 0xC3
} ;
}
namespace Mpeg2VideoCodes {
2019-03-13 19:06:42 +01:00
enum KnownValue : std : : uint8_t { Pic = 0x00 , Seq = 0xB3 , Ext = 0xB5 , Gop = 0xB8 } ;
2016-08-29 15:43:05 +02:00
}
/*!
* \ brief Specifies the tag type .
*/
2019-03-13 19:06:42 +01:00
enum class Mp4TagMediaType : std : : uint8_t {
2016-08-29 15:43:05 +02:00
Movie = 0 , /**< Movie */
Music = 1 , /**< Music */
Audiobook = 2 , /**< Audiobook */
MusicVideo = 6 , /**< MusicVideo */
Movie2 = 9 , /**< Movie */
TvShow = 10 , /**< TvShow */
Booklet = 11 , /**< Booklet */
Ringtone = 14 /**< Ringtone */
} ;
/*!
* \ brief Specifies the tag content rating .
*/
2019-03-13 19:06:42 +01:00
enum class Mp4TagContentRating : std : : uint8_t {
2016-08-29 15:43:05 +02:00
None = 0 , /**< None */
Clean = 2 , /**< Clean */
Explicit = 4 /**< Explicit */
} ;
/*!
* \ brief Specifies the account type .
*/
2019-03-13 19:06:42 +01:00
enum class AccountType : std : : uint8_t { Itunes = 0 , Aol = 1 , Undefined = 255 } ;
2016-08-29 15:43:05 +02:00
/*!
* \ brief Specifies the country .
*/
2018-03-07 01:17:50 +01:00
enum class CountryCode {
2016-08-29 15:43:05 +02:00
Usa = 143441 ,
Fra = 143442 ,
Deu = 143443 ,
Gbr = 143444 ,
Aut = 143445 ,
Bel = 143446 ,
Fin = 143447 ,
Grc = 143448 ,
Irl = 143449 ,
Ita = 143450 ,
Lux = 143451 ,
Nld = 143452 ,
Prt = 143453 ,
Esp = 143454 ,
Can = 143455 ,
Swe = 143456 ,
Nor = 143457 ,
Dnk = 143458 ,
Che = 143459 ,
Aus = 143460 ,
Nzl = 143461 ,
Jpn = 143462 ,
Undefined = 0
} ;
2018-03-07 01:17:50 +01:00
} // namespace TagParser
2016-08-29 15:43:05 +02:00
2018-03-06 23:09:15 +01:00
# endif // TAG_PARSER_MP4IDS_H