diff -r -u mp4v2-2.0.0-orig/util/mp4tags.cpp mp4v2-2.0.0/util/mp4tags.cpp --- mp4v2-2.0.0-orig/util/mp4tags.cpp 2012-05-20 15:11:55.000000000 -0700 +++ mp4v2-2.0.0/util/mp4tags.cpp 2014-04-15 14:37:41.866994136 -0700 @@ -35,12 +35,14 @@ #define OPT_ENCODEDBY 'e' #define OPT_TOOL 'E' #define OPT_GENRE 'g' +#define OPT_GENRETYPE 'J' #define OPT_GROUPING 'G' #define OPT_HD 'H' #define OPT_MEDIA_TYPE 'i' #define OPT_CONTENTID 'I' #define OPT_LONGDESC 'l' #define OPT_GENREID 'j' +#define OPT_COMPILATION 'K' #define OPT_LYRICS 'L' #define OPT_DESCRIPTION 'm' #define OPT_TVEPISODE 'M' @@ -51,6 +53,7 @@ #define OPT_PLAYLISTID 'p' #define OPT_PICTURE 'P' #define OPT_PODCAST 'B' +#define OPT_GAPLESS 'Q' #define OPT_ALBUM_ARTIST 'R' #define OPT_NAME 's' #define OPT_TVSHOW 'S' @@ -63,7 +66,7 @@ #define OPT_ARTISTID 'z' #define OPT_COMPOSERID 'Z' -#define OPT_STRING "r:A:a:b:c:C:d:D:e:E:g:G:H:i:I:j:l:L:m:M:n:N:o:O:p:P:B:R:s:S:t:T:x:X:w:y:z:Z:" +#define OPT_STRING "r:A:a:b:c:C:d:D:e:E:g:J:G:H:i:I:j:K:l:L:m:M:n:N:o:O:p:P:B:Q:R:s:S:t:T:x:X:w:y:z:Z:" #define ELEMENT_OF(x,i) x[int(i)] @@ -82,12 +85,15 @@ " -D, -disks NUM Set the number of disks\n" " -e, -encodedby STR Set the name of the person or company who encoded the file\n" " -E, -tool STR Set the software used for encoding\n" + " -Q, -gapless NUM Set gapless flag (0 false, non-zero true)\n" " -g, -genre STR Set the genre name\n" + " -J, -genretype NUM Set the genre type\n" " -G, -grouping STR Set the grouping name\n" " -H, -hdvideo NUM Set the HD flag (1\\0)\n" " -i, -type STR Set the Media Type(tvshow, movie, music, ...)\n" " -I, -contentid NUM Set the content ID\n" " -j, -genreid NUM Set the genre ID\n" + " -K, -compilation NUM Set the compilation flag (0 false, non-zero true)\n" " -l, -longdesc STR Set the long description\n" " -L, -lyrics NUM Set the lyrics\n" " -m, -description STR Set the short description\n" @@ -122,12 +128,15 @@ { "album", prog::Option::REQUIRED_ARG, 0, OPT_ALBUM }, { "artist", prog::Option::REQUIRED_ARG, 0, OPT_ARTIST }, { "comment", prog::Option::REQUIRED_ARG, 0, OPT_COMMENT }, + { "compilation", prog::Option::REQUIRED_ARG, 0, OPT_COMPILATION }, { "copyright", prog::Option::REQUIRED_ARG, 0, OPT_COPYRIGHT }, { "disk", prog::Option::REQUIRED_ARG, 0, OPT_DISK }, { "disks", prog::Option::REQUIRED_ARG, 0, OPT_DISKS }, { "encodedby", prog::Option::REQUIRED_ARG, 0, OPT_ENCODEDBY }, { "tool", prog::Option::REQUIRED_ARG, 0, OPT_TOOL }, + { "gapless", prog::Option::REQUIRED_ARG, 0, OPT_GAPLESS }, { "genre", prog::Option::REQUIRED_ARG, 0, OPT_GENRE }, + { "genretype", prog::Option::REQUIRED_ARG, 0, OPT_GENRETYPE }, { "grouping", prog::Option::REQUIRED_ARG, 0, OPT_GROUPING }, { "hdvideo", prog::Option::REQUIRED_ARG, 0, OPT_HD }, { "type", prog::Option::REQUIRED_ARG, 0, OPT_MEDIA_TYPE }, @@ -196,7 +205,10 @@ case OPT_DISKS: case OPT_HD: case OPT_CONTENTID: + case OPT_GAPLESS: + case OPT_COMPILATION: case OPT_GENREID: + case OPT_GENRETYPE: case OPT_TVEPISODE: case OPT_TVSEASON: case OPT_PLAYLISTID: @@ -454,9 +466,26 @@ case OPT_TOOL: MP4TagsSetEncodingTool( mdata, tags[i] ); break; + case OPT_COMPILATION: + { + uint8_t value = static_cast( nums[i] ); + MP4TagsSetCompilation( mdata, &value ); + break; + } + case OPT_GAPLESS: + { + uint8_t value = static_cast( nums[i] ); + MP4TagsSetGapless( mdata, &value ); + break; + } case OPT_GENRE: MP4TagsSetGenre( mdata, tags[i] ); break; + case OPT_GENRETYPE: + { + uint16_t value = static_cast( nums[i] ); + MP4TagsSetGenreType( mdata, &value ); + } case OPT_GROUPING: MP4TagsSetGrouping( mdata, tags[i] ); break;