From e8dc45c83833a317a2518236829f2875ead1aa36 Mon Sep 17 00:00:00 2001 From: mio Date: Thu, 26 Sep 2024 21:42:32 +1000 Subject: [PATCH] Replace custom MP4 metadata parser with TagLib TagLib supports MP4 metadata since version 1.6 (2009). The custom parser code caused problems because there was a mismatch between the definition of TagLib::Tag and TagLib::MP4::Tag, and the implementation of the custom TagLib::MP4::Tag. This requires TagLib 1.11 and above. Resolves: TDE/tdemultimedia#82 Signed-off-by: mio (cherry picked from commit 460320e57786ec9a708ac7ba4191b15a305f9394) --- CMakeLists.txt | 1 - ConfigureChecks.cmake | 4 +- amarok/src/metabundle.cpp | 101 +++-- amarok/src/metadata/CMakeLists.txt | 8 +- amarok/src/metadata/m4a/CMakeLists.txt | 33 -- amarok/src/metadata/m4a/Makefile.am | 84 ---- amarok/src/metadata/m4a/boxfactory.cpp | 150 ------- amarok/src/metadata/m4a/boxfactory.h | 45 --- amarok/src/metadata/m4a/itunesalbbox.cpp | 89 ----- amarok/src/metadata/m4a/itunesalbbox.h | 50 --- amarok/src/metadata/m4a/itunesartbox.cpp | 89 ----- amarok/src/metadata/m4a/itunesartbox.h | 50 --- amarok/src/metadata/m4a/itunescmtbox.cpp | 89 ----- amarok/src/metadata/m4a/itunescmtbox.h | 50 --- amarok/src/metadata/m4a/itunescvrbox.cpp | 89 ----- amarok/src/metadata/m4a/itunescvrbox.h | 50 --- amarok/src/metadata/m4a/itunesdatabox.cpp | 63 --- amarok/src/metadata/m4a/itunesdatabox.h | 53 --- amarok/src/metadata/m4a/itunesdaybox.cpp | 89 ----- amarok/src/metadata/m4a/itunesdaybox.h | 50 --- amarok/src/metadata/m4a/itunesdiskbox.cpp | 93 ----- amarok/src/metadata/m4a/itunesdiskbox.h | 50 --- amarok/src/metadata/m4a/itunesgenbox.cpp | 89 ----- amarok/src/metadata/m4a/itunesgenbox.h | 50 --- amarok/src/metadata/m4a/itunesgrpbox.cpp | 89 ----- amarok/src/metadata/m4a/itunesgrpbox.h | 50 --- amarok/src/metadata/m4a/itunesnambox.cpp | 89 ----- amarok/src/metadata/m4a/itunesnambox.h | 50 --- amarok/src/metadata/m4a/itunestmpobox.cpp | 93 ----- amarok/src/metadata/m4a/itunestmpobox.h | 50 --- amarok/src/metadata/m4a/itunestrknbox.cpp | 93 ----- amarok/src/metadata/m4a/itunestrknbox.h | 50 --- amarok/src/metadata/m4a/ituneswrtbox.cpp | 89 ----- amarok/src/metadata/m4a/ituneswrtbox.h | 50 --- .../src/metadata/m4a/mp4audioproperties.cpp | 75 ---- amarok/src/metadata/m4a/mp4audioproperties.h | 73 ---- .../src/metadata/m4a/mp4audiosampleentry.cpp | 146 ------- amarok/src/metadata/m4a/mp4audiosampleentry.h | 57 --- amarok/src/metadata/m4a/mp4file.cpp | 377 ------------------ amarok/src/metadata/m4a/mp4file.h | 169 -------- amarok/src/metadata/m4a/mp4fourcc.cpp | 84 ---- amarok/src/metadata/m4a/mp4fourcc.h | 63 --- amarok/src/metadata/m4a/mp4hdlrbox.cpp | 75 ---- amarok/src/metadata/m4a/mp4hdlrbox.h | 53 --- amarok/src/metadata/m4a/mp4ilstbox.cpp | 97 ----- amarok/src/metadata/m4a/mp4ilstbox.h | 49 --- amarok/src/metadata/m4a/mp4isobox.cpp | 76 ---- amarok/src/metadata/m4a/mp4isobox.h | 67 ---- amarok/src/metadata/m4a/mp4isofullbox.cpp | 67 ---- amarok/src/metadata/m4a/mp4isofullbox.h | 57 --- amarok/src/metadata/m4a/mp4itunestag.cpp | 197 --------- amarok/src/metadata/m4a/mp4itunestag.h | 95 ----- amarok/src/metadata/m4a/mp4mdiabox.cpp | 111 ------ amarok/src/metadata/m4a/mp4mdiabox.h | 49 --- amarok/src/metadata/m4a/mp4metabox.cpp | 86 ---- amarok/src/metadata/m4a/mp4metabox.h | 49 --- amarok/src/metadata/m4a/mp4minfbox.cpp | 104 ----- amarok/src/metadata/m4a/mp4minfbox.h | 51 --- amarok/src/metadata/m4a/mp4moovbox.cpp | 86 ---- amarok/src/metadata/m4a/mp4moovbox.h | 49 --- amarok/src/metadata/m4a/mp4mvhdbox.cpp | 140 ------- amarok/src/metadata/m4a/mp4mvhdbox.h | 65 --- amarok/src/metadata/m4a/mp4propsproxy.cpp | 89 ----- amarok/src/metadata/m4a/mp4propsproxy.h | 65 --- amarok/src/metadata/m4a/mp4sampleentry.cpp | 59 --- amarok/src/metadata/m4a/mp4sampleentry.h | 54 --- amarok/src/metadata/m4a/mp4skipbox.cpp | 50 --- amarok/src/metadata/m4a/mp4skipbox.h | 50 --- amarok/src/metadata/m4a/mp4stblbox.cpp | 105 ----- amarok/src/metadata/m4a/mp4stblbox.h | 51 --- amarok/src/metadata/m4a/mp4stsdbox.cpp | 91 ----- amarok/src/metadata/m4a/mp4stsdbox.h | 51 --- amarok/src/metadata/m4a/mp4tagsproxy.cpp | 168 -------- amarok/src/metadata/m4a/mp4tagsproxy.h | 99 ----- amarok/src/metadata/m4a/mp4trakbox.cpp | 86 ---- amarok/src/metadata/m4a/mp4trakbox.h | 49 --- amarok/src/metadata/m4a/mp4udtabox.cpp | 95 ----- amarok/src/metadata/m4a/mp4udtabox.h | 49 --- .../m4a/taglib_mp4filetyperesolver.cpp | 42 -- .../metadata/m4a/taglib_mp4filetyperesolver.h | 36 -- amarok/src/metadata/mp4/CMakeLists.txt | 32 -- amarok/src/metadata/mp4/Makefile.am | 18 - amarok/src/metadata/mp4/mp4file.cpp | 260 ------------ amarok/src/metadata/mp4/mp4file.h | 86 ---- amarok/src/metadata/mp4/mp4properties.cpp | 122 ------ amarok/src/metadata/mp4/mp4properties.h | 93 ----- amarok/src/metadata/mp4/mp4tag.cpp | 183 --------- amarok/src/metadata/mp4/mp4tag.h | 234 ----------- .../mp4/taglib_mp4filetyperesolver.cpp | 53 --- .../metadata/mp4/taglib_mp4filetyperesolver.h | 42 -- amarok/src/metadata/tplugins.cpp | 10 +- 91 files changed, 82 insertions(+), 7229 deletions(-) delete mode 100644 amarok/src/metadata/m4a/CMakeLists.txt delete mode 100644 amarok/src/metadata/m4a/Makefile.am delete mode 100644 amarok/src/metadata/m4a/boxfactory.cpp delete mode 100644 amarok/src/metadata/m4a/boxfactory.h delete mode 100644 amarok/src/metadata/m4a/itunesalbbox.cpp delete mode 100644 amarok/src/metadata/m4a/itunesalbbox.h delete mode 100644 amarok/src/metadata/m4a/itunesartbox.cpp delete mode 100644 amarok/src/metadata/m4a/itunesartbox.h delete mode 100644 amarok/src/metadata/m4a/itunescmtbox.cpp delete mode 100644 amarok/src/metadata/m4a/itunescmtbox.h delete mode 100644 amarok/src/metadata/m4a/itunescvrbox.cpp delete mode 100644 amarok/src/metadata/m4a/itunescvrbox.h delete mode 100644 amarok/src/metadata/m4a/itunesdatabox.cpp delete mode 100644 amarok/src/metadata/m4a/itunesdatabox.h delete mode 100644 amarok/src/metadata/m4a/itunesdaybox.cpp delete mode 100644 amarok/src/metadata/m4a/itunesdaybox.h delete mode 100644 amarok/src/metadata/m4a/itunesdiskbox.cpp delete mode 100644 amarok/src/metadata/m4a/itunesdiskbox.h delete mode 100644 amarok/src/metadata/m4a/itunesgenbox.cpp delete mode 100644 amarok/src/metadata/m4a/itunesgenbox.h delete mode 100644 amarok/src/metadata/m4a/itunesgrpbox.cpp delete mode 100644 amarok/src/metadata/m4a/itunesgrpbox.h delete mode 100644 amarok/src/metadata/m4a/itunesnambox.cpp delete mode 100644 amarok/src/metadata/m4a/itunesnambox.h delete mode 100644 amarok/src/metadata/m4a/itunestmpobox.cpp delete mode 100644 amarok/src/metadata/m4a/itunestmpobox.h delete mode 100644 amarok/src/metadata/m4a/itunestrknbox.cpp delete mode 100644 amarok/src/metadata/m4a/itunestrknbox.h delete mode 100644 amarok/src/metadata/m4a/ituneswrtbox.cpp delete mode 100644 amarok/src/metadata/m4a/ituneswrtbox.h delete mode 100644 amarok/src/metadata/m4a/mp4audioproperties.cpp delete mode 100644 amarok/src/metadata/m4a/mp4audioproperties.h delete mode 100644 amarok/src/metadata/m4a/mp4audiosampleentry.cpp delete mode 100644 amarok/src/metadata/m4a/mp4audiosampleentry.h delete mode 100644 amarok/src/metadata/m4a/mp4file.cpp delete mode 100644 amarok/src/metadata/m4a/mp4file.h delete mode 100644 amarok/src/metadata/m4a/mp4fourcc.cpp delete mode 100644 amarok/src/metadata/m4a/mp4fourcc.h delete mode 100644 amarok/src/metadata/m4a/mp4hdlrbox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4hdlrbox.h delete mode 100644 amarok/src/metadata/m4a/mp4ilstbox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4ilstbox.h delete mode 100644 amarok/src/metadata/m4a/mp4isobox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4isobox.h delete mode 100644 amarok/src/metadata/m4a/mp4isofullbox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4isofullbox.h delete mode 100644 amarok/src/metadata/m4a/mp4itunestag.cpp delete mode 100644 amarok/src/metadata/m4a/mp4itunestag.h delete mode 100644 amarok/src/metadata/m4a/mp4mdiabox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4mdiabox.h delete mode 100644 amarok/src/metadata/m4a/mp4metabox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4metabox.h delete mode 100644 amarok/src/metadata/m4a/mp4minfbox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4minfbox.h delete mode 100644 amarok/src/metadata/m4a/mp4moovbox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4moovbox.h delete mode 100644 amarok/src/metadata/m4a/mp4mvhdbox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4mvhdbox.h delete mode 100644 amarok/src/metadata/m4a/mp4propsproxy.cpp delete mode 100644 amarok/src/metadata/m4a/mp4propsproxy.h delete mode 100644 amarok/src/metadata/m4a/mp4sampleentry.cpp delete mode 100644 amarok/src/metadata/m4a/mp4sampleentry.h delete mode 100644 amarok/src/metadata/m4a/mp4skipbox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4skipbox.h delete mode 100644 amarok/src/metadata/m4a/mp4stblbox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4stblbox.h delete mode 100644 amarok/src/metadata/m4a/mp4stsdbox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4stsdbox.h delete mode 100644 amarok/src/metadata/m4a/mp4tagsproxy.cpp delete mode 100644 amarok/src/metadata/m4a/mp4tagsproxy.h delete mode 100644 amarok/src/metadata/m4a/mp4trakbox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4trakbox.h delete mode 100644 amarok/src/metadata/m4a/mp4udtabox.cpp delete mode 100644 amarok/src/metadata/m4a/mp4udtabox.h delete mode 100644 amarok/src/metadata/m4a/taglib_mp4filetyperesolver.cpp delete mode 100644 amarok/src/metadata/m4a/taglib_mp4filetyperesolver.h delete mode 100644 amarok/src/metadata/mp4/CMakeLists.txt delete mode 100644 amarok/src/metadata/mp4/Makefile.am delete mode 100644 amarok/src/metadata/mp4/mp4file.cpp delete mode 100644 amarok/src/metadata/mp4/mp4file.h delete mode 100644 amarok/src/metadata/mp4/mp4properties.cpp delete mode 100644 amarok/src/metadata/mp4/mp4properties.h delete mode 100644 amarok/src/metadata/mp4/mp4tag.cpp delete mode 100644 amarok/src/metadata/mp4/mp4tag.h delete mode 100644 amarok/src/metadata/mp4/taglib_mp4filetyperesolver.cpp delete mode 100644 amarok/src/metadata/mp4/taglib_mp4filetyperesolver.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 238bbfd7..83acb904 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,6 @@ option( WITH_NJB "Enable Nomad Jukebox support" option( WITH_MTP "Enable MTP devices support" ${WITH_ALL_OPTIONS} ) option( WITH_IFP "Enable iRiver iFP Support" ${WITH_ALL_OPTIONS} ) option( WITH_IPOD "Enable iPod support from libgpod" ${WITH_ALL_OPTIONS} ) -option( WITH_MP4V2 "Enable MP4/AAC Tag Write Support from mp4v2" ${WITH_ALL_OPTIONS} ) option( WITH_DAAP "Enable DAAP Music Sharing Support" ${WITH_ALL_OPTIONS} ) option( WITH_EMBEDDED_SQLITE "Build with embedded Sqlite" OFF ) option( WITH_SYSTEM_SQLITE "Build with system Sqlite" ${WITH_ALL_OPTIONS} ) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index bab3b80d..fdbd5545 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -99,8 +99,8 @@ tde_restore( CMAKE_REQUIRED_LIBRARIES ) # taglib pkg_search_module( TAGLIB taglib ) if( TAGLIB_FOUND ) - if( ${TAGLIB_VERSION} VERSION_LESS "1.5" ) - tde_message_fatal( "taglib version must be at least 1.5" ) + if( ${TAGLIB_VERSION} VERSION_LESS "1.11" ) + tde_message_fatal( "taglib version must be at least 1.11" ) else( ) set( TAGLIB_15 1 ) message( STATUS "Found TAGLIB: ${TAGLIB_INCLUDE_DIRS}" ) diff --git a/amarok/src/metabundle.cpp b/amarok/src/metabundle.cpp index aa27b4d2..eb4ee327 100644 --- a/amarok/src/metabundle.cpp +++ b/amarok/src/metabundle.cpp @@ -35,11 +35,13 @@ #include //used to load genre list #include #include +#include #include #include #include #include #include +#include #include #include #include @@ -51,13 +53,6 @@ #include #include -#ifdef HAVE_MP4V2 -#include "metadata/mp4/mp4file.h" -#include "metadata/mp4/mp4tag.h" -#else -#include "metadata/m4a/mp4file.h" -#include "metadata/m4a/mp4itunestag.h" -#endif #include "lastfm.h" #include "metabundle.h" @@ -484,8 +479,14 @@ MetaBundle::embeddedImages( MetaBundle::EmbeddedImageList& images ) const loadImagesFromTag( *file->ID3v2Tag(), images ); } else if ( TagLib::MP4::File *file = dynamic_cast( fileref.file() ) ) { TagLib::MP4::Tag *mp4tag = dynamic_cast( file->tag() ); - if( mp4tag && mp4tag->cover().size() ) { - images.push_back( EmbeddedImage( mp4tag->cover(), "" ) ); + if (mp4tag) + { + TagLib::MP4::Item coverItem = mp4tag->item("covr"); + if (coverItem.isValid()) + { + TagLib::MP4::CoverArt coverArt = coverItem.toCoverArtList().front(); + images.push_back(EmbeddedImage(coverArt.data(), "")); + } } } } @@ -600,14 +601,39 @@ MetaBundle::readTags( TagLib::AudioProperties::ReadStyle readStyle, EmbeddedImag { m_type = mp4; TagLib::MP4::Tag *mp4tag = dynamic_cast( file->tag() ); - if( mp4tag ) + if (mp4tag) { - setComposer( TStringToTQString( mp4tag->composer() ) ); - setBpm( TQString::number( mp4tag->bpm() ).toFloat() ); - disc = TQString::number( mp4tag->disk() ); - compilation = TQString::number( mp4tag->compilation() ); - if ( images && mp4tag->cover().size() ) { - images->push_back( EmbeddedImage( mp4tag->cover(), "" ) ); + TagLib::PropertyMap properties = mp4tag->properties(); + + auto property = properties.find("COMPOSER"); + if (property != properties.end()) + { + setComposer(TStringToTQString(property->second.front()).stripWhiteSpace()); + } + + property = properties.find("BPM"); + if (property != properties.end()) + { + setBpm(TStringToTQString(property->second.front()).toFloat()); + } + + property = properties.find("DISCNUMBER"); + if (property != properties.end()) + { + disc = TStringToTQString(property->second.front()); + } + + property = properties.find("COMPILATION"); + if (property != properties.end()) + { + compilation = TStringToTQString(property->second.front()); + } + + TagLib::MP4::Item coverItem = mp4tag->item("covr"); + if (images && coverItem.isValid()) + { + TagLib::MP4::CoverArt coverArt = coverItem.toCoverArtList().front(); + images->push_back(EmbeddedImage(coverArt.data(), "")); } } } @@ -1360,18 +1386,47 @@ MetaBundle::setExtendedTag( TagLib::File *file, int tag, const TQString value ) flacFile->xiphComment()->addField( id, QStringToTString( value ), true ); } } - else if ( m_type == mp4 ) + else if (m_type == mp4) { TagLib::MP4::Tag *mp4tag = dynamic_cast( file->tag() ); - if( mp4tag ) + if (mp4tag) { - switch( tag ) + TagLib::PropertyMap properties = mp4tag->properties(); + + switch (tag) { - case ( composerTag ): mp4tag->setComposer( QStringToTString( value ) ); break; - case ( discNumberTag ): mp4tag->setDisk( value.toInt() ); - case ( bpmTag ): mp4tag->setBpm( value.toInt() ); // mp4 doesn't support float bpm - case ( compilationTag ): mp4tag->setCompilation( value.toInt() == CompilationYes ); + case composerTag: + { + properties.replace("COMPOSER", QStringToTString(value)); + break; + } + case discNumberTag: + { + properties.replace("DISCNUMBER", QStringToTString(value)); + break; + } + case bpmTag: + { + /* MP4 doesn't support float BPM */ + properties.replace("BPM", QStringToTString(value)); + break; + } + case albumArtistTag: + { + properties.replace("ALBUMARTIST", QStringToTString(value)); + break; + } + case compilationTag: + { + mp4tag->setItem("cpil", TagLib::MP4::Item(value.toInt() == CompilationYes)); + break; + } + default: + { + break; + } } + file->setProperties(properties); } } } diff --git a/amarok/src/metadata/CMakeLists.txt b/amarok/src/metadata/CMakeLists.txt index c460ff33..04ce9c77 100644 --- a/amarok/src/metadata/CMakeLists.txt +++ b/amarok/src/metadata/CMakeLists.txt @@ -15,12 +15,6 @@ add_subdirectory( rmff ) add_subdirectory( aac ) add_subdirectory( wav ) -if( WITH_MP4V2 ) - add_subdirectory( mp4 ) -else( ) - add_subdirectory( m4a ) -endif( ) - include_directories( ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/amarok/src @@ -36,5 +30,5 @@ tde_add_library( metadata STATIC_PIC SOURCES tplugins.cpp LINK tagasf-static tagaudible-static tagrealmedia-static - tagaac-static tagwav-static common-tagmp4-static + tagaac-static tagwav-static ) diff --git a/amarok/src/metadata/m4a/CMakeLists.txt b/amarok/src/metadata/m4a/CMakeLists.txt deleted file mode 100644 index 84dc6a04..00000000 --- a/amarok/src/metadata/m4a/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -################################################# -# -# (C) 2010-2011 Serghei Amelian -# serghei (DOT) amelian (AT) gmail.com -# -# Improvements and feedback are welcome -# -# This file is released under GPL >= 2 -# -################################################# - -include_directories( - ${CMAKE_BINARY_DIR} - ${TDE_INCLUDE_DIR} - ${TQT_INCLUDE_DIRS} - ${TAGLIB_INCLUDE_DIRS} -) - - -##### tagm4a (static) ########################### - -tde_add_library( common-tagmp4 STATIC_PIC - SOURCES - taglib_mp4filetyperesolver.cpp mp4file.cpp mp4itunestag.cpp mp4isobox.cpp - mp4isofullbox.cpp mp4skipbox.cpp mp4moovbox.cpp mp4mvhdbox.cpp - mp4ilstbox.cpp boxfactory.cpp mp4fourcc.cpp mp4udtabox.cpp mp4metabox.cpp - mp4tagsproxy.cpp mp4mdiabox.cpp mp4minfbox.cpp mp4audioproperties.cpp - mp4hdlrbox.cpp mp4stblbox.cpp mp4audiosampleentry.cpp mp4stsdbox.cpp - mp4sampleentry.cpp mp4trakbox.cpp mp4propsproxy.cpp itunesnambox.cpp - itunesartbox.cpp itunesalbbox.cpp itunescvrbox.cpp itunesgenbox.cpp - itunestrknbox.cpp itunesdaybox.cpp itunescmtbox.cpp itunesgrpbox.cpp - ituneswrtbox.cpp itunesdiskbox.cpp itunestmpobox.cpp itunesdatabox.cpp -) diff --git a/amarok/src/metadata/m4a/Makefile.am b/amarok/src/metadata/m4a/Makefile.am deleted file mode 100644 index 534fbcae..00000000 --- a/amarok/src/metadata/m4a/Makefile.am +++ /dev/null @@ -1,84 +0,0 @@ -SUBDIRS = -METASOURCES = AUTO -INCLUDES = $(all_includes) $(TAGLIB_CFLAGS) - -libtagm4a_la_LDFLAGS = $(all_libraries) -noinst_LTLIBRARIES = libtagm4a.la - -libtagm4a_la_SOURCES = \ - taglib_mp4filetyperesolver.cpp \ - mp4file.cpp \ - mp4itunestag.cpp \ - mp4isobox.cpp \ - mp4isofullbox.cpp \ - mp4skipbox.cpp \ - mp4moovbox.cpp \ - mp4mvhdbox.cpp \ - mp4ilstbox.cpp \ - boxfactory.cpp \ - mp4fourcc.cpp \ - mp4udtabox.cpp \ - mp4metabox.cpp \ - mp4tagsproxy.cpp \ - mp4mdiabox.cpp \ - mp4minfbox.cpp \ - mp4audioproperties.cpp \ - mp4hdlrbox.cpp \ - mp4stblbox.cpp \ - mp4audiosampleentry.cpp \ - mp4stsdbox.cpp \ - mp4sampleentry.cpp \ - mp4trakbox.cpp \ - mp4propsproxy.cpp \ - itunesnambox.cpp \ - itunesartbox.cpp \ - itunesalbbox.cpp \ - itunescvrbox.cpp \ - itunesgenbox.cpp \ - itunestrknbox.cpp \ - itunesdaybox.cpp \ - itunescmtbox.cpp \ - itunesgrpbox.cpp \ - ituneswrtbox.cpp \ - itunesdiskbox.cpp \ - itunestmpobox.cpp \ - itunesdatabox.cpp - -noinst_HEADERS = \ - taglib_mp4filetyperesolver.h \ - mp4file.h \ - mp4itunestag.h \ - mp4isobox.h \ - mp4isofullbox.h \ - mp4skipbox.h \ - mp4moovbox.h \ - mp4mvhdbox.h \ - mp4ilstbox.h \ - boxfactory.h \ - mp4fourcc.h \ - mp4udtabox.h \ - mp4metabox.h \ - mp4tagsproxy.h \ - mp4audioproperties.h \ - mp4hdlrbox.h \ - mp4propsproxy.h \ - mp4mdiabox.h \ - mp4stsdbox.h \ - mp4trakbox.h \ - mp4stblbox.h \ - mp4audiosampleentry.h \ - mp4minfbox.h \ - mp4sampleentry.h \ - itunesnambox.h \ - itunesartbox.h \ - itunesalbbox.h \ - itunesgenbox.h \ - itunestrknbox.h \ - itunesdaybox.h \ - itunescmtbox.h \ - itunescvrbox.h \ - itunesgrpbox.h \ - ituneswrtbox.h \ - itunesdiskbox.h \ - itunestmpobox.h \ - itunesdatabox.h diff --git a/amarok/src/metadata/m4a/boxfactory.cpp b/amarok/src/metadata/m4a/boxfactory.cpp deleted file mode 100644 index 0fc8eb4d..00000000 --- a/amarok/src/metadata/m4a/boxfactory.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "tstring.h" -#include "boxfactory.h" -#include "mp4skipbox.h" -#include "mp4moovbox.h" -#include "mp4mvhdbox.h" -#include "mp4trakbox.h" -#include "mp4mdiabox.h" -#include "mp4minfbox.h" -#include "mp4stblbox.h" -#include "mp4stsdbox.h" -#include "mp4hdlrbox.h" -#include "mp4udtabox.h" -#include "mp4metabox.h" -#include "mp4ilstbox.h" -#include "itunesnambox.h" -#include "itunesartbox.h" -#include "itunesalbbox.h" -#include "itunesgenbox.h" -#include "itunesdaybox.h" -#include "itunestrknbox.h" -#include "itunescmtbox.h" -#include "itunesgrpbox.h" -#include "ituneswrtbox.h" -#include "itunesdiskbox.h" -#include "itunestmpobox.h" -#include "itunescvrbox.h" -#include "itunesdatabox.h" - -using namespace TagLib; - -MP4::BoxFactory::BoxFactory() -{ -} - -MP4::BoxFactory::~BoxFactory() -{ -} - -//! factory function -MP4::Mp4IsoBox* MP4::BoxFactory::createInstance( TagLib::File* anyfile, MP4::Fourcc fourcc, uint size, long offset ) const -{ - MP4::File * file = dynamic_cast(anyfile); - if(!file) - return 0; - - //std::cout << "creating box for: " << fourcc.toString() << std::endl; - - switch( fourcc ) - { - case 0x6d6f6f76: // 'moov' - return new MP4::Mp4MoovBox( file, fourcc, size, offset ); - break; - case 0x6d766864: // 'mvhd' - return new MP4::Mp4MvhdBox( file, fourcc, size, offset ); - break; - case 0x7472616b: // 'trak' - return new MP4::Mp4TrakBox( file, fourcc, size, offset ); - break; - case 0x6d646961: // 'mdia' - return new MP4::Mp4MdiaBox( file, fourcc, size, offset ); - break; - case 0x6d696e66: // 'minf' - return new MP4::Mp4MinfBox( file, fourcc, size, offset ); - break; - case 0x7374626c: // 'stbl' - return new MP4::Mp4StblBox( file, fourcc, size, offset ); - break; - case 0x73747364: // 'stsd' - return new MP4::Mp4StsdBox( file, fourcc, size, offset ); - break; - case 0x68646c72: // 'hdlr' - return new MP4::Mp4HdlrBox( file, fourcc, size, offset ); - break; - case 0x75647461: // 'udta' - return new MP4::Mp4UdtaBox( file, fourcc, size, offset ); - break; - case 0x6d657461: // 'meta' - return new MP4::Mp4MetaBox( file, fourcc, size, offset ); - break; - case 0x696c7374: // 'ilst' - return new MP4::Mp4IlstBox( file, fourcc, size, offset ); - break; - case 0xa96e616d: // '_nam' - return new MP4::ITunesNamBox( file, fourcc, size, offset ); - break; - case 0xa9415254: // '_ART' - return new MP4::ITunesArtBox( file, fourcc, size, offset ); - break; - case 0xa9616c62: // '_alb' - return new MP4::ITunesAlbBox( file, fourcc, size, offset ); - break; - case 0xa967656e: // '_gen' - return new MP4::ITunesGenBox( file, fourcc, size, offset ); - break; - case 0x676e7265: // 'gnre' - return new MP4::ITunesGenBox( file, fourcc, size, offset ); - break; - case 0xa9646179: // '_day' - return new MP4::ITunesDayBox( file, fourcc, size, offset ); - break; - case 0x74726b6e: // 'trkn' - return new MP4::ITunesTrknBox( file, fourcc, size, offset ); - break; - case 0xa9636d74: // '_cmt' - return new MP4::ITunesCmtBox( file, fourcc, size, offset ); - break; - case 0xa9677270: // '_grp' - return new MP4::ITunesGrpBox( file, fourcc, size, offset ); - break; - case 0xa9777274: // '_wrt' - return new MP4::ITunesWrtBox( file, fourcc, size, offset ); - break; - case 0x6469736b: // 'disk' - return new MP4::ITunesDiskBox( file, fourcc, size, offset ); - break; - case 0x746d706f: // 'tmpo' - return new MP4::ITunesTmpoBox( file, fourcc, size, offset ); - break; - case 0x636f7672: // 'covr' - return new MP4::ITunesCvrBox( file, fourcc, size, offset ); - break; - case 0x64616461: // 'data' - return new MP4::ITunesDataBox( file, fourcc, size, offset ); - break; - default: - return new MP4::Mp4SkipBox( file, fourcc, size, offset ); - } -} diff --git a/amarok/src/metadata/m4a/boxfactory.h b/amarok/src/metadata/m4a/boxfactory.h deleted file mode 100644 index 7edcd6c9..00000000 --- a/amarok/src/metadata/m4a/boxfactory.h +++ /dev/null @@ -1,45 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef BOXFACTORY_H -#define BOXFACTORY_H - -#include "taglib.h" -#include "mp4isobox.h" - -namespace TagLib -{ - namespace MP4 - { - class BoxFactory - { - public: - BoxFactory(); - ~BoxFactory(); - - //! factory function - Mp4IsoBox* createInstance( TagLib::File* anyfile, MP4::Fourcc fourcc, uint size, long offset ) const; - }; // class BoxFactory - - } // namepace MP4 -} // namepace TagLib - -#endif // BOXFACTORY_H diff --git a/amarok/src/metadata/m4a/itunesalbbox.cpp b/amarok/src/metadata/m4a/itunesalbbox.cpp deleted file mode 100644 index c3412e57..00000000 --- a/amarok/src/metadata/m4a/itunesalbbox.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunesalbbox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesAlbBox::ITunesAlbBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesAlbBox::ITunesAlbBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesAlbBox::ITunesAlbBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesAlbBox::~ITunesAlbBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesAlbBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesAlbBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::album, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::String dataString( d->dataBox->data() ); - std::cout << "Content of album box: " << dataString << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/itunesalbbox.h b/amarok/src/metadata/m4a/itunesalbbox.h deleted file mode 100644 index f2462c28..00000000 --- a/amarok/src/metadata/m4a/itunesalbbox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESALBBOX_H -#define ITUNESALBBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesAlbBox: public Mp4IsoBox - { - public: - ITunesAlbBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesAlbBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesAlbBoxPrivate; - ITunesAlbBoxPrivate* d; - }; // class ITunesAlbBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESALBBOX_H diff --git a/amarok/src/metadata/m4a/itunesartbox.cpp b/amarok/src/metadata/m4a/itunesartbox.cpp deleted file mode 100644 index 8944c950..00000000 --- a/amarok/src/metadata/m4a/itunesartbox.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunesartbox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesArtBox::ITunesArtBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesArtBox::ITunesArtBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesArtBox::ITunesArtBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesArtBox::~ITunesArtBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesArtBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesArtBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::artist, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::String dataString( d->dataBox->data() ); - std::cout << "Content of artist box: " << dataString << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/itunesartbox.h b/amarok/src/metadata/m4a/itunesartbox.h deleted file mode 100644 index 5d197aac..00000000 --- a/amarok/src/metadata/m4a/itunesartbox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESARTBOX_H -#define ITUNESARTBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesArtBox: public Mp4IsoBox - { - public: - ITunesArtBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesArtBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesArtBoxPrivate; - ITunesArtBoxPrivate* d; - }; // class ITunesArtBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESARTBOX_H diff --git a/amarok/src/metadata/m4a/itunescmtbox.cpp b/amarok/src/metadata/m4a/itunescmtbox.cpp deleted file mode 100644 index 4b2c9063..00000000 --- a/amarok/src/metadata/m4a/itunescmtbox.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunescmtbox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesCmtBox::ITunesCmtBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesCmtBox::ITunesCmtBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesCmtBox::ITunesCmtBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesCmtBox::~ITunesCmtBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesCmtBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesCmtBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::comment, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::String dataString( d->dataBox->data() ); - std::cout << "Content of title box: " << dataString << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/itunescmtbox.h b/amarok/src/metadata/m4a/itunescmtbox.h deleted file mode 100644 index 83ad65d6..00000000 --- a/amarok/src/metadata/m4a/itunescmtbox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESCMTBOX_H -#define ITUNESCMTBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesCmtBox: public Mp4IsoBox - { - public: - ITunesCmtBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesCmtBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesCmtBoxPrivate; - ITunesCmtBoxPrivate* d; - }; // class ITunesCmtBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESCMTBOX_H diff --git a/amarok/src/metadata/m4a/itunescvrbox.cpp b/amarok/src/metadata/m4a/itunescvrbox.cpp deleted file mode 100644 index 0fa7ab89..00000000 --- a/amarok/src/metadata/m4a/itunescvrbox.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunescvrbox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesCvrBox::ITunesCvrBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesCvrBox::ITunesCvrBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesCvrBox::ITunesCvrBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesCvrBox::~ITunesCvrBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesCvrBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesCvrBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::cover, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::String dataString( d->dataBox->data() ); - std::cout << "Content of album box: " << dataString << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/itunescvrbox.h b/amarok/src/metadata/m4a/itunescvrbox.h deleted file mode 100644 index a2693c26..00000000 --- a/amarok/src/metadata/m4a/itunescvrbox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESCVRBOX_H -#define ITUNESCVRBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesCvrBox: public Mp4IsoBox - { - public: - ITunesCvrBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesCvrBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesCvrBoxPrivate; - ITunesCvrBoxPrivate* d; - }; // class ITunesCvrBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESCVRBOX_H diff --git a/amarok/src/metadata/m4a/itunesdatabox.cpp b/amarok/src/metadata/m4a/itunesdatabox.cpp deleted file mode 100644 index 7565a42a..00000000 --- a/amarok/src/metadata/m4a/itunesdatabox.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunesdatabox.h" -#include "tbytevector.h" -#include "mp4isobox.h" -#include "tfile.h" - -using namespace TagLib; - -class MP4::ITunesDataBox::ITunesDataBoxPrivate -{ -public: - ByteVector data; -}; - -MP4::ITunesDataBox::ITunesDataBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoFullBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesDataBox::ITunesDataBoxPrivate(); -} - -MP4::ITunesDataBox::~ITunesDataBox() -{ - delete d; -} - -ByteVector MP4::ITunesDataBox::data() const -{ - return d->data; -} - -//! parse the content of the box -void MP4::ITunesDataBox::parse() -{ - // skip first 4 byte - don't know what they are supposed to be for - simply 4 zeros - file()->seek( 4, TagLib::File::Current ); - // read contents - remaining size is box_size-12-4 (12:fullbox header, 4:starting zeros of data box) -#if 0 - std::cout << " reading data box with data length: " << size()-16 << std::endl; -#endif - d->data = file()->readBlock( size()-12-4 ); -} - diff --git a/amarok/src/metadata/m4a/itunesdatabox.h b/amarok/src/metadata/m4a/itunesdatabox.h deleted file mode 100644 index d0c802ca..00000000 --- a/amarok/src/metadata/m4a/itunesdatabox.h +++ /dev/null @@ -1,53 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESDATABOX_H -#define ITUNESDATABOX_H - -#include "mp4isofullbox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesDataBox: public Mp4IsoFullBox - { - public: - ITunesDataBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesDataBox(); - - //! get the internal data, which can be txt or binary data as well - ByteVector data() const; - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesDataBoxPrivate; - ITunesDataBoxPrivate* d; - }; // class ITunesDataBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESDATABOX_H diff --git a/amarok/src/metadata/m4a/itunesdaybox.cpp b/amarok/src/metadata/m4a/itunesdaybox.cpp deleted file mode 100644 index 4cd9c330..00000000 --- a/amarok/src/metadata/m4a/itunesdaybox.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunesdaybox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesDayBox::ITunesDayBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesDayBox::ITunesDayBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesDayBox::ITunesDayBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesDayBox::~ITunesDayBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesDayBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesDayBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::year, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::String dataString( d->dataBox->data() ); - std::cout << "Content of day box: " << dataString.substr(0,4) << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/itunesdaybox.h b/amarok/src/metadata/m4a/itunesdaybox.h deleted file mode 100644 index 72913638..00000000 --- a/amarok/src/metadata/m4a/itunesdaybox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESDAYBOX_H -#define ITUNESDAYBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesDayBox: public Mp4IsoBox - { - public: - ITunesDayBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesDayBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesDayBoxPrivate; - ITunesDayBoxPrivate* d; - }; // class ITunesDayBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESDAYBOX_H diff --git a/amarok/src/metadata/m4a/itunesdiskbox.cpp b/amarok/src/metadata/m4a/itunesdiskbox.cpp deleted file mode 100644 index 7cd1ad82..00000000 --- a/amarok/src/metadata/m4a/itunesdiskbox.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunesdiskbox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesDiskBox::ITunesDiskBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesDiskBox::ITunesDiskBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesDiskBox::ITunesDiskBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesDiskBox::~ITunesDiskBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesDiskBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesDiskBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::disk, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::ByteVector trknData = d->dataBox->data(); - TagLib::String trknumber = TagLib::String::number( static_cast( static_cast(trknData[0]) << 24 | - static_cast(trknData[1]) << 16 | - static_cast(trknData[2]) << 8 | - static_cast(trknData[3]) ) ); - std::cout << "Content of tracknumber box: " << trknumber << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/itunesdiskbox.h b/amarok/src/metadata/m4a/itunesdiskbox.h deleted file mode 100644 index bad73da5..00000000 --- a/amarok/src/metadata/m4a/itunesdiskbox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESDISKBOX_H -#define ITUNESDISKBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesDiskBox: public Mp4IsoBox - { - public: - ITunesDiskBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesDiskBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesDiskBoxPrivate; - ITunesDiskBoxPrivate* d; - }; // class ITunesDiskBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESDISKBOX_H diff --git a/amarok/src/metadata/m4a/itunesgenbox.cpp b/amarok/src/metadata/m4a/itunesgenbox.cpp deleted file mode 100644 index af344aa3..00000000 --- a/amarok/src/metadata/m4a/itunesgenbox.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunesgenbox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesGenBox::ITunesGenBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesGenBox::ITunesGenBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesGenBox::ITunesGenBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesGenBox::~ITunesGenBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesGenBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesGenBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::genre, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::String dataString( d->dataBox->data() ); - std::cout << "Content of genre box: " << dataString << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/itunesgenbox.h b/amarok/src/metadata/m4a/itunesgenbox.h deleted file mode 100644 index deb7fe36..00000000 --- a/amarok/src/metadata/m4a/itunesgenbox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESGENBOX_H -#define ITUNESGENBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesGenBox: public Mp4IsoBox - { - public: - ITunesGenBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesGenBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesGenBoxPrivate; - ITunesGenBoxPrivate* d; - }; // class ITunesGenBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESGENBOX_H diff --git a/amarok/src/metadata/m4a/itunesgrpbox.cpp b/amarok/src/metadata/m4a/itunesgrpbox.cpp deleted file mode 100644 index ca512a1f..00000000 --- a/amarok/src/metadata/m4a/itunesgrpbox.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunesgrpbox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesGrpBox::ITunesGrpBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesGrpBox::ITunesGrpBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesGrpBox::ITunesGrpBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesGrpBox::~ITunesGrpBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesGrpBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesGrpBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::grouping, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::String dataString( d->dataBox->data() ); - std::cout << "Content of title box: " << dataString << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/itunesgrpbox.h b/amarok/src/metadata/m4a/itunesgrpbox.h deleted file mode 100644 index 62922f0c..00000000 --- a/amarok/src/metadata/m4a/itunesgrpbox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESGRPBOX_H -#define ITUNESGRPBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesGrpBox: public Mp4IsoBox - { - public: - ITunesGrpBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesGrpBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesGrpBoxPrivate; - ITunesGrpBoxPrivate* d; - }; // class ITunesGrpBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESGRPBOX_H diff --git a/amarok/src/metadata/m4a/itunesnambox.cpp b/amarok/src/metadata/m4a/itunesnambox.cpp deleted file mode 100644 index 569258bd..00000000 --- a/amarok/src/metadata/m4a/itunesnambox.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunesnambox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesNamBox::ITunesNamBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesNamBox::ITunesNamBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesNamBox::ITunesNamBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesNamBox::~ITunesNamBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesNamBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesNamBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::title, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::String dataString( d->dataBox->data() ); - std::cout << "Content of title box: " << dataString << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/itunesnambox.h b/amarok/src/metadata/m4a/itunesnambox.h deleted file mode 100644 index 434fd84e..00000000 --- a/amarok/src/metadata/m4a/itunesnambox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESNAMBOX_H -#define ITUNESNAMBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesNamBox: public Mp4IsoBox - { - public: - ITunesNamBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesNamBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesNamBoxPrivate; - ITunesNamBoxPrivate* d; - }; // class ITunesNamBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESNAMBOX_H diff --git a/amarok/src/metadata/m4a/itunestmpobox.cpp b/amarok/src/metadata/m4a/itunestmpobox.cpp deleted file mode 100644 index 0abdfa43..00000000 --- a/amarok/src/metadata/m4a/itunestmpobox.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunestmpobox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesTmpoBox::ITunesTmpoBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesTmpoBox::ITunesTmpoBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesTmpoBox::ITunesTmpoBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesTmpoBox::~ITunesTmpoBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesTmpoBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesTmpoBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::bpm, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::ByteVector trknData = d->dataBox->data(); - TagLib::String trknumber = TagLib::String::number( static_cast( static_cast(trknData[0]) << 24 | - static_cast(trknData[1]) << 16 | - static_cast(trknData[2]) << 8 | - static_cast(trknData[3]) ) ); - std::cout << "Content of tracknumber box: " << trknumber << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/itunestmpobox.h b/amarok/src/metadata/m4a/itunestmpobox.h deleted file mode 100644 index 981f9384..00000000 --- a/amarok/src/metadata/m4a/itunestmpobox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESTMPOBOX_H -#define ITUNESTMPOBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesTmpoBox: public Mp4IsoBox - { - public: - ITunesTmpoBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesTmpoBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesTmpoBoxPrivate; - ITunesTmpoBoxPrivate* d; - }; // class ITunesTmpoBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESTMPOBOX_H diff --git a/amarok/src/metadata/m4a/itunestrknbox.cpp b/amarok/src/metadata/m4a/itunestrknbox.cpp deleted file mode 100644 index 162a954a..00000000 --- a/amarok/src/metadata/m4a/itunestrknbox.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "itunestrknbox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesTrknBox::ITunesTrknBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesTrknBox::ITunesTrknBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesTrknBox::ITunesTrknBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesTrknBox::~ITunesTrknBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesTrknBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesTrknBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::trackno, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::ByteVector trknData = d->dataBox->data(); - TagLib::String trknumber = TagLib::String::number( static_cast( static_cast(trknData[0]) << 24 | - static_cast(trknData[1]) << 16 | - static_cast(trknData[2]) << 8 | - static_cast(trknData[3]) ) ); - std::cout << "Content of tracknumber box: " << trknumber << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/itunestrknbox.h b/amarok/src/metadata/m4a/itunestrknbox.h deleted file mode 100644 index f603e1f7..00000000 --- a/amarok/src/metadata/m4a/itunestrknbox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESTRKNBOX_H -#define ITUNESTRKNBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesTrknBox: public Mp4IsoBox - { - public: - ITunesTrknBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesTrknBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesTrknBoxPrivate; - ITunesTrknBoxPrivate* d; - }; // class ITunesTrknBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESTRKNBOX_H diff --git a/amarok/src/metadata/m4a/ituneswrtbox.cpp b/amarok/src/metadata/m4a/ituneswrtbox.cpp deleted file mode 100644 index ec8d2b45..00000000 --- a/amarok/src/metadata/m4a/ituneswrtbox.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "ituneswrtbox.h" -#include "itunesdatabox.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "tfile.h" -#include "mp4tagsproxy.h" - -using namespace TagLib; - -class MP4::ITunesWrtBox::ITunesWrtBoxPrivate -{ -public: - ITunesDataBox* dataBox; -}; - -MP4::ITunesWrtBox::ITunesWrtBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::ITunesWrtBox::ITunesWrtBoxPrivate(); - d->dataBox = 0; -} - -MP4::ITunesWrtBox::~ITunesWrtBox() -{ - if( d->dataBox != 0 ) - delete d->dataBox; - delete d; -} - -//! parse the content of the box -void MP4::ITunesWrtBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - // parse data box - uint size; - MP4::Fourcc fourcc; - - if(mp4file->readSizeAndType( size, fourcc ) == true) - { - // check for type - must be 'data' - if( fourcc != MP4::Fourcc("data") ) - { - std::cerr << "bad atom in itunes tag - skipping it." << std::endl; - // jump over data tag - mp4file->seek( size-8, TagLib::File::Current ); - return; - } - d->dataBox = new ITunesDataBox( mp4file, fourcc, size, mp4file->tell() ); - d->dataBox->parsebox(); - } - else - { - // reading unsuccessful - serious error! - std::cerr << "Error in parsing ITunesWrtBox - serious Error in taglib!" << std::endl; - return; - } - // register data box - mp4file->tagProxy()->registerBox( Mp4TagsProxy::composer, d->dataBox ); - -#if 0 - // get data pointer - just for debugging... - TagLib::String dataString( d->dataBox->data() ); - std::cout << "Content of title box: " << dataString << std::endl; -#endif -} - diff --git a/amarok/src/metadata/m4a/ituneswrtbox.h b/amarok/src/metadata/m4a/ituneswrtbox.h deleted file mode 100644 index 740d94c6..00000000 --- a/amarok/src/metadata/m4a/ituneswrtbox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef ITUNESWRTBOX_H -#define ITUNESWRTBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class ITunesWrtBox: public Mp4IsoBox - { - public: - ITunesWrtBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~ITunesWrtBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class ITunesWrtBoxPrivate; - ITunesWrtBoxPrivate* d; - }; // class ITunesWrtBox - - } // namespace MP4 -} // namespace TagLib - -#endif // ITUNESWRTBOX_H diff --git a/amarok/src/metadata/m4a/mp4audioproperties.cpp b/amarok/src/metadata/m4a/mp4audioproperties.cpp deleted file mode 100644 index 77afab15..00000000 --- a/amarok/src/metadata/m4a/mp4audioproperties.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "mp4audioproperties.h" -#include "mp4propsproxy.h" - -using namespace TagLib; - -class MP4::AudioProperties::AudioPropertiesPrivate -{ -public: - MP4::Mp4PropsProxy* propsproxy; -}; // AudioPropertiesPrivate - -MP4::AudioProperties::AudioProperties():TagLib::AudioProperties(TagLib::AudioProperties::Average) -{ - d = new MP4::AudioProperties::AudioPropertiesPrivate(); -} - -MP4::AudioProperties::~AudioProperties() -{ - delete d; -} - -void MP4::AudioProperties::setProxy( Mp4PropsProxy* proxy ) -{ - d->propsproxy = proxy; -} - -int MP4::AudioProperties::length() const -{ - if( d->propsproxy == 0 ) - return 0; - return d->propsproxy->seconds(); -} - -int MP4::AudioProperties::bitrate() const -{ - if( d->propsproxy == 0 ) - return 0; - return d->propsproxy->bitRate()/1000; -} - -int MP4::AudioProperties::sampleRate() const -{ - if( d->propsproxy == 0 ) - return 0; - return d->propsproxy->sampleRate(); -} - -int MP4::AudioProperties::channels() const -{ - if( d->propsproxy == 0 ) - return 0; - return d->propsproxy->channels(); -} - diff --git a/amarok/src/metadata/m4a/mp4audioproperties.h b/amarok/src/metadata/m4a/mp4audioproperties.h deleted file mode 100644 index 4e617905..00000000 --- a/amarok/src/metadata/m4a/mp4audioproperties.h +++ /dev/null @@ -1,73 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4AUDIOPROPERTIES_H -#define MP4AUDIOPROPERTIES_H MP4AUDIOPROPERTIES_H - -#include "audioproperties.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4PropsProxy; - - class AudioProperties : public TagLib::AudioProperties - { - public: - //! constructor - AudioProperties(); - //! destructor - ~AudioProperties(); - - //! function to set the proxy - void setProxy( Mp4PropsProxy* proxy ); - - /*! - * Returns the length of the file in seconds. - */ - int length() const; - - /*! - * Returns the most appropriate bit rate for the file in kb/s. For constant - * bitrate formats this is simply the bitrate of the file. For variable - * bitrate formats this is either the average or nominal bitrate. - */ - int bitrate() const; - - /*! - * Returns the sample rate in Hz. - */ - int sampleRate() const; - - /*! - * Returns the number of audio channels. - */ - int channels() const; - - private: - class AudioPropertiesPrivate; - AudioPropertiesPrivate* d; - }; - } // namespace MP4 -} // namespace TagLib - -#endif // MP4AUDIOPROPERTIES_H diff --git a/amarok/src/metadata/m4a/mp4audiosampleentry.cpp b/amarok/src/metadata/m4a/mp4audiosampleentry.cpp deleted file mode 100644 index 3c129c55..00000000 --- a/amarok/src/metadata/m4a/mp4audiosampleentry.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include "mp4audiosampleentry.h" -#include "mp4isobox.h" -#include "mp4file.h" -#include "mp4propsproxy.h" - -using namespace TagLib; - -class MP4::Mp4AudioSampleEntry::Mp4AudioSampleEntryPrivate -{ -public: - uint channelcount; - uint samplerate; - uint bitrate; -}; - -MP4::Mp4AudioSampleEntry::Mp4AudioSampleEntry( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4SampleEntry(file, fourcc, size, offset) -{ - d = new MP4::Mp4AudioSampleEntry::Mp4AudioSampleEntryPrivate(); -} - -MP4::Mp4AudioSampleEntry::~Mp4AudioSampleEntry() -{ - delete d; -} - -uint MP4::Mp4AudioSampleEntry::channels() const -{ - return d->channelcount; -} - -uint MP4::Mp4AudioSampleEntry::samplerate() const -{ - return d->samplerate; -} - -uint MP4::Mp4AudioSampleEntry::bitrate() const -{ - return d->bitrate; -} - -void MP4::Mp4AudioSampleEntry::parseEntry() -{ - TagLib::MP4::File* mp4file = dynamic_cast(file()); - if(!mp4file) - return; - - // read 8 reserved bytes - mp4file->seek( 8, TagLib::File::Current ); - // read channelcount - if(!mp4file->readShort( d->channelcount )) - return; - // seek over samplesize, pre_defined and reserved - mp4file->seek( 6, TagLib::File::Current ); - // read samplerate - if(!mp4file->readInt( d->samplerate )) - return; - - // register box at proxy - mp4file->propProxy()->registerAudioSampleEntry( this ); - - - //std::cout << "fourcc of audio sample entry: " << fourcc().toString() << std::endl; - // check for both mp4a (plain files) and drms (encrypted files) - if( (fourcc() == MP4::Fourcc("mp4a")) || - (fourcc() == MP4::Fourcc("drms")) ) - { - TagLib::MP4::Fourcc fourcc; - uint esds_size; - - if (!mp4file->readSizeAndType( esds_size, fourcc )) - return; - - // read esds' main parts - if( size()-48 > 0 ) - ByteVector flags_version = mp4file->readBlock(4); - else - return; - - ByteVector EsDescrTag = mp4file->readBlock(1); - // first 4 bytes contain full box specifics (version & flags) - // upcoming byte must be ESDescrTag (0x03) - if( EsDescrTag[0] == 0x03 ) - { - uint descr_len = mp4file->readSystemsLen(); - uint EsId; - if( !mp4file->readShort( EsId ) ) - return; - ByteVector priority = mp4file->readBlock(1); - if( descr_len < 20 ) - return; - } - else - { - uint EsId; - if( !mp4file->readShort( EsId ) ) - return; - } - // read decoder configuration tag (0x04) - ByteVector DecCfgTag = mp4file->readBlock(1); - if( DecCfgTag[0] != 0x04 ) - return; - // read decoder configuration length - // uint deccfg_len = mp4file->readSystemsLen(); - // read object type Id - ByteVector objId = mp4file->readBlock(1); - // read stream type id - ByteVector strId = mp4file->readBlock(1); - // read buffer Size DB - ByteVector bufferSizeDB = mp4file->readBlock(3); - // read max bitrate - uint max_bitrate; - if( !mp4file->readInt( max_bitrate ) ) - return; - // read average bitrate - if( !mp4file->readInt( d->bitrate ) ) - return; - // skip the rest - mp4file->seek( offset()+size()-8, File::Beginning ); - } - else - mp4file->seek( size()-36, File::Current ); -} - diff --git a/amarok/src/metadata/m4a/mp4audiosampleentry.h b/amarok/src/metadata/m4a/mp4audiosampleentry.h deleted file mode 100644 index d0b5479c..00000000 --- a/amarok/src/metadata/m4a/mp4audiosampleentry.h +++ /dev/null @@ -1,57 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4AUDIOSAMPLEENTRY_H -#define MP4AUDIOSAMPLEENTRY_H - -#include "mp4sampleentry.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4AudioSampleEntry: public Mp4SampleEntry - { - public: - Mp4AudioSampleEntry( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4AudioSampleEntry(); - - //! function to get the number of channels - uint channels() const; - //! function to get the sample rate - uint samplerate() const; - //! function to get the average bitrate of the audio stream - uint bitrate() const; - - private: - //! parse the content of the box - void parseEntry(); - - protected: - class Mp4AudioSampleEntryPrivate; - Mp4AudioSampleEntryPrivate* d; - }; // class Mp4AudioSampleEntry - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4AUDIOSAMPLEENTRY_H diff --git a/amarok/src/metadata/m4a/mp4file.cpp b/amarok/src/metadata/m4a/mp4file.cpp deleted file mode 100644 index a1733a67..00000000 --- a/amarok/src/metadata/m4a/mp4file.cpp +++ /dev/null @@ -1,377 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include -#include "tlist.h" - -#include "mp4itunestag.h" -#include "mp4file.h" -#include "boxfactory.h" -#include "mp4tagsproxy.h" -#include "mp4propsproxy.h" -#include "mp4audioproperties.h" -#include "itunesdatabox.h" - -using namespace TagLib; - -class MP4::File::FilePrivate -{ -public: - //! list for all boxes of the mp4 file - TagLib::List boxes; - //! the box factory - will create all boxes by tag and size - MP4::BoxFactory boxfactory; - //! proxy for the tags is filled after parsing - MP4::Mp4TagsProxy tagsProxy; - //! proxy for audio properties - MP4::Mp4PropsProxy propsProxy; - //! the tag returned by tag() function - MP4::Tag mp4tag; - //! container for the audio properties returned by properties() function - MP4::AudioProperties mp4audioproperties; - //! is set to valid after successfully parsing - bool isValid; -}; - -//! function to fill the tags with converted proxy data, which has been parsed out of the file previously -static void fillTagFromProxy( MP4::Mp4TagsProxy& proxy, MP4::Tag& mp4tag ); - -MP4::File::File(const char *file, bool , AudioProperties::ReadStyle ) - :TagLib::File( file ) -{ - // create member container - d = new MP4::File::FilePrivate(); - - - d->isValid = false; - uint size; - MP4::Fourcc fourcc; - - while( readSizeAndType( size, fourcc ) == true ) - { - // create the appropriate subclass and parse it - MP4::Mp4IsoBox* curbox = d->boxfactory.createInstance( this, fourcc, size, tell() ); - curbox->parsebox(); - d->boxes.append( curbox ); - } - - for( TagLib::List::Iterator iter = d->boxes.begin(); - iter != d->boxes.end(); - iter++ ) - { - if( (*iter)->fourcc() == MP4::Fourcc("moov") ) - { - d->isValid = true; - break; - } - } - - //if( d->isValid ) - //debug( "file is valid" ); - //else - //debug( "file is NOT valid" ); - - // fill tags from proxy data - fillTagFromProxy( d->tagsProxy, d->mp4tag ); -} - -MP4::File::~File() -{ - TagLib::List::Iterator delIter; - for( delIter = d->boxes.begin(); - delIter != d->boxes.end(); - delIter++ ) - { - delete *delIter; - } - delete d; -} - -Tag *MP4::File::tag() const -{ - return &d->mp4tag; -} - -AudioProperties * MP4::File::audioProperties() const -{ - d->mp4audioproperties.setProxy( &d->propsProxy ); - return &d->mp4audioproperties; -} - -bool MP4::File::save() -{ - return false; -} - -void MP4::File::remove() -{ -} - -uint MP4::File::readSystemsLen() -{ - uint length = 0; - uint nbytes = 0; - ByteVector input; - uchar tmp_input; - - do - { - input = readBlock(1); - tmp_input = static_cast(input[0]); - nbytes++; - length = (length<<7) | (tmp_input&0x7F); - } while( (tmp_input&0x80) && (nbytes<4) ); - - return length; -} - -bool MP4::File::readSizeAndType( uint& size, MP4::Fourcc& fourcc ) -{ - // read the two blocks from file - ByteVector readsize = readBlock(4); - ByteVector readtype = readBlock(4); - - if( (readsize.size() != 4) || (readtype.size() != 4) ) - return false; - - // set size - size = static_cast(readsize[0]) << 24 | - static_cast(readsize[1]) << 16 | - static_cast(readsize[2]) << 8 | - static_cast(readsize[3]); - - // type and size seem to be part of the stored size - if( size < 8 ) - return false; - - // set fourcc - fourcc = readtype.data(); - - return true; -} - -bool MP4::File::readInt( uint& toRead ) -{ - ByteVector readbuffer = readBlock(4); - if( readbuffer.size() != 4 ) - return false; - - toRead = static_cast(readbuffer[0]) << 24 | - static_cast(readbuffer[1]) << 16 | - static_cast(readbuffer[2]) << 8 | - static_cast(readbuffer[3]); - return true; -} - -bool MP4::File::readShort( uint& toRead ) -{ - ByteVector readbuffer = readBlock(2); - if( readbuffer.size() != 2 ) - return false; - - toRead = static_cast(readbuffer[0]) << 8 | - static_cast(readbuffer[1]); - return true; -} - -bool MP4::File::readLongLong( TagLib::ulonglong& toRead ) -{ - ByteVector readbuffer = readBlock(8); - if( readbuffer.size() != 8 ) - return false; - - toRead = static_cast(static_cast(readbuffer[0])) << 56 | - static_cast(static_cast(readbuffer[1])) << 48 | - static_cast(static_cast(readbuffer[2])) << 40 | - static_cast(static_cast(readbuffer[3])) << 32 | - static_cast(static_cast(readbuffer[4])) << 24 | - static_cast(static_cast(readbuffer[5])) << 16 | - static_cast(static_cast(readbuffer[6])) << 8 | - static_cast(static_cast(readbuffer[7])); - return true; -} - -bool MP4::File::readFourcc( TagLib::MP4::Fourcc& fourcc ) -{ - ByteVector readtype = readBlock(4); - - if( readtype.size() != 4) - return false; - - // set fourcc - fourcc = readtype.data(); - - return true; -} - -MP4::Mp4TagsProxy* MP4::File::tagProxy() const -{ - return &d->tagsProxy; -} - -MP4::Mp4PropsProxy* MP4::File::propProxy() const -{ - return &d->propsProxy; -} - -void fillTagFromProxy( MP4::Mp4TagsProxy& proxy, MP4::Tag& mp4tag ) -{ - // tmp buffer for each tag - MP4::ITunesDataBox* databox; - - databox = proxy.titleData(); - if( databox != 0 ) - { - // convert data to string - TagLib::String datastring( databox->data(), String::UTF8 ); - // check if string was set - if( !datastring.isEmpty() ) - mp4tag.setTitle( datastring ); - } - - databox = proxy.artistData(); - if( databox != 0 ) - { - // convert data to string - TagLib::String datastring( databox->data(), String::UTF8 ); - // check if string was set - if( !datastring.isEmpty() ) - mp4tag.setArtist( datastring ); - } - - databox = proxy.albumData(); - if( databox != 0 ) - { - // convert data to string - TagLib::String datastring( databox->data(), String::UTF8 ); - // check if string was set - if( !datastring.isEmpty() ) - mp4tag.setAlbum( datastring ); - } - - databox = proxy.genreData(); - if( databox != 0 ) - { - // convert data to string - TagLib::String datastring( databox->data(), String::UTF8 ); - // check if string was set - if( !datastring.isEmpty() ) - mp4tag.setGenre( datastring ); - } - - databox = proxy.yearData(); - if( databox != 0 ) - { - // convert data to string - TagLib::String datastring( databox->data(), String::UTF8 ); - // check if string was set - if( !datastring.isEmpty() ) - mp4tag.setYear( datastring.toInt() ); - } - - databox = proxy.trknData(); - if( databox != 0 ) - { - // convert data to uint - TagLib::ByteVector datavec = databox->data(); - if( datavec.size() >= 4 ) - { - uint trackno = static_cast( static_cast(datavec[0]) << 24 | - static_cast(datavec[1]) << 16 | - static_cast(datavec[2]) << 8 | - static_cast(datavec[3]) ); - mp4tag.setTrack( trackno ); - } - else - mp4tag.setTrack( 0 ); - } - - databox = proxy.commentData(); - if( databox != 0 ) - { - // convert data to string - TagLib::String datastring( databox->data(), String::UTF8 ); - // check if string was set - if( !datastring.isEmpty() ) - mp4tag.setComment( datastring ); - } - - databox = proxy.groupingData(); - if( databox != 0 ) - { - // convert data to string - TagLib::String datastring( databox->data(), String::UTF8 ); - // check if string was set - if( !datastring.isEmpty() ) - mp4tag.setGrouping( datastring ); - } - - databox = proxy.composerData(); - if( databox != 0 ) - { - // convert data to string - TagLib::String datastring( databox->data(), String::UTF8 ); - // check if string was set - if( !datastring.isEmpty() ) - mp4tag.setComposer( datastring ); - } - - databox = proxy.diskData(); - if( databox != 0 ) - { - // convert data to uint - TagLib::ByteVector datavec = databox->data(); - if( datavec.size() >= 4 ) - { - uint discno = static_cast( static_cast(datavec[0]) << 24 | - static_cast(datavec[1]) << 16 | - static_cast(datavec[2]) << 8 | - static_cast(datavec[3]) ); - mp4tag.setDisk( discno ); - } - else - mp4tag.setDisk( 0 ); - } - - databox = proxy.bpmData(); - if( databox != 0 ) - { - // convert data to uint - TagLib::ByteVector datavec = databox->data(); - - if( datavec.size() >= 2 ) - { - uint bpm = static_cast( static_cast(datavec[0]) << 8 | - static_cast(datavec[1]) ); - mp4tag.setBpm( bpm ); - } - else - mp4tag.setBpm( 0 ); - } - - databox = proxy.coverData(); - if( databox != 0 ) - { - // get byte vector - mp4tag.setCover( databox->data() ); - } -} diff --git a/amarok/src/metadata/m4a/mp4file.h b/amarok/src/metadata/m4a/mp4file.h deleted file mode 100644 index abe42e91..00000000 --- a/amarok/src/metadata/m4a/mp4file.h +++ /dev/null @@ -1,169 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -/*************************************************************************** - copyright : (C) 2002, 2003 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * - * USA * - ***************************************************************************/ - -#ifndef TAGLIB_MP4FILE_H -#define TAGLIB_MP4FILE_H - -#include -#include - -#include "mp4fourcc.h" - -namespace TagLib { - - typedef unsigned long long ulonglong; - - class Tag; - - namespace MP4 - { - class Mp4TagsProxy; - class Mp4PropsProxy; - - //! An implementation of TagLib::File with mp4 itunes specific methods - - /*! - * This implements and provides an interface for mp4 itunes files to the - * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing - * the abstract TagLib::File API as well as providing some additional - * information specific to mp4 itunes files. (TODO) - */ - - class File : public TagLib::File - { - public: - /*! - * Contructs an mp4 itunes file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - */ - File(const char *file, bool readProperties = true, - AudioProperties::ReadStyle propertiesStyle = AudioProperties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the Tag for this file. This will be an APE tag, an ID3v1 tag - * or a combination of the two. - */ - virtual TagLib::Tag *tag() const; - - /*! - * Returns the mp4 itunes::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual AudioProperties *audioProperties() const; - - /*! - * Saves the file. - */ - virtual bool save(); - - /*! - * This will remove all tags. - * - * \note This will also invalidate pointers to the tags - * as their memory will be freed. - * \note In order to make the removal permanent save() still needs to be called - */ - void remove(); - - /*! - * Helper function for parsing the MP4 file - reads the size and type of the next box. - * Returns true if read succeeded - not at EOF - */ - bool readSizeAndType( uint& size, MP4::Fourcc& fourcc ); - - /*! - * Helper function to read the length of an descriptor in systems manner - */ - uint readSystemsLen(); - - /*! - * Helper function for reading an unsigned int out of the file (big endian method) - */ - bool readInt( uint& toRead ); - - /*! - * Helper function for reading an unsigned short out of the file (big endian method) - */ - bool readShort( uint& toRead ); - - /*! - * Helper function for reading an unsigned long long (64bit) out of the file (big endian method) - */ - bool readLongLong( TagLib::ulonglong& toRead ); - - /*! - * Helper function to read a fourcc code - */ - bool readFourcc( TagLib::MP4::Fourcc& fourcc ); - - /*! - * Function to get the tags proxy for registration of the tags boxes. - * The proxy provides direct access to the data boxes of the certain tags - normally - * covered by several levels of subboxes - */ - Mp4TagsProxy* tagProxy() const; - - /*! - * Function to get the properties proxy for registration of the properties boxes. - * The proxy provides direct access to the needed boxes describing audio properties. - */ - Mp4PropsProxy* propProxy() const; - - private: - File(const File &); - File &operator=(const File &); - - class FilePrivate; - FilePrivate *d; - }; - - } // namespace MP4 - -} // namespace TagLib - -#endif // TAGLIB_MP4FILE_H diff --git a/amarok/src/metadata/m4a/mp4fourcc.cpp b/amarok/src/metadata/m4a/mp4fourcc.cpp deleted file mode 100644 index dac0f99e..00000000 --- a/amarok/src/metadata/m4a/mp4fourcc.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "mp4fourcc.h" - -using namespace TagLib; - -MP4::Fourcc::Fourcc() -{ - m_fourcc = 0U; -} - -MP4::Fourcc::Fourcc( TagLib::String fourcc ) -{ - m_fourcc = 0U; - - if( fourcc.size() >= 4 ) - m_fourcc = static_cast(fourcc[0]) << 24 | - static_cast(fourcc[1]) << 16 | - static_cast(fourcc[2]) << 8 | - static_cast(fourcc[3]); -} - -MP4::Fourcc::~Fourcc() -{} - -TagLib::String MP4::Fourcc::toString() const -{ - TagLib::String fourcc; - fourcc.append(static_cast(m_fourcc >> 24 & 0xFF)); - fourcc.append(static_cast(m_fourcc >> 16 & 0xFF)); - fourcc.append(static_cast(m_fourcc >> 8 & 0xFF)); - fourcc.append(static_cast(m_fourcc & 0xFF)); - - return fourcc; -} - -MP4::Fourcc::operator unsigned int() const -{ - return m_fourcc; -} - -bool MP4::Fourcc::operator == (unsigned int fourccB ) const -{ - return (m_fourcc==fourccB); -} - -bool MP4::Fourcc::operator != (unsigned int fourccB ) const -{ - return (m_fourcc!=fourccB); -} - -MP4::Fourcc& MP4::Fourcc::operator = (unsigned int fourcc ) -{ - m_fourcc = fourcc; - return *this; -} - -MP4::Fourcc& MP4::Fourcc::operator = (char fourcc[4]) -{ - m_fourcc = static_cast(fourcc[0]) << 24 | - static_cast(fourcc[1]) << 16 | - static_cast(fourcc[2]) << 8 | - static_cast(fourcc[3]); - return *this; -} diff --git a/amarok/src/metadata/m4a/mp4fourcc.h b/amarok/src/metadata/m4a/mp4fourcc.h deleted file mode 100644 index 90e498ad..00000000 --- a/amarok/src/metadata/m4a/mp4fourcc.h +++ /dev/null @@ -1,63 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4FOURCC_H -#define MP4FOURCC_H - -#include "tstring.h" - -namespace TagLib -{ - namespace MP4 - { - /*! union for easy fourcc / type handling */ - class Fourcc - { - public: - //! std constructor - Fourcc(); - //! string constructor - Fourcc(TagLib::String fourcc); - - //! destructor - ~Fourcc(); - - //! function to get a string version of the fourcc - TagLib::String toString() const; - //! cast operator to unsigned int - operator unsigned int() const; - //! comparison operator - bool operator == (unsigned int fourccB ) const; - //! comparison operator - bool operator != (unsigned int fourccB ) const; - //! assigment operator for unsigned int - Fourcc& operator = (unsigned int fourcc ); - //! assigment operator for character string - Fourcc& operator = (char fourcc[4]); - - private: - uint m_fourcc; /*!< integer code of the fourcc */ - }; - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4FOURCC_H diff --git a/amarok/src/metadata/m4a/mp4hdlrbox.cpp b/amarok/src/metadata/m4a/mp4hdlrbox.cpp deleted file mode 100644 index 99bbe5f8..00000000 --- a/amarok/src/metadata/m4a/mp4hdlrbox.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include -#include "mp4hdlrbox.h" -#include "boxfactory.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::Mp4HdlrBox::Mp4HdlrBoxPrivate -{ -public: - uint pre_defined; - MP4::Fourcc handler_type; - TagLib::String hdlr_string; -}; // class Mp4HdlrBoxPrivate - -MP4::Mp4HdlrBox::Mp4HdlrBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - : Mp4IsoFullBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4HdlrBox::Mp4HdlrBoxPrivate(); -} - -MP4::Mp4HdlrBox::~Mp4HdlrBox() -{ - delete d; -} - -MP4::Fourcc MP4::Mp4HdlrBox::hdlr_type() const -{ - return d->handler_type; -} - -TagLib::String MP4::Mp4HdlrBox::hdlr_string() const -{ - return d->hdlr_string; -} - -void MP4::Mp4HdlrBox::parse() -{ - uint totalread = 12+20; - - TagLib::MP4::File* mp4file = static_cast( file() ); - if( mp4file->readInt( d->pre_defined ) == false ) - return; - if( mp4file->readFourcc( d->handler_type ) == false ) - return; - - // read reserved into trash - mp4file->seek( 3*4, TagLib::File::Current ); - - // check if there are bytes remaining - used for hdlr string - if( size() - totalread != 0 ) - d->hdlr_string = mp4file->readBlock( size()-totalread ); -} diff --git a/amarok/src/metadata/m4a/mp4hdlrbox.h b/amarok/src/metadata/m4a/mp4hdlrbox.h deleted file mode 100644 index d993bc09..00000000 --- a/amarok/src/metadata/m4a/mp4hdlrbox.h +++ /dev/null @@ -1,53 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4HDLRBOX_H -#define MP4HDLRBOX_H - -#include "mp4isofullbox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4HdlrBox: public Mp4IsoFullBox - { - public: - Mp4HdlrBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4HdlrBox(); - - //! parse hdlr contents - void parse(); - //! get the handler type - MP4::Fourcc hdlr_type() const; - //! get the hdlr string - TagLib::String hdlr_string() const; - - private: - class Mp4HdlrBoxPrivate; - Mp4HdlrBoxPrivate* d; - }; // Mp4HdlrBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4HDLRBOX_H diff --git a/amarok/src/metadata/m4a/mp4ilstbox.cpp b/amarok/src/metadata/m4a/mp4ilstbox.cpp deleted file mode 100644 index 81b6e7a9..00000000 --- a/amarok/src/metadata/m4a/mp4ilstbox.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tlist.h" -#include -#include "mp4ilstbox.h" -#include "boxfactory.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::Mp4IlstBox::Mp4IlstBoxPrivate -{ -public: - //! container for all boxes in ilst box - TagLib::List ilstBoxes; - //! a box factory for creating the appropriate boxes - MP4::BoxFactory boxfactory; -}; // class Mp4IlstBoxPrivate - -MP4::Mp4IlstBox::Mp4IlstBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - : Mp4IsoBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4IlstBox::Mp4IlstBoxPrivate(); -} - -MP4::Mp4IlstBox::~Mp4IlstBox() -{ - TagLib::List::Iterator delIter; - for( delIter = d->ilstBoxes.begin(); - delIter != d->ilstBoxes.end(); - delIter++ ) - { - delete *delIter; - } - delete d; -} - -void MP4::Mp4IlstBox::parse() -{ -#if 0 - std::cout << " parsing ilst box" << std::endl; -#endif - - TagLib::MP4::File* mp4file = static_cast( file() ); - - uint totalsize = 8; - // parse all contained boxes - uint size; - MP4::Fourcc fourcc; - -#if 0 - std::cout << " "; -#endif - while( (mp4file->readSizeAndType( size, fourcc ) == true) ) - { - totalsize += size; - - // check for errors - if( totalsize > MP4::Mp4IsoBox::size() ) - { - std::cerr << "Error in mp4 file " << mp4file->name() << " ilst box contains bad box with name: " << fourcc.toString() << std::endl; - return; - } - - // create the appropriate subclass and parse it - MP4::Mp4IsoBox* curbox = d->boxfactory.createInstance( mp4file, fourcc, size, mp4file->tell() ); - curbox->parsebox(); - d->ilstBoxes.append( curbox ); - - // check for end of ilst box - if( totalsize == MP4::Mp4IsoBox::size() ) - break; - -#if 0 - std::cout << " "; -#endif - } -} diff --git a/amarok/src/metadata/m4a/mp4ilstbox.h b/amarok/src/metadata/m4a/mp4ilstbox.h deleted file mode 100644 index 43df7e5d..00000000 --- a/amarok/src/metadata/m4a/mp4ilstbox.h +++ /dev/null @@ -1,49 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4ILSTBOX_H -#define MP4ILSTBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4IlstBox: public Mp4IsoBox - { - public: - Mp4IlstBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4IlstBox(); - - //! parse ilst contents - void parse(); - - private: - class Mp4IlstBoxPrivate; - Mp4IlstBoxPrivate* d; - }; // Mp4IlstBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4ILSTBOX_H diff --git a/amarok/src/metadata/m4a/mp4isobox.cpp b/amarok/src/metadata/m4a/mp4isobox.cpp deleted file mode 100644 index 6a559b89..00000000 --- a/amarok/src/metadata/m4a/mp4isobox.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "mp4isobox.h" -#include "tfile.h" - -using namespace TagLib; - -class MP4::Mp4IsoBox::Mp4IsoBoxPrivate -{ -public: - MP4::Fourcc fourcc; - uint size; - long offset; - TagLib::File* file; -}; - -MP4::Mp4IsoBox::Mp4IsoBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) -{ - d = new MP4::Mp4IsoBox::Mp4IsoBoxPrivate(); - d->file = file; - d->fourcc = fourcc; - d->size = size; - d->offset = offset; -} - -MP4::Mp4IsoBox::~Mp4IsoBox() -{ - delete d; -} - -void MP4::Mp4IsoBox::parsebox() -{ - // seek to offset - file()->seek( offset(), File::Beginning ); - // simply call parse method of sub class - parse(); -} - -MP4::Fourcc MP4::Mp4IsoBox::fourcc() const -{ - return d->fourcc; -} - -uint MP4::Mp4IsoBox::size() const -{ - return d->size; -} - -long MP4::Mp4IsoBox::offset() const -{ - return d->offset; -} - -TagLib::File* MP4::Mp4IsoBox::file() const -{ - return d->file; -} diff --git a/amarok/src/metadata/m4a/mp4isobox.h b/amarok/src/metadata/m4a/mp4isobox.h deleted file mode 100644 index 4d4edc9c..00000000 --- a/amarok/src/metadata/m4a/mp4isobox.h +++ /dev/null @@ -1,67 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4ISOBOX_H -#define MP4ISOBOX_H - -#include "taglib.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - class File; - - namespace MP4 - { - class Mp4IsoBox - { - public: - //! constructor for base class - Mp4IsoBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - //! destructor - simply freeing private ptr - virtual ~Mp4IsoBox(); - - //! function to get the fourcc code - MP4::Fourcc fourcc() const; - //! function to get the size of tha atom/box - uint size() const; - //! function to get the offset of the atom in the mp4 file - long offset() const; - - //! parse wrapper to get common interface for both box and fullbox - virtual void parsebox(); - //! pure virtual function for all subclasses to implement - virtual void parse() = 0; - - protected: - //! function to get the file pointer - TagLib::File* file() const; - - protected: - class Mp4IsoBoxPrivate; - Mp4IsoBoxPrivate* d; - }; - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4ISOBOX_H - diff --git a/amarok/src/metadata/m4a/mp4isofullbox.cpp b/amarok/src/metadata/m4a/mp4isofullbox.cpp deleted file mode 100644 index b104681f..00000000 --- a/amarok/src/metadata/m4a/mp4isofullbox.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "mp4isofullbox.h" -#include "tfile.h" - -using namespace TagLib; - -class MP4::Mp4IsoFullBox::Mp4IsoFullBoxPrivate -{ -public: - uchar version; - uint flags; -}; // Mp4IsoFullBoxPrivate - - -MP4::Mp4IsoFullBox::Mp4IsoFullBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) -: Mp4IsoBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4IsoFullBox::Mp4IsoFullBoxPrivate(); -} - -MP4::Mp4IsoFullBox::~Mp4IsoFullBox() -{ - delete d; -} - -void MP4::Mp4IsoFullBox::parsebox() -{ - // seek to offset - Mp4IsoBox::file()->seek(Mp4IsoBox::offset(), File::Beginning ); - // parse version and flags - ByteVector version_flags = Mp4IsoBox::file()->readBlock(4); - d->version = version_flags[0]; - d->flags = version_flags[1] << 16 || version_flags[2] << 8 || version_flags[3]; - // call parse method of subclass - parse(); -} - -uchar MP4::Mp4IsoFullBox::version() -{ - return d->version; -} - -uint MP4::Mp4IsoFullBox::flags() -{ - return d->flags; -} - diff --git a/amarok/src/metadata/m4a/mp4isofullbox.h b/amarok/src/metadata/m4a/mp4isofullbox.h deleted file mode 100644 index bc01b619..00000000 --- a/amarok/src/metadata/m4a/mp4isofullbox.h +++ /dev/null @@ -1,57 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4ISOFULLBOX_H -#define MP4ISOFULLBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4IsoFullBox : public Mp4IsoBox - { - public: - //! constructor for full box - Mp4IsoFullBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - //! destructor for mp4 iso full box - virtual ~Mp4IsoFullBox(); - - //! function to get the version of box - uchar version(); - //! function to get the flag map - uint flags(); - - //! parse wrapper to get common interface for both box and fullbox - virtual void parsebox(); - - protected: - class Mp4IsoFullBoxPrivate; - Mp4IsoFullBoxPrivate* d; - }; - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4ISOFULLBOX_H - diff --git a/amarok/src/metadata/m4a/mp4itunestag.cpp b/amarok/src/metadata/m4a/mp4itunestag.cpp deleted file mode 100644 index c3ec182d..00000000 --- a/amarok/src/metadata/m4a/mp4itunestag.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "mp4itunestag.h" - -using namespace TagLib; - -class MP4::Tag::TagPrivate -{ -public: - MP4::File* mp4file; - TagLib::String title; - TagLib::String artist; - TagLib::String album; - TagLib::String genre; - uint year; - uint track; - TagLib::String comment; - TagLib::String grouping; - TagLib::String composer; - uint disk; - uint bpm; - bool isEmpty; - TagLib::ByteVector cover; -}; - - -MP4::Tag::Tag( ) -{ - d = new TagPrivate(); - d->year = 0; - d->track = 0; - d->disk = 0; - d->bpm = 0; - d->isEmpty = true; -} - -MP4::Tag::~Tag() -{ - delete d; -} - -String MP4::Tag::title() const -{ - return d->title; -} - -String MP4::Tag::artist() const -{ - return d->artist; -} - -String MP4::Tag::album() const -{ - return d->album; -} - -String MP4::Tag::comment() const -{ - return d->comment; -} - -String MP4::Tag::genre() const -{ - return d->genre; -} - -uint MP4::Tag::year() const -{ - return d->year; -} - -uint MP4::Tag::track() const -{ - return d->track; -} - -String MP4::Tag::grouping() const -{ - return d->grouping; -} - -String MP4::Tag::composer() const -{ - return d->composer; -} - -uint MP4::Tag::disk() const -{ - return d->disk; -} - -uint MP4::Tag::bpm() const -{ - return d->bpm; -} - -TagLib::ByteVector MP4::Tag::cover() const -{ - return d->cover; -} - -void MP4::Tag::setTitle(const String &s) -{ - d->title = s; - d->isEmpty = false; -} - -void MP4::Tag::setArtist(const String &s) -{ - d->artist = s; - d->isEmpty = false; -} - -void MP4::Tag::setAlbum(const String &s) -{ - d->album = s; - d->isEmpty = false; -} - -void MP4::Tag::setComment(const String &s) -{ - d->comment = s; - d->isEmpty = false; -} - -void MP4::Tag::setGenre(const String &s) -{ - d->genre = s; - d->isEmpty = false; -} - -void MP4::Tag::setYear(const uint i) -{ - d->year = i; - d->isEmpty = false; -} - -void MP4::Tag::setTrack(const uint i) -{ - d->track = i; - d->isEmpty = false; -} - -void MP4::Tag::setGrouping(const String &s) -{ - d->grouping = s; - d->isEmpty = false; -} - -void MP4::Tag::setComposer(const String &s) -{ - d->composer = s; - d->isEmpty = false; -} - -void MP4::Tag::setDisk(const uint i) -{ - d->disk = i; - d->isEmpty = false; -} - -void MP4::Tag::setBpm(const uint i) -{ - d->bpm = i; - d->isEmpty = false; -} - -void MP4::Tag::setCover(const TagLib::ByteVector& c) -{ - d->cover = c; - d->isEmpty = false; -} - -bool MP4::Tag::isEmpty() const -{ - return d->isEmpty; -} - diff --git a/amarok/src/metadata/m4a/mp4itunestag.h b/amarok/src/metadata/m4a/mp4itunestag.h deleted file mode 100644 index 9e572a7f..00000000 --- a/amarok/src/metadata/m4a/mp4itunestag.h +++ /dev/null @@ -1,95 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4ITUNESTAG_H -#define MP4ITUNESTAG_H - -#include "taglib.h" -#include "tstring.h" -#include "tag.h" - -namespace TagLib -{ - namespace MP4 - { - class File; - - class Tag : public TagLib::Tag - { - public: - /*! - * Constructs an empty MP4 iTunes tag. - */ - Tag( ); - - /*! - * Destroys this Tag instance. - */ - virtual ~Tag(); - - // Reimplementations. - - virtual String title() const; - virtual String artist() const; - virtual String album() const; - virtual String comment() const; - virtual String genre() const; - virtual uint year() const; - virtual uint track() const; - - virtual void setTitle(const String &s); - virtual void setArtist(const String &s); - virtual void setAlbum(const String &s); - virtual void setComment(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(const uint i); - virtual void setTrack(const uint i); - - // MP4 specific fields - - String grouping() const; - String composer() const; - uint disk() const; - uint bpm() const; - ByteVector cover() const; - int compilation() const { return -1; } - - void setGrouping(const String &s); - void setComposer(const String &s); - void setDisk(const uint i); - void setBpm(const uint i); - void setCover( const ByteVector& cover ); - void setCompilation( bool /*isCompilation*/ ) {} - - virtual bool isEmpty() const; - - private: - Tag(const Tag &); - Tag &operator=(const Tag &); - - class TagPrivate; - TagPrivate *d; - }; - } // namespace MP4 - -} // namespace TagLib - -#endif // MP4ITUNESTAG_H diff --git a/amarok/src/metadata/m4a/mp4mdiabox.cpp b/amarok/src/metadata/m4a/mp4mdiabox.cpp deleted file mode 100644 index f4e76191..00000000 --- a/amarok/src/metadata/m4a/mp4mdiabox.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tlist.h" -#include -#include "mp4mdiabox.h" -#include "mp4hdlrbox.h" -#include "mp4minfbox.h" -#include "boxfactory.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::Mp4MdiaBox::Mp4MdiaBoxPrivate -{ -public: - //! container for all boxes in mdia box - TagLib::List mdiaBoxes; - //! a box factory for creating the appropriate boxes - MP4::BoxFactory boxfactory; -}; // class Mp4MdiaBoxPrivate - -MP4::Mp4MdiaBox::Mp4MdiaBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - : Mp4IsoBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4MdiaBox::Mp4MdiaBoxPrivate(); -} - -MP4::Mp4MdiaBox::~Mp4MdiaBox() -{ - TagLib::List::Iterator delIter; - for( delIter = d->mdiaBoxes.begin(); - delIter != d->mdiaBoxes.end(); - delIter++ ) - { - delete *delIter; - } - delete d; -} - -void MP4::Mp4MdiaBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - uint totalsize = 8; - // parse all contained boxes - uint size; - MP4::Fourcc fourcc; - - // stores the current handler type - TagLib::MP4::Fourcc hdlrtype; - - while( (mp4file->readSizeAndType( size, fourcc ) == true) ) - { - totalsize += size; - - // check for errors - if( totalsize > MP4::Mp4IsoBox::size() ) - { - std::cerr << "Error in mp4 file " << mp4file->name() << " mdia box contains bad box with name: " << fourcc.toString() << std::endl; - return; - } - - // create the appropriate subclass and parse it - MP4::Mp4IsoBox* curbox = d->boxfactory.createInstance( mp4file, fourcc, size, mp4file->tell() ); - if( static_cast( fourcc ) == 0x6d696e66 /*"minf"*/ ) - { - // cast to minf - Mp4MinfBox* minfbox = dynamic_cast( curbox ); - if(!minfbox) - return; - // set handler type - minfbox->setHandlerType( hdlrtype ); - } - - curbox->parsebox(); - d->mdiaBoxes.append( curbox ); - - if(static_cast( fourcc ) == 0x68646c72 /*"hdlr"*/ ) - { - // cast to hdlr box - Mp4HdlrBox* hdlrbox = dynamic_cast( curbox ); - if(!hdlrbox) - return; - // get handler type - hdlrtype = hdlrbox->hdlr_type(); - } - // check for end of mdia box - if( totalsize == MP4::Mp4IsoBox::size() ) - break; - - } -} diff --git a/amarok/src/metadata/m4a/mp4mdiabox.h b/amarok/src/metadata/m4a/mp4mdiabox.h deleted file mode 100644 index da631052..00000000 --- a/amarok/src/metadata/m4a/mp4mdiabox.h +++ /dev/null @@ -1,49 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4MDIABOX_H -#define MP4MDIABOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4MdiaBox: public Mp4IsoBox - { - public: - Mp4MdiaBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4MdiaBox(); - - //! parse mdia contents - void parse(); - - private: - class Mp4MdiaBoxPrivate; - Mp4MdiaBoxPrivate* d; - }; // Mp4MdiaBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4MDIABOX_H diff --git a/amarok/src/metadata/m4a/mp4metabox.cpp b/amarok/src/metadata/m4a/mp4metabox.cpp deleted file mode 100644 index 2bebe2ec..00000000 --- a/amarok/src/metadata/m4a/mp4metabox.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include -#include "mp4metabox.h" -#include "boxfactory.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::Mp4MetaBox::Mp4MetaBoxPrivate -{ -public: - //! container for all boxes in meta box - TagLib::List metaBoxes; - //! a box factory for creating the appropriate boxes - MP4::BoxFactory boxfactory; -}; // class Mp4MetaBoxPrivate - -MP4::Mp4MetaBox::Mp4MetaBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - : Mp4IsoFullBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4MetaBox::Mp4MetaBoxPrivate(); -} - -MP4::Mp4MetaBox::~Mp4MetaBox() -{ - TagLib::List::Iterator delIter; - for( delIter = d->metaBoxes.begin(); - delIter != d->metaBoxes.end(); - delIter++ ) - { - delete *delIter; - } - delete d; -} - -void MP4::Mp4MetaBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - uint totalsize = 12; // initial size of box - // parse all contained boxes - uint size; - MP4::Fourcc fourcc; - - while( (mp4file->readSizeAndType( size, fourcc ) == true) ) - { - totalsize += size; - - // check for errors - if( totalsize > MP4::Mp4IsoBox::size() ) - { - std::cerr << "Error in mp4 file " << mp4file->name() << " meta box contains bad box with name: " << fourcc.toString() << std::endl; - return; - } - - // create the appropriate subclass and parse it - MP4::Mp4IsoBox* curbox = d->boxfactory.createInstance( mp4file, fourcc, size, mp4file->tell() ); - curbox->parsebox(); - d->metaBoxes.append( curbox ); - - // check for end of meta box - if( totalsize == MP4::Mp4IsoBox::size() ) - break; - } -} diff --git a/amarok/src/metadata/m4a/mp4metabox.h b/amarok/src/metadata/m4a/mp4metabox.h deleted file mode 100644 index 3f8847f8..00000000 --- a/amarok/src/metadata/m4a/mp4metabox.h +++ /dev/null @@ -1,49 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4METABOX_H -#define MP4METABOX_H - -#include "mp4isofullbox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4MetaBox: public Mp4IsoFullBox - { - public: - Mp4MetaBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4MetaBox(); - - //! parse meta contents - void parse(); - - private: - class Mp4MetaBoxPrivate; - Mp4MetaBoxPrivate* d; - }; // Mp4MetaBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4METABOX_H diff --git a/amarok/src/metadata/m4a/mp4minfbox.cpp b/amarok/src/metadata/m4a/mp4minfbox.cpp deleted file mode 100644 index 027f36f3..00000000 --- a/amarok/src/metadata/m4a/mp4minfbox.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tlist.h" -#include -#include "mp4minfbox.h" -#include "mp4stblbox.h" -#include "boxfactory.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::Mp4MinfBox::Mp4MinfBoxPrivate -{ -public: - //! container for all boxes in minf box - TagLib::List minfBoxes; - //! a box factory for creating the appropriate boxes - MP4::BoxFactory boxfactory; - //! stores the handler type of the current trak - MP4::Fourcc handler_type; -}; // class Mp4MinfBoxPrivate - -MP4::Mp4MinfBox::Mp4MinfBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - : Mp4IsoBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4MinfBox::Mp4MinfBoxPrivate(); -} - -MP4::Mp4MinfBox::~Mp4MinfBox() -{ - TagLib::List::Iterator delIter; - for( delIter = d->minfBoxes.begin(); - delIter != d->minfBoxes.end(); - delIter++ ) - { - delete *delIter; - } - delete d; -} - -void MP4::Mp4MinfBox::setHandlerType( MP4::Fourcc fourcc ) -{ - d->handler_type = fourcc; -} - -void MP4::Mp4MinfBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - uint totalsize = 8; - // parse all contained boxes - uint size; - MP4::Fourcc fourcc; - - while( (mp4file->readSizeAndType( size, fourcc ) == true) ) - { - totalsize += size; - - // check for errors - if( totalsize > MP4::Mp4IsoBox::size() ) - { - std::cerr << "Error in mp4 file " << mp4file->name() << " minf box contains bad box with name: " << fourcc.toString() << std::endl; - return; - } - - // create the appropriate subclass and parse it - MP4::Mp4IsoBox* curbox = d->boxfactory.createInstance( mp4file, fourcc, size, mp4file->tell() ); - if(static_cast( fourcc ) == 0x7374626c /*stbl*/ ) - { - // cast to hdlr box - Mp4StblBox* stblbox = dynamic_cast( curbox ); - if(!stblbox) - return; - // set handler type - stblbox->setHandlerType( d->handler_type ); - } - - curbox->parsebox(); - d->minfBoxes.append( curbox ); - - // check for end of minf box - if( totalsize == MP4::Mp4IsoBox::size() ) - break; - } -} diff --git a/amarok/src/metadata/m4a/mp4minfbox.h b/amarok/src/metadata/m4a/mp4minfbox.h deleted file mode 100644 index bd438676..00000000 --- a/amarok/src/metadata/m4a/mp4minfbox.h +++ /dev/null @@ -1,51 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4MINFBOX_H -#define MP4MINFBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4MinfBox: public Mp4IsoBox - { - public: - Mp4MinfBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4MinfBox(); - - //! parse minf contents - void parse(); - //! set the handler type - needed for stsd - void setHandlerType( MP4::Fourcc fourcc ); - - private: - class Mp4MinfBoxPrivate; - Mp4MinfBoxPrivate* d; - }; // Mp4MinfBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4MINFBOX_H diff --git a/amarok/src/metadata/m4a/mp4moovbox.cpp b/amarok/src/metadata/m4a/mp4moovbox.cpp deleted file mode 100644 index 2a98cacc..00000000 --- a/amarok/src/metadata/m4a/mp4moovbox.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tlist.h" -#include -#include "mp4moovbox.h" -#include "boxfactory.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::Mp4MoovBox::Mp4MoovBoxPrivate -{ -public: - //! container for all boxes in moov box - TagLib::List moovBoxes; - //! a box factory for creating the appropriate boxes - MP4::BoxFactory boxfactory; -}; // class Mp4MoovBoxPrivate - -MP4::Mp4MoovBox::Mp4MoovBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - : Mp4IsoBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4MoovBox::Mp4MoovBoxPrivate(); -} - -MP4::Mp4MoovBox::~Mp4MoovBox() -{ - TagLib::List::Iterator delIter; - for( delIter = d->moovBoxes.begin(); - delIter != d->moovBoxes.end(); - delIter++ ) - { - delete *delIter; - } - delete d; -} - -void MP4::Mp4MoovBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - uint totalsize = 8; - // parse all contained boxes - uint size; - MP4::Fourcc fourcc; - - while( (mp4file->readSizeAndType( size, fourcc ) == true) ) - { - totalsize += size; - - // check for errors - if( totalsize > MP4::Mp4IsoBox::size() ) - { - std::cerr << "Error in mp4 file " << mp4file->name() << " moov box contains bad box with name: " << fourcc.toString() << std::endl; - return; - } - - // create the appropriate subclass and parse it - MP4::Mp4IsoBox* curbox = d->boxfactory.createInstance( mp4file, fourcc, size, mp4file->tell() ); - curbox->parsebox(); - d->moovBoxes.append( curbox ); - - // check for end of moov box - if( totalsize == MP4::Mp4IsoBox::size() ) - break; - } -} diff --git a/amarok/src/metadata/m4a/mp4moovbox.h b/amarok/src/metadata/m4a/mp4moovbox.h deleted file mode 100644 index 87a8c1df..00000000 --- a/amarok/src/metadata/m4a/mp4moovbox.h +++ /dev/null @@ -1,49 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4MOOVBOX_H -#define MP4MOOVBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4MoovBox: public Mp4IsoBox - { - public: - Mp4MoovBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4MoovBox(); - - //! parse moov contents - void parse(); - - private: - class Mp4MoovBoxPrivate; - Mp4MoovBoxPrivate* d; - }; // Mp4MoovBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4MOOVBOX_H diff --git a/amarok/src/metadata/m4a/mp4mvhdbox.cpp b/amarok/src/metadata/m4a/mp4mvhdbox.cpp deleted file mode 100644 index 3dbd31a5..00000000 --- a/amarok/src/metadata/m4a/mp4mvhdbox.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include -#include -#include "mp4mvhdbox.h" -#include "boxfactory.h" -#include "mp4file.h" -#include "mp4propsproxy.h" - -using namespace TagLib; - -class MP4::Mp4MvhdBox::Mp4MvhdBoxPrivate -{ -public: - //! creation time of the file - TagLib::ulonglong creationTime; - //! modification time of the file - since midnight, Jan. 1, 1904, UTC-time - TagLib::ulonglong modificationTime; - //! timescale for the file - referred by all time specifications in this box - uint timescale; - //! duration of presentation - TagLib::ulonglong duration; - //! playout speed - uint rate; - //! volume for entire presentation - uint volume; - //! track ID for an additional track (next new track) - uint nextTrackID; -}; // class Mp4MvhdBoxPrivate - -MP4::Mp4MvhdBox::Mp4MvhdBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - : Mp4IsoFullBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4MvhdBox::Mp4MvhdBoxPrivate(); -} - -MP4::Mp4MvhdBox::~Mp4MvhdBox() -{ - delete d; -} - -TagLib::ulonglong MP4::Mp4MvhdBox::creationTime() const -{ - return d->creationTime; -} - -TagLib::ulonglong MP4::Mp4MvhdBox::modificationTime() const -{ - return d->modificationTime; -} - -uint MP4::Mp4MvhdBox::timescale() const -{ - return d->timescale; -} - -TagLib::ulonglong MP4::Mp4MvhdBox::duration() const -{ - return d->duration; -} - -uint MP4::Mp4MvhdBox::rate() const -{ - return d->rate; -} - -uint MP4::Mp4MvhdBox::volume() const -{ - return d->volume; -} - -uint MP4::Mp4MvhdBox::nextTrackID() const -{ - return d->nextTrackID; -} - - -void MP4::Mp4MvhdBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - if( version() == 1 ) - { - if( !mp4file->readLongLong( d->creationTime ) ) - return; - if( !mp4file->readLongLong( d->modificationTime ) ) - return; - if( !mp4file->readInt( d->timescale ) ) - return; - if( !mp4file->readLongLong( d->duration ) ) - return; - } - else - { - uint creationTime_tmp, modificationTime_tmp, duration_tmp; - - if( !mp4file->readInt( creationTime_tmp ) ) - return; - if( !mp4file->readInt( modificationTime_tmp ) ) - return; - if( !mp4file->readInt( d->timescale ) ) - return; - if( !mp4file->readInt( duration_tmp ) ) - return; - - d->creationTime = creationTime_tmp; - d->modificationTime = modificationTime_tmp; - d->duration = duration_tmp; - } - if( !mp4file->readInt( d->rate ) ) - return; - if( !mp4file->readInt( d->volume ) ) - return; - // jump over unused fields - mp4file->seek( 68, File::Current ); - - if( !mp4file->readInt( d->nextTrackID ) ) - return; - // register at proxy - mp4file->propProxy()->registerMvhd( this ); -} diff --git a/amarok/src/metadata/m4a/mp4mvhdbox.h b/amarok/src/metadata/m4a/mp4mvhdbox.h deleted file mode 100644 index ba15e4e2..00000000 --- a/amarok/src/metadata/m4a/mp4mvhdbox.h +++ /dev/null @@ -1,65 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4MVHDBOX_H -#define MP4MVHDBOX_H - -#include "mp4isofullbox.h" -#include "mp4fourcc.h" -#include "mp4file.h" // ulonglong - -namespace TagLib -{ - namespace MP4 - { - class Mp4MvhdBox: public Mp4IsoFullBox - { - public: - Mp4MvhdBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4MvhdBox(); - - //! function to get the creation time of the mp4 file - ulonglong creationTime() const; - //! function to get the modification time of the mp4 file - ulonglong modificationTime() const; - //! function to get the timescale referenced by the above timestamps - uint timescale() const; - //! function to get the presentation duration in the mp4 file - ulonglong duration() const; - //! function to get the rate (playout speed) - typically 1.0; - uint rate() const; - //! function to get volume level for presentation - typically 1.0; - uint volume() const; - //! function to get the track ID for adding new tracks - useless for this lib - uint nextTrackID() const; - - //! parse mvhd contents - void parse(); - - private: - class Mp4MvhdBoxPrivate; - Mp4MvhdBoxPrivate* d; - }; // Mp4MvhdBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4MVHDBOX_H diff --git a/amarok/src/metadata/m4a/mp4propsproxy.cpp b/amarok/src/metadata/m4a/mp4propsproxy.cpp deleted file mode 100644 index 70f38491..00000000 --- a/amarok/src/metadata/m4a/mp4propsproxy.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "mp4propsproxy.h" - -using namespace TagLib; - -class MP4::Mp4PropsProxy::Mp4PropsProxyPrivate -{ -public: - //! the movie header box - MP4::Mp4MvhdBox* mvhdbox; - //! the sample table box - MP4::Mp4AudioSampleEntry* audiosampleentry; -}; - - -MP4::Mp4PropsProxy::Mp4PropsProxy() -{ - d = new MP4::Mp4PropsProxy::Mp4PropsProxyPrivate(); - d->mvhdbox = 0; - d->audiosampleentry = 0; -} - -MP4::Mp4PropsProxy::~Mp4PropsProxy() -{ - delete d; -} - -uint MP4::Mp4PropsProxy::seconds() const -{ - if( d->mvhdbox ) - return static_cast( d->mvhdbox->duration() / d->mvhdbox->timescale() ); - else - return 0; -} - -uint MP4::Mp4PropsProxy::channels() const -{ - if( d->audiosampleentry ) - return d->audiosampleentry->channels(); - else - return 0; -} - -uint MP4::Mp4PropsProxy::sampleRate() const -{ - if( d->audiosampleentry ) - return (d->audiosampleentry->samplerate()>>16); - else - return 0; -} - -uint MP4::Mp4PropsProxy::bitRate() const -{ - if( d->audiosampleentry ) - return (d->audiosampleentry->bitrate()); - else - return 0; -} - -void MP4::Mp4PropsProxy::registerMvhd( MP4::Mp4MvhdBox* mvhdbox ) -{ - d->mvhdbox = mvhdbox; -} - -void MP4::Mp4PropsProxy::registerAudioSampleEntry( MP4::Mp4AudioSampleEntry* audioSampleEntry ) -{ - d->audiosampleentry = audioSampleEntry; -} - diff --git a/amarok/src/metadata/m4a/mp4propsproxy.h b/amarok/src/metadata/m4a/mp4propsproxy.h deleted file mode 100644 index f6132c90..00000000 --- a/amarok/src/metadata/m4a/mp4propsproxy.h +++ /dev/null @@ -1,65 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4PROPSPROXY_H -#define MP4PROPSPROXY_H MP4PROPSPROXY_H -#include "mp4mvhdbox.h" -#include "mp4audiosampleentry.h" - -namespace TagLib -{ - namespace MP4 - { - //! Mp4PropsProxy is used to access the stsd box and mvhd box directly - /*! this class works as a shortcut to avoid stepping through all parent boxes - * to access the boxes in question - */ - class Mp4PropsProxy - { - public: - //! constructor for properties proxy - Mp4PropsProxy(); - //! destructor - ~Mp4PropsProxy(); - - //! function to get length of media in seconds - uint seconds() const; - //! function to get the nunmber of channels - uint channels() const; - //! function to get the sample rate - uint sampleRate() const; - //! function to get the bitrate rate - uint bitRate() const; - - //! function to register the movie header box - mvhd - void registerMvhd( MP4::Mp4MvhdBox* mvhdbox ); - //! function to register the sample description box - void registerAudioSampleEntry( MP4::Mp4AudioSampleEntry* audiosampleentry ); - - private: - class Mp4PropsProxyPrivate; - Mp4PropsProxyPrivate* d; - - }; // Mp4PropsProxy - } // MP4 -} // TagLib - -#endif // MP4PROPSPROXY_H diff --git a/amarok/src/metadata/m4a/mp4sampleentry.cpp b/amarok/src/metadata/m4a/mp4sampleentry.cpp deleted file mode 100644 index d74a22f4..00000000 --- a/amarok/src/metadata/m4a/mp4sampleentry.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "mp4sampleentry.h" -#include "mp4isobox.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::Mp4SampleEntry::Mp4SampleEntryPrivate -{ -public: - uint data_reference_index; -}; - -MP4::Mp4SampleEntry::Mp4SampleEntry( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::Mp4SampleEntry::Mp4SampleEntryPrivate(); -} - -MP4::Mp4SampleEntry::~Mp4SampleEntry() -{ - delete d; -} - -//! parse the content of the box -void MP4::Mp4SampleEntry::parse() -{ - TagLib::MP4::File* mp4file = dynamic_cast(file()); - if(!mp4file) - return; - - // skip the first 6 bytes - mp4file->seek( 6, TagLib::File::Current ); - // read data reference index - if(!mp4file->readShort( d->data_reference_index)) - return; - parseEntry(); -} - diff --git a/amarok/src/metadata/m4a/mp4sampleentry.h b/amarok/src/metadata/m4a/mp4sampleentry.h deleted file mode 100644 index 39475f7c..00000000 --- a/amarok/src/metadata/m4a/mp4sampleentry.h +++ /dev/null @@ -1,54 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4SAMPLEENTRY_H -#define MP4SAMPLEENTRY_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4SampleEntry: public Mp4IsoBox - { - public: - Mp4SampleEntry( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4SampleEntry(); - - public: - //! parse the content of the box - virtual void parse(); - - private: - //! function to be implemented in subclass - virtual void parseEntry() = 0; - - protected: - class Mp4SampleEntryPrivate; - Mp4SampleEntryPrivate* d; - }; // class Mp4SampleEntry - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4SAMPLEENTRY_H diff --git a/amarok/src/metadata/m4a/mp4skipbox.cpp b/amarok/src/metadata/m4a/mp4skipbox.cpp deleted file mode 100644 index 8cb52180..00000000 --- a/amarok/src/metadata/m4a/mp4skipbox.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "mp4skipbox.h" -#include "mp4isobox.h" -#include "tfile.h" - -using namespace TagLib; - -class MP4::Mp4SkipBox::Mp4SkipBoxPrivate -{ -public: -}; - -MP4::Mp4SkipBox::Mp4SkipBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - :Mp4IsoBox(file, fourcc, size, offset) -{ - d = new MP4::Mp4SkipBox::Mp4SkipBoxPrivate(); -} - -MP4::Mp4SkipBox::~Mp4SkipBox() -{ - delete d; -} - -//! parse the content of the box -void MP4::Mp4SkipBox::parse() -{ - // skip contents - file()->seek( size() - 8, TagLib::File::Current ); -} - diff --git a/amarok/src/metadata/m4a/mp4skipbox.h b/amarok/src/metadata/m4a/mp4skipbox.h deleted file mode 100644 index 896fcaa7..00000000 --- a/amarok/src/metadata/m4a/mp4skipbox.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4SKIPBOX_H -#define MP4SKIPBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4SkipBox: public Mp4IsoBox - { - public: - Mp4SkipBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4SkipBox(); - - private: - //! parse the content of the box - virtual void parse(); - - protected: - class Mp4SkipBoxPrivate; - Mp4SkipBoxPrivate* d; - }; // class Mp4SkipBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4SKIPBOX_H diff --git a/amarok/src/metadata/m4a/mp4stblbox.cpp b/amarok/src/metadata/m4a/mp4stblbox.cpp deleted file mode 100644 index cfd1978d..00000000 --- a/amarok/src/metadata/m4a/mp4stblbox.cpp +++ /dev/null @@ -1,105 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tlist.h" -#include -#include "mp4stblbox.h" -#include "mp4stsdbox.h" -#include "boxfactory.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::Mp4StblBox::Mp4StblBoxPrivate -{ -public: - //! container for all boxes in stbl box - TagLib::List stblBoxes; - //! a box factory for creating the appropriate boxes - MP4::BoxFactory boxfactory; - //! the handler type for the current trak - MP4::Fourcc handler_type; -}; // class Mp4StblBoxPrivate - -MP4::Mp4StblBox::Mp4StblBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - : Mp4IsoBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4StblBox::Mp4StblBoxPrivate(); -} - -MP4::Mp4StblBox::~Mp4StblBox() -{ - TagLib::List::Iterator delIter; - for( delIter = d->stblBoxes.begin(); - delIter != d->stblBoxes.end(); - delIter++ ) - { - delete *delIter; - } - delete d; -} - -void MP4::Mp4StblBox::setHandlerType( MP4::Fourcc fourcc ) -{ - d->handler_type = fourcc; -} - -void MP4::Mp4StblBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - uint totalsize = 8; - // parse all contained boxes - uint size; - MP4::Fourcc fourcc; - - while( (mp4file->readSizeAndType( size, fourcc ) == true) ) - { - totalsize += size; - - // check for errors - if( totalsize > MP4::Mp4IsoBox::size() ) - { - std::cerr << "Error in mp4 file " << mp4file->name() << " stbl box contains bad box with name: " << fourcc.toString() << std::endl; - return; - } - - // create the appropriate subclass and parse it - MP4::Mp4IsoBox* curbox = d->boxfactory.createInstance( mp4file, fourcc, size, mp4file->tell() ); - - // check for stsd - if( static_cast(fourcc) == 0x73747364 /*'stsd'*/ ) - { - // cast to stsd box - MP4::Mp4StsdBox* stsdbox = dynamic_cast(curbox); - if(!stsdbox) - return; - // set the handler type - stsdbox->setHandlerType( d->handler_type ); - } - curbox->parsebox(); - d->stblBoxes.append( curbox ); - - // check for end of stbl box - if( totalsize == MP4::Mp4IsoBox::size() ) - break; - } -} diff --git a/amarok/src/metadata/m4a/mp4stblbox.h b/amarok/src/metadata/m4a/mp4stblbox.h deleted file mode 100644 index 3eed245a..00000000 --- a/amarok/src/metadata/m4a/mp4stblbox.h +++ /dev/null @@ -1,51 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4STBLBOX_H -#define MP4STBLBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4StblBox: public Mp4IsoBox - { - public: - Mp4StblBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4StblBox(); - - //! parse stbl contents - void parse(); - //! set the handler type - needed for stsd - void setHandlerType( MP4::Fourcc fourcc ); - - private: - class Mp4StblBoxPrivate; - Mp4StblBoxPrivate* d; - }; // Mp4StblBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4STBLBOX_H diff --git a/amarok/src/metadata/m4a/mp4stsdbox.cpp b/amarok/src/metadata/m4a/mp4stsdbox.cpp deleted file mode 100644 index bd9e8f4a..00000000 --- a/amarok/src/metadata/m4a/mp4stsdbox.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tlist.h" -#include -#include "mp4stsdbox.h" -#include "mp4audiosampleentry.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::Mp4StsdBox::Mp4StsdBoxPrivate -{ -public: - //! the handler type for the current trak - MP4::Fourcc handler_type; - //! the audio sample entry - MP4::Mp4AudioSampleEntry* audioSampleEntry; -}; // class Mp4StsdBoxPrivate - -MP4::Mp4StsdBox::Mp4StsdBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - : Mp4IsoFullBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4StsdBox::Mp4StsdBoxPrivate(); -} - -MP4::Mp4StsdBox::~Mp4StsdBox() -{ - delete d; -} - -void MP4::Mp4StsdBox::setHandlerType( MP4::Fourcc fourcc ) -{ - d->handler_type = fourcc; -} - -void MP4::Mp4StsdBox::parse() -{ - MP4::File* mp4file = dynamic_cast( file() ); - if(!mp4file) - return; - - uint totalsize = 12; // initial size of box - - // check for handler type - only parse if 'soun': - if( static_cast(d->handler_type) == 0x736f756e ) - { - // read entry count - uint entry_count; - if(!mp4file->readInt( entry_count )) - return; - - // simply read first entry and skip all following - // read size and type - uint cursize; - MP4::Fourcc fourcc; - if( !mp4file->readSizeAndType( cursize, fourcc )) - return; - - totalsize += 12; - // alocate an AudioSampleEntry - d->audioSampleEntry = new MP4::Mp4AudioSampleEntry( mp4file, fourcc, cursize, mp4file->tell() ); - // parse the AudioSampleEntry - d->audioSampleEntry->parse(); - totalsize += cursize-8; - // skip the remaining box contents - mp4file->seek( size()-totalsize, TagLib::File::Current ); - } - else - { - mp4file->seek( size()-totalsize, TagLib::File::Current ); - } -} diff --git a/amarok/src/metadata/m4a/mp4stsdbox.h b/amarok/src/metadata/m4a/mp4stsdbox.h deleted file mode 100644 index 54318759..00000000 --- a/amarok/src/metadata/m4a/mp4stsdbox.h +++ /dev/null @@ -1,51 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4STSDBOX_H -#define MP4STSDBOX_H - -#include "mp4isofullbox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4StsdBox: public Mp4IsoFullBox - { - public: - Mp4StsdBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4StsdBox(); - - //! parse stsd contents - void parse(); - //! set the handler type - needed for stsd - void setHandlerType( MP4::Fourcc fourcc ); - - private: - class Mp4StsdBoxPrivate; - Mp4StsdBoxPrivate* d; - }; // Mp4StsdBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4STSDBOX_H diff --git a/amarok/src/metadata/m4a/mp4tagsproxy.cpp b/amarok/src/metadata/m4a/mp4tagsproxy.cpp deleted file mode 100644 index 0a77427c..00000000 --- a/amarok/src/metadata/m4a/mp4tagsproxy.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "mp4tagsproxy.h" -#include "itunesdatabox.h" - -using namespace TagLib; - -class MP4::Mp4TagsProxy::Mp4TagsProxyPrivate -{ -public: - ITunesDataBox* titleData; - ITunesDataBox* artistData; - ITunesDataBox* albumData; - ITunesDataBox* coverData; - ITunesDataBox* genreData; - ITunesDataBox* yearData; - ITunesDataBox* trknData; - ITunesDataBox* commentData; - ITunesDataBox* groupingData; - ITunesDataBox* composerData; - ITunesDataBox* diskData; - ITunesDataBox* bpmData; -}; - -MP4::Mp4TagsProxy::Mp4TagsProxy() -{ - d = new MP4::Mp4TagsProxy::Mp4TagsProxyPrivate(); - d->titleData = 0; - d->artistData = 0; - d->albumData = 0; - d->coverData = 0; - d->genreData = 0; - d->yearData = 0; - d->trknData = 0; - d->commentData = 0; - d->groupingData = 0; - d->composerData = 0; - d->diskData = 0; - d->bpmData = 0; -} - -MP4::Mp4TagsProxy::~Mp4TagsProxy() -{ - delete d; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::titleData() const -{ - return d->titleData; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::artistData() const -{ - return d->artistData; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::albumData() const -{ - return d->albumData; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::genreData() const -{ - return d->genreData; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::yearData() const -{ - return d->yearData; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::trknData() const -{ - return d->trknData; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::commentData() const -{ - return d->commentData; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::groupingData() const -{ - return d->groupingData; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::composerData() const -{ - return d->composerData; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::diskData() const -{ - return d->diskData; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::bpmData() const -{ - return d->bpmData; -} - -MP4::ITunesDataBox* MP4::Mp4TagsProxy::coverData() const -{ - return d->coverData; -} - -void MP4::Mp4TagsProxy::registerBox( EBoxType boxtype, ITunesDataBox* databox ) -{ - switch( boxtype ) - { - case title: - d->titleData = databox; - break; - case artist: - d->artistData = databox; - break; - case album: - d->albumData = databox; - break; - case cover: - d->coverData = databox; - break; - case genre: - d->genreData = databox; - break; - case year: - d->yearData = databox; - break; - case trackno: - d->trknData = databox; - break; - case comment: - d->commentData = databox; - break; - case grouping: - d->groupingData = databox; - break; - case composer: - d->composerData = databox; - break; - case disk: - d->diskData = databox; - break; - case bpm: - d->bpmData = databox; - break; - } -} - diff --git a/amarok/src/metadata/m4a/mp4tagsproxy.h b/amarok/src/metadata/m4a/mp4tagsproxy.h deleted file mode 100644 index c8bcbf06..00000000 --- a/amarok/src/metadata/m4a/mp4tagsproxy.h +++ /dev/null @@ -1,99 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4TAGSPROXY_H -#define MP4TAGSPROXY_H - -namespace TagLib -{ - namespace MP4 - { - // forward declaration(s) - class ITunesDataBox; - /*! proxy for mp4 itunes tag relevant boxes - * - * this class works as a proxy for the specific tag boxes - * in an mp4 itunes file. the boxes are mired in - * the mp4 file structure and stepping through all box layers - * is avoided by registration at the proxy object. - */ - class Mp4TagsProxy - { - public: - /*! enum for all supported box types */ - typedef enum - { - title = 0, - artist, - album, - cover, - genre, - year, - trackno, - comment, - grouping, - composer, - disk, - bpm - } EBoxType; - - //! constructor - Mp4TagsProxy(); - //! destructor - ~Mp4TagsProxy(); - - //! function to get the data box for the title - ITunesDataBox* titleData() const; - //! function to get the data box for the artist - ITunesDataBox* artistData() const; - //! function to get the data box for the album - ITunesDataBox* albumData() const; - //! function to get the data box for the genre - ITunesDataBox* genreData() const; - //! function to get the data box for the year - ITunesDataBox* yearData() const; - //! function to get the data box for the track number - ITunesDataBox* trknData() const; - //! function to get the data box for the comment - ITunesDataBox* commentData() const; - //! function to get the data box for the grouping - ITunesDataBox* groupingData() const; - //! function to get the data box for the composer - ITunesDataBox* composerData() const; - //! function to get the data box for the disk number - ITunesDataBox* diskData() const; - //! function to get the data box for the bpm - ITunesDataBox* bpmData() const; - //! function to get the data box for the cover - ITunesDataBox* coverData() const; - - //! function to register a data box for a certain box type - void registerBox( EBoxType boxtype, ITunesDataBox* databox ); - - private: - class Mp4TagsProxyPrivate; - //! private data of tags proxy - Mp4TagsProxyPrivate* d; - }; // class Mp4TagsProxy - } // namespace MP4 -} // namespace TagLib - -#endif // MP4TAGSPROXY_H diff --git a/amarok/src/metadata/m4a/mp4trakbox.cpp b/amarok/src/metadata/m4a/mp4trakbox.cpp deleted file mode 100644 index 4fe373ff..00000000 --- a/amarok/src/metadata/m4a/mp4trakbox.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tlist.h" -#include -#include "mp4trakbox.h" -#include "boxfactory.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::Mp4TrakBox::Mp4TrakBoxPrivate -{ -public: - //! container for all boxes in trak box - TagLib::List trakBoxes; - //! a box factory for creating the appropriate boxes - MP4::BoxFactory boxfactory; -}; // class Mp4TrakBoxPrivate - -MP4::Mp4TrakBox::Mp4TrakBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - : Mp4IsoBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4TrakBox::Mp4TrakBoxPrivate(); -} - -MP4::Mp4TrakBox::~Mp4TrakBox() -{ - TagLib::List::Iterator delIter; - for( delIter = d->trakBoxes.begin(); - delIter != d->trakBoxes.end(); - delIter++ ) - { - delete *delIter; - } - delete d; -} - -void MP4::Mp4TrakBox::parse() -{ - TagLib::MP4::File* mp4file = static_cast( file() ); - - uint totalsize = 8; - // parse all contained boxes - uint size; - MP4::Fourcc fourcc; - - while( (mp4file->readSizeAndType( size, fourcc ) == true) ) - { - totalsize += size; - - // check for errors - if( totalsize > MP4::Mp4IsoBox::size() ) - { - std::cerr << "Error in mp4 file " << mp4file->name() << " trak box contains bad box with name: " << fourcc.toString() << std::endl; - return; - } - - // create the appropriate subclass and parse it - MP4::Mp4IsoBox* curbox = d->boxfactory.createInstance( mp4file, fourcc, size, mp4file->tell() ); - curbox->parsebox(); - d->trakBoxes.append( curbox ); - - // check for end of trak box - if( totalsize == MP4::Mp4IsoBox::size() ) - break; - } -} diff --git a/amarok/src/metadata/m4a/mp4trakbox.h b/amarok/src/metadata/m4a/mp4trakbox.h deleted file mode 100644 index b0f05cb3..00000000 --- a/amarok/src/metadata/m4a/mp4trakbox.h +++ /dev/null @@ -1,49 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4TRAKBOX_H -#define MP4TRAKBOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4TrakBox: public Mp4IsoBox - { - public: - Mp4TrakBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4TrakBox(); - - //! parse trak contents - void parse(); - - private: - class Mp4TrakBoxPrivate; - Mp4TrakBoxPrivate* d; - }; // Mp4TrakBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4TRAKBOX_H diff --git a/amarok/src/metadata/m4a/mp4udtabox.cpp b/amarok/src/metadata/m4a/mp4udtabox.cpp deleted file mode 100644 index 58a171ba..00000000 --- a/amarok/src/metadata/m4a/mp4udtabox.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tlist.h" -#include -#include "mp4udtabox.h" -#include "boxfactory.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::Mp4UdtaBox::Mp4UdtaBoxPrivate -{ -public: - //! container for all boxes in udta box - TagLib::List udtaBoxes; - //! a box factory for creating the appropriate boxes - MP4::BoxFactory boxfactory; -}; // class Mp4UdtaBoxPrivate - -MP4::Mp4UdtaBox::Mp4UdtaBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ) - : Mp4IsoBox( file, fourcc, size, offset ) -{ - d = new MP4::Mp4UdtaBox::Mp4UdtaBoxPrivate(); -} - -MP4::Mp4UdtaBox::~Mp4UdtaBox() -{ - TagLib::List::Iterator delIter; - for( delIter = d->udtaBoxes.begin(); - delIter != d->udtaBoxes.end(); - delIter++ ) - { - delete *delIter; - } - delete d; -} - -void MP4::Mp4UdtaBox::parse() -{ -#if 0 - std::cout << " parsing udta box" << std::endl; -#endif - TagLib::MP4::File* mp4file = static_cast( file() ); - - uint totalsize = 8; - // parse all contained boxes - uint size; - MP4::Fourcc fourcc; - -#if 0 - std::cout << " "; -#endif - while( (mp4file->readSizeAndType( size, fourcc ) == true) ) - { - totalsize += size; - - // check for errors - if( totalsize > MP4::Mp4IsoBox::size() ) - { - std::cerr << "Error in mp4 file " << mp4file->name() << " udta box contains bad box with name: " << fourcc.toString() << std::endl; - return; - } - - // create the appropriate subclass and parse it - MP4::Mp4IsoBox* curbox = d->boxfactory.createInstance( mp4file, fourcc, size, mp4file->tell() ); - curbox->parsebox(); - d->udtaBoxes.append( curbox ); - - // check for end of udta box - if( totalsize == MP4::Mp4IsoBox::size() ) - break; -#if 0 - std::cout << " "; -#endif - } -} diff --git a/amarok/src/metadata/m4a/mp4udtabox.h b/amarok/src/metadata/m4a/mp4udtabox.h deleted file mode 100644 index eb982023..00000000 --- a/amarok/src/metadata/m4a/mp4udtabox.h +++ /dev/null @@ -1,49 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002, 2003, 2006 by Jochen Issing - email : jochen.issing@isign-softart.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef MP4UDTABOX_H -#define MP4UDTABOX_H - -#include "mp4isobox.h" -#include "mp4fourcc.h" - -namespace TagLib -{ - namespace MP4 - { - class Mp4UdtaBox: public Mp4IsoBox - { - public: - Mp4UdtaBox( TagLib::File* file, MP4::Fourcc fourcc, uint size, long offset ); - ~Mp4UdtaBox(); - - //! parse moov contents - void parse(); - - private: - class Mp4UdtaBoxPrivate; - Mp4UdtaBoxPrivate* d; - }; // Mp4UdtaBox - - } // namespace MP4 -} // namespace TagLib - -#endif // MP4UDTABOX_H diff --git a/amarok/src/metadata/m4a/taglib_mp4filetyperesolver.cpp b/amarok/src/metadata/m4a/taglib_mp4filetyperesolver.cpp deleted file mode 100644 index 9566a934..00000000 --- a/amarok/src/metadata/m4a/taglib_mp4filetyperesolver.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Martin Aumueller - email : aumuell@reserv.at - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "taglib_mp4filetyperesolver.h" -#include "mp4file.h" - -#include - -TagLib::File *MP4FileTypeResolver::createFile(const char *fileName, - bool readProperties, - TagLib::AudioProperties::ReadStyle propertiesStyle) const -{ -// fprintf(stderr, "mp4?: %s\n", fileName); - const char *ext = strrchr(fileName, '.'); - if(ext && (!strcasecmp(ext, ".m4a") - || !strcasecmp(ext, ".m4b") || !strcasecmp(ext, ".m4p") - || !strcasecmp(ext, ".mp4") - || !strcasecmp(ext, ".m4v") || !strcasecmp(ext, ".mp4v"))) - { - return new TagLib::MP4::File(fileName, readProperties, propertiesStyle); - } - - return 0; -} diff --git a/amarok/src/metadata/m4a/taglib_mp4filetyperesolver.h b/amarok/src/metadata/m4a/taglib_mp4filetyperesolver.h deleted file mode 100644 index fbc3dd4d..00000000 --- a/amarok/src/metadata/m4a/taglib_mp4filetyperesolver.h +++ /dev/null @@ -1,36 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Martin Aumueller - email : aumuell@reserv.at - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_MP4FILETYPERESOLVER_H -#define TAGLIB_MP4FILETYPERESOLVER_H - -#include -#include - - -class MP4FileTypeResolver : public TagLib::FileRef::FileTypeResolver -{ - TagLib::File *createFile(const char *fileName, - bool readAudioProperties, - TagLib::AudioProperties::ReadStyle audioPropertiesStyle) const; -}; - -#endif diff --git a/amarok/src/metadata/mp4/CMakeLists.txt b/amarok/src/metadata/mp4/CMakeLists.txt deleted file mode 100644 index f3ed9d37..00000000 --- a/amarok/src/metadata/mp4/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -################################################# -# -# (C) 2010-2013 Darrell Anderson -# humanreadable (AT) yahoo.com -# -# Improvements and feedback are welcome -# -# This file is released under GPL >= 2 -# -################################################# - -include_directories( - ${CMAKE_BINARY_DIR} - ${TDE_INCLUDE_DIR} - ${TQT_INCLUDE_DIRS} - ${TAGLIB_INCLUDE_DIRS} - ${MP4V2_INCLUDE_DIRS} -) - - -##### tagmp4 (static) - -tde_add_library( common-tagmp4 STATIC_PIC - - SOURCES - mp4file.cpp - mp4properties.cpp - mp4tag.cpp - taglib_mp4filetyperesolver.cpp - LINK - ${MP4V2_LIBRARIES} -) diff --git a/amarok/src/metadata/mp4/Makefile.am b/amarok/src/metadata/mp4/Makefile.am deleted file mode 100644 index c48ccc5f..00000000 --- a/amarok/src/metadata/mp4/Makefile.am +++ /dev/null @@ -1,18 +0,0 @@ -SUBDIRS = - -INCLUDES = $(all_includes) $(MP4V2_INCLUDES) $(TAGLIB_CFLAGS) -METASOURCES = AUTO -libtagmp4_la_LDFLAGS = $(all_libraries) $(MP4V2_LIBS) -noinst_LTLIBRARIES = libtagmp4.la - -libtagmp4_la_SOURCES = \ - mp4properties.cpp \ - mp4tag.cpp \ - mp4file.cpp \ - taglib_mp4filetyperesolver.cpp - -noinst_HEADERS = \ - mp4properties.h \ - mp4tag.h \ - mp4file.h \ - taglib_mp4filetyperesolver.h diff --git a/amarok/src/metadata/mp4/mp4file.cpp b/amarok/src/metadata/mp4/mp4file.cpp deleted file mode 100644 index e78d6ae9..00000000 --- a/amarok/src/metadata/mp4/mp4file.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/*************************************************************************** -copyright : (C) 2005 by Andy Leadbetter -email : andrew.leadbetter@gmail.com - -copyright : (C) 2005 by Martin Aumueller -email : aumuell@reserv.at - (write support) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include - -#include "mp4file.h" - -#include "mp4tag.h" -#include -#include - -#include -#include -#include -#include - -#ifdef HAVE_MP4V2_H -#define USE_ITMF_TAGS -#else -#define MP4V2_HAS_WRITE_BUG 1 -#endif - -namespace TagLib { -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MP4::File::File(const char *file, - bool readProperties, - Properties::ReadStyle propertiesStyle, - MP4FileHandle handle) : TagLib::File(file), - mp4tag(NULL), properties(NULL) -{ - - // debug ("MP4::File: create new file object."); - //debug ( file ); - /** - * Create the MP4 file. - */ - - if(handle == MP4_INVALID_FILE_HANDLE) - { - mp4file = MP4Read(file); - } - else - { - mp4file = handle; - } - - if( isOpen() ) - { - read(readProperties, propertiesStyle ); - } -} - -MP4::File::~File() -{ - MP4Close(mp4file); - delete mp4tag; - delete properties; -} - -TagLib::Tag *MP4::File::tag() const -{ - return mp4tag; -} - -TagLib::MP4::Tag *MP4::File::getMP4Tag() const -{ - return mp4tag; -} - -MP4::Properties *MP4::File::audioProperties() const -{ - return properties; -} - -bool MP4::File::save() -{ - MP4Close(mp4file); - - MP4FileHandle handle = MP4Modify(name()); - if(handle == MP4_INVALID_FILE_HANDLE) - { - mp4file = MP4Read(name()); - return false; - } - -#ifdef USE_ITMF_TAGS - const MP4Tags* filetags = MP4TagsAlloc(); - MP4TagsFetch(filetags, handle); -#endif - -#ifdef MP4V2_HAS_WRITE_BUG - /* according to gtkpod we have to delete all meta data before modifying it, - save the stuff we would not touch */ - - // need to fetch/rewrite this only if we aren't going to anyway - uint8_t compilation = 0; - bool has_compilation = mp4tag->compilation() == MP4::Tag::Undefined ? MP4GetMetadataCompilation(handle, &compilation) : false; - - char *tool = NULL; - MP4GetMetadataTool(handle, &tool); - - MP4MetadataDelete(handle); -#endif - - -#ifdef USE_ITMF_TAGS - MP4TagsSetName(filetags, mp4tag->title().isEmpty() ? "" : mp4tag->title().toCString(true)); - MP4TagsSetArtist(filetags, mp4tag->artist().isEmpty() ? "" : mp4tag->artist().toCString(true)); - MP4TagsSetAlbum(filetags, mp4tag->album().isEmpty() ? "" : mp4tag->album().toCString(true)); - MP4TagsSetComments(filetags, mp4tag->comment().isEmpty() ? "" : mp4tag->comment().toCString(true)); - MP4TagsSetGenre(filetags, mp4tag->genre().isEmpty() ? "" : mp4tag->genre().toCString(true)); - MP4TagsSetComposer(filetags, mp4tag->composer().isEmpty() ? "" : mp4tag->composer().toCString(true)); -#else -#define setmeta(val, tag) \ - if(mp4tag->val().isEmpty()) { \ - /*MP4DeleteMetadata##tag(handle);*/ \ - MP4SetMetadata##tag(handle, ""); \ - } else { \ - MP4SetMetadata##tag(handle, mp4tag->val().toCString(true)); \ - } - setmeta(title, Name); - setmeta(artist, Artist); - setmeta(album, Album); - setmeta(comment, Comment); - setmeta(genre, Genre); - setmeta(composer, Writer); -#endif - - char buf[100] = ""; - if(mp4tag->year()) - snprintf(buf, sizeof(buf), "%u", mp4tag->year()); -#ifdef USE_ITMF_TAGS - MP4TagsSetReleaseDate(filetags, buf); -#else - MP4SetMetadataYear(handle, buf); -#endif - u_int16_t t1, t2; - -#ifdef USE_ITMF_TAGS - MP4TagTrack track = *filetags->track; - track.index = t1; - MP4TagsSetTrack(filetags, &track); -#else - MP4GetMetadataTrack(handle, &t1, &t2); - MP4SetMetadataTrack(handle, mp4tag->track(), t2); -#endif - if(mp4tag->bpm() != 0) { -#ifdef USE_ITMF_TAGS - u_int16_t tempo = mp4tag->bpm(); - MP4TagsSetTempo(filetags, &tempo); -#else - MP4SetMetadataTempo(handle, mp4tag->bpm()); -#endif - } - if(mp4tag->compilation() != MP4::Tag::Undefined) { -#ifdef USE_ITMF_TAGS - u_int8_t compilation = mp4tag->compilation(); - MP4TagsSetCompilation(filetags, &compilation); -#else - MP4SetMetadataCompilation(handle, mp4tag->compilation()); -#endif - } - -#ifdef USE_ITMF_TAGS - if(mp4tag->cover().size()) { - MP4TagArtwork art; - art.size = mp4tag->cover().size(); - art.data = mp4tag->cover().size() ? const_cast( reinterpret_cast( mp4tag->cover().data() ) ) : 0; - art.type = MP4_ART_UNDEFINED; // delegate typing to libmp4v2 - if(filetags->artworkCount > 0) { - MP4TagsSetArtwork(filetags, 0, &art); - } - else { - MP4TagsAddArtwork(filetags, &art); - } - } -#else - MP4SetMetadataCoverArt(handle, mp4tag->cover().size() ? const_cast( reinterpret_cast( mp4tag->cover().data() ) ) : 0, mp4tag->cover().size()); -#endif - -#ifdef MP4V2_HAS_WRITE_BUG - // set the saved data again - - if(has_compilation) - MP4SetMetadataCompilation(handle, compilation); - if(tool) - { - MP4SetMetadataTool(handle, tool); - free(tool); - } -#endif - -#ifdef USE_ITMF_TAGS - MP4TagsStore(filetags, handle); - MP4TagsFree(filetags); -#endif - MP4Close(handle); - - mp4file = MP4Read(name()); - if(mp4file == MP4_INVALID_FILE_HANDLE) - { - fprintf(stderr, "reopen failed\n"); - return false; - } - - return true; -} - -bool MP4::File::isOpen() -{ - return mp4file != MP4_INVALID_FILE_HANDLE; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void MP4::File::read(bool readProperties, Properties::ReadStyle propertiesStyle) -{ - properties = new MP4::Properties(propertiesStyle); - mp4tag = new MP4::Tag(); - - if (mp4file != MP4_INVALID_FILE_HANDLE) { - - if(readProperties) - { - // Parse bitrate etc. - properties->readMP4Properties( mp4file ); - } - - mp4tag->readTags( mp4file ); - } -} - -} diff --git a/amarok/src/metadata/mp4/mp4file.h b/amarok/src/metadata/mp4/mp4file.h deleted file mode 100644 index 6eb0c1a0..00000000 --- a/amarok/src/metadata/mp4/mp4file.h +++ /dev/null @@ -1,86 +0,0 @@ -/*************************************************************************** -copyright : (C) 2005 by Andy Leadbetter -email : andrew.leadbetter@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_MP4FILE_H -#define TAGLIB_MP4FILE_H - -#include -#include "mp4properties.h" - -namespace TagLib { - - namespace MP4 { - - class Tag; - - class File : public TagLib::File - { - public: - /*! - * Contructs a MP4 file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - */ - File(const char *file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average, - MP4FileHandle handle=MP4_INVALID_FILE_HANDLE); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - - virtual TagLib::Tag *tag() const; - - /*! - * Returns the MP4::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual MP4::Properties *audioProperties() const; - - /*! - * Save the file. - * This is the same as calling save(AllTags); - * - * \note As of now, saving MP4 tags is not supported. - */ - virtual bool save(); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - - MP4::Tag *getMP4Tag() const; - - protected: - File(const File &); - File &operator=(const File &); - bool isOpen(); - - - MP4::Tag *mp4tag; - MP4::Properties *properties; - MP4FileHandle mp4file; - - }; - } -} - -#endif diff --git a/amarok/src/metadata/mp4/mp4properties.cpp b/amarok/src/metadata/mp4/mp4properties.cpp deleted file mode 100644 index fa93d94a..00000000 --- a/amarok/src/metadata/mp4/mp4properties.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/*************************************************************************** -copyright : (C) 2005 by Andy Leadbetter -email : andrew.leadbetter@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "mp4properties.h" - - -#include - -#include -#ifdef HAVE_SYSTEMS_H -#include -#endif - -#include -#include -#include - -#ifndef UINT64_TO_DOUBLE -#define UINT64_TO_DOUBLE(a) ((double)((int64_t)(a))) -#endif - -using namespace TagLib; - - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MP4::Properties::Properties(Properties::ReadStyle style) : AudioProperties(style) -{ - m_length = 0; - m_bitrate = 0; - m_sampleRate = 0; - m_channels = 0; -} - -MP4::Properties::~Properties() -{ -} - -int MP4::Properties::length() const -{ - return m_length; -} - -int MP4::Properties::bitrate() const -{ - return m_bitrate; -} - -int MP4::Properties::sampleRate() const -{ - return m_sampleRate; -} - -int MP4::Properties::channels() const -{ - return m_channels; -} - -void MP4::Properties::readMP4Properties( MP4FileHandle mp4File ) -{ - u_int32_t numTracks = MP4GetNumberOfTracks(mp4File); - - for (u_int32_t i = 0; i < numTracks; i++) - { - MP4TrackId trackId = MP4FindTrackId(mp4File, i); - - const char* trackType = - MP4GetTrackType(mp4File, trackId); - - if (!strcmp(trackType, MP4_AUDIO_TRACK_TYPE)) - { - // OK we found an audio track so - // decode it. - readAudioTrackProperties(mp4File, trackId ); - } - } -} - -void MP4::Properties::readAudioTrackProperties(MP4FileHandle mp4File, MP4TrackId trackId ) -{ - - u_int32_t timeScale = - MP4GetTrackTimeScale(mp4File, trackId); - - MP4Duration trackDuration = - MP4GetTrackDuration(mp4File, trackId); - - double msDuration = - UINT64_TO_DOUBLE(MP4ConvertFromTrackDuration(mp4File, trackId, - trackDuration, MP4_MSECS_TIME_SCALE)); - - u_int32_t avgBitRate = - MP4GetTrackBitRate(mp4File, trackId); - - m_bitrate = (avgBitRate + 500) / 1000; - m_sampleRate = timeScale; - m_length = (int)(msDuration / 1000.0); - m_channels = 2; - - - -} diff --git a/amarok/src/metadata/mp4/mp4properties.h b/amarok/src/metadata/mp4/mp4properties.h deleted file mode 100644 index bbe3fa48..00000000 --- a/amarok/src/metadata/mp4/mp4properties.h +++ /dev/null @@ -1,93 +0,0 @@ -/*************************************************************************** -copyright : (C) 2005 by Andy Leadbetter -email : andrew.leadbetter@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_MP4PROPERTIES_H -#define TAGLIB_MP4PROPERTIES_H - -#include - -#include -#include -#ifdef HAVE_MP4V2_H -#include -#endif -#ifdef HAVE_MP4_H -#include -// mp4.h drags in mp4_config.h that defines these -// get rid of them so they don't conflict with our config.h -#undef VERSION -#undef PACKAGE -#endif - -namespace TagLib { - - namespace MP4 { - - class File; - - /*! - * This reads the data from a MP4 stream to support the - * AudioProperties API. - */ - - class Properties : public AudioProperties - { - public: - /*! - * Initialize this structure - */ - Properties(Properties::ReadStyle style); - - /*! - * Destroys this MP4 Properties instance. - */ - virtual ~Properties(); - - // Reimplementations. - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - - void readMP4Properties(MP4FileHandle mp4File); - - - private: - void readAudioTrackProperties(MP4FileHandle mp4File, MP4TrackId trackId ); - friend class MP4::File; - - int m_length; - int m_bitrate; - int m_sampleRate; - int m_channels; - - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(); - }; - - } - -} - -#endif diff --git a/amarok/src/metadata/mp4/mp4tag.cpp b/amarok/src/metadata/mp4/mp4tag.cpp deleted file mode 100644 index 24537ae5..00000000 --- a/amarok/src/metadata/mp4/mp4tag.cpp +++ /dev/null @@ -1,183 +0,0 @@ - -/*************************************************************************** -copyright : (C) 2005 by Andy Leadbetter -email : andrew.leadbetter@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include - -#include "mp4tag.h" - -#include -#include -#include -#include -#include -#include - -#ifdef HAVE_MP4V2_H -#define USE_ITMF_TAGS -#endif - -using namespace TagLib; - -MP4::Tag::Tag() : TagLib::Tag::Tag() { - m_title = String(); - m_artist = String(); - m_album = String(); - m_comment = String(); - m_genre = String(); - m_composer = String(); - m_year = 0; - m_track = 0; - m_disk = 0; - m_bpm = 0; - m_compilation = Undefined; -} - -MP4::Tag::~Tag() { -} - -bool MP4::Tag::isEmpty() const { - return m_title.isEmpty() && - m_artist.isEmpty() && - m_album.isEmpty() && - m_comment.isEmpty() && - m_genre.isEmpty() && - m_composer.isEmpty() && - m_year == 0 && - m_track == 0 && - m_disk == 0 && - m_bpm == 0 && - m_compilation == Undefined && - m_image.size() == 0; -} - -void MP4::Tag::duplicate(const Tag *source, Tag *target, bool overwrite) { - // Duplicate standard information - Tag::duplicate(source, target, overwrite); - - if ((overwrite || target->compilation() == Undefined) && (source->compilation() != Undefined)) { - target->setCompilation(source->compilation()); - } - - if (overwrite || target->cover().size() == 0) { - target->setCover(source->cover()); - } -} - -void MP4::Tag::readTags( MP4FileHandle mp4file ) -{ - // Now parse tag. -#ifdef USE_ITMF_TAGS - const MP4Tags* filetags = MP4TagsAlloc(); - MP4TagsFetch(filetags, mp4file); - - if(filetags->name != NULL) { - m_title = String(filetags->name, String::UTF8); - } - if(filetags->artist != NULL) { - m_artist = String(filetags->artist, String::UTF8); - } - if(filetags->comments != NULL) { - m_comment = String(filetags->comments, String::UTF8); - } - if(filetags->releaseDate != NULL) { - m_year = strtol(filetags->releaseDate, NULL, 0); - } - if(filetags->album != NULL) { - m_album = String(filetags->album, String::UTF8); - } - if(filetags->track != NULL) { - m_track = filetags->track->index; - } - if(filetags->disk != NULL) { - m_disk = filetags->disk->index; - } - if(filetags->tempo != NULL) { - m_bpm = *filetags->tempo; - } - if(filetags->compilation != NULL) { - m_compilation = *filetags->compilation; - } - if(filetags->genre != NULL) { - m_genre = String(filetags->genre, String::UTF8); - } - if(filetags->composer != NULL) { - m_composer = String(filetags->composer, String::UTF8); - } - if(filetags->artworkCount > 0) { - m_image.setData(reinterpret_cast( filetags->artwork[0].data ), filetags->artwork[0].size); - } - MP4TagsFree(filetags); -#else - char *value; - uint8_t boolvalue; - uint16_t numvalue, numvalue2; - uint8_t *image; - uint32_t imageSize; - - if (MP4GetMetadataName(mp4file, &value) && value != NULL) { - m_title = String(value, String::UTF8); - free(value); - } - if (MP4GetMetadataArtist(mp4file, &value) && value != NULL) { - m_artist = String(value, String::UTF8); - free(value); - } - - if (MP4GetMetadataComment(mp4file, &value) && value != NULL) { - m_comment = String(value, String::UTF8); - free(value); - } - - if (MP4GetMetadataYear(mp4file, &value) && value != NULL) { - m_year = strtol(value, NULL,0); - free(value); - } - if (MP4GetMetadataAlbum(mp4file, &value) && value != NULL) { - m_album = String(value, String::UTF8); - free(value); - } - if (MP4GetMetadataTrack(mp4file, &numvalue, &numvalue2)) { - m_track = numvalue; - } - if (MP4GetMetadataDisk(mp4file, &numvalue, &numvalue2)) { - m_disk = numvalue; - } - if (MP4GetMetadataTempo(mp4file, &numvalue)) { - m_bpm = numvalue; - } - if (MP4GetMetadataCompilation(mp4file, &boolvalue)) { - m_compilation = boolvalue; - } - if (MP4GetMetadataGenre(mp4file, &value) && value != NULL) { - m_genre = String(value, String::UTF8); - free(value); - } - if (MP4GetMetadataWriter(mp4file, &value) && value != NULL) { - m_composer = String(value, String::UTF8); - free(value); - } - if (MP4GetMetadataCoverArt(mp4file, &image, &imageSize) && image && imageSize) { - m_image.setData(reinterpret_cast( image ), imageSize); - free(image); - } -#endif -} diff --git a/amarok/src/metadata/mp4/mp4tag.h b/amarok/src/metadata/mp4/mp4tag.h deleted file mode 100644 index f791c078..00000000 --- a/amarok/src/metadata/mp4/mp4tag.h +++ /dev/null @@ -1,234 +0,0 @@ -/*************************************************************************** -copyright : (C) 2005 by Andy Leadbetter -email : andrew.leadbetter@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ -#ifndef TAGLIB_MP4TAG_H -#define TAGLIB_MP4TAG_H - -#include - -#include -#include "mp4file.h" -#ifdef HAVE_MP4V2_H -#include -#endif -#ifdef HAVE_MP4_H -#include -#endif - -namespace TagLib { - - namespace MP4 { - /*! - * This implements the generic TagLib::Tag API - */ - class Tag : public TagLib::Tag - { - public: - static const int Undefined = -1; - - Tag(); - - /*! - * read tags from the mp4 file. - */ - void readTags( MP4FileHandle mp4file); - - /*! - * Destroys this MP4Tag instance. - */ - virtual ~Tag(); - - /*! - * Returns the track name; if no track name is present in the tag - * a null String will be returned. - */ - virtual String title() const { return m_title; } - - /*! - * Returns the artist name; if no artist name is present in the tag - * a null String will be returned. - */ - virtual String artist() const { return m_artist; } - - /*! - * Returns the album name; if no album name is present in the tag - * a null String will be returned. - */ - virtual String album() const { return m_album; } - - /*! - * Returns the track comment; if no comment is present in the tag - * a null String will be returned. - */ - virtual String comment() const { return m_comment; } - - /*! - * Returns the genre name; if no genre is present in the tag a null String - * will be returned. - */ - virtual String genre() const { return m_genre; } - - /*! - * Returns the composer name; if no composer is present in the tag a null String - * will be returned. - */ - virtual String composer() const { return m_composer; } - - /*! - * Returns the year; if there is no year set, this will return 0. - */ - virtual uint year() const { return m_year; } - - /*! - * Returns the track number; if there is no track number set, this will - * return 0. - */ - virtual uint track() const { return m_track; } - - /*! - * Returns the disc number; if there is no disc number set, this will - * return 0. - */ - virtual uint disk() const { return m_disk; } - - /*! - * Returns the BPM (tempo); if there is no BPM, this will return 0. - */ - virtual uint bpm() const { return m_bpm; } - - /*! - * Returns the embedded cover image; if there is no cover set, this will - * return an empty ByteVector. - */ - virtual const ByteVector &cover() const { return m_image; } - - /*! - * Returns whether this is part of a compilation; if this flag is not set, - * this will return the Undefined constant. - */ - virtual int compilation() const { return m_compilation; } - - /*! - * Sets the title to \a s. If \a s is a null String then this value will be - * cleared. - */ - virtual void setTitle(const String &s) { m_title = s; } - - /*! - * Sets the artist to \a s. If \a s is a null String then this value will be - * cleared. - */ - virtual void setArtist(const String &s) { m_artist = s; } - - /*! - * Sets the album to \a s. If \a s is a null String then this value will be - * cleared. - */ - virtual void setAlbum(const String &s) { m_album = s; } - - /*! - * Sets the album to \a s. If \a s is a null String then this value will be - * cleared. - */ - virtual void setComment(const String &s) { m_comment = s; } - - /*! - * Sets the genre to \a s. If \a s is a null String then this value will be - * cleared. For tag formats that use a fixed set of genres, the appropriate - * value will be selected based on a string comparison. A list of available - * genres for those formats should be available in that type's - * implementation. - */ - virtual void setGenre(const String &s) { m_genre = s; } - - /*! - * Sets the year to \a i. If \a s is 0 then this value will be cleared. - */ - virtual void setYear(uint i) { m_year = i; } - - /*! - * Sets the track to \a i. If \a i is 0 then this value will be cleared. - */ - virtual void setTrack(uint i) { m_track = i; } - - /*! - * Sets the disc to \a i. If \a i is 0 then this value will be cleared. - */ - virtual void setDisk(uint i) { m_disk = i; } - - /*! - * Sets the BPM (tempo) to \a i. It \a i is 0 then this value will be cleared. - */ - virtual void setBpm(uint i) { m_bpm = i; } - - /*! - * Sets whether this is part of a compilation. - */ - virtual void setCompilation(bool compilation) { m_compilation = compilation ? 1 : 0; } - - /*! - * Sets the composer to \a s. If \a s is a null String then this value will - * be cleared. - */ - virtual void setComposer(const String &s) { m_composer = s; } - - /*! - * Sets the embedded cover image to \a i. If \a i is empty then this value - * will be cleared. - */ - virtual void setCover(const ByteVector &i) { m_image = i; } - - /*! - * Returns true if the tag does not contain any data. This should be - * reimplemented in subclasses that provide more than the basic tagging - * abilities in this class. - */ - virtual bool isEmpty() const; - - /*! - * Copies the generic data from one tag to another. - * - * \note This will not affect any of the lower level details of the tag. For - * instance if any of the tag type specific data (maybe a URL for a band) is - * set, this will not modify or copy that. This just copies using the API - * in this class. - * - * If \a overwrite is true then the values will be unconditionally copied. - * If false only empty values will be overwritten. - */ - static void duplicate(const Tag *source, Tag *target, bool overwrite = true); - - protected: - String m_title; - String m_artist; - String m_album; - String m_comment; - String m_genre; - String m_composer; - uint m_year; - uint m_track; - uint m_disk; - uint m_bpm; - int m_compilation; - ByteVector m_image; - }; - } -} -#endif diff --git a/amarok/src/metadata/mp4/taglib_mp4filetyperesolver.cpp b/amarok/src/metadata/mp4/taglib_mp4filetyperesolver.cpp deleted file mode 100644 index e179da5d..00000000 --- a/amarok/src/metadata/mp4/taglib_mp4filetyperesolver.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/*************************************************************************** - copyright : (C) 2005 by Martin Aumueller - email : aumuell@reserv.at - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -// (c) 2005 Martin Aumueller -// See COPYING file for licensing information - -#include "taglib_mp4filetyperesolver.h" -#include "mp4file.h" -#include - -TagLib::File *MP4FileTypeResolver::createFile(const char *fileName, - bool readProperties, - TagLib::AudioProperties::ReadStyle propertiesStyle) const -{ - const char *ext = strrchr(fileName, '.'); - if(ext && (!strcasecmp(ext, ".m4a") - || !strcasecmp(ext, ".m4b") || !strcasecmp(ext, ".m4p") - || !strcasecmp(ext, ".mp4") - || !strcasecmp(ext, ".m4v") || !strcasecmp(ext, ".mp4v"))) - { -#if defined(MP4V2_PROJECT_version_hex) && MP4V2_PROJECT_version_hex >= 0x00020000 - MP4FileHandle h = MP4Read(fileName); -#else - MP4FileHandle h = MP4Read(fileName, 0); -#endif - if(MP4_INVALID_FILE_HANDLE == h) - { - return 0; - } - - return new TagLib::MP4::File(fileName, readProperties, propertiesStyle, h); - } - - return 0; -} diff --git a/amarok/src/metadata/mp4/taglib_mp4filetyperesolver.h b/amarok/src/metadata/mp4/taglib_mp4filetyperesolver.h deleted file mode 100644 index 4b6a54e8..00000000 --- a/amarok/src/metadata/mp4/taglib_mp4filetyperesolver.h +++ /dev/null @@ -1,42 +0,0 @@ -/*************************************************************************** - copyright : (C) 2005 by Martin Aumueller - email : aumuell@reserv.at - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -// (c) 2005 Martin Aumueller -// See COPYING file for licensing information - -#ifndef TAGLIB_MP4FILETYPERESOLVER_H -#define TAGLIB_MP4FILETYPERESOLVER_H - -#include -#include - - -class MP4FileTypeResolver : public TagLib::FileRef::FileTypeResolver -{ - TagLib::File *createFile(const char *fileName, - bool readAudioProperties, - TagLib::AudioProperties::ReadStyle audioPropertiesStyle) const; - -public: - virtual ~MP4FileTypeResolver() {} -}; - -#endif diff --git a/amarok/src/metadata/tplugins.cpp b/amarok/src/metadata/tplugins.cpp index 0af1eaf9..eb96243e 100644 --- a/amarok/src/metadata/tplugins.cpp +++ b/amarok/src/metadata/tplugins.cpp @@ -28,14 +28,6 @@ #include #include -#ifdef HAVE_MP4V2 -#include "mp4/taglib_mp4filetyperesolver.h" -#include "mp4/mp4file.h" -#else -#include "m4a/taglib_mp4filetyperesolver.h" -#include "m4a/mp4file.h" -#endif - #ifndef TAGLIB_15 #include "trueaudio/taglib_trueaudiofiletyperesolver.h" #include "trueaudio/ttafile.h" @@ -62,6 +54,7 @@ #include #include #include +#include class MimeTypeFileTypeResolver : public TagLib::FileRef::FileTypeResolver @@ -133,7 +126,6 @@ TagLib::File *MimeTypeFileTypeResolver::createFile(const char *fileName, void registerTaglibPlugins() { //TagLib::FileRef::addFileTypeResolver(new MimeTypeFileTypeResolver); - TagLib::FileRef::addFileTypeResolver(new MP4FileTypeResolver); TagLib::FileRef::addFileTypeResolver(new ASFFileTypeResolver); TagLib::FileRef::addFileTypeResolver(new RealMediaFileTypeResolver); TagLib::FileRef::addFileTypeResolver(new AudibleFileTypeResolver);