diff options
Diffstat (limited to 'debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf')
-rw-r--r-- | debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/CoverArtBox.cpp | 261 | ||||
-rw-r--r-- | debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/CoverArtBox.h | 121 | ||||
-rw-r--r-- | debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/Tags.cpp | 897 | ||||
-rw-r--r-- | debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/Tags.h | 210 | ||||
-rw-r--r-- | debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/generic.cpp | 476 | ||||
-rw-r--r-- | debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/generic.h | 66 | ||||
-rw-r--r-- | debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/impl.h | 34 | ||||
-rw-r--r-- | debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/itmf.h | 45 | ||||
-rw-r--r-- | debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/type.cpp | 314 | ||||
-rw-r--r-- | debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/type.h | 296 |
10 files changed, 0 insertions, 2720 deletions
diff --git a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/CoverArtBox.cpp b/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/CoverArtBox.cpp deleted file mode 100644 index 01253624..00000000 --- a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/CoverArtBox.cpp +++ /dev/null @@ -1,261 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// 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 -// -/////////////////////////////////////////////////////////////////////////////// - -#include "impl.h" - -namespace mp4v2 { namespace impl { namespace itmf { - -/////////////////////////////////////////////////////////////////////////////// - -CoverArtBox::Item::Item() - : type ( BT_UNDEFINED ) - , buffer ( NULL ) - , size ( 0 ) - , autofree ( false ) -{ -} - -/////////////////////////////////////////////////////////////////////////////// - -CoverArtBox::Item::Item( const Item& rhs ) - : type ( BT_UNDEFINED ) - , buffer ( NULL ) - , size ( 0 ) - , autofree ( false ) -{ - operator=( rhs ); -} - -/////////////////////////////////////////////////////////////////////////////// - -CoverArtBox::Item::~Item() -{ - reset(); -} - -/////////////////////////////////////////////////////////////////////////////// - -CoverArtBox::Item& -CoverArtBox::Item::operator=( const Item& rhs ) -{ - type = rhs.type; - size = rhs.size; - autofree = rhs.autofree; - - if( rhs.autofree ) { - buffer = (uint8_t*)MP4Malloc(rhs.size); - memcpy( buffer, rhs.buffer, rhs.size ); - } - else { - buffer = rhs.buffer; - } - - return *this; -} - -/////////////////////////////////////////////////////////////////////////////// - -void -CoverArtBox::Item::reset() -{ - if( autofree && buffer ) - MP4Free( buffer ); - - type = BT_UNDEFINED; - buffer = NULL; - size = 0; - autofree = false; -} - -/////////////////////////////////////////////////////////////////////////////// - -bool -CoverArtBox::add( MP4FileHandle hFile, const Item& item ) -{ - MP4File& file = *((MP4File*)hFile); - - const char* const covr_name = "moov.udta.meta.ilst.covr"; - MP4Atom* covr = file.FindAtom( covr_name ); - if( !covr ) { - file.AddDescendantAtoms( "moov", "udta.meta.ilst.covr" ); - - covr = file.FindAtom( covr_name ); - if( !covr ) - return true; - } - - // use empty data atom if one exists - MP4Atom* data = NULL; - uint32_t index = 0; - const uint32_t atomc = covr->GetNumberOfChildAtoms(); - for( uint32_t i = 0; i < atomc; i++ ) { - MP4Atom* atom = covr->GetChildAtom( i ); - - MP4BytesProperty* metadata = NULL; - if( !atom->FindProperty( "data.metadata", (MP4Property**)&metadata )) - continue; - - if( metadata->GetCount() ) - continue; - - data = atom; - index = i; - break; - } - - // no empty atom found, create one. - if( !data ) { - data = MP4Atom::CreateAtom( file, covr, "data" ); - covr->AddChildAtom( data ); - data->Generate(); - index = covr->GetNumberOfChildAtoms() - 1; - } - - return set( hFile, item, index ); -} - -/////////////////////////////////////////////////////////////////////////////// - -bool -CoverArtBox::get( MP4FileHandle hFile, Item& item, uint32_t index ) -{ - item.reset(); - MP4File& file = *((MP4File*)hFile); - - MP4Atom* covr = file.FindAtom( "moov.udta.meta.ilst.covr" ); - if( !covr ) - return true; - - if( !(index < covr->GetNumberOfChildAtoms()) ) - return true; - - MP4DataAtom* data = static_cast<MP4DataAtom*>( covr->GetChildAtom( index )); - if( !data ) - return true; - - MP4BytesProperty* metadata = NULL; - if ( !data->FindProperty( "data.metadata", (MP4Property**)&metadata )) - return true; - - metadata->GetValue( &item.buffer, &item.size ); - item.autofree = true; - item.type = data->typeCode.GetValue(); - - return false; -} - -/////////////////////////////////////////////////////////////////////////////// - -bool -CoverArtBox::list( MP4FileHandle hFile, ItemList& out ) -{ - out.clear(); - MP4File& file = *((MP4File*)hFile); - MP4ItmfItemList* itemList = genericGetItemsByCode( file, "covr" ); // alloc - - if( itemList->size ) { - MP4ItmfDataList& dataList = itemList->elements[0].dataList; - out.resize( dataList.size ); - for( uint32_t i = 0; i < dataList.size; i++ ) - get( hFile, out[i], i ); - } - - genericItemListFree( itemList ); // free - return false; -} - -/////////////////////////////////////////////////////////////////////////////// - -bool -CoverArtBox::remove( MP4FileHandle hFile, uint32_t index ) -{ - MP4File& file = *((MP4File*)hFile); - - MP4Atom* covr = file.FindAtom( "moov.udta.meta.ilst.covr" ); - if( !covr ) - return true; - - // wildcard mode: delete covr and all images - if( index == numeric_limits<uint32_t>::max() ) { - covr->GetParentAtom()->DeleteChildAtom( covr ); - delete covr; - return false; - } - - if( !(index < covr->GetNumberOfChildAtoms()) ) - return true; - - MP4Atom* data = covr->GetChildAtom( index ); - if( !data ) - return true; - - // delete single image - covr->DeleteChildAtom( data ); - delete data; - - // delete empty covr - if( covr->GetNumberOfChildAtoms() == 0 ) { - covr->GetParentAtom()->DeleteChildAtom( covr ); - delete covr; - } - - return false; -} - -/////////////////////////////////////////////////////////////////////////////// - -bool -CoverArtBox::set( MP4FileHandle hFile, const Item& item, uint32_t index ) -{ - MP4File& file = *((MP4File*)hFile); - - MP4Atom* covr = file.FindAtom( "moov.udta.meta.ilst.covr" ); - if( !covr ) - return true; - - if( !(index < covr->GetNumberOfChildAtoms()) ) - return true; - - MP4DataAtom* data = static_cast<MP4DataAtom*>( covr->GetChildAtom( index )); - if( !data ) - return true; - - MP4BytesProperty* metadata = NULL; - if ( !data->FindProperty( "data.metadata", (MP4Property**)&metadata )) - return true; - - // autodetect type if BT_UNDEFINED - const BasicType final_type = (item.type == BT_UNDEFINED) - ? computeBasicType( item.buffer, item.size ) - : item.type; - - // set type; note: not really flags due to b0rked atom structure - data->typeCode.SetValue( final_type ); - metadata->SetValue( item.buffer, item.size ); - - return false; -} - -/////////////////////////////////////////////////////////////////////////////// - -}}} // namespace mp4v2::impl::itmf diff --git a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/CoverArtBox.h b/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/CoverArtBox.h deleted file mode 100644 index 023e3c90..00000000 --- a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/CoverArtBox.h +++ /dev/null @@ -1,121 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// 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 -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef MP4V2_IMPL_ITMF_COVERARTBOX_H -#define MP4V2_IMPL_ITMF_COVERARTBOX_H - -namespace mp4v2 { namespace impl { namespace itmf { - -/////////////////////////////////////////////////////////////////////////////// - -/// Functional class for covr-box (Cover-art Box) support. -/// -class MP4V2_EXPORT CoverArtBox -{ -public: - /// Data object for covr-box item. - /// This object correlates to one covr->data atom and offers automatic - /// memory freeing when <b>autofree</b> is true. - /// - class MP4V2_EXPORT Item - { - public: - Item(); - Item( const Item& ); - ~Item(); - - Item& operator=( const Item& ); - - /// Reset to state of newly constructed object. - /// If <b>buffer</b> is not NULL and <b>autofree</b> is true the - /// buffer will be free'd. - void reset(); - - BasicType type; ///< covr-box type. - uint8_t* buffer; ///< buffer point to raw covr-box data. - uint32_t size; ///< size of covr-box buffer size in bytes. - bool autofree; ///< when true invoke free(buffer) upon destruction. - }; - - /// Object representing a list of covr-box items. - typedef vector<Item> ItemList; - - /// Fetch list of covr-box items from file. - /// - /// @param hFile on which to operate. - /// @param out vector of ArtItem objects. - /// - /// @return <b>true</b> on failure, <b>false</b> on success. - /// - static bool list( MP4FileHandle hFile, ItemList& out ); - - /// Add covr-box item to file. - /// Any necessary metadata atoms are first created. - /// Additionally, if an empty data-atom exists it will be used, - /// otherwise a new data-atom is added to <b>covr-atom</b>. - /// - /// @param hFile on which to operate. - /// @param item covr-box object to place in file. - /// - /// @return <b>true</b> on failure, <b>false</b> on success. - /// - static bool add( MP4FileHandle hFile, const Item& item ); - - /// Replace covr-box item in file. - /// - /// @param hFile on which to operate. - /// @param item covr-box object to place in file. - /// @param index 0-based index of image to replace. - /// - /// @return <b>true</b> on failure, <b>false</b> on success. - /// - static bool set( MP4FileHandle hFile, const Item& item, uint32_t index ); - - /// Fetch covr-box item from file. - /// - /// @param hFile on which to operate. - /// @param item covr-box object populated with data. - /// The resulting object owns the malloc'd buffer and <b>item.autofree</b> - /// is set to true for convenient memory management. - /// @param index 0-based index of image to fetch. - /// - /// @return <b>true</b> on failure, <b>false</b> on success. - /// - static bool get( MP4FileHandle hFile, Item& item, uint32_t index ); - - /// Remove covr-box item from file. - /// - /// @param hFile on which to operate. - /// @param index 0-based index of image to remove. - /// Default value indicates wildcard behavior to remove all items. - /// - /// @return <b>true</b> on failure, <b>false</b> on success. - /// - static bool remove( MP4FileHandle hFile, uint32_t index = numeric_limits<uint32_t>::max() ); -}; - -/////////////////////////////////////////////////////////////////////////////// - -}}} // namespace mp4v2::impl::itmf - -#endif // MP4V2_IMPL_ITMF_COVERARTBOX_H diff --git a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/Tags.cpp b/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/Tags.cpp deleted file mode 100644 index e8ca4816..00000000 --- a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/Tags.cpp +++ /dev/null @@ -1,897 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// 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. -// Portions created by David Byron are Copyright (C) 2011. -// All Rights Reserved. -// -// Contributors: -// Kona Blend, kona8lend@@gmail.com -// Rouven Wessling, [email protected] -// David Byron, [email protected] -// -/////////////////////////////////////////////////////////////////////////////// - -#include "impl.h" - -namespace mp4v2 { namespace impl { namespace itmf { - -/////////////////////////////////////////////////////////////////////////////// - -Tags::Tags() - : hasMetadata(false) -{ -} - -/////////////////////////////////////////////////////////////////////////////// - -Tags::~Tags() -{ -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_addArtwork( MP4Tags*& tags, MP4TagArtwork& c_artwork ) -{ - artwork.resize( artwork.size() + 1 ); - c_setArtwork( tags, (uint32_t)artwork.size() - 1, c_artwork ); - updateArtworkShadow( tags ); -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_alloc( MP4Tags*& tags ) -{ - tags = new MP4Tags(); - memset( tags, 0, sizeof(MP4Tags) ); // safe: pure C-struct - tags->__handle = this; -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_fetch( MP4Tags*& tags, MP4FileHandle hFile ) -{ - MP4Tags& c = *tags; - MP4File& file = *static_cast<MP4File*>(hFile); - - MP4ItmfItemList* itemList = genericGetItems( file ); // alloc - - hasMetadata = (itemList->size > 0); - - /* create code -> item map. - * map will only be used for items which do not repeat; we do not care if - * cover-art is inserted multiple times. - */ - CodeItemMap cim; - for( uint32_t i = 0; i < itemList->size; i++ ) { - MP4ItmfItem& item = itemList->elements[i]; - cim.insert( CodeItemMap::value_type( item.code, &item )); - } - - fetchString( cim, CODE_NAME, name, c.name ); - fetchString( cim, CODE_ARTIST, artist, c.artist ); - fetchString( cim, CODE_ALBUMARTIST, albumArtist, c.albumArtist ); - fetchString( cim, CODE_ALBUM, album, c.album ); - fetchString( cim, CODE_GROUPING, grouping, c.grouping ); - fetchString( cim, CODE_COMPOSER, composer, c.composer ); - fetchString( cim, CODE_COMMENTS, comments, c.comments ); - - fetchString( cim, CODE_GENRE, genre, c.genre ); - fetchGenre( cim, genreType, c.genreType ); - - fetchString( cim, CODE_RELEASEDATE, releaseDate, c.releaseDate ); - fetchTrack( cim, track, c.track ); - fetchDisk( cim, disk, c.disk ); - fetchInteger( cim, CODE_TEMPO, tempo, c.tempo ); - fetchInteger( cim, CODE_COMPILATION, compilation, c.compilation ); - - fetchString( cim, CODE_TVSHOW, tvShow, c.tvShow ); - fetchString( cim, CODE_TVNETWORK, tvNetwork, c.tvNetwork ); - fetchString( cim, CODE_TVEPISODEID, tvEpisodeID, c.tvEpisodeID ); - fetchInteger( cim, CODE_TVSEASON, tvSeason, c.tvSeason ); - fetchInteger( cim, CODE_TVEPISODE, tvEpisode, c.tvEpisode ); - - fetchString( cim, CODE_SORTNAME, sortName, c.sortName ); - fetchString( cim, CODE_SORTARTIST, sortArtist, c.sortArtist ); - fetchString( cim, CODE_SORTALBUMARTIST, sortAlbumArtist, c.sortAlbumArtist ); - fetchString( cim, CODE_SORTALBUM, sortAlbum, c.sortAlbum ); - fetchString( cim, CODE_SORTCOMPOSER, sortComposer, c.sortComposer ); - fetchString( cim, CODE_SORTTVSHOW, sortTVShow, c.sortTVShow ); - - fetchString( cim, CODE_DESCRIPTION, description, c.description ); - fetchString( cim, CODE_LONGDESCRIPTION, longDescription, c.longDescription ); - fetchString( cim, CODE_LYRICS, lyrics, c.lyrics ); - - fetchString( cim, CODE_COPYRIGHT, copyright, c.copyright ); - fetchString( cim, CODE_ENCODINGTOOL, encodingTool, c.encodingTool ); - fetchString( cim, CODE_ENCODEDBY, encodedBy, c.encodedBy ); - fetchString( cim, CODE_PURCHASEDATE, purchaseDate, c.purchaseDate ); - - fetchInteger( cim, CODE_PODCAST, podcast, c.podcast ); - fetchString( cim, CODE_KEYWORDS, keywords, c.keywords ); - fetchString( cim, CODE_CATEGORY, category, c.category ); - - fetchInteger( cim, CODE_HDVIDEO, hdVideo, c.hdVideo ); - fetchInteger( cim, CODE_MEDIATYPE, mediaType, c.mediaType ); - fetchInteger( cim, CODE_CONTENTRATING, contentRating, c.contentRating ); - fetchInteger( cim, CODE_GAPLESS, gapless, c.gapless ); - - fetchString( cim, CODE_ITUNESACCOUNT, iTunesAccount, c.iTunesAccount ); - fetchInteger( cim, CODE_ITUNESACCOUNTTYPE, iTunesAccountType, c.iTunesAccountType ); - fetchInteger( cim, CODE_ITUNESCOUNTRY, iTunesCountry, c.iTunesCountry ); - - fetchInteger( cim, CODE_CONTENTID, contentID, c.contentID ); - fetchInteger( cim, CODE_ARTISTID, artistID, c.artistID ); - fetchInteger( cim, CODE_PLAYLISTID, playlistID, c.playlistID ); - fetchInteger( cim, CODE_GENREID, genreID, c.genreID ); - fetchInteger( cim, CODE_COMPOSERID, composerID, c.composerID ); - fetchString( cim, CODE_XID, xid, c.xid ); - - genericItemListFree( itemList ); // free - - // fetch full list and overwrite our copy, otherwise clear - { - CoverArtBox::ItemList items; - if( CoverArtBox::list( hFile, items )) - artwork.clear(); - else - artwork = items; - - updateArtworkShadow( tags ); - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_free( MP4Tags*& tags ) -{ - MP4Tags* c = const_cast<MP4Tags*>(tags); - - delete[] c->artwork; - delete c; - - tags = NULL; -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_removeArtwork( MP4Tags*& tags, uint32_t index ) -{ - if( !(index < artwork.size()) ) - return; - - artwork.erase( artwork.begin() + index ); - updateArtworkShadow( tags ); -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_setArtwork( MP4Tags*& tags, uint32_t index, MP4TagArtwork& c_artwork ) -{ - if( !(index < artwork.size()) ) - return; - - CoverArtBox::Item& item = artwork[index]; - - switch( c_artwork.type ) { - case MP4_ART_BMP: - item.type = BT_BMP; - break; - - case MP4_ART_GIF: - item.type = BT_GIF; - break; - - case MP4_ART_JPEG: - item.type = BT_JPEG; - break; - - case MP4_ART_PNG: - item.type = BT_PNG; - break; - - case MP4_ART_UNDEFINED: - default: - item.type = computeBasicType( c_artwork.data, c_artwork.size ); - break; - } - - item.buffer = (uint8_t*)malloc( c_artwork.size ); - item.size = c_artwork.size; - item.autofree = true; - - memcpy( item.buffer, c_artwork.data, c_artwork.size ); - updateArtworkShadow( tags ); -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_setInteger( const uint8_t* value, uint8_t& cpp, const uint8_t*& c ) -{ - if( !value ) { - cpp = 0; - c = NULL; - } - else { - cpp = *value; - c = &cpp; - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_setInteger( const uint16_t* value, uint16_t& cpp, const uint16_t*& c ) -{ - if( !value ) { - cpp = 0; - c = NULL; - } - else { - cpp = *value; - c = &cpp; - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_setInteger( const uint32_t* value, uint32_t& cpp, const uint32_t*& c ) -{ - if( !value ) { - cpp = 0; - c = NULL; - } - else { - cpp = *value; - c = &cpp; - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_setInteger( const uint64_t* value, uint64_t& cpp, const uint64_t*& c ) -{ - if( !value ) { - cpp = 0; - c = NULL; - } - else { - cpp = *value; - c = &cpp; - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_setString( const char* value, string& cpp, const char*& c ) -{ - if( !value ) { - cpp.clear(); - c = NULL; - } - else { - cpp = value; - c = cpp.c_str(); - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_setTrack( const MP4TagTrack* value, MP4TagTrack& cpp, const MP4TagTrack*& c ) -{ - if( !value ) { - cpp.index = 0; - cpp.total = 0; - c = NULL; - } - else { - cpp.index = value->index; - cpp.total = value->total; - c = &cpp; - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_setDisk( const MP4TagDisk* value, MP4TagDisk& cpp, const MP4TagDisk*& c ) -{ - if( !value ) { - cpp.index = 0; - cpp.total = 0; - c = NULL; - } - else { - cpp.index = value->index; - cpp.total = value->total; - c = &cpp; - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::c_store( MP4Tags*& tags, MP4FileHandle hFile ) -{ - MP4Tags& c = *tags; - MP4File& file = *static_cast<MP4File*>(hFile); - - storeString( file, CODE_NAME, name, c.name ); - storeString( file, CODE_ARTIST, artist, c.artist ); - storeString( file, CODE_ALBUMARTIST, albumArtist, c.albumArtist ); - storeString( file, CODE_ALBUM, album, c.album ); - storeString( file, CODE_GROUPING, grouping, c.grouping ); - storeString( file, CODE_COMPOSER, composer, c.composer ); - storeString( file, CODE_COMMENTS, comments, c.comments ); - - storeString( file, CODE_GENRE, genre, c.genre ); - storeGenre( file, genreType, c.genreType ); - - storeString( file, CODE_RELEASEDATE, releaseDate, c.releaseDate ); - storeTrack( file, track, c.track ); - storeDisk( file, disk, c.disk ); - storeInteger( file, CODE_TEMPO, tempo, c.tempo ); - storeInteger( file, CODE_COMPILATION, compilation, c.compilation ); - - storeString( file, CODE_TVSHOW, tvShow, c.tvShow ); - storeString( file, CODE_TVNETWORK, tvNetwork, c.tvNetwork ); - storeString( file, CODE_TVEPISODEID, tvEpisodeID, c.tvEpisodeID ); - storeInteger( file, CODE_TVSEASON, tvSeason, c.tvSeason ); - storeInteger( file, CODE_TVEPISODE, tvEpisode, c.tvEpisode ); - - storeString( file, CODE_SORTNAME, sortName, c.sortName ); - storeString( file, CODE_SORTARTIST, sortArtist, c.sortArtist ); - storeString( file, CODE_SORTALBUMARTIST, sortAlbumArtist, c.sortAlbumArtist ); - storeString( file, CODE_SORTALBUM, sortAlbum, c.sortAlbum ); - storeString( file, CODE_SORTCOMPOSER, sortComposer, c.sortComposer ); - storeString( file, CODE_SORTTVSHOW, sortTVShow, c.sortTVShow ); - - storeString( file, CODE_DESCRIPTION, description, c.description ); - storeString( file, CODE_LONGDESCRIPTION, longDescription, c.longDescription ); - storeString( file, CODE_LYRICS, lyrics, c.lyrics ); - - storeString( file, CODE_COPYRIGHT, copyright, c.copyright ); - storeString( file, CODE_ENCODINGTOOL, encodingTool, c.encodingTool ); - storeString( file, CODE_ENCODEDBY, encodedBy, c.encodedBy ); - storeString( file, CODE_PURCHASEDATE, purchaseDate, c.purchaseDate ); - - storeInteger( file, CODE_PODCAST, podcast, c.podcast ); - storeString( file, CODE_KEYWORDS, keywords, c.keywords ); - storeString( file, CODE_CATEGORY, category, c.category ); - - storeInteger( file, CODE_HDVIDEO, hdVideo, c.hdVideo ); - storeInteger( file, CODE_MEDIATYPE, mediaType, c.mediaType ); - storeInteger( file, CODE_CONTENTRATING, contentRating, c.contentRating ); - storeInteger( file, CODE_GAPLESS, gapless, c.gapless ); - - storeString( file, CODE_ITUNESACCOUNT, iTunesAccount, c.iTunesAccount ); - storeInteger( file, CODE_ITUNESACCOUNTTYPE, iTunesAccountType, c.iTunesAccountType ); - storeInteger( file, CODE_ITUNESCOUNTRY, iTunesCountry, c.iTunesCountry ); - - storeInteger( file, CODE_CONTENTID, contentID, c.contentID ); - storeInteger( file, CODE_ARTISTID, artistID, c.artistID ); - storeInteger( file, CODE_PLAYLISTID, playlistID, c.playlistID ); - storeInteger( file, CODE_GENREID, genreID, c.genreID ); - storeInteger( file, CODE_COMPOSERID, composerID, c.composerID ); - storeString( file, CODE_XID, xid, c.xid ); - - // destroy all cover-art then add each - { - CoverArtBox::remove( hFile ); - const CoverArtBox::ItemList::size_type max = artwork.size(); - for( CoverArtBox::ItemList::size_type i = 0; i < max; i++ ) - CoverArtBox::add( hFile, artwork[i] ); - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::fetchGenre( const CodeItemMap& cim, uint16_t& cpp, const uint16_t*& c ) -{ - cpp = 0; - c = NULL; - - CodeItemMap::const_iterator f = cim.find( CODE_GENRETYPE ); - if( f == cim.end() || 0 == f->second->dataList.size ) - return; - - MP4ItmfData& data = f->second->dataList.elements[0]; - if( NULL == data.value ) - return; - - cpp = (uint16_t(data.value[0]) << 8) - | (uint16_t(data.value[1]) ); - - c = &cpp; -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::fetchDisk( const CodeItemMap& cim, MP4TagDisk& cpp, const MP4TagDisk*& c ) -{ - cpp.index = 0; - cpp.total = 0; - c = NULL; - - CodeItemMap::const_iterator f = cim.find( CODE_DISK ); - if( f == cim.end() || 0 == f->second->dataList.size ) - return; - - MP4ItmfData& data = f->second->dataList.elements[0]; - - if( NULL == data.value ) - return; - - cpp.index = (uint16_t(data.value[2]) << 8) - | (uint16_t(data.value[3]) ); - - cpp.total = (uint16_t(data.value[4]) << 8) - | (uint16_t(data.value[5]) ); - - c = &cpp; -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::fetchTrack( const CodeItemMap& cim, MP4TagTrack& cpp, const MP4TagTrack*& c ) -{ - cpp.index = 0; - cpp.total = 0; - c = NULL; - - CodeItemMap::const_iterator f = cim.find( CODE_TRACK ); - if( f == cim.end() || 0 == f->second->dataList.size ) - return; - - MP4ItmfData& data = f->second->dataList.elements[0]; - - if( NULL == data.value ) - return; - - cpp.index = (uint16_t(data.value[2]) << 8) - | (uint16_t(data.value[3]) ); - - cpp.total = (uint16_t(data.value[4]) << 8) - | (uint16_t(data.value[5]) ); - - c = &cpp; -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::fetchInteger( const CodeItemMap& cim, const string& code, uint8_t& cpp, const uint8_t*& c ) -{ - cpp = 0; - c = NULL; - - CodeItemMap::const_iterator f = cim.find( code ); - if( f == cim.end() || 0 == f->second->dataList.size ) - return; - - MP4ItmfData& data = f->second->dataList.elements[0]; - if( NULL == data.value ) - return; - - cpp = data.value[0]; - c = &cpp; -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::fetchInteger( const CodeItemMap& cim, const string& code, uint16_t& cpp, const uint16_t*& c ) -{ - cpp = 0; - c = NULL; - - CodeItemMap::const_iterator f = cim.find( code ); - if( f == cim.end() || 0 == f->second->dataList.size ) - return; - - MP4ItmfData& data = f->second->dataList.elements[0]; - - if( NULL == data.value ) - return; - - cpp = (uint16_t(data.value[0]) << 8) - | (uint16_t(data.value[1]) ); - - c = &cpp; -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::fetchInteger( const CodeItemMap& cim, const string& code, uint32_t& cpp, const uint32_t*& c ) -{ - cpp = 0; - c = NULL; - - CodeItemMap::const_iterator f = cim.find( code ); - if( f == cim.end() || 0 == f->second->dataList.size ) - return; - - MP4ItmfData& data = f->second->dataList.elements[0]; - - if( NULL == data.value ) - return; - - cpp = (uint32_t(data.value[0]) << 24) - | (uint32_t(data.value[1]) << 16) - | (uint32_t(data.value[2]) << 8) - | (uint32_t(data.value[3]) ); - - c = &cpp; -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::fetchInteger( const CodeItemMap& cim, const string& code, uint64_t& cpp, const uint64_t*& c ) -{ - cpp = 0; - c = NULL; - - CodeItemMap::const_iterator f = cim.find( code ); - if( f == cim.end() || 0 == f->second->dataList.size ) - return; - - MP4ItmfData& data = f->second->dataList.elements[0]; - - if( NULL == data.value ) - return; - - cpp = (uint64_t(data.value[0]) << 56) - | (uint64_t(data.value[1]) << 48) - | (uint64_t(data.value[2]) << 40) - | (uint64_t(data.value[3]) << 32) - | (uint64_t(data.value[4]) << 24) - | (uint64_t(data.value[5]) << 16) - | (uint64_t(data.value[6]) << 8) - | (uint64_t(data.value[7]) ); - - c = &cpp; -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::fetchString( const CodeItemMap& cim, const string& code, string& cpp, const char*& c ) -{ - cpp.clear(); - c = NULL; - - CodeItemMap::const_iterator f = cim.find( code ); - if( f == cim.end() || 0 == f->second->dataList.size ) - return; - - MP4ItmfData& data = f->second->dataList.elements[0]; - - if( NULL == data.value ) - return; - - cpp.append( reinterpret_cast<char*>( data.value ), data.valueSize ); - c = cpp.c_str(); -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::remove( MP4File& file, const string& code ) -{ - MP4ItmfItemList* itemList = genericGetItemsByCode( file, code ); // alloc - - if( itemList->size ) - genericRemoveItem( file, &itemList->elements[0] ); - - genericItemListFree( itemList ); // free -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::store( MP4File& file, const string& code, MP4ItmfBasicType basicType, const void* buffer, uint32_t size ) -{ - // remove existing item - remove( file, code ); - - // add item - MP4ItmfItem& item = *genericItemAlloc( code, 1 ); // alloc - MP4ItmfData& data = item.dataList.elements[0]; - - data.typeCode = basicType; - data.valueSize = size; - data.value = (uint8_t*)malloc( data.valueSize ); - memcpy( data.value, buffer, data.valueSize ); - - genericAddItem( file, &item ); - genericItemFree( &item ); // free -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::storeGenre( MP4File& file, uint16_t cpp, const uint16_t* c ) -{ - if( c ) { - uint8_t buf[2]; - - buf[0] = uint8_t((cpp & 0xff00) >> 8); - buf[1] = uint8_t((cpp & 0x00ff) ); - - // it's not clear if you must use implicit in these situations and iirc iTunes and other software are not consistent in this regard. - // many other tags must be integer type yet no issues there. Silly that iTunes insists it must be implict, which is then hardcoded - // to interpret as genres anyways. - store( file, CODE_GENRETYPE, MP4_ITMF_BT_IMPLICIT, buf, sizeof(buf) ); - } - else { - remove( file, CODE_GENRETYPE ); - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::storeDisk( MP4File& file, const MP4TagDisk& cpp, const MP4TagDisk* c ) -{ - if( c ) { - uint8_t buf[6]; - memset( buf, 0, sizeof(buf) ); - - buf[2] = uint8_t((cpp.index & 0xff00) >> 8); - buf[3] = uint8_t((cpp.index & 0x00ff) ); - buf[4] = uint8_t((cpp.total & 0xff00) >> 8); - buf[5] = uint8_t((cpp.total & 0x00ff) ); - - store( file, CODE_DISK, MP4_ITMF_BT_IMPLICIT, buf, sizeof(buf) ); - } - else { - remove( file, CODE_DISK ); - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::storeTrack( MP4File& file, const MP4TagTrack& cpp, const MP4TagTrack* c ) -{ - if( c ) { - uint8_t buf[8]; // iTMF spec says 7 but iTunes media is 8 - memset( buf, 0, sizeof(buf) ); - - buf[2] = uint8_t((cpp.index & 0xff00) >> 8); - buf[3] = uint8_t((cpp.index & 0x00ff) ); - buf[4] = uint8_t((cpp.total & 0xff00) >> 8); - buf[5] = uint8_t((cpp.total & 0x00ff) ); - - store( file, CODE_TRACK, MP4_ITMF_BT_IMPLICIT, buf, sizeof(buf) ); - } - else { - remove( file, CODE_TRACK ); - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::storeInteger( MP4File& file, const string& code, uint8_t cpp, const uint8_t* c ) -{ - if( c ) - store( file, code, MP4_ITMF_BT_INTEGER, &cpp, sizeof(cpp) ); - else - remove( file, code ); -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::storeInteger( MP4File& file, const string& code, uint16_t cpp, const uint16_t* c ) -{ - if( c ) { - uint8_t buf[2]; - - buf[0] = uint8_t((cpp & 0xff00) >> 8); - buf[1] = uint8_t((cpp & 0x00ff) ); - - store( file, code, MP4_ITMF_BT_INTEGER, buf, sizeof(buf) ); - } - else { - remove( file, code ); - } -} - - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::storeInteger( MP4File& file, const string& code, uint32_t cpp, const uint32_t* c ) -{ - if( c ) { - uint8_t buf[4]; - - buf[0] = uint8_t((cpp & 0xff000000) >> 24 ); - buf[1] = uint8_t((cpp & 0x00ff0000) >> 16 ); - buf[2] = uint8_t((cpp & 0x0000ff00) >> 8 ); - buf[3] = uint8_t((cpp & 0x000000ff) ); - - store( file, code, MP4_ITMF_BT_INTEGER, buf, sizeof(buf) ); - } - else { - remove( file, code ); - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::storeInteger( MP4File& file, const string& code, uint64_t cpp, const uint64_t* c ) -{ - if( c ) { - uint8_t buf[8]; - - buf[0] = uint8_t((cpp & 0xff00000000000000LL) >> 56 ); - buf[1] = uint8_t((cpp & 0x00ff000000000000LL) >> 48 ); - buf[2] = uint8_t((cpp & 0x0000ff0000000000LL) >> 40 ); - buf[3] = uint8_t((cpp & 0x000000ff00000000LL) >> 32 ); - buf[4] = uint8_t((cpp & 0x00000000ff000000LL) >> 24 ); - buf[5] = uint8_t((cpp & 0x0000000000ff0000LL) >> 16 ); - buf[6] = uint8_t((cpp & 0x000000000000ff00LL) >> 8 ); - buf[7] = uint8_t((cpp & 0x00000000000000ffLL) ); - - store( file, code, MP4_ITMF_BT_INTEGER, buf, sizeof(buf) ); - } - else { - remove( file, code ); - } -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::storeString( MP4File& file, const string& code, const string& cpp, const char* c ) -{ - if( c ) - store( file, code, MP4_ITMF_BT_UTF8, cpp.c_str(), (uint32_t)cpp.size() ); - else - remove( file, code ); -} - -/////////////////////////////////////////////////////////////////////////////// - -void -Tags::updateArtworkShadow( MP4Tags*& tags ) -{ - if( tags->artwork ) { - delete[] tags->artwork; - tags->artwork = NULL; - tags->artworkCount = 0; - } - - if( artwork.empty() ) - return; - - MP4TagArtwork* const cartwork = new MP4TagArtwork[ artwork.size() ]; - uint32_t max = (uint32_t)artwork.size(); - - for( uint32_t i = 0; i < max; i++ ) { - MP4TagArtwork& a = cartwork[i]; - CoverArtBox::Item& item = artwork[i]; - - a.data = item.buffer; - a.size = item.size; - - switch( item.type ) { - case BT_BMP: - a.type = MP4_ART_BMP; - break; - - case BT_GIF: - a.type = MP4_ART_GIF; - break; - - case BT_JPEG: - a.type = MP4_ART_JPEG; - break; - - case BT_PNG: - a.type = MP4_ART_PNG; - break; - - default: - a.type = MP4_ART_UNDEFINED; - break; - } - } - - tags->artwork = cartwork; - tags->artworkCount = max; -} - -/////////////////////////////////////////////////////////////////////////////// - -const string Tags::CODE_NAME = "\xa9" "nam"; -const string Tags::CODE_ARTIST = "\xa9" "ART"; -const string Tags::CODE_ALBUMARTIST = "aART"; -const string Tags::CODE_ALBUM = "\xa9" "alb"; -const string Tags::CODE_GROUPING = "\xa9" "grp"; -const string Tags::CODE_COMPOSER = "\xa9" "wrt"; -const string Tags::CODE_COMMENTS = "\xa9" "cmt"; -const string Tags::CODE_GENRE = "\xa9" "gen"; -const string Tags::CODE_GENRETYPE = "gnre"; -const string Tags::CODE_RELEASEDATE = "\xa9" "day"; -const string Tags::CODE_TRACK = "trkn"; -const string Tags::CODE_DISK = "disk"; -const string Tags::CODE_TEMPO = "tmpo"; -const string Tags::CODE_COMPILATION = "cpil"; - -const string Tags::CODE_TVSHOW = "tvsh"; -const string Tags::CODE_TVNETWORK = "tvnn"; -const string Tags::CODE_TVEPISODEID = "tven"; -const string Tags::CODE_TVSEASON = "tvsn"; -const string Tags::CODE_TVEPISODE = "tves"; - -const string Tags::CODE_DESCRIPTION = "desc"; -const string Tags::CODE_LONGDESCRIPTION = "ldes"; -const string Tags::CODE_LYRICS = "\xa9" "lyr"; - -const string Tags::CODE_SORTNAME = "sonm"; -const string Tags::CODE_SORTARTIST = "soar"; -const string Tags::CODE_SORTALBUMARTIST = "soaa"; -const string Tags::CODE_SORTALBUM = "soal"; -const string Tags::CODE_SORTCOMPOSER = "soco"; -const string Tags::CODE_SORTTVSHOW = "sosn"; - -const string Tags::CODE_COPYRIGHT = "cprt"; -const string Tags::CODE_ENCODINGTOOL = "\xa9" "too"; -const string Tags::CODE_ENCODEDBY = "\xa9" "enc"; -const string Tags::CODE_PURCHASEDATE = "purd"; - -const string Tags::CODE_PODCAST = "pcst"; -const string Tags::CODE_KEYWORDS = "keyw"; -const string Tags::CODE_CATEGORY = "catg"; - -const string Tags::CODE_HDVIDEO = "hdvd"; -const string Tags::CODE_MEDIATYPE = "stik"; -const string Tags::CODE_CONTENTRATING = "rtng"; -const string Tags::CODE_GAPLESS = "pgap"; - -const string Tags::CODE_ITUNESACCOUNT = "apID"; -const string Tags::CODE_ITUNESACCOUNTTYPE = "akID"; -const string Tags::CODE_ITUNESCOUNTRY = "sfID"; -const string Tags::CODE_CONTENTID = "cnID"; -const string Tags::CODE_ARTISTID = "atID"; -const string Tags::CODE_PLAYLISTID = "plID"; -const string Tags::CODE_GENREID = "geID"; -const string Tags::CODE_COMPOSERID = "cmID"; -const string Tags::CODE_XID = "xid "; - -/////////////////////////////////////////////////////////////////////////////// - -}}} // namespace mp4v2::impl::itmf diff --git a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/Tags.h b/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/Tags.h deleted file mode 100644 index 57ef82cb..00000000 --- a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/Tags.h +++ /dev/null @@ -1,210 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// 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. -// Portions created by David Byron are Copyright (C) 2011. -// All Rights Reserved. -// -// Contributors: -// Kona Blend, [email protected] -// Rouven Wessling, [email protected] -// David Byron, [email protected] -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef MP4V2_IMPL_ITMF_TAGS_H -#define MP4V2_IMPL_ITMF_TAGS_H - -namespace mp4v2 { namespace impl { namespace itmf { - -/////////////////////////////////////////////////////////////////////////////// - -class Tags -{ -public: - static const string CODE_NAME; - static const string CODE_ARTIST; - static const string CODE_ALBUMARTIST; - static const string CODE_ALBUM; - static const string CODE_GROUPING; - static const string CODE_COMPOSER; - static const string CODE_COMMENTS; - static const string CODE_GENRE; - static const string CODE_GENRETYPE; - static const string CODE_RELEASEDATE; - static const string CODE_TRACK; - static const string CODE_DISK; - static const string CODE_TEMPO; - static const string CODE_COMPILATION; - - static const string CODE_TVSHOW; - static const string CODE_TVNETWORK; - static const string CODE_TVEPISODEID; - static const string CODE_TVSEASON; - static const string CODE_TVEPISODE; - - static const string CODE_DESCRIPTION; - static const string CODE_LONGDESCRIPTION; - static const string CODE_LYRICS; - - static const string CODE_SORTNAME; - static const string CODE_SORTARTIST; - static const string CODE_SORTALBUMARTIST; - static const string CODE_SORTALBUM; - static const string CODE_SORTCOMPOSER; - static const string CODE_SORTTVSHOW; - - static const string CODE_COPYRIGHT; - static const string CODE_ENCODINGTOOL; - static const string CODE_ENCODEDBY; - static const string CODE_PURCHASEDATE; - - static const string CODE_PODCAST; - static const string CODE_KEYWORDS; - static const string CODE_CATEGORY; - - static const string CODE_HDVIDEO; - static const string CODE_MEDIATYPE; - static const string CODE_CONTENTRATING; - static const string CODE_GAPLESS; - - static const string CODE_ITUNESACCOUNT; - static const string CODE_ITUNESACCOUNTTYPE; - static const string CODE_ITUNESCOUNTRY; - static const string CODE_CONTENTID; - static const string CODE_ARTISTID; - static const string CODE_PLAYLISTID; - static const string CODE_GENREID; - static const string CODE_COMPOSERID; - static const string CODE_XID; - -public: - string name; - string artist; - string albumArtist; - string album; - string grouping; - string composer; - string comments; - string genre; - uint16_t genreType; - string releaseDate; - MP4TagTrack track; - MP4TagDisk disk; - uint16_t tempo; - uint8_t compilation; - - string tvShow; - string tvEpisodeID; - uint32_t tvSeason; - uint32_t tvEpisode; - string tvNetwork; - - string description; - string longDescription; - string lyrics; - - string sortName; - string sortArtist; - string sortAlbumArtist; - string sortAlbum; - string sortComposer; - string sortTVShow; - - CoverArtBox::ItemList artwork; - - string copyright; - string encodingTool; - string encodedBy; - string purchaseDate; - - uint8_t podcast; - string keywords; - string category; - - uint8_t hdVideo; - uint8_t mediaType; - uint8_t contentRating; - uint8_t gapless; - - string iTunesAccount; - uint8_t iTunesAccountType; - uint32_t iTunesCountry; - uint32_t contentID; - uint32_t artistID; - uint64_t playlistID; - uint32_t genreID; - uint32_t composerID; - string xid; - - bool hasMetadata; - -public: - Tags(); - ~Tags(); - - void c_alloc ( MP4Tags*& ); - void c_fetch ( MP4Tags*&, MP4FileHandle ); - void c_store ( MP4Tags*&, MP4FileHandle ); - void c_free ( MP4Tags*& ); - - void c_addArtwork ( MP4Tags*&, MP4TagArtwork& ); - void c_setArtwork ( MP4Tags*&, uint32_t, MP4TagArtwork& ); - void c_removeArtwork ( MP4Tags*&, uint32_t ); - - void c_setString ( const char*, string&, const char*& ); - void c_setInteger ( const uint8_t*, uint8_t&, const uint8_t*& ); - void c_setInteger ( const uint16_t*, uint16_t&, const uint16_t*& ); - void c_setInteger ( const uint32_t*, uint32_t&, const uint32_t*& ); - void c_setInteger ( const uint64_t*, uint64_t&, const uint64_t*& ); - - void c_setTrack ( const MP4TagTrack*, MP4TagTrack&, const MP4TagTrack*& ); - void c_setDisk ( const MP4TagDisk*, MP4TagDisk&, const MP4TagDisk*& ); - -private: - typedef map<string,MP4ItmfItem*> CodeItemMap; - -private: - void fetchString ( const CodeItemMap&, const string&, string&, const char*& ); - void fetchInteger ( const CodeItemMap&, const string&, uint8_t&, const uint8_t*& ); - void fetchInteger ( const CodeItemMap&, const string&, uint16_t&, const uint16_t*& ); - void fetchInteger ( const CodeItemMap&, const string&, uint32_t&, const uint32_t*& ); - void fetchInteger ( const CodeItemMap&, const string&, uint64_t&, const uint64_t*& ); - - void fetchGenre ( const CodeItemMap&, uint16_t&, const uint16_t*& ); - void fetchTrack ( const CodeItemMap&, MP4TagTrack&, const MP4TagTrack*& ); - void fetchDisk ( const CodeItemMap&, MP4TagDisk&, const MP4TagDisk*& ); - - void storeString ( MP4File&, const string&, const string&, const char* ); - void storeInteger ( MP4File&, const string&, uint8_t, const uint8_t* ); - void storeInteger ( MP4File&, const string&, uint16_t, const uint16_t* ); - void storeInteger ( MP4File&, const string&, uint32_t, const uint32_t* ); - void storeInteger ( MP4File&, const string&, uint64_t, const uint64_t* ); - - void storeGenre ( MP4File&, uint16_t, const uint16_t* ); - void storeTrack ( MP4File&, const MP4TagTrack&, const MP4TagTrack* ); - void storeDisk ( MP4File&, const MP4TagDisk&, const MP4TagDisk* ); - - void remove ( MP4File&, const string& ); - void store ( MP4File&, const string&, MP4ItmfBasicType, const void*, uint32_t ); - - void updateArtworkShadow( MP4Tags*& ); -}; - -/////////////////////////////////////////////////////////////////////////////// - -}}} // namespace mp4v2::impl::itmf - -#endif // MP4V2_IMPL_ITMF_TAGS_H diff --git a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/generic.cpp b/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/generic.cpp deleted file mode 100644 index 184cd74b..00000000 --- a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/generic.cpp +++ /dev/null @@ -1,476 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// 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 -// -/////////////////////////////////////////////////////////////////////////////// - -#include "impl.h" - -namespace mp4v2 { namespace impl { namespace itmf { namespace { - -/////////////////////////////////////////////////////////////////////////////// - -void -__dataInit( MP4ItmfData& data ) -{ - data.typeSetIdentifier = 0; - data.typeCode = MP4_ITMF_BT_IMPLICIT; - data.locale = 0; - data.value = NULL; - data.valueSize = 0; -} - -void -__dataClear( MP4ItmfData& data ) -{ - if( data.value ) - free( data.value ); - __dataInit( data ); -} - -/////////////////////////////////////////////////////////////////////////////// - -void -__dataListInit( MP4ItmfDataList& list ) -{ - list.elements = NULL; - list.size = 0; -} - -void -__dataListClear( MP4ItmfDataList& list ) -{ - if( list.elements ) { - for( uint32_t i = 0; i < list.size; i++ ) - __dataClear( list.elements[i] ); - free( list.elements ); - } - - __dataListInit( list ); -} - -void -__dataListResize( MP4ItmfDataList& list, uint32_t size ) -{ - __dataListClear( list ); - - list.elements = (MP4ItmfData*)malloc( sizeof( MP4ItmfData ) * size ); - list.size = size; - - for( uint32_t i = 0; i < size; i++ ) - __dataInit( list.elements[i] ); -} - -/////////////////////////////////////////////////////////////////////////////// - -void -__itemInit( MP4ItmfItem& item ) -{ - item.__handle = NULL; - item.code = NULL; - item.mean = NULL; - item.name = NULL; - - __dataListInit( item.dataList ); -} - -void -__itemClear( MP4ItmfItem& item ) -{ - if( item.code ) - free( item.code ); - if( item.mean ) - free( item.mean ); - if( item.name ) - free( item.name ); - - __dataListClear( item.dataList ); - __itemInit( item ); -} - -/////////////////////////////////////////////////////////////////////////////// - -void -__itemListInit( MP4ItmfItemList& list ) -{ - list.elements = NULL; - list.size = 0; -} - -void -__itemListClear( MP4ItmfItemList& list ) -{ - if( list.elements ) { - for( uint32_t i = 0; i < list.size; i++ ) - __itemClear( list.elements[i] ); - free( list.elements ); - } - - __itemListInit( list ); -} - -void -__itemListResize( MP4ItmfItemList& list, uint32_t size ) -{ - __itemListClear( list ); - if( !size ) - return; - - list.elements = (MP4ItmfItem*)malloc( sizeof( MP4ItmfItem ) * size ); - list.size = size; - - for( uint32_t i = 0; i < size; i++ ) - __itemInit( list.elements[i] ); -} - -MP4ItmfItemList* -__itemListAlloc() -{ - MP4ItmfItemList& list = *(MP4ItmfItemList*)malloc( sizeof( MP4ItmfItemList )); - __itemListInit( list ); - return &list; -} - -/////////////////////////////////////////////////////////////////////////////// - -static bool -__itemAtomToModel( MP4ItemAtom& item_atom, MP4ItmfItem& model ) -{ - __itemClear( model ); - model.__handle = &item_atom; - model.code = strdup( item_atom.GetType() ); - - // handle special meaning atom - if( ATOMID( item_atom.GetType() ) == ATOMID( "----" )) { - // meaning is mandatory - MP4MeanAtom* mean = (MP4MeanAtom*)item_atom.FindAtom( "----.mean" ); - if( !mean ) - return true; - - // copy atom UTF-8 value (not NULL-terminated) to model (NULL-terminated) - model.mean = mean->value.GetValueStringAlloc(); - - // name is optional - MP4NameAtom* name = (MP4NameAtom*)item_atom.FindAtom( "----.name" ); - if( name ) { - // copy atom UTF-8 value (not NULL-terminated) to model (NULL-terminated) - model.name = name->value.GetValueStringAlloc(); - } - } - - // pass 1: count data atoms - const uint32_t childCount = item_atom.GetNumberOfChildAtoms(); - uint32_t dataCount = 0; - for( uint32_t i = 0; i < childCount; i++ ) { - if( ATOMID( item_atom.GetChildAtom( i )->GetType() ) != ATOMID( "data" )) - continue; - dataCount++; - } - - // one or more data atoms is mandatory - if( dataCount < 1 ) - return true; - - __dataListResize( model.dataList, dataCount ); - - // pass 2: populate data model - for( uint32_t i = 0, idata = 0; i < childCount; i++ ) { - MP4Atom* atom = item_atom.GetChildAtom( i ); - if( ATOMID( atom->GetType() ) != ATOMID( "data" )) - continue; - - MP4DataAtom& data_atom = *(MP4DataAtom*)atom; - MP4ItmfData& data_model = model.dataList.elements[idata]; - - data_model.typeSetIdentifier = data_atom.typeSetIdentifier.GetValue(); - data_model.typeCode = (MP4ItmfBasicType)data_atom.typeCode.GetValue(); - data_model.locale = data_atom.locale.GetValue(); - - data_atom.metadata.GetValue( &data_model.value, &data_model.valueSize ); - idata++; - } - - return false; -} - -/////////////////////////////////////////////////////////////////////////////// - -static bool -__itemModelToAtom( const MP4ItmfItem& model, MP4ItemAtom& atom ) -{ - if( ATOMID( atom.GetType() ) == ATOMID( "----" )) { - ASSERT( model.mean ); // mandatory - MP4MeanAtom& meanAtom = *(MP4MeanAtom*)MP4Atom::CreateAtom( atom.GetFile(), &atom, "mean" ); - atom.AddChildAtom( &meanAtom ); - meanAtom.value.SetValue( (const uint8_t*)model.mean, (uint32_t)strlen( model.mean )); - - if( model.name ) { - MP4NameAtom& nameAtom = *(MP4NameAtom*)MP4Atom::CreateAtom( atom.GetFile(), &atom, "name" ); - atom.AddChildAtom( &nameAtom ); - nameAtom.value.SetValue( (const uint8_t*)model.name, (uint32_t)strlen( model.name )); - } - } - - for( uint32_t i = 0; i < model.dataList.size; i++ ) { - MP4ItmfData& dataModel = model.dataList.elements[i]; - MP4DataAtom& dataAtom = *(MP4DataAtom*)MP4Atom::CreateAtom( atom.GetFile(), &atom, "data" ); - atom.AddChildAtom( &dataAtom ); - - dataAtom.typeSetIdentifier.SetValue( dataModel.typeSetIdentifier ); - dataAtom.typeCode.SetValue( (itmf::BasicType)dataModel.typeCode ); - dataAtom.locale.SetValue( dataModel.locale ); - dataAtom.metadata.SetValue( dataModel.value, dataModel.valueSize ); - } - - return true; -} - -/////////////////////////////////////////////////////////////////////////////// - -} // namespace anonymous - -/////////////////////////////////////////////////////////////////////////////// - -MP4ItmfItem* -genericItemAlloc( const string& code, uint32_t numData ) -{ - MP4ItmfItem* item = (MP4ItmfItem*)malloc( sizeof( MP4ItmfItem )); - if( !item ) - return NULL; - - __itemInit( *item ); - item->code = strdup( code.c_str() ); - - // always create array size of 1 - __dataListResize( item->dataList, numData ); - - return item; -} - -/////////////////////////////////////////////////////////////////////////////// - -void -genericItemFree( MP4ItmfItem* item ) -{ - if( !item ) - return; - - __itemClear( *item ); - free( item ); -} - -/////////////////////////////////////////////////////////////////////////////// - -void -genericItemListFree( MP4ItmfItemList* list ) -{ - if( !list ) - return; - - __itemListClear( *list ); - free( list ); -} - -/////////////////////////////////////////////////////////////////////////////// - -MP4ItmfItemList* -genericGetItems( MP4File& file ) -{ - MP4Atom* ilst = file.FindAtom( "moov.udta.meta.ilst" ); - if( !ilst ) - return __itemListAlloc(); - - const uint32_t itemCount = ilst->GetNumberOfChildAtoms(); - if( itemCount < 1 ) - return __itemListAlloc(); - - MP4ItmfItemList& list = *__itemListAlloc(); - __itemListResize( list, itemCount ); - - for( uint32_t i = 0; i < list.size; i++ ) - __itemAtomToModel( *(MP4ItemAtom*)ilst->GetChildAtom( i ), list.elements[i] ); - - return &list; -} - -/////////////////////////////////////////////////////////////////////////////// - -MP4ItmfItemList* -genericGetItemsByCode( MP4File& file, const string& code ) -{ - MP4Atom* ilst = file.FindAtom( "moov.udta.meta.ilst" ); - if( !ilst ) - return __itemListAlloc(); - - // pass 1: filter by code and populate indexList - const uint32_t childCount = ilst->GetNumberOfChildAtoms(); - vector<uint32_t> indexList; - for( uint32_t i = 0; i < childCount; i++ ) { - if( ATOMID( ilst->GetChildAtom( i )->GetType() ) != ATOMID( code.c_str() )) - continue; - indexList.push_back( i ); - } - - if( indexList.size() < 1 ) - return __itemListAlloc(); - - MP4ItmfItemList& list = *__itemListAlloc(); - __itemListResize( list, (uint32_t)indexList.size() ); - - // pass 2: process each atom - const vector<uint32_t>::size_type max = indexList.size(); - for( vector<uint32_t>::size_type i = 0; i < max; i++ ) { - uint32_t& aidx = indexList[i]; - __itemAtomToModel( *(MP4ItemAtom*)ilst->GetChildAtom( aidx ), list.elements[i] ); - } - - return &list; -} - -/////////////////////////////////////////////////////////////////////////////// - -MP4ItmfItemList* -genericGetItemsByMeaning( MP4File& file, const string& meaning, const string& name ) -{ - MP4Atom* ilst = file.FindAtom( "moov.udta.meta.ilst" ); - if( !ilst ) - return __itemListAlloc(); - - // pass 1: filter by code and populate indexList - const uint32_t childCount = ilst->GetNumberOfChildAtoms(); - vector<uint32_t> indexList; - for( uint32_t i = 0; i < childCount; i++ ) { - MP4Atom& atom = *ilst->GetChildAtom( i ); - if( ATOMID( atom.GetType() ) != ATOMID( "----" )) - continue; - - // filter-out meaning mismatch - MP4MeanAtom* meanAtom = (MP4MeanAtom*)atom.FindAtom( "----.mean" ); - if( !meanAtom ) - continue; - if( meanAtom->value.CompareToString( meaning )) - continue; - - if( !name.empty() ) { - // filter-out name mismatch - MP4MeanAtom* nameAtom = (MP4MeanAtom*)atom.FindAtom( "----.name" ); - if( !nameAtom ) - continue; - if( nameAtom->value.CompareToString( name )) - continue; - } - - indexList.push_back( i ); - } - - if( indexList.size() < 1 ) - return __itemListAlloc(); - - MP4ItmfItemList& list = *__itemListAlloc(); - __itemListResize( list, (uint32_t)indexList.size() ); - - // pass 2: process each atom - const vector<uint32_t>::size_type max = indexList.size(); - for( vector<uint32_t>::size_type i = 0; i < max; i++ ) { - uint32_t& aidx = indexList[i]; - __itemAtomToModel( *(MP4ItemAtom*)ilst->GetChildAtom( aidx ), list.elements[i] ); - } - - return &list; -} - -/////////////////////////////////////////////////////////////////////////////// - -bool -genericAddItem( MP4File& file, const MP4ItmfItem* item ) -{ - if( !item ) - return false; - - MP4Atom* ilst = file.FindAtom( "moov.udta.meta.ilst" ); - if( !ilst ) { - file.AddDescendantAtoms( "moov", "udta.meta.ilst" ); - ilst = file.FindAtom( "moov.udta.meta.ilst" ); - ASSERT( ilst ); - } - - MP4ItemAtom& itemAtom = *(MP4ItemAtom*)MP4Atom::CreateAtom( file, ilst, item->code ); - ilst->AddChildAtom( &itemAtom ); - - return __itemModelToAtom( *item, itemAtom ); -} - -/////////////////////////////////////////////////////////////////////////////// - -bool -genericSetItem( MP4File& file, const MP4ItmfItem* item ) -{ - if( !item || !item->__handle ) - return false; - - MP4Atom* ilst = file.FindAtom( "moov.udta.meta.ilst" ); - if( !ilst ) - return false; - - MP4ItemAtom* const old = static_cast<MP4ItemAtom*>(item->__handle); - const uint32_t childCount = ilst->GetNumberOfChildAtoms(); - uint32_t fidx = numeric_limits<uint32_t>::max(); - for( uint32_t i = 0; i < childCount; i++ ) { - MP4Atom* atom = ilst->GetChildAtom( i ); - if( atom == old ) { - fidx = i; - break; - } - } - - if( fidx == numeric_limits<uint32_t>::max() ) - return false; - - ilst->DeleteChildAtom( old ); - delete old; - - MP4ItemAtom& itemAtom = *(MP4ItemAtom*)MP4Atom::CreateAtom( file, ilst, item->code ); - ilst->InsertChildAtom( &itemAtom, fidx ); - - return __itemModelToAtom( *item, itemAtom ); -} - -/////////////////////////////////////////////////////////////////////////////// - -bool -genericRemoveItem( MP4File& file, const MP4ItmfItem* item ) -{ - if( !item || !item->__handle ) - return false; - - MP4Atom* ilst = file.FindAtom( "moov.udta.meta.ilst" ); - if( !ilst ) - return false; - - MP4ItemAtom* const old = static_cast<MP4ItemAtom*>(item->__handle); - ilst->DeleteChildAtom( old ); - delete old; - - return true; -} - -/////////////////////////////////////////////////////////////////////////////// - -}}} // namespace mp4v2::impl::itmf diff --git a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/generic.h b/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/generic.h deleted file mode 100644 index 9edc7eb6..00000000 --- a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/generic.h +++ /dev/null @@ -1,66 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// 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: -// KonaBlend, [email protected] -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef MP4V2_IMPL_ITMF_GENERIC_H -#define MP4V2_IMPL_ITMF_GENERIC_H - -namespace mp4v2 { namespace impl { namespace itmf { - -/////////////////////////////////////////////////////////////////////////////// - -MP4ItmfItem* -genericItemAlloc( const string& code, uint32_t numData ); - -void -genericItemFree( MP4ItmfItem* item ); - -void -genericItemListFree( MP4ItmfItemList* list ); - -/////////////////////////////////////////////////////////////////////////////// - -MP4ItmfItemList* -genericGetItems( MP4File& file ); - -MP4ItmfItemList* -genericGetItemsByCode( MP4File& file, const string& code ); - -MP4ItmfItemList* -genericGetItemsByMeaning( MP4File& file, const string& meaning, const string& name ); - -/////////////////////////////////////////////////////////////////////////////// - -bool -genericAddItem( MP4File& file, const MP4ItmfItem* item ); - -bool -genericSetItem( MP4File& file, const MP4ItmfItem* item ); - -bool -genericRemoveItem( MP4File& file, const MP4ItmfItem* item ); - -/////////////////////////////////////////////////////////////////////////////// - -}}} // namespace mp4v2::impl::itmf - -#endif // MP4V2_IMPL_ITMF_GENERIC_H diff --git a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/impl.h b/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/impl.h deleted file mode 100644 index 9c7eb44f..00000000 --- a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/impl.h +++ /dev/null @@ -1,34 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// 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 -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef MP4V2_IMPL_ITMF_IMPL_H -#define MP4V2_IMPL_ITMF_IMPL_H - -/////////////////////////////////////////////////////////////////////////////// - -#include "src/impl.h" -#include "itmf.h" - -/////////////////////////////////////////////////////////////////////////////// - -#endif // MP4V2_IMPL_ITMF_IMPL_H diff --git a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/itmf.h b/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/itmf.h deleted file mode 100644 index cad38ed0..00000000 --- a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/itmf.h +++ /dev/null @@ -1,45 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// 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 -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef MP4V2_IMPL_ITMF_ITMF_H -#define MP4V2_IMPL_ITMF_ITMF_H - -/// @namespace mp4v2::impl::itmf (private) iTunes Metadata Format. -/// <b>WARNING: THIS IS A PRIVATE NAMESPACE. NOT FOR PUBLIC CONSUMPTION.</b> -/// -/// This namespace implements some features that are specified by the -/// iTunes Metadata Format Specification, revision 2008-04-16. -/// -namespace mp4v2 { namespace impl { namespace itmf { - ; -}}} - -/////////////////////////////////////////////////////////////////////////////// - -#include "CoverArtBox.h" -#include "Tags.h" -#include "generic.h" - -/////////////////////////////////////////////////////////////////////////////// - -#endif // MP4V2_IMPL_ITMF_ITMF_H diff --git a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/type.cpp b/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/type.cpp deleted file mode 100644 index 44254f8d..00000000 --- a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/type.cpp +++ /dev/null @@ -1,314 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// 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, [email protected] -// -/////////////////////////////////////////////////////////////////////////////// - -#include "impl.h" - -namespace mp4v2 { namespace impl { - -/////////////////////////////////////////////////////////////////////////////// - -template <> -const itmf::EnumBasicType::Entry itmf::EnumBasicType::data[] = { - { mp4v2::impl::itmf::BT_IMPLICIT, "implicit", "implicit" }, - { mp4v2::impl::itmf::BT_UTF8, "utf8", "UTF-8" }, - { mp4v2::impl::itmf::BT_UTF16, "utf16", "UTF-16" }, - { mp4v2::impl::itmf::BT_SJIS, "sjis", "S/JIS" }, - { mp4v2::impl::itmf::BT_HTML, "html", "HTML" }, - { mp4v2::impl::itmf::BT_XML, "xml", "XML" }, - { mp4v2::impl::itmf::BT_UUID, "uuid", "UUID" }, - { mp4v2::impl::itmf::BT_ISRC, "isrc", "ISRC" }, - { mp4v2::impl::itmf::BT_MI3P, "mi3p", "MI3P" }, - { mp4v2::impl::itmf::BT_GIF, "gif", "GIF" }, - { mp4v2::impl::itmf::BT_JPEG, "jpeg", "JPEG" }, - { mp4v2::impl::itmf::BT_PNG, "png", "PNG" }, - { mp4v2::impl::itmf::BT_URL, "url", "URL" }, - { mp4v2::impl::itmf::BT_DURATION, "duration", "duration" }, - { mp4v2::impl::itmf::BT_DATETIME, "datetime", "date/time" }, - { mp4v2::impl::itmf::BT_GENRES, "genres", "genres" }, - { mp4v2::impl::itmf::BT_INTEGER, "integer", "integer" }, - { mp4v2::impl::itmf::BT_RIAA_PA, "riaapa", "RIAA-PA" }, - { mp4v2::impl::itmf::BT_UPC, "upc", "UPC" }, - { mp4v2::impl::itmf::BT_BMP, "bmp", "BMP" }, - - { mp4v2::impl::itmf::BT_UNDEFINED } // must be last -}; - -/////////////////////////////////////////////////////////////////////////////// - -template <> -const itmf::EnumGenreType::Entry itmf::EnumGenreType::data[] = { - { mp4v2::impl::itmf::GENRE_BLUES, "blues", "Blues" }, - { mp4v2::impl::itmf::GENRE_CLASSIC_ROCK, "classicrock", "Classic Rock" }, - { mp4v2::impl::itmf::GENRE_COUNTRY, "country", "Country" }, - { mp4v2::impl::itmf::GENRE_DANCE, "dance", "Dance" }, - { mp4v2::impl::itmf::GENRE_DISCO, "disco", "Disco" }, - { mp4v2::impl::itmf::GENRE_FUNK, "funk", "Funk" }, - { mp4v2::impl::itmf::GENRE_GRUNGE, "grunge", "Grunge" }, - { mp4v2::impl::itmf::GENRE_HIP_HOP, "hiphop", "Hop-Hop" }, - { mp4v2::impl::itmf::GENRE_JAZZ, "jazz", "Jazz" }, - { mp4v2::impl::itmf::GENRE_METAL, "metal", "Metal" }, - { mp4v2::impl::itmf::GENRE_NEW_AGE, "newage", "New Age" }, - { mp4v2::impl::itmf::GENRE_OLDIES, "oldies", "Oldies" }, - { mp4v2::impl::itmf::GENRE_OTHER, "other", "Other" }, - { mp4v2::impl::itmf::GENRE_POP, "pop", "Pop" }, - { mp4v2::impl::itmf::GENRE_R_AND_B, "rand_b", "R&B" }, - { mp4v2::impl::itmf::GENRE_RAP, "rap", "Rap" }, - { mp4v2::impl::itmf::GENRE_REGGAE, "reggae", "Reggae" }, - { mp4v2::impl::itmf::GENRE_ROCK, "rock", "Rock" }, - { mp4v2::impl::itmf::GENRE_TECHNO, "techno", "Techno" }, - { mp4v2::impl::itmf::GENRE_INDUSTRIAL, "industrial", "Industrial" }, - { mp4v2::impl::itmf::GENRE_ALTERNATIVE, "alternative", "Alternative" }, - { mp4v2::impl::itmf::GENRE_SKA, "ska", "Ska" }, - { mp4v2::impl::itmf::GENRE_DEATH_METAL, "deathmetal", "Death Metal" }, - { mp4v2::impl::itmf::GENRE_PRANKS, "pranks", "Pranks" }, - { mp4v2::impl::itmf::GENRE_SOUNDTRACK, "soundtrack", "Soundtrack" }, - { mp4v2::impl::itmf::GENRE_EURO_TECHNO, "eurotechno", "Euro-Techno" }, - { mp4v2::impl::itmf::GENRE_AMBIENT, "ambient", "Ambient" }, - { mp4v2::impl::itmf::GENRE_TRIP_HOP, "triphop", "Trip-Hop" }, - { mp4v2::impl::itmf::GENRE_VOCAL, "vocal", "Vocal" }, - { mp4v2::impl::itmf::GENRE_JAZZ_FUNK, "jazzfunk", "Jazz+Funk" }, - { mp4v2::impl::itmf::GENRE_FUSION, "fusion", "Fusion" }, - { mp4v2::impl::itmf::GENRE_TRANCE, "trance", "Trance" }, - { mp4v2::impl::itmf::GENRE_CLASSICAL, "classical", "Classical" }, - { mp4v2::impl::itmf::GENRE_INSTRUMENTAL, "instrumental", "Instrumental" }, - { mp4v2::impl::itmf::GENRE_ACID, "acid", "Acid" }, - { mp4v2::impl::itmf::GENRE_HOUSE, "house", "House" }, - { mp4v2::impl::itmf::GENRE_GAME, "game", "Game" }, - { mp4v2::impl::itmf::GENRE_SOUND_CLIP, "soundclip", "Sound Clip" }, - { mp4v2::impl::itmf::GENRE_GOSPEL, "gospel", "Gospel" }, - { mp4v2::impl::itmf::GENRE_NOISE, "noise", "Noise" }, - { mp4v2::impl::itmf::GENRE_ALTERNROCK, "alternrock", "AlternRock" }, - { mp4v2::impl::itmf::GENRE_BASS, "bass", "Bass" }, - { mp4v2::impl::itmf::GENRE_SOUL, "soul", "Soul" }, - { mp4v2::impl::itmf::GENRE_PUNK, "punk", "Punk" }, - { mp4v2::impl::itmf::GENRE_SPACE, "space", "Space" }, - { mp4v2::impl::itmf::GENRE_MEDITATIVE, "meditative", "Meditative" }, - { mp4v2::impl::itmf::GENRE_INSTRUMENTAL_POP, "instrumentalpop", "Instrumental Pop" }, - { mp4v2::impl::itmf::GENRE_INSTRUMENTAL_ROCK, "instrumentalrock", "Instrumental Rock" }, - { mp4v2::impl::itmf::GENRE_ETHNIC, "ethnic", "Ethnic" }, - { mp4v2::impl::itmf::GENRE_GOTHIC, "gothic", "Gothic" }, - { mp4v2::impl::itmf::GENRE_DARKWAVE, "darkwave", "Darkwave" }, - { mp4v2::impl::itmf::GENRE_TECHNO_INDUSTRIAL, "technoindustrial", "Techno-Industrial" }, - { mp4v2::impl::itmf::GENRE_ELECTRONIC, "electronic", "Electronic" }, - { mp4v2::impl::itmf::GENRE_POP_FOLK, "popfolk", "Pop-Folk" }, - { mp4v2::impl::itmf::GENRE_EURODANCE, "eurodance", "Eurodance" }, - { mp4v2::impl::itmf::GENRE_DREAM, "dream", "Dream" }, - { mp4v2::impl::itmf::GENRE_SOUTHERN_ROCK, "southernrock", "Southern Rock" }, - { mp4v2::impl::itmf::GENRE_COMEDY, "comedy", "Comedy" }, - { mp4v2::impl::itmf::GENRE_CULT, "cult", "Cult" }, - { mp4v2::impl::itmf::GENRE_GANGSTA, "gangsta", "Gangsta" }, - { mp4v2::impl::itmf::GENRE_TOP_40, "top40", "Top 40" }, - { mp4v2::impl::itmf::GENRE_CHRISTIAN_RAP, "christianrap", "Christian Rap" }, - { mp4v2::impl::itmf::GENRE_POP_FUNK, "popfunk", "Pop/Funk" }, - { mp4v2::impl::itmf::GENRE_JUNGLE, "jungle", "Jungle" }, - { mp4v2::impl::itmf::GENRE_NATIVE_AMERICAN, "nativeamerican", "Native American" }, - { mp4v2::impl::itmf::GENRE_CABARET, "cabaret", "Cabaret" }, - { mp4v2::impl::itmf::GENRE_NEW_WAVE, "newwave", "New Wave" }, - { mp4v2::impl::itmf::GENRE_PSYCHEDELIC, "psychedelic", "Psychedelic" }, - { mp4v2::impl::itmf::GENRE_RAVE, "rave", "Rave" }, - { mp4v2::impl::itmf::GENRE_SHOWTUNES, "showtunes", "Showtunes" }, - { mp4v2::impl::itmf::GENRE_TRAILER, "trailer", "Trailer" }, - { mp4v2::impl::itmf::GENRE_LO_FI, "lofi", "Lo-Fi" }, - { mp4v2::impl::itmf::GENRE_TRIBAL, "tribal", "Tribal" }, - { mp4v2::impl::itmf::GENRE_ACID_PUNK, "acidpunk", "Acid Punk" }, - { mp4v2::impl::itmf::GENRE_ACID_JAZZ, "acidjazz", "Acid Jazz" }, - { mp4v2::impl::itmf::GENRE_POLKA, "polka", "Polka" }, - { mp4v2::impl::itmf::GENRE_RETRO, "retro", "Retro" }, - { mp4v2::impl::itmf::GENRE_MUSICAL, "musical", "Musical" }, - { mp4v2::impl::itmf::GENRE_ROCK_AND_ROLL, "rockand_roll", "Rock & Roll" }, - - { mp4v2::impl::itmf::GENRE_HARD_ROCK, "hardrock", "Hard Rock" }, - { mp4v2::impl::itmf::GENRE_FOLK, "folk", "Folk" }, - { mp4v2::impl::itmf::GENRE_FOLK_ROCK, "folkrock", "Folk-Rock" }, - { mp4v2::impl::itmf::GENRE_NATIONAL_FOLK, "nationalfolk", "National Folk" }, - { mp4v2::impl::itmf::GENRE_SWING, "swing", "Swing" }, - { mp4v2::impl::itmf::GENRE_FAST_FUSION, "fastfusion", "Fast Fusion" }, - { mp4v2::impl::itmf::GENRE_BEBOB, "bebob", "Bebob" }, - { mp4v2::impl::itmf::GENRE_LATIN, "latin", "Latin" }, - { mp4v2::impl::itmf::GENRE_REVIVAL, "revival", "Revival" }, - { mp4v2::impl::itmf::GENRE_CELTIC, "celtic", "Celtic" }, - { mp4v2::impl::itmf::GENRE_BLUEGRASS, "bluegrass", "Bluegrass" }, - { mp4v2::impl::itmf::GENRE_AVANTGARDE, "avantgarde", "Avantgarde" }, - { mp4v2::impl::itmf::GENRE_GOTHIC_ROCK, "gothicrock", "Gothic Rock" }, - { mp4v2::impl::itmf::GENRE_PROGRESSIVE_ROCK, "progressiverock", "Progresive Rock" }, - { mp4v2::impl::itmf::GENRE_PSYCHEDELIC_ROCK, "psychedelicrock", "Psychedelic Rock" }, - { mp4v2::impl::itmf::GENRE_SYMPHONIC_ROCK, "symphonicrock", "SYMPHONIC_ROCK" }, - { mp4v2::impl::itmf::GENRE_SLOW_ROCK, "slowrock", "Slow Rock" }, - { mp4v2::impl::itmf::GENRE_BIG_BAND, "bigband", "Big Band" }, - { mp4v2::impl::itmf::GENRE_CHORUS, "chorus", "Chorus" }, - { mp4v2::impl::itmf::GENRE_EASY_LISTENING, "easylistening", "Easy Listening" }, - { mp4v2::impl::itmf::GENRE_ACOUSTIC, "acoustic", "Acoustic" }, - { mp4v2::impl::itmf::GENRE_HUMOUR, "humour", "Humor" }, - { mp4v2::impl::itmf::GENRE_SPEECH, "speech", "Speech" }, - { mp4v2::impl::itmf::GENRE_CHANSON, "chanson", "Chason" }, - { mp4v2::impl::itmf::GENRE_OPERA, "opera", "Opera" }, - { mp4v2::impl::itmf::GENRE_CHAMBER_MUSIC, "chambermusic", "Chamber Music" }, - { mp4v2::impl::itmf::GENRE_SONATA, "sonata", "Sonata" }, - { mp4v2::impl::itmf::GENRE_SYMPHONY, "symphony", "Symphony" }, - { mp4v2::impl::itmf::GENRE_BOOTY_BASS, "bootybass", "Booty Bass" }, - { mp4v2::impl::itmf::GENRE_PRIMUS, "primus", "Primus" }, - { mp4v2::impl::itmf::GENRE_PORN_GROOVE, "porngroove", "Porn Groove" }, - { mp4v2::impl::itmf::GENRE_SATIRE, "satire", "Satire" }, - { mp4v2::impl::itmf::GENRE_SLOW_JAM, "slowjam", "Slow Jam" }, - { mp4v2::impl::itmf::GENRE_CLUB, "club", "Club" }, - { mp4v2::impl::itmf::GENRE_TANGO, "tango", "Tango" }, - { mp4v2::impl::itmf::GENRE_SAMBA, "samba", "Samba" }, - { mp4v2::impl::itmf::GENRE_FOLKLORE, "folklore", "Folklore" }, - { mp4v2::impl::itmf::GENRE_BALLAD, "ballad", "Ballad" }, - { mp4v2::impl::itmf::GENRE_POWER_BALLAD, "powerballad", "Power Ballad" }, - { mp4v2::impl::itmf::GENRE_RHYTHMIC_SOUL, "rhythmicsoul", "Rhythmic Soul" }, - { mp4v2::impl::itmf::GENRE_FREESTYLE, "freestyle", "Freestyle" }, - { mp4v2::impl::itmf::GENRE_DUET, "duet", "Duet" }, - { mp4v2::impl::itmf::GENRE_PUNK_ROCK, "punkrock", "Punk Rock" }, - { mp4v2::impl::itmf::GENRE_DRUM_SOLO, "drumsolo", "Drum Solo" }, - { mp4v2::impl::itmf::GENRE_A_CAPELLA, "acapella", "A capella" }, - { mp4v2::impl::itmf::GENRE_EURO_HOUSE, "eurohouse", "Euro-House" }, - { mp4v2::impl::itmf::GENRE_DANCE_HALL, "dancehall", "Dance Hall" }, - { mp4v2::impl::itmf::GENRE_NONE, "none", "none" }, - - { mp4v2::impl::itmf::GENRE_UNDEFINED } // must be last -}; - -/////////////////////////////////////////////////////////////////////////////// - -template <> -const itmf::EnumStikType::Entry itmf::EnumStikType::data[] = { - { mp4v2::impl::itmf::STIK_OLD_MOVIE, "oldmovie", "Movie" }, - { mp4v2::impl::itmf::STIK_NORMAL, "normal", "Normal" }, - { mp4v2::impl::itmf::STIK_AUDIOBOOK, "audiobook", "Audio Book" }, - { mp4v2::impl::itmf::STIK_MUSIC_VIDEO, "musicvideo", "Music Video" }, - { mp4v2::impl::itmf::STIK_MOVIE, "movie", "Movie" }, - { mp4v2::impl::itmf::STIK_TV_SHOW, "tvshow", "TV Show" }, - { mp4v2::impl::itmf::STIK_BOOKLET, "booklet", "Booklet" }, - { mp4v2::impl::itmf::STIK_RINGTONE, "ringtone", "Ringtone" }, - - { mp4v2::impl::itmf::STIK_UNDEFINED } // must be last -}; - -/////////////////////////////////////////////////////////////////////////////// - -template <> -const itmf::EnumAccountType::Entry itmf::EnumAccountType::data[] = { - { mp4v2::impl::itmf::AT_ITUNES, "itunes", "iTunes" }, - { mp4v2::impl::itmf::AT_AOL, "aol", "AOL" }, - - { mp4v2::impl::itmf::AT_UNDEFINED } // must be last -}; - -/////////////////////////////////////////////////////////////////////////////// - -template <> -const itmf::EnumCountryCode::Entry itmf::EnumCountryCode::data[] = { - { mp4v2::impl::itmf::CC_USA, "usa", "United States" }, - { mp4v2::impl::itmf::CC_USA, "fra", "France" }, - { mp4v2::impl::itmf::CC_DEU, "ger", "Germany" }, - { mp4v2::impl::itmf::CC_GBR, "gbr", "United Kingdom" }, - { mp4v2::impl::itmf::CC_AUT, "aut", "Austria" }, - { mp4v2::impl::itmf::CC_BEL, "bel", "Belgium" }, - { mp4v2::impl::itmf::CC_FIN, "fin", "Finland" }, - { mp4v2::impl::itmf::CC_GRC, "grc", "Greece" }, - { mp4v2::impl::itmf::CC_IRL, "irl", "Ireland" }, - { mp4v2::impl::itmf::CC_ITA, "ita", "Italy" }, - { mp4v2::impl::itmf::CC_LUX, "lux", "Luxembourg" }, - { mp4v2::impl::itmf::CC_NLD, "nld", "Netherlands" }, - { mp4v2::impl::itmf::CC_PRT, "prt", "Portugal" }, - { mp4v2::impl::itmf::CC_ESP, "esp", "Spain" }, - { mp4v2::impl::itmf::CC_CAN, "can", "Canada" }, - { mp4v2::impl::itmf::CC_SWE, "swe", "Sweden" }, - { mp4v2::impl::itmf::CC_NOR, "nor", "Norway" }, - { mp4v2::impl::itmf::CC_DNK, "dnk", "Denmark" }, - { mp4v2::impl::itmf::CC_CHE, "che", "Switzerland" }, - { mp4v2::impl::itmf::CC_AUS, "aus", "Australia" }, - { mp4v2::impl::itmf::CC_NZL, "nzl", "New Zealand" }, - { mp4v2::impl::itmf::CC_JPN, "jpn", "Japan" }, - - { mp4v2::impl::itmf::CC_UNDEFINED } // must be last -}; - -/////////////////////////////////////////////////////////////////////////////// - -template <> -const itmf::EnumContentRating::Entry itmf::EnumContentRating::data[] = { - { mp4v2::impl::itmf::CR_NONE, "none", "None" }, - { mp4v2::impl::itmf::CR_CLEAN, "clean", "Clean" }, - { mp4v2::impl::itmf::CR_EXPLICIT, "explicit", "Explicit" }, - - { mp4v2::impl::itmf::CR_UNDEFINED } // must be last -}; - -/////////////////////////////////////////////////////////////////////////////// - -namespace itmf { - -/////////////////////////////////////////////////////////////////////////////// - -// must come after static data init -const EnumBasicType enumBasicType; -const EnumGenreType enumGenreType; -const EnumStikType enumStikType; -const EnumAccountType enumAccountType; -const EnumCountryCode enumCountryCode; -const EnumContentRating enumContentRating; - -/////////////////////////////////////////////////////////////////////////////// - -namespace { - struct ImageHeader { - BasicType type; - string data; - }; - - // POD static init does not need singletons - static ImageHeader IMAGE_HEADERS[] = { - { BT_BMP, "\x42\x4d" }, - { BT_GIF, "GIF87a" }, - { BT_GIF, "GIF89a" }, - { BT_JPEG, "\xff\xd8\xff\xe0" }, - { BT_PNG, "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a" }, - { BT_UNDEFINED } // must be last - }; -} - -BasicType -computeBasicType( const void* buffer, uint32_t size ) -{ - ImageHeader* found = NULL; - for( ImageHeader* p = IMAGE_HEADERS; p->type != BT_UNDEFINED; p++ ) { - ImageHeader& h = *p; - - if( size < h.data.size() ) - continue; - - if( memcmp(h.data.data(), buffer, h.data.size()) == 0 ) { - found = &h; - break; - } - } - - return found ? found->type : BT_IMPLICIT; -} - -/////////////////////////////////////////////////////////////////////////////// - -}}} // namespace mp4v2::impl::itmf diff --git a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/type.h b/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/type.h deleted file mode 100644 index 484c241c..00000000 --- a/debian/mp4v2/mp4v2-2.0.0~dfsg0/src/itmf/type.h +++ /dev/null @@ -1,296 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// 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, [email protected] -// -/////////////////////////////////////////////////////////////////////////////// - -#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 |