[Helix-client-dev] Re: CN: Extended support for iTunes meta-info in datatype projects
Petar Basic <[email protected]> Fri, 23 Oct 2009 14:55:26 +0200
| Newsgroups | gmane.comp.multimedia.helix.devel |
|---|---|
| Message-ID | <[email protected]> |
Renamed "Abstract" to "Description" to avoid clashes with previously defined "Abstract" property name. On Fri, Oct 23, 2009 at 1:08 PM, Petar Basic <[email protected]> wrote: > Modified by: pbasic at real.com > Reviewed by: ehyche at real.com, djanecek at real.com > Date: 2009/10/23 > Project: GMP MetaEditor (meta3gp.exe) > > Synopsis: > Extended support for iTunes meta-info in datatype projects > > Overview: > GMP MetaEditor tool must support both 3GPP and iTunes meta-info > flavors in MP4-based files. iTunes metadata boxes were only partially > supported in MP4 file-writer and so far unsupported in MP4 > file-format. This CR adds support for standard iTunes tags minus the > Cover Art ('covr') tag which will be addressed separately. > > The following iTunes tags are now supported: > Album Name (@alb) > Artist(@ART) > User Comment(@cmt) > Copyright (cprt) > Release Date (@day) > Encoded By (@enc) > Pre-defined Genre (gnre) > User Genre (@gen) > Song Name (@nam) > Track Sub-Title (@st3) > Encoding Tool (@too) > Composer (@wrt) > Album Artist (aART) > Disc Compilation (cpil) > Disc Number (disk) > Grouping (@grp, grup) > Lyrics (@lyr) > Content Rating (rtng) > Beats Per Minute (tmpo) > Track Number (@trkn) > > File-writer takes into account common expectations of other software > packages and outputs atoms accordingly. For this reason, the length > of values in string atoms except @lyr is currently limited to 255 > characters. UTF8 and UTF16BE output is fully supported except for > @lyr which must be in UTF8 format. Only year portion of @day atom is > read/written as the full date seems unimportant to most other software > (e.g. iTunes9 also allows input of the year part only). > > Details: > 1.) Fixed a bug in EncStrUtils::ConvertUTF8ToUTF16. > > 2.) Updated project dependencies in helix.bif. Added > HELIX_FEATURE_ITUNES_METAINFO to helix-client-mp4.pfi. > > 3.) Added iTunes meta-flavor definition to ihxmetaeditor.h. > > 4.) Updated meta-info key defines in metainfokeys.h. The keys have > been split in several non-overlapping sets. Currently defined are > Generic set, iTunes specific set, 3GPP specific set. Key sets can be > combined where needed. Some aliases in specific sets have been > defined which reference keys in the generic set. > > 5.) Moved MetaInfo3GP utilities from meta3gp project into > common/util/metautil.cpp module. Renamed utility class to MetaInfo. > This class simplifies processing of meta-info properties in > file-headers, stream-headers, etc. It can also be used as a simpler > temporary C++-style container for meta-info values; export/import > to/from Helix IHXValues container is supported. > > 6.) Updated code in dtdriver/common/decoder, dtdriver/common/engine, > datatype/tools/metaeditor to use MetaInfo class utilities. All > available meta-info is now always transferred between headers in > FFDriver components. > > 7.) Metaeditor's source handler now transfers all available meta-info > properties between headers and leaves meta-info set/flavor filtering > to IHXMetaDataProcessor. > > 8.) Updated and refactored command line processing in meta3gp > executable project according to GMP MetaEditor specs. Both flavors of > meta-data (3GPP, iTunes) can be injected into the same media-file by > specifying the -metastyle switch multiple times. > > 9.) Merged MP4 atom handling improvements from 310Atlas: > A.) MP4 fileformat's atomizer had to be extended to handle > non-standard size (versioned) container atoms. Until now it was > assumed that each container has 8 byte header - e.g. 'meta' atom uses > 12 bytes. > B.) MP4 fileformat has been extended with 'meta' and 'ID32' > definitions. ID32 Tags found at track level are handled by TrackInfo > manager and are inserted into the stream header of the corresponding > stream. > C.) Removed dead code (TypedChildIterator) in MP4 fileformat. > D.) MP4 filewriter has been extended with 'meta' and 'ID32' > definitions. Stream mixer outputs the ID3v2 tag to the following atom > path: /file/moov/meta/ID32. > E.) MP4 filewriter writes out the ID32 meta data as part of the moov > or trak meta box depending on the location (file or stream header) of > the ID32 blob. > > 10.) MP4 filewriter has been updated to respect MetaDataFlavor > configuration option and can therefore update both flavors of > meta-data into the same media-file. Added/extended iTunes atom > definitions and atom tree builder methods. > > 11.) MP4 fileformat has been updated to read iTunes meta tags. > Added/extended iTunes atom definitions and atom tree builder methods. > CreateQTAtom method now takes additional parameter specifying the > current tree root - this was needed because there is some overlap > among flavor atom names (3GPP gnre/iTunes gnre, 3GPP cprt/iTunes cprt, > 3GPP rtng/iTunes rntg). The tree builder needs current root type to > decide the context of creation and to create an atom of the correct > class (iTunes or 3GPP). Since both flavors of metadata can now be > encountered inside a single media-file, some extraction method > prioritization has been implemented based on MajorBrand value. By > default, 3GPP info will overwrite iTunes info. In case of M4A brand, > iTunes info will overwrite 3GPP info. The reader is not subject to > artificial 255 characters limitation in iTunes strings; it also > tolerates various deviations from the iTMF spec where it is safe and > possible to do so. > > Testing: > Verified that meta-info injected by GMP MetaEditor can be read with > other software (iTunes 9, AtomicParsley 0.9, CT metadata extractor > 1.3). Verified that meta-info injected by other software can be read > with GMP MetaEditor. > > Files Modified: > ribosome/build/umakepf/helix-client-mp4.pfi > ribosome/build/bif-cvs/helix/common/build/BIF/helix.bif > common/include/ihxmetaeditor.h > common/util/encstr.cpp > datatype/include/metainfokeys.h > datatype/common/util/metautil.cpp > datatype/common/util/pub/metautil.h > datatype/common/util/Umakefil > datatype/tools/dtdriver/common/Umakefil > datatype/tools/dtdriver/decoder/audio/Umakefil > datatype/tools/dtdriver/decoder/audio/adecoder.cpp > datatype/tools/dtdriver/decoder/video/Umakefil > datatype/tools/dtdriver/decoder/video/vdecoder.cpp > datatype/tools/dtdriver/decoder/video/vdepacker.cpp > datatype/tools/dtdriver/engine/pub/ffdriver.h > datatype/tools/dtdriver/engine/ffdriver.cpp > datatype/tools/dtdriver/engine/Umakefil > datatype/tools/dtdriver/apps/meta3gp/main.cpp > datatype/tools/dtdriver/apps/meta3gp/Umakefil_meta3gp > datatype/tools/metaeditor/srchandler.cpp > datatype/tools/metaeditor/srchandler.h > datatype/tools/metaeditor/Umakefil > datatype/mp4/fileformat/atomizer.cpp > datatype/mp4/fileformat/pub/atomizer.h > datatype/mp4/fileformat/qtatoms.cpp > datatype/mp4/fileformat/pub/qtatoms.h > datatype/mp4/fileformat/qtatmmgs.cpp > datatype/mp4/fileformat/pub/qtatmmgs.h > datatype/mp4/fileformat/qtffplin.cpp > datatype/mp4/fileformat/pub/qtffplin.h > datatype/mp4/fileformat/pub/qtbatom.h > datatype/mp4/fileformat/dllumakefil > datatype/mp4/fileformat/libumakefil > datatype/mp4/filewriter/3gpmeta.h > datatype/mp4/filewriter/3gpmeta.cpp > datatype/mp4/filewriter/mp4sm.h > datatype/mp4/filewriter/mp4sm.cpp > datatype/mp4/filewriter/m4amdatoms.h > datatype/mp4/filewriter/mp4atoms.h > > Files Removed: > datatype/tools/metaeditor/metautil3gp.cpp > datatype/tools/metaeditor/pub/metautil3gp.h > datatype/tools/metaeditor/Umakefile_3gp_lib > datatype/tools/metaeditor/Umakefile_dll > > Platforms and Profiles Affected: > All > > Image Size and Heap Use impact: > Small increase > > Platforms and Profiles Build Verified: > system id: win32-i386-vc7 > profile: helix-client-all-defines > > Platforms and Profiles Functionality Verified: > x86 Windows XP SP2 > > Branch: > HEAD > > Copyright assignment: > I am a RealNetworks employee or contractor. > _______________________________________________ Helix-client-dev mailing list [email protected] http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
datatype_common_util2.diff
(text/x-patch, 27 KB)
Index: metautil.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/metautil.cpp,v
retrieving revision 1.8
diff -U30 -r1.8 metautil.cpp
--- metautil.cpp 23 Oct 2009 09:40:00 -0000 1.8
+++ metautil.cpp 23 Oct 2009 11:40:05 -0000
@@ -397,61 +397,61 @@
retVal = RemoveKeywordProperties(dst);
PropTools::CopyPropertyULONG32(retVal, dst, src, _3GPP_META_INFO_KEYWORD_COUNT_KEY, TRUE);
for(UINT32 i = 0; i < ulKeywordCount; i++)
{
if(SUCCEEDED(retVal))
{
char key[128];
sprintf(key, _3GPP_META_INFO_KEYWORD_KEY, int(i));
PropTools::CopyPropertyBuffer(retVal, dst, src, key, TRUE);
}
}
}
else if(bBlast)
{
retVal = RemoveKeywordProperties(dst);
}
return retVal;
}
HX_RESULT MetaInfo::RemoveAllProperties(IHXValues* pValues, UINT32 metaInfoSetFlags)
{
HX_RESULT retVal = HXR_OK;
// Generic
if(metaInfoSetFlags & METAINFO_SET_GENERIC)
{
PropTools::RemovePropertyBuffer(retVal, pValues, _GENERIC_META_INFO_TITLE_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _GENERIC_META_INFO_COMPOSER_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _GENERIC_META_INFO_COPYRIGHT_KEY);
- PropTools::RemovePropertyBuffer(retVal, pValues, _GENERIC_META_INFO_COMMENT_KEY);
+ PropTools::RemovePropertyBuffer(retVal, pValues, _GENERIC_META_INFO_DESCRIPTION_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _GENERIC_META_INFO_ARTIST_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _GENERIC_META_INFO_GENRE_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _GENERIC_META_INFO_ALBUM_KEY);
PropTools::RemovePropertyULONG32(retVal, pValues, _GENERIC_META_INFO_TRACK_NUMBER_KEY);
PropTools::RemovePropertyULONG32(retVal, pValues, _GENERIC_META_INFO_RECORDING_YEAR_KEY);
}
// iTunes
if(metaInfoSetFlags & METAINFO_SET_ITUNES_SPECIFIC)
{
PropTools::RemovePropertyBuffer(retVal, pValues, _ITUNES_META_INFO_TRACK_SUBTITLE_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _ITUNES_META_INFO_GENERATOR_TOOL_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _ITUNES_META_INFO_ENCODED_BY_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _ITUNES_META_INFO_GROUPING_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _ITUNES_META_INFO_ALBUM_ARTIST_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _ITUNES_META_INFO_LYRICS_KEY);
PropTools::RemovePropertyULONG32(retVal, pValues, _ITUNES_META_INFO_BEATS_PER_MINUTE_KEY);
PropTools::RemovePropertyULONG32(retVal, pValues, _ITUNES_META_INFO_PART_OF_COMPILATION_KEY);
PropTools::RemovePropertyULONG32(retVal, pValues, _ITUNES_META_INFO_EXPLICIT_CONTENT_KEY);
PropTools::RemovePropertyULONG32(retVal, pValues, _ITUNES_META_INFO_TRACK_COUNT_KEY);
PropTools::RemovePropertyULONG32(retVal, pValues, _ITUNES_META_INFO_DISC_NUMBER_KEY);
PropTools::RemovePropertyULONG32(retVal, pValues, _ITUNES_META_INFO_DISC_COUNT_KEY);
}
// 3GPP
if(metaInfoSetFlags & METAINFO_SET_3GPP_SPECIFIC)
{
PropTools::RemovePropertyBuffer(retVal, pValues, _3GPP_META_INFO_GLOBAL_LANGUAGE_ENCODING_KEY);
@@ -463,61 +463,61 @@
PropTools::RemovePropertyBuffer(retVal, pValues, _3GPP_META_INFO_LOCATION_NAME_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _3GPP_META_INFO_LOCATION_ASTRONOMICAL_BODY_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _3GPP_META_INFO_LOCATION_ADDITIONAL_NOTES_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _3GPP_META_INFO_LOCATION_LONGITUDE_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _3GPP_META_INFO_LOCATION_LATITUDE_KEY);
PropTools::RemovePropertyBuffer(retVal, pValues, _3GPP_META_INFO_LOCATION_ALTITUDE_KEY);
PropTools::RemovePropertyULONG32(retVal, pValues, _3GPP_META_INFO_CLASSIFICATION_TABLE_KEY);
PropTools::RemovePropertyULONG32(retVal, pValues, _3GPP_META_INFO_LOCATION_ROLE_KEY);
// keywords
if(SUCCEEDED(retVal))
{
retVal = RemoveKeywordProperties(pValues);
}
}
return retVal;
}
HX_RESULT MetaInfo::CopyAllProperties(IHXValues* dst, IHXValues* src, ULONG32 metaInfoSetFlags, HXBOOL bBlast)
{
HX_RESULT retVal = HXR_OK;
// Generic
if(metaInfoSetFlags & METAINFO_SET_GENERIC)
{
PropTools::CopyPropertyBuffer(retVal, dst, src, _GENERIC_META_INFO_TITLE_KEY, bBlast);
PropTools::CopyPropertyBuffer(retVal, dst, src, _GENERIC_META_INFO_COMPOSER_KEY, bBlast);
PropTools::CopyPropertyBuffer(retVal, dst, src, _GENERIC_META_INFO_COPYRIGHT_KEY, bBlast);
- PropTools::CopyPropertyBuffer(retVal, dst, src, _GENERIC_META_INFO_COMMENT_KEY, bBlast);
+ PropTools::CopyPropertyBuffer(retVal, dst, src, _GENERIC_META_INFO_DESCRIPTION_KEY, bBlast);
PropTools::CopyPropertyBuffer(retVal, dst, src, _GENERIC_META_INFO_ARTIST_KEY, bBlast);
PropTools::CopyPropertyBuffer(retVal, dst, src, _GENERIC_META_INFO_GENRE_KEY, bBlast);
PropTools::CopyPropertyBuffer(retVal, dst, src, _GENERIC_META_INFO_ALBUM_KEY, bBlast);
PropTools::CopyPropertyULONG32(retVal, dst, src, _GENERIC_META_INFO_TRACK_NUMBER_KEY, bBlast);
PropTools::CopyPropertyULONG32(retVal, dst, src, _GENERIC_META_INFO_RECORDING_YEAR_KEY, bBlast);
}
// iTunes
if(metaInfoSetFlags & METAINFO_SET_ITUNES_SPECIFIC)
{
PropTools::CopyPropertyBuffer(retVal, dst, src, _ITUNES_META_INFO_TRACK_SUBTITLE_KEY, bBlast);
PropTools::CopyPropertyBuffer(retVal, dst, src, _ITUNES_META_INFO_GENERATOR_TOOL_KEY, bBlast);
PropTools::CopyPropertyBuffer(retVal, dst, src, _ITUNES_META_INFO_ENCODED_BY_KEY, bBlast);
PropTools::CopyPropertyBuffer(retVal, dst, src, _ITUNES_META_INFO_GROUPING_KEY, bBlast);
PropTools::CopyPropertyBuffer(retVal, dst, src, _ITUNES_META_INFO_ALBUM_ARTIST_KEY, bBlast);
PropTools::CopyPropertyBuffer(retVal, dst, src, _ITUNES_META_INFO_LYRICS_KEY, bBlast);
PropTools::CopyPropertyULONG32(retVal, dst, src, _ITUNES_META_INFO_BEATS_PER_MINUTE_KEY, bBlast);
PropTools::CopyPropertyULONG32(retVal, dst, src, _ITUNES_META_INFO_PART_OF_COMPILATION_KEY, bBlast);
PropTools::CopyPropertyULONG32(retVal, dst, src, _ITUNES_META_INFO_EXPLICIT_CONTENT_KEY, bBlast);
PropTools::CopyPropertyULONG32(retVal, dst, src, _ITUNES_META_INFO_TRACK_COUNT_KEY, bBlast);
PropTools::CopyPropertyULONG32(retVal, dst, src, _ITUNES_META_INFO_DISC_NUMBER_KEY, bBlast);
PropTools::CopyPropertyULONG32(retVal, dst, src, _ITUNES_META_INFO_DISC_COUNT_KEY, bBlast);
}
// 3GPP
if(metaInfoSetFlags & METAINFO_SET_3GPP_SPECIFIC)
{
PropTools::CopyPropertyBuffer(retVal, dst, src, _3GPP_META_INFO_GLOBAL_LANGUAGE_ENCODING_KEY, bBlast);
@@ -578,139 +578,139 @@
CHXString MetaInfo::GetFlavorNames(UINT32 metaFlavorFlags)
{
const METADATA_FLAVOR allFlavors[] = { METADATA_FLAVOR_3GPP, METADATA_FLAVOR_ITUNES };
CHXString s;
for(int i = 0; i < (sizeof(allFlavors) / sizeof(METADATA_FLAVOR)); i++)
{
if(metaFlavorFlags & allFlavors[i])
{
if(!s.IsEmpty())
{
s += ", ";
}
s += GetFlavorName(allFlavors[i]);
}
}
return s;
}
UINT32 MetaInfo::GetSetsWhichSupportItem(eStringMetaItem itemName)
{
switch(itemName)
{
case StringMetaItem_Title:
case StringMetaItem_Artist:
case StringMetaItem_Album:
case StringMetaItem_Genre:
case StringMetaItem_Composer:
- case StringMetaItem_Comment:
+ case StringMetaItem_Description:
case StringMetaItem_Copyright:
return METAINFO_SET_GENERIC;
case StringMetaItem_TrackSubtitle:
case StringMetaItem_GeneratorTool:
case StringMetaItem_EncodedBy:
case StringMetaItem_Grouping:
case StringMetaItem_AlbumArtist:
case StringMetaItem_Lyrics:
return METAINFO_SET_ITUNES_SPECIFIC;
case StringMetaItem_GlobalLanguageEncoding:
case StringMetaItem_RatingEntity:
case StringMetaItem_RatingCriteria:
case StringMetaItem_RatingInfo:
case StringMetaItem_ClassificationEntity:
case StringMetaItem_ClassificationInfo:
case StringMetaItem_LocationName:
case StringMetaItem_LocationAstronomicalBody:
case StringMetaItem_LocationAdditionalNotes:
case StringMetaItem_LocationLongitude:
case StringMetaItem_LocationLatitude:
case StringMetaItem_LocationAltitude:
case StringMetaItem_Keywords:
return METAINFO_SET_3GPP_SPECIFIC;
}
return 0;
}
UINT32 MetaInfo::GetFlavorsWhichSupportItem(eStringMetaItem itemName)
{
switch(itemName)
{
case StringMetaItem_Title:
case StringMetaItem_Artist:
case StringMetaItem_Album:
case StringMetaItem_Genre:
case StringMetaItem_Composer:
- case StringMetaItem_Comment:
+ case StringMetaItem_Description:
case StringMetaItem_Copyright:
return (METADATA_FLAVOR_3GPP | METADATA_FLAVOR_ITUNES);
case StringMetaItem_TrackSubtitle:
case StringMetaItem_GeneratorTool:
case StringMetaItem_EncodedBy:
case StringMetaItem_Grouping:
case StringMetaItem_AlbumArtist:
case StringMetaItem_Lyrics:
return METADATA_FLAVOR_ITUNES;
case StringMetaItem_GlobalLanguageEncoding:
case StringMetaItem_RatingEntity:
case StringMetaItem_RatingCriteria:
case StringMetaItem_RatingInfo:
case StringMetaItem_ClassificationEntity:
case StringMetaItem_ClassificationInfo:
case StringMetaItem_LocationName:
case StringMetaItem_LocationAstronomicalBody:
case StringMetaItem_LocationAdditionalNotes:
case StringMetaItem_LocationLongitude:
case StringMetaItem_LocationLatitude:
case StringMetaItem_LocationAltitude:
case StringMetaItem_Keywords:
return METADATA_FLAVOR_3GPP;
}
return 0;
}
HXBOOL MetaInfo::IsItemValueValidForFlavors(eStringMetaItem itemName, const EncodedString& val, UINT32 metaFlavorFlags)
{
switch(itemName)
{
case StringMetaItem_Title:
case StringMetaItem_Artist:
case StringMetaItem_Album:
case StringMetaItem_Genre:
case StringMetaItem_Composer:
- case StringMetaItem_Comment:
+ case StringMetaItem_Description:
case StringMetaItem_Copyright:
case StringMetaItem_TrackSubtitle:
case StringMetaItem_GeneratorTool:
case StringMetaItem_EncodedBy:
case StringMetaItem_Grouping:
case StringMetaItem_AlbumArtist:
// iTunes have 255 character limit for all string properties except Lyrics
return (metaFlavorFlags & METADATA_FLAVOR_ITUNES) ? (val.GetCodeUnitLength(FALSE, FALSE) <= 255) : TRUE;
case StringMetaItem_Keywords:
// 3GPP has 255 characters limit for Keywords
return (val.GetCodeUnitLength(FALSE, FALSE) <= 255);
}
return TRUE;
}
UINT32 MetaInfo::GetSetsWhichSupportItem(eUIntMetaItem itemName)
{
switch(itemName)
{
case UIntMetaItem_TrackNumber:
case UIntMetaItem_RecordingYear:
return METAINFO_SET_GENERIC;
case UIntMetaItem_BeatsPerMinute:
case UIntMetaItem_PartOfCompilation:
case UIntMetaItem_ExplicitContent:
case UIntMetaItem_TrackCount:
case UIntMetaItem_DiscNumber:
case UIntMetaItem_DiscCount:
@@ -823,61 +823,61 @@
MetaInfo::MetaInfo()
{
Clear();
}
MetaInfo::~MetaInfo()
{
ClearKeywords();
}
MetaInfo::MetaInfo(const MetaInfo& rhs)
{
*this = rhs;
}
MetaInfo& MetaInfo::operator=(const MetaInfo& rhs)
{
Clear();
UpdateItems(rhs);
return *this;
}
void MetaInfo::Dump(UINT32 metaInfoSetFlags)
{
// Generic
if(metaInfoSetFlags & METAINFO_SET_GENERIC)
{
Dump(_GENERIC_META_INFO_TITLE_KEY, m_stringItems[StringMetaItem_Title]);
Dump(_GENERIC_META_INFO_COMPOSER_KEY, m_stringItems[StringMetaItem_Composer]);
Dump(_GENERIC_META_INFO_COPYRIGHT_KEY, m_stringItems[StringMetaItem_Copyright]);
- Dump(_GENERIC_META_INFO_COMMENT_KEY, m_stringItems[StringMetaItem_Comment]);
+ Dump(_GENERIC_META_INFO_DESCRIPTION_KEY, m_stringItems[StringMetaItem_Description]);
Dump(_GENERIC_META_INFO_ARTIST_KEY, m_stringItems[StringMetaItem_Artist]);
Dump(_GENERIC_META_INFO_GENRE_KEY, m_stringItems[StringMetaItem_Genre]);
Dump(_GENERIC_META_INFO_ALBUM_KEY, m_stringItems[StringMetaItem_Album]);
Dump(_GENERIC_META_INFO_TRACK_NUMBER_KEY, m_ulongItems[UIntMetaItem_TrackNumber],
m_ulongItemValidFlags[UIntMetaItem_TrackNumber]);
Dump(_GENERIC_META_INFO_RECORDING_YEAR_KEY, m_ulongItems[UIntMetaItem_RecordingYear],
m_ulongItemValidFlags[UIntMetaItem_RecordingYear]);
}
// iTunes
if(metaInfoSetFlags & METAINFO_SET_ITUNES_SPECIFIC)
{
Dump(_ITUNES_META_INFO_TRACK_SUBTITLE_KEY, m_stringItems[StringMetaItem_TrackSubtitle]);
Dump(_ITUNES_META_INFO_GENERATOR_TOOL_KEY, m_stringItems[StringMetaItem_GeneratorTool]);
Dump(_ITUNES_META_INFO_ENCODED_BY_KEY, m_stringItems[StringMetaItem_EncodedBy]);
Dump(_ITUNES_META_INFO_GROUPING_KEY, m_stringItems[StringMetaItem_Grouping]);
Dump(_ITUNES_META_INFO_ALBUM_ARTIST_KEY, m_stringItems[StringMetaItem_AlbumArtist]);
Dump(_ITUNES_META_INFO_LYRICS_KEY, m_stringItems[StringMetaItem_Lyrics]);
Dump(_ITUNES_META_INFO_BEATS_PER_MINUTE_KEY, m_ulongItems[UIntMetaItem_BeatsPerMinute],
m_ulongItemValidFlags[UIntMetaItem_BeatsPerMinute]);
Dump(_ITUNES_META_INFO_PART_OF_COMPILATION_KEY, m_ulongItems[UIntMetaItem_PartOfCompilation],
m_ulongItemValidFlags[UIntMetaItem_PartOfCompilation]);
Dump(_ITUNES_META_INFO_EXPLICIT_CONTENT_KEY, m_ulongItems[UIntMetaItem_ExplicitContent],
m_ulongItemValidFlags[UIntMetaItem_ExplicitContent]);
Dump(_ITUNES_META_INFO_TRACK_COUNT_KEY, m_ulongItems[UIntMetaItem_TrackCount],
m_ulongItemValidFlags[UIntMetaItem_TrackCount]);
Dump(_ITUNES_META_INFO_DISC_NUMBER_KEY, m_ulongItems[UIntMetaItem_DiscNumber],
m_ulongItemValidFlags[UIntMetaItem_DiscNumber]);
Dump(_ITUNES_META_INFO_DISC_COUNT_KEY, m_ulongItems[UIntMetaItem_DiscCount],
@@ -972,61 +972,61 @@
{
EncodedString sTmp;
src.GetKeyword(i, sTmp);
AddKeyword(sTmp);
}
}
for(int iUIntItem = UIntMetaItem_UIntItemBegin; iUIntItem < UIntMetaItem_UIntItemEnd; iUIntItem++)
{
if(IsItemSupportedByAnySet((eUIntMetaItem)iUIntItem, metaInfoSetFlags))
{
Update(m_ulongItems[iUIntItem], m_ulongItemValidFlags[iUIntItem],
src.m_ulongItems[iUIntItem], src.m_ulongItemValidFlags[iUIntItem]);
}
}
}
void MetaInfo::CopyToValues(IHXValues* pValues, HXBOOL bBlast, UINT32 metaInfoSetFlags) const
{
if(!pValues)
{
return;
}
// Generic
if(metaInfoSetFlags & METAINFO_SET_GENERIC)
{
CopyString(pValues, bBlast, _GENERIC_META_INFO_TITLE_KEY, StringMetaItem_Title);
CopyString(pValues, bBlast, _GENERIC_META_INFO_COMPOSER_KEY, StringMetaItem_Composer);
CopyString(pValues, bBlast, _GENERIC_META_INFO_COPYRIGHT_KEY, StringMetaItem_Copyright);
- CopyString(pValues, bBlast, _GENERIC_META_INFO_COMMENT_KEY, StringMetaItem_Comment);
+ CopyString(pValues, bBlast, _GENERIC_META_INFO_DESCRIPTION_KEY, StringMetaItem_Description);
CopyString(pValues, bBlast, _GENERIC_META_INFO_ARTIST_KEY, StringMetaItem_Artist);
CopyString(pValues, bBlast, _GENERIC_META_INFO_GENRE_KEY, StringMetaItem_Genre);
CopyString(pValues, bBlast, _GENERIC_META_INFO_ALBUM_KEY, StringMetaItem_Album);
CopyUINT32(pValues, bBlast, _GENERIC_META_INFO_TRACK_NUMBER_KEY, UIntMetaItem_TrackNumber);
CopyUINT32(pValues, bBlast, _GENERIC_META_INFO_RECORDING_YEAR_KEY, UIntMetaItem_RecordingYear);
}
// iTunes
if(metaInfoSetFlags & METAINFO_SET_ITUNES_SPECIFIC)
{
CopyString(pValues, bBlast, _ITUNES_META_INFO_TRACK_SUBTITLE_KEY, StringMetaItem_TrackSubtitle);
CopyString(pValues, bBlast, _ITUNES_META_INFO_GENERATOR_TOOL_KEY, StringMetaItem_GeneratorTool);
CopyString(pValues, bBlast, _ITUNES_META_INFO_ENCODED_BY_KEY, StringMetaItem_EncodedBy);
CopyString(pValues, bBlast, _ITUNES_META_INFO_GROUPING_KEY, StringMetaItem_Grouping);
CopyString(pValues, bBlast, _ITUNES_META_INFO_ALBUM_ARTIST_KEY, StringMetaItem_AlbumArtist);
CopyString(pValues, bBlast, _ITUNES_META_INFO_LYRICS_KEY, StringMetaItem_Lyrics);
CopyUINT32(pValues, bBlast, _ITUNES_META_INFO_BEATS_PER_MINUTE_KEY, UIntMetaItem_BeatsPerMinute);
CopyUINT32(pValues, bBlast, _ITUNES_META_INFO_PART_OF_COMPILATION_KEY, UIntMetaItem_PartOfCompilation);
CopyUINT32(pValues, bBlast, _ITUNES_META_INFO_EXPLICIT_CONTENT_KEY, UIntMetaItem_ExplicitContent);
CopyUINT32(pValues, bBlast, _ITUNES_META_INFO_TRACK_COUNT_KEY, UIntMetaItem_TrackCount);
CopyUINT32(pValues, bBlast, _ITUNES_META_INFO_DISC_NUMBER_KEY, UIntMetaItem_DiscNumber);
CopyUINT32(pValues, bBlast, _ITUNES_META_INFO_DISC_COUNT_KEY, UIntMetaItem_DiscCount);
}
// 3GPP
if(metaInfoSetFlags & METAINFO_SET_3GPP_SPECIFIC)
{
CopyString(pValues, bBlast, _3GPP_META_INFO_GLOBAL_LANGUAGE_ENCODING_KEY, StringMetaItem_GlobalLanguageEncoding);
@@ -1054,61 +1054,61 @@
EncodedString sTmp;
UINT32 ulKeywordCount = GetKeywordCount();
if(ulKeywordCount)
{
PropTools::CopyPropertyULONG32(pValues, TRUE, ulKeywordCount,
_3GPP_META_INFO_KEYWORD_COUNT_KEY, TRUE);
for(UINT32 i = 0; i < ulKeywordCount; i++)
{
char key[128];
sprintf(key, _3GPP_META_INFO_KEYWORD_KEY, int(i));
GetKeyword(i, sTmp);
PropTools::CopyPropertyBuffer(pValues, sTmp, key, TRUE);
}
}
}
}
void MetaInfo::CopyFromValues(IHXValues* pValues, HXBOOL bBlast, UINT32 metaInfoSetFlags)
{
if(!pValues)
{
return;
}
// Generic
if(metaInfoSetFlags & METAINFO_SET_GENERIC)
{
CopyString(StringMetaItem_Title, bBlast, pValues, _GENERIC_META_INFO_TITLE_KEY);
CopyString(StringMetaItem_Composer, bBlast, pValues, _GENERIC_META_INFO_COMPOSER_KEY);
CopyString(StringMetaItem_Copyright, bBlast, pValues, _GENERIC_META_INFO_COPYRIGHT_KEY);
- CopyString(StringMetaItem_Comment, bBlast, pValues, _GENERIC_META_INFO_COMMENT_KEY);
+ CopyString(StringMetaItem_Description, bBlast, pValues, _GENERIC_META_INFO_DESCRIPTION_KEY);
CopyString(StringMetaItem_Artist, bBlast, pValues, _GENERIC_META_INFO_ARTIST_KEY);
CopyString(StringMetaItem_Genre, bBlast, pValues, _GENERIC_META_INFO_GENRE_KEY);
CopyString(StringMetaItem_Album, bBlast, pValues, _GENERIC_META_INFO_ALBUM_KEY);
CopyUINT32(UIntMetaItem_TrackNumber, bBlast, pValues, _GENERIC_META_INFO_TRACK_NUMBER_KEY);
CopyUINT32(UIntMetaItem_RecordingYear, bBlast, pValues, _GENERIC_META_INFO_RECORDING_YEAR_KEY);
}
// iTunes
if(metaInfoSetFlags & METAINFO_SET_ITUNES_SPECIFIC)
{
CopyString(StringMetaItem_TrackSubtitle, bBlast, pValues, _ITUNES_META_INFO_TRACK_SUBTITLE_KEY);
CopyString(StringMetaItem_GeneratorTool, bBlast, pValues, _ITUNES_META_INFO_GENERATOR_TOOL_KEY);
CopyString(StringMetaItem_GeneratorTool, bBlast, pValues, _ITUNES_META_INFO_ENCODED_BY_KEY);
CopyString(StringMetaItem_Grouping, bBlast, pValues, _ITUNES_META_INFO_GROUPING_KEY);
CopyString(StringMetaItem_AlbumArtist, bBlast, pValues, _ITUNES_META_INFO_ALBUM_ARTIST_KEY);
CopyString(StringMetaItem_Lyrics, bBlast, pValues, _ITUNES_META_INFO_LYRICS_KEY);
CopyUINT32(UIntMetaItem_BeatsPerMinute, bBlast, pValues, _ITUNES_META_INFO_BEATS_PER_MINUTE_KEY);
CopyUINT32(UIntMetaItem_PartOfCompilation, bBlast, pValues, _ITUNES_META_INFO_PART_OF_COMPILATION_KEY);
CopyUINT32(UIntMetaItem_ExplicitContent, bBlast, pValues, _ITUNES_META_INFO_EXPLICIT_CONTENT_KEY);
CopyUINT32(UIntMetaItem_TrackCount, bBlast, pValues, _ITUNES_META_INFO_TRACK_COUNT_KEY);
CopyUINT32(UIntMetaItem_DiscNumber, bBlast, pValues, _ITUNES_META_INFO_DISC_NUMBER_KEY);
CopyUINT32(UIntMetaItem_DiscCount, bBlast, pValues, _ITUNES_META_INFO_DISC_COUNT_KEY);
}
// 3GPP
if(metaInfoSetFlags & METAINFO_SET_3GPP_SPECIFIC)
{
CopyString(StringMetaItem_GlobalLanguageEncoding, bBlast, pValues, _3GPP_META_INFO_GLOBAL_LANGUAGE_ENCODING_KEY);
@@ -1140,61 +1140,61 @@
for(UINT32 i = 0; i < ulKeywordCount; i++)
{
char key[128];
sprintf(key, _3GPP_META_INFO_KEYWORD_KEY, int(i));
if(PropTools::CopyPropertyBuffer(sTmp, pValues, key))
{
AddKeyword(sTmp);
}
}
}
RemoveKeywordDuplicates();
}
}
HX_RESULT MetaInfo::GetStringItem(eStringMetaItem itemName, EncodedString& out) const
{
out = m_stringItems[itemName];
return out.IsEmpty() ? HXR_FAILED : HXR_OK;
}
HX_RESULT MetaInfo::SetStringItem(eStringMetaItem itemName, const EncodedString& val, UINT32 metaFlavorFlags)
{
switch(itemName)
{
case StringMetaItem_Title:
case StringMetaItem_Artist:
case StringMetaItem_Album:
case StringMetaItem_Genre:
case StringMetaItem_Composer:
- case StringMetaItem_Comment:
+ case StringMetaItem_Description:
case StringMetaItem_Copyright:
case StringMetaItem_TrackSubtitle:
case StringMetaItem_GeneratorTool:
case StringMetaItem_EncodedBy:
case StringMetaItem_Grouping:
case StringMetaItem_AlbumArtist:
// iTunes have 255 character limit for all string properties except Lyrics
if((metaFlavorFlags & METADATA_FLAVOR_ITUNES) && (val.GetCodeUnitLength(FALSE, FALSE) > 255))
{
return HXR_INVALID_PARAMETER;
}
break;
case StringMetaItem_GlobalLanguageEncoding:
return SetGlobalLanguageEncoding(val);
case StringMetaItem_RatingEntity:
case StringMetaItem_RatingCriteria:
case StringMetaItem_ClassificationEntity:
return SetStringAsciiMaxLen(m_stringItems[itemName], val, 4);
case StringMetaItem_LocationLongitude:
case StringMetaItem_LocationLatitude:
case StringMetaItem_LocationAltitude:
return SetStringFixedPointNum(m_stringItems[itemName], val);
}
// default assignment
m_stringItems[itemName] = val;
return HXR_OK;
Index: pub/metautil.h
===================================================================
RCS file: /cvsroot/datatype/common/util/pub/metautil.h,v
retrieving revision 1.5
diff -U30 -r1.5 metautil.h
--- pub/metautil.h 23 Oct 2009 09:40:00 -0000 1.5
+++ pub/metautil.h 23 Oct 2009 11:40:05 -0000
@@ -122,61 +122,61 @@
static void MakeGenreNameList(CHXString& outGenreNames, const CHXPtrArray& genreOrdinals,
const char* szSeparator = ",");
};
//
// Known metadata tools
//
class MetaInfo
{
public:
static HX_RESULT RemoveKeywordProperties(IHXValues* pValues);
static HX_RESULT CopyKeywordProperties(IHXValues* dst, IHXValues* src, HXBOOL bBlast);
static HX_RESULT RemoveAllProperties(IHXValues* pValues, UINT32 metaInfoSetFlags);
static HX_RESULT CopyAllProperties(IHXValues* dst, IHXValues* src, UINT32 metaInfoSetFlags, HXBOOL bBlast);
static UINT32 GetSetsFromFlavors(UINT32 metaFlavorFlags);
static CHXString GetFlavorName(METADATA_FLAVOR flavor);
static CHXString GetFlavorNames(UINT32 metaFlavorFlags);
enum eStringMetaItem
{
StringMetaItem_StringItemBegin = 0,
StringMetaItem_Title = StringMetaItem_StringItemBegin,
StringMetaItem_Artist,
StringMetaItem_Album,
StringMetaItem_Genre,
StringMetaItem_Composer,
- StringMetaItem_Comment,
+ StringMetaItem_Description,
StringMetaItem_Copyright,
StringMetaItem_TrackSubtitle, //iTunes
StringMetaItem_GeneratorTool, //iTunes
StringMetaItem_EncodedBy, //iTunes
StringMetaItem_Grouping, //iTunes
StringMetaItem_AlbumArtist, //iTunes
StringMetaItem_Lyrics, //iTunes
StringMetaItem_GlobalLanguageEncoding, //3GPP, exactly 3 ASCII characters, must be valid ISO639.2/T language code
StringMetaItem_RatingEntity, //3GPP, max 4 ASCII characters
StringMetaItem_RatingCriteria, //3GPP, max 4 ASCII characters
StringMetaItem_RatingInfo, //3GPP
StringMetaItem_ClassificationEntity, //3GPP, max 4 ASCII characters
StringMetaItem_ClassificationInfo, //3GPP
StringMetaItem_LocationName, //3GPP
StringMetaItem_LocationAstronomicalBody, //3GPP
StringMetaItem_LocationAdditionalNotes, //3GPP
StringMetaItem_LocationLongitude, //3GPP, fixed point number format
StringMetaItem_LocationLatitude, //3GPP, fixed point number format
StringMetaItem_LocationAltitude, //3GPP, fixed point number format
StringMetaItem_StringItemEnd, //special
StringMetaItem_StringItemCount = StringMetaItem_StringItemEnd - StringMetaItem_StringItemBegin, //special
StringMetaItem_Keywords //special, uncounted
};
static UINT32 GetSetsWhichSupportItem(eStringMetaItem itemName);
static HXBOOL IsItemSupportedByAnySet(eStringMetaItem itemName, UINT32 metaInfoSetFlags)
datatype_include2.diff
(text/x-patch, 6.1 KB)
Index: metainfokeys.h
===================================================================
RCS file: /cvsroot/datatype/include/metainfokeys.h,v
retrieving revision 1.4
diff -U30 -r1.4 metainfokeys.h
--- metainfokeys.h 23 Oct 2009 09:38:52 -0000 1.4
+++ metainfokeys.h 23 Oct 2009 11:37:12 -0000
@@ -24,95 +24,95 @@
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
*
* Technology Compatibility Kit Test Suite(s) Location:
* http://www.helixcommunity.org/content/tck
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** */
#ifndef _METAINFOKEYS_H_
#define _METAINFOKEYS_H_
typedef enum
{
METAINFO_SET_GENERIC = 0x00000001,
METAINFO_SET_3GPP_SPECIFIC = 0x00000010,
METAINFO_SET_3GPP_ALL = METAINFO_SET_GENERIC | METAINFO_SET_3GPP_SPECIFIC,
METAINFO_SET_ITUNES_SPECIFIC = 0x00000100,
METAINFO_SET_ITUNES_ALL = METAINFO_SET_GENERIC | METAINFO_SET_ITUNES_SPECIFIC,
METAINFO_SET_ALL = METAINFO_SET_GENERIC | METAINFO_SET_3GPP_SPECIFIC | METAINFO_SET_ITUNES_SPECIFIC
} METAINFO_SET;
// Generic set
#define _GENERIC_META_INFO_TITLE_KEY "Title"
#define _GENERIC_META_INFO_COMPOSER_KEY "Author"
#define _GENERIC_META_INFO_COPYRIGHT_KEY "Copyright"
-#define _GENERIC_META_INFO_COMMENT_KEY "Abstract"
+#define _GENERIC_META_INFO_DESCRIPTION_KEY "Description"
#define _GENERIC_META_INFO_ARTIST_KEY "Performer"
#define _GENERIC_META_INFO_GENRE_KEY "Genre"
#define _GENERIC_META_INFO_ALBUM_KEY "AlbumTitle"
#define _GENERIC_META_INFO_TRACK_NUMBER_KEY "TrackNumber"
#define _GENERIC_META_INFO_RECORDING_YEAR_KEY "RecordingYear"
// iTunes aliases for Generic set, for use in file-format/file-writer
#define _ITUNES_META_INFO_TITLE_KEY _GENERIC_META_INFO_TITLE_KEY
#define _ITUNES_META_INFO_COMPOSER_KEY _GENERIC_META_INFO_COMPOSER_KEY
#define _ITUNES_META_INFO_COPYRIGHT_KEY _GENERIC_META_INFO_COPYRIGHT_KEY
-#define _ITUNES_META_INFO_COMMENT_KEY _GENERIC_META_INFO_COMMENT_KEY
+#define _ITUNES_META_INFO_COMMENT_KEY _GENERIC_META_INFO_DESCRIPTION_KEY
#define _ITUNES_META_INFO_ARTIST_KEY _GENERIC_META_INFO_ARTIST_KEY
#define _ITUNES_META_INFO_GENRE_KEY _GENERIC_META_INFO_GENRE_KEY
#define _ITUNES_META_INFO_ALBUM_KEY _GENERIC_META_INFO_ALBUM_KEY
#define _ITUNES_META_INFO_TRACK_NUMBER_KEY _GENERIC_META_INFO_TRACK_NUMBER_KEY
#define _ITUNES_META_INFO_RELEASE_DATE_KEY _GENERIC_META_INFO_RECORDING_YEAR_KEY
// iTunes specific set
#define _ITUNES_META_INFO_TRACK_SUBTITLE_KEY "TrackSubtitle"
#define _ITUNES_META_INFO_GENERATOR_TOOL_KEY "GeneratorTool"
#define _ITUNES_META_INFO_ENCODED_BY_KEY "EncodedBy"
#define _ITUNES_META_INFO_GROUPING_KEY "Grouping"
#define _ITUNES_META_INFO_ALBUM_ARTIST_KEY "AlbumArtist"
#define _ITUNES_META_INFO_LYRICS_KEY "Lyrics"
#define _ITUNES_META_INFO_BEATS_PER_MINUTE_KEY "BeatsPerMinute"
#define _ITUNES_META_INFO_PART_OF_COMPILATION_KEY "PartOfCompilation"
#define _ITUNES_META_INFO_EXPLICIT_CONTENT_KEY "ExplicitContent"
#define _ITUNES_META_INFO_TRACK_COUNT_KEY "TrackCount"
#define _ITUNES_META_INFO_DISC_NUMBER_KEY "DiscNumber"
#define _ITUNES_META_INFO_DISC_COUNT_KEY "DiscCount"
// 3GPP aliases for Generic set, for use in file-format/file-writer
#define _3GPP_META_INFO_TITLE_KEY _GENERIC_META_INFO_TITLE_KEY
#define _3GPP_META_INFO_AUTHOR_KEY _GENERIC_META_INFO_COMPOSER_KEY
#define _3GPP_META_INFO_COPYRIGHT_KEY _GENERIC_META_INFO_COPYRIGHT_KEY
-#define _3GPP_META_INFO_DESCRIPTION_KEY _GENERIC_META_INFO_COMMENT_KEY
+#define _3GPP_META_INFO_DESCRIPTION_KEY _GENERIC_META_INFO_DESCRIPTION_KEY
#define _3GPP_META_INFO_PERFORMER_KEY _GENERIC_META_INFO_ARTIST_KEY
#define _3GPP_META_INFO_GENRE_KEY _GENERIC_META_INFO_GENRE_KEY
#define _3GPP_META_INFO_ALBUM_TITLE_KEY _GENERIC_META_INFO_ALBUM_KEY
#define _3GPP_META_INFO_TRACK_NUMBER_KEY _GENERIC_META_INFO_TRACK_NUMBER_KEY
#define _3GPP_META_INFO_RECORDING_YEAR_KEY _GENERIC_META_INFO_RECORDING_YEAR_KEY
// 3GPP specific set
#define _3GPP_META_INFO_GLOBAL_LANGUAGE_ENCODING_KEY "GlobalLanguageEncoding"
#define _3GPP_META_INFO_RATING_ENTITY_KEY "RatingEntity"
#define _3GPP_META_INFO_RATING_CRITERIA_KEY "RatingCriteria"
#define _3GPP_META_INFO_RATING_INFO_KEY "RatingInfo"
#define _3GPP_META_INFO_CLASSIFICATION_ENTITY_KEY "ClassificationEntity"
#define _3GPP_META_INFO_CLASSIFICATION_TABLE_KEY "ClassificationTable"
#define _3GPP_META_INFO_CLASSIFICATION_INFO_KEY "ClassificationInfo"
#define _3GPP_META_INFO_LOCATION_NAME_KEY "LocationName"
#define _3GPP_META_INFO_LOCATION_ASTRONOMICAL_BODY_KEY "LocationAstronomicalBody"
#define _3GPP_META_INFO_LOCATION_ADDITIONAL_NOTES_KEY "LocationAdditionalNotes"
#define _3GPP_META_INFO_LOCATION_ROLE_KEY "LocationRole"
#define _3GPP_META_INFO_LOCATION_LONGITUDE_KEY "LocationLongitude"
#define _3GPP_META_INFO_LOCATION_LATITUDE_KEY "LocationLatitude"
#define _3GPP_META_INFO_LOCATION_ALTITUDE_KEY "LocationAltitude"
#define _3GPP_META_INFO_KEYWORD_COUNT_KEY "KeywordCount"
#define _3GPP_META_INFO_KEYWORD_KEY "Keyword%d"
#define _3GPP_META_INFO_ID32_BLOB_KEY "ID32BLOB"
#endif // _METAINFOKEYS_H_
datatype_tools_dtdriver_apps_meta3gp2.diff
(text/x-patch, 4.5 KB)
Index: main.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/dtdriver/apps/meta3gp/main.cpp,v
retrieving revision 1.2
diff -U30 -r1.2 main.cpp
--- main.cpp 23 Oct 2009 09:46:24 -0000 1.2
+++ main.cpp 23 Oct 2009 11:42:05 -0000
@@ -1107,61 +1107,61 @@
argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::StringMetaItem_Title,
metaProcessorVars.InjectedMetaFlavors, PARAM_STRING_TITLE);
}
else if(TStringEqual(pParam, PARAM_STRING_ARTIST))
{
ExtractStringParam(retVal, (clProcessorPhase != CommandLineProcessorPhase_DependentArgs),
argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::StringMetaItem_Artist,
metaProcessorVars.InjectedMetaFlavors, PARAM_STRING_ARTIST);
}
else if(TStringEqual(pParam, PARAM_STRING_ALBUM))
{
ExtractStringParam(retVal, (clProcessorPhase != CommandLineProcessorPhase_DependentArgs),
argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::StringMetaItem_Album,
metaProcessorVars.InjectedMetaFlavors, PARAM_STRING_ALBUM);
}
else if(TStringEqual(pParam, PARAM_STRING_GENRE))
{
ExtractStringParam(retVal, (clProcessorPhase != CommandLineProcessorPhase_DependentArgs),
argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::StringMetaItem_Genre,
metaProcessorVars.InjectedMetaFlavors, PARAM_STRING_GENRE);
}
else if(TStringEqual(pParam, PARAM_STRING_COMPOSER))
{
ExtractStringParam(retVal, (clProcessorPhase != CommandLineProcessorPhase_DependentArgs),
argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::StringMetaItem_Composer,
metaProcessorVars.InjectedMetaFlavors, PARAM_STRING_COMPOSER);
}
else if(TStringEqual(pParam, PARAM_STRING_COMMENT))
{
ExtractStringParam(retVal, (clProcessorPhase != CommandLineProcessorPhase_DependentArgs),
- argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::StringMetaItem_Comment,
+ argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::StringMetaItem_Description,
metaProcessorVars.InjectedMetaFlavors, PARAM_STRING_COMMENT);
}
else if(TStringEqual(pParam, PARAM_STRING_COPYRIGHT))
{
ExtractStringParam(retVal, (clProcessorPhase != CommandLineProcessorPhase_DependentArgs),
argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::StringMetaItem_Copyright,
metaProcessorVars.InjectedMetaFlavors, PARAM_STRING_COPYRIGHT);
}
else if(TStringEqual(pParam, PARAM_STRING_TRACKNUMBER))
{
ExtractUINT32Param(retVal, (clProcessorPhase != CommandLineProcessorPhase_DependentArgs),
argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::UIntMetaItem_TrackNumber,
metaProcessorVars.InjectedMetaFlavors, PARAM_STRING_TRACKNUMBER);
}
else if(TStringEqual(pParam, PARAM_STRING_YEAR))
{
ExtractUINT32Param(retVal, (clProcessorPhase != CommandLineProcessorPhase_DependentArgs),
argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::UIntMetaItem_RecordingYear,
metaProcessorVars.InjectedMetaFlavors, PARAM_STRING_YEAR);
}
else if(TStringEqual(pParam, PARAM_STRING_SOFTWARE))
{
ExtractStringParam(retVal, (clProcessorPhase != CommandLineProcessorPhase_DependentArgs),
argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::StringMetaItem_GeneratorTool,
metaProcessorVars.InjectedMetaFlavors, PARAM_STRING_SOFTWARE);
}
else if(TStringEqual(pParam, PARAM_STRING_ENCODEDBY))
{
ExtractStringParam(retVal, (clProcessorPhase != CommandLineProcessorPhase_DependentArgs),
argIndex, argc, argv, metaProcessorVars.InjectedMetaInfo, MetaInfo::StringMetaItem_EncodedBy,