aboutsummaryrefslogtreecommitdiff
path: root/src/itmf/type.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/itmf/type.h')
-rw-r--r--src/itmf/type.h296
1 files changed, 296 insertions, 0 deletions
diff --git a/src/itmf/type.h b/src/itmf/type.h
new file mode 100644
index 0000000..484c241
--- /dev/null
+++ b/src/itmf/type.h
@@ -0,0 +1,296 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// The contents of this file are subject to the Mozilla Public License
+// Version 1.1 (the "License"); you may not use this file except in
+// compliance with the License. You may obtain a copy of the License at
+// http://www.mozilla.org/MPL/
+//
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+// License for the specific language governing rights and limitations
+// under the License.
+//
+// The Original Code is MP4v2.
+//
+// The Initial Developer of the Original Code is Kona Blend.
+// Portions created by Kona Blend are Copyright (C) 2008.
+// All Rights Reserved.
+//
+// Contributors:
+// Kona Blend, kona8lend@@gmail.com
+// Rouven Wessling, mp4v2@rouvenwessling.de
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef MP4V2_IMPL_ITMF_TYPE_H
+#define MP4V2_IMPL_ITMF_TYPE_H
+
+namespace mp4v2 { namespace impl { namespace itmf {
+
+///////////////////////////////////////////////////////////////////////////////
+
+/// Basic set of types as detailed in spec.
+enum BasicType {
+ BT_IMPLICIT = 0, ///< for use with tags for which no type needs to be indicated
+ BT_UTF8 = 1, ///< without any count or null terminator
+ BT_UTF16 = 2, ///< also known as UTF-16BE
+ BT_SJIS = 3, ///< deprecated unless it is needed for special Japanese characters
+ BT_HTML = 6, ///< the HTML file header specifies which HTML version
+ BT_XML = 7, ///< the XML header must identify the DTD or schemas
+ BT_UUID = 8, ///< also known as GUID; stored as 16 bytes in binary (valid as an ID)
+ BT_ISRC = 9, ///< stored as UTF-8 text (valid as an ID)
+ BT_MI3P = 10, ///< stored as UTF-8 text (valid as an ID)
+ BT_GIF = 12, ///< (deprecated) a GIF image
+ BT_JPEG = 13, ///< a JPEG image
+ BT_PNG = 14, ///< a PNG image
+ BT_URL = 15, ///< absolute, in UTF-8 characters
+ BT_DURATION = 16, ///< in milliseconds, 32-bit integer
+ BT_DATETIME = 17, ///< in UTC, counting seconds since midnight, January 1, 1904; 32 or 64-bits
+ BT_GENRES = 18, ///< a list of enumerated values, see #Genre
+ BT_INTEGER = 21, ///< a signed big-endian integer with length one of { 1,2,3,4,8 } bytes
+ BT_RIAA_PA = 24, ///< RIAA parental advisory; { -1=no, 1=yes, 0=unspecified }, 8-bit ingteger
+ BT_UPC = 25, ///< Universal Product Code, in text UTF-8 format (valid as an ID)
+ BT_BMP = 27, ///< Windows bitmap image
+
+ BT_UNDEFINED = 255
+};
+
+typedef Enum<BasicType,BT_UNDEFINED> EnumBasicType;
+MP4V2_EXPORT extern const EnumBasicType enumBasicType;
+
+///////////////////////////////////////////////////////////////////////////////
+
+/// enumerated genre as defined in ID3v1 specification but +1 as per iTMF spec.
+/// Note values 80 and higher are Winamp extensions.
+enum GenreType {
+ GENRE_UNDEFINED = 0,
+
+ /* ID3v1 standard */
+ GENRE_BLUES = 1,
+ GENRE_CLASSIC_ROCK = 2,
+ GENRE_COUNTRY = 3,
+ GENRE_DANCE = 4,
+ GENRE_DISCO = 5,
+ GENRE_FUNK = 6,
+ GENRE_GRUNGE = 7,
+ GENRE_HIP_HOP = 8,
+ GENRE_JAZZ = 9,
+ GENRE_METAL = 10,
+ GENRE_NEW_AGE = 11,
+ GENRE_OLDIES = 12,
+ GENRE_OTHER = 13,
+ GENRE_POP = 14,
+ GENRE_R_AND_B = 15,
+ GENRE_RAP = 16,
+ GENRE_REGGAE = 17,
+ GENRE_ROCK = 18,
+ GENRE_TECHNO = 19,
+ GENRE_INDUSTRIAL = 20,
+ GENRE_ALTERNATIVE = 21,
+ GENRE_SKA = 22,
+ GENRE_DEATH_METAL = 23,
+ GENRE_PRANKS = 24,
+ GENRE_SOUNDTRACK = 25,
+ GENRE_EURO_TECHNO = 26,
+ GENRE_AMBIENT = 27,
+ GENRE_TRIP_HOP = 28,
+ GENRE_VOCAL = 29,
+ GENRE_JAZZ_FUNK = 30,
+ GENRE_FUSION = 31,
+ GENRE_TRANCE = 32,
+ GENRE_CLASSICAL = 33,
+ GENRE_INSTRUMENTAL = 34,
+ GENRE_ACID = 35,
+ GENRE_HOUSE = 36,
+ GENRE_GAME = 37,
+ GENRE_SOUND_CLIP = 38,
+ GENRE_GOSPEL = 39,
+ GENRE_NOISE = 40,
+ GENRE_ALTERNROCK = 41,
+ GENRE_BASS = 42,
+ GENRE_SOUL = 43,
+ GENRE_PUNK = 44,
+ GENRE_SPACE = 45,
+ GENRE_MEDITATIVE = 46,
+ GENRE_INSTRUMENTAL_POP = 47,
+ GENRE_INSTRUMENTAL_ROCK = 48,
+ GENRE_ETHNIC = 49,
+ GENRE_GOTHIC = 50,
+ GENRE_DARKWAVE = 51,
+ GENRE_TECHNO_INDUSTRIAL = 52,
+ GENRE_ELECTRONIC = 53,
+ GENRE_POP_FOLK = 54,
+ GENRE_EURODANCE = 55,
+ GENRE_DREAM = 56,
+ GENRE_SOUTHERN_ROCK = 57,
+ GENRE_COMEDY = 58,
+ GENRE_CULT = 59,
+ GENRE_GANGSTA = 60,
+ GENRE_TOP_40 = 61,
+ GENRE_CHRISTIAN_RAP = 62,
+ GENRE_POP_FUNK = 63,
+ GENRE_JUNGLE = 64,
+ GENRE_NATIVE_AMERICAN = 65,
+ GENRE_CABARET = 66,
+ GENRE_NEW_WAVE = 67,
+ GENRE_PSYCHEDELIC = 68,
+ GENRE_RAVE = 69,
+ GENRE_SHOWTUNES = 70,
+ GENRE_TRAILER = 71,
+ GENRE_LO_FI = 72,
+ GENRE_TRIBAL = 73,
+ GENRE_ACID_PUNK = 74,
+ GENRE_ACID_JAZZ = 75,
+ GENRE_POLKA = 76,
+ GENRE_RETRO = 77,
+ GENRE_MUSICAL = 78,
+ GENRE_ROCK_AND_ROLL = 79,
+
+ /* Winamp extension */
+ GENRE_HARD_ROCK = 80,
+ GENRE_FOLK = 81,
+ GENRE_FOLK_ROCK = 82,
+ GENRE_NATIONAL_FOLK = 83,
+ GENRE_SWING = 84,
+ GENRE_FAST_FUSION = 85,
+ GENRE_BEBOB = 86,
+ GENRE_LATIN = 87,
+ GENRE_REVIVAL = 88,
+ GENRE_CELTIC = 89,
+ GENRE_BLUEGRASS = 90,
+ GENRE_AVANTGARDE = 91,
+ GENRE_GOTHIC_ROCK = 92,
+ GENRE_PROGRESSIVE_ROCK = 93,
+ GENRE_PSYCHEDELIC_ROCK = 94,
+ GENRE_SYMPHONIC_ROCK = 95,
+ GENRE_SLOW_ROCK = 96,
+ GENRE_BIG_BAND = 97,
+ GENRE_CHORUS = 98,
+ GENRE_EASY_LISTENING = 99,
+ GENRE_ACOUSTIC = 100,
+ GENRE_HUMOUR = 101,
+ GENRE_SPEECH = 102,
+ GENRE_CHANSON = 103,
+ GENRE_OPERA = 104,
+ GENRE_CHAMBER_MUSIC = 105,
+ GENRE_SONATA = 106,
+ GENRE_SYMPHONY = 107,
+ GENRE_BOOTY_BASS = 108,
+ GENRE_PRIMUS = 109,
+ GENRE_PORN_GROOVE = 110,
+ GENRE_SATIRE = 111,
+ GENRE_SLOW_JAM = 112,
+ GENRE_CLUB = 113,
+ GENRE_TANGO = 114,
+ GENRE_SAMBA = 115,
+ GENRE_FOLKLORE = 116,
+ GENRE_BALLAD = 117,
+ GENRE_POWER_BALLAD = 118,
+ GENRE_RHYTHMIC_SOUL = 119,
+ GENRE_FREESTYLE = 120,
+ GENRE_DUET = 121,
+ GENRE_PUNK_ROCK = 122,
+ GENRE_DRUM_SOLO = 123,
+ GENRE_A_CAPELLA = 124,
+ GENRE_EURO_HOUSE = 125,
+ GENRE_DANCE_HALL = 126,
+
+ GENRE_NONE = 255
+};
+
+typedef Enum<GenreType,GENRE_UNDEFINED> EnumGenreType;
+MP4V2_EXPORT extern const EnumGenreType enumGenreType;
+
+///////////////////////////////////////////////////////////////////////////////
+
+/// enumerated 8-bit Video Type used by iTunes.
+/// Note values are not formally defined in any specification.
+enum StikType {
+ STIK_OLD_MOVIE = 0,
+ STIK_NORMAL = 1,
+ STIK_AUDIOBOOK = 2,
+ STIK_MUSIC_VIDEO = 6,
+ STIK_MOVIE = 9,
+ STIK_TV_SHOW = 10,
+ STIK_BOOKLET = 11,
+ STIK_RINGTONE = 14,
+
+ STIK_UNDEFINED = 255
+};
+
+typedef Enum<StikType,STIK_UNDEFINED> EnumStikType;
+MP4V2_EXPORT extern const EnumStikType enumStikType;
+
+///////////////////////////////////////////////////////////////////////////////
+
+/// enumerated 8-bit Account Type used by the iTunes Store.
+/// Note values are not formally defined in any specification.
+enum AccountType {
+ AT_ITUNES = 0,
+ AT_AOL = 1,
+
+ AT_UNDEFINED = 255
+};
+
+typedef Enum<AccountType,AT_UNDEFINED> EnumAccountType;
+MP4V2_EXPORT extern const EnumAccountType enumAccountType;
+
+///////////////////////////////////////////////////////////////////////////////
+
+/// enumerated 32-bit Country Code used by the iTunes Store.
+/// Note values are not formally defined in any specification.
+enum CountryCode {
+ CC_USA = 143441,
+ CC_FRA = 143442,
+ CC_DEU = 143443,
+ CC_GBR = 143444,
+ CC_AUT = 143445,
+ CC_BEL = 143446,
+ CC_FIN = 143447,
+ CC_GRC = 143448,
+ CC_IRL = 143449,
+ CC_ITA = 143450,
+ CC_LUX = 143451,
+ CC_NLD = 143452,
+ CC_PRT = 143453,
+ CC_ESP = 143454,
+ CC_CAN = 143455,
+ CC_SWE = 143456,
+ CC_NOR = 143457,
+ CC_DNK = 143458,
+ CC_CHE = 143459,
+ CC_AUS = 143460,
+ CC_NZL = 143461,
+ CC_JPN = 143462,
+
+ CC_UNDEFINED = 0
+};
+
+typedef Enum<CountryCode,CC_UNDEFINED> EnumCountryCode;
+MP4V2_EXPORT extern const EnumCountryCode enumCountryCode;
+
+///////////////////////////////////////////////////////////////////////////////
+
+/// enumerated 8-bit Content Rating used by iTunes.
+/// Note values are not formally defined in any specification.
+enum ContentRating {
+ CR_NONE = 0,
+ CR_CLEAN = 2,
+ CR_EXPLICIT = 4,
+
+ CR_UNDEFINED = 255
+};
+
+typedef Enum<ContentRating,CR_UNDEFINED> EnumContentRating;
+MP4V2_EXPORT extern const EnumContentRating enumContentRating;
+
+///////////////////////////////////////////////////////////////////////////////
+/// compute BasicType by examining raw bytes header.
+MP4V2_EXPORT BasicType
+computeBasicType( const void* buffer, uint32_t size );
+
+///////////////////////////////////////////////////////////////////////////////
+
+}}} // namespace mp4v2::impl::itmf
+
+#endif // MP4V2_IMPL_ITMF_TYPE_H