OSDN Git Service

Monkey's Audio: Don't call "tag" program, if there is *no* meta-data to be embedded...
authorLoRd_MuldeR <mulder2@gmx.de>
Sat, 24 Oct 2015 11:43:25 +0000 (13:43 +0200)
committerLoRd_MuldeR <mulder2@gmx.de>
Sat, 24 Oct 2015 11:43:25 +0000 (13:43 +0200)
Nero AAC: Don't call neroAacTag, if there is *no* meta-data to be embedded (neroAacTag doesn't fail in this case, but it would be a pointless call anyway)

doc/Changelog.html
doc/Changelog.md
src/Encoder_AAC.cpp
src/Encoder_MAC.cpp
src/Model_AudioFile.cpp
src/Model_AudioFile.h

index 13c8c11..aadaf1b 100644 (file)
@@ -34,6 +34,7 @@
 <nav id="TOC">
 <ul>
 <li><a href="#lamexp-v4.xx-history"><span class="toc-section-number">1</span> LameXP v4.xx History</a><ul>
+<li><a href="#lamexp-v4.13-xxxx-xx-xx">LameXP v4.13 [xxxx-xx-xx]</a></li>
 <li><a href="#lamexp-v4.12-2015-10-23">LameXP v4.12 [2015-10-23]</a></li>
 <li><a href="#lamexp-v4.11-2015-04-05">LameXP v4.11 [2015-04-05]</a></li>
 <li><a href="#lamexp-v4.10-2014-06-23">LameXP v4.10 [2014-06-23]</a></li>
 </ul>
 </nav>
 <h1 id="lamexp-v4.xx-history"><span class="header-section-number">1</span> LameXP v4.xx History</h1>
+<h2 id="lamexp-v4.13-xxxx-xx-xx" class="unnumbered">LameXP v4.13 [xxxx-xx-xx]</h2>
+<ul>
+<li>Upgraded build environment to Microsoft Visual Studio 2015<br /></li>
+<li>Fixed creation of Monkey's Audio (APE) files, when <strong>no</strong> meta data is being embedded</li>
+</ul>
 <h2 id="lamexp-v4.12-2015-10-23" class="unnumbered">LameXP v4.12 [2015-10-23]</h2>
 <ul>
 <li>Upgraded build environment to Microsoft Visual Studio 2013 with Update-5<br /></li>
index a87d0ea..13414a6 100644 (file)
@@ -2,6 +2,11 @@
 
 # LameXP v4.xx History #
 
+## LameXP v4.13 [xxxx-xx-xx] ## {-}
+
+* Upgraded build environment to Microsoft Visual Studio 2015
+* Fixed creation of Monkey's Audio (APE) files, when **no** meta data is being embedded
+
 ## LameXP v4.12 [2015-10-23] ## {-}
 
 * Upgraded build environment to Microsoft Visual Studio 2013 with Update-5
index f986281..dd826f9 100644 (file)
@@ -285,19 +285,24 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
                return false;
        }
 
+       if(metaInfo.empty(false))
+       {
+               return true;
+       }
+
        emit messageLogged("\n-------------------------------\n");
        
        args.clear();
        args << QDir::toNativeSeparators(outputFile);
 
-       if(!metaInfo.title().isEmpty()) args << QString("-meta:title=%1").arg(cleanTag(metaInfo.title()));
-       if(!metaInfo.artist().isEmpty()) args << QString("-meta:artist=%1").arg(cleanTag(metaInfo.artist()));
-       if(!metaInfo.album().isEmpty()) args << QString("-meta:album=%1").arg(cleanTag(metaInfo.album()));
-       if(!metaInfo.genre().isEmpty()) args << QString("-meta:genre=%1").arg(cleanTag(metaInfo.genre()));
+       if(!metaInfo.title().isEmpty())   args << QString("-meta:title=%1").arg(cleanTag(metaInfo.title()));
+       if(!metaInfo.artist().isEmpty())  args << QString("-meta:artist=%1").arg(cleanTag(metaInfo.artist()));
+       if(!metaInfo.album().isEmpty())   args << QString("-meta:album=%1").arg(cleanTag(metaInfo.album()));
+       if(!metaInfo.genre().isEmpty())   args << QString("-meta:genre=%1").arg(cleanTag(metaInfo.genre()));
        if(!metaInfo.comment().isEmpty()) args << QString("-meta:comment=%1").arg(cleanTag(metaInfo.comment()));
-       if(metaInfo.year()) args << QString("-meta:year=%1").arg(QString::number(metaInfo.year()));
-       if(metaInfo.position()) args << QString("-meta:track=%1").arg(QString::number(metaInfo.position()));
-       if(!metaInfo.cover().isEmpty()) args << QString("-add-cover:%1:%2").arg("front", metaInfo.cover());
+       if(metaInfo.year())               args << QString("-meta:year=%1").arg(QString::number(metaInfo.year()));
+       if(metaInfo.position())           args << QString("-meta:track=%1").arg(QString::number(metaInfo.position()));
+       if(!metaInfo.cover().isEmpty())   args << QString("-add-cover:%1:%2").arg("front", metaInfo.cover());
        
        if(!startProcess(process, m_binary_tag, args))
        {
index 76f4fc3..f49ea2b 100644 (file)
@@ -216,18 +216,23 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
                return false;
        }
 
+       if(metaInfo.empty(true))
+       {
+               return true;
+       }
+
        emit messageLogged("\n-------------------------------\n");
        
        args.clear();
        args << "APE2" << QDir::toNativeSeparators(outputFile);
 
-       if(!metaInfo.title().isEmpty()) args << QString("Title=%1").arg(cleanTag(metaInfo.title()));
-       if(!metaInfo.artist().isEmpty()) args << QString("Artist=%1").arg(cleanTag(metaInfo.artist()));
-       if(!metaInfo.album().isEmpty()) args << QString("Album=%1").arg(cleanTag(metaInfo.album()));
-       if(!metaInfo.genre().isEmpty()) args << QString("Genre=%1").arg(cleanTag(metaInfo.genre()));
+       if(!metaInfo.title().isEmpty())   args << QString("Title=%1").arg(cleanTag(metaInfo.title()));
+       if(!metaInfo.artist().isEmpty())  args << QString("Artist=%1").arg(cleanTag(metaInfo.artist()));
+       if(!metaInfo.album().isEmpty())   args << QString("Album=%1").arg(cleanTag(metaInfo.album()));
+       if(!metaInfo.genre().isEmpty())   args << QString("Genre=%1").arg(cleanTag(metaInfo.genre()));
        if(!metaInfo.comment().isEmpty()) args << QString("Comment=%1").arg(cleanTag(metaInfo.comment()));
-       if(metaInfo.year()) args << QString("Year=%1").arg(QString::number(metaInfo.year()));
-       if(metaInfo.position()) args << QString("Track=%1").arg(QString::number(metaInfo.position()));
+       if(metaInfo.year())               args << QString("Year=%1").arg(QString::number(metaInfo.year()));
+       if(metaInfo.position())           args << QString("Track=%1").arg(QString::number(metaInfo.position()));
        
        //if(!metaInfo.cover().isEmpty()) args << QString("-add-cover:%1:%2").arg("front", metaInfo.cover());
        
index 23d9c5b..15daaff 100644 (file)
@@ -155,6 +155,29 @@ void AudioFileModel_MetaInfo::print(void) const
        PRINT_U(m_position);
 }
 
+bool  AudioFileModel_MetaInfo::empty(const bool &ignoreArtwork) const
+{
+       bool isEmpty = true;
+
+       if(!m_titel.isEmpty())   isEmpty = false;
+       if(!m_artist.isEmpty())  isEmpty = false;
+       if(!m_album.isEmpty())   isEmpty = false;
+       if(!m_genre.isEmpty())   isEmpty = false;
+       if(!m_comment.isEmpty()) isEmpty = false;
+       if(m_year)               isEmpty = false;
+       if(m_position)           isEmpty = false;
+
+       if(!ignoreArtwork)
+       {
+               if(!m_cover.isEmpty())
+               {
+                       isEmpty = false;
+               }
+       }
+
+       return isEmpty;
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 // Audio File - Technical Info
 ///////////////////////////////////////////////////////////////////////////////
index 0e4d02f..fbd610d 100644 (file)
@@ -43,24 +43,27 @@ public:
        ~AudioFileModel_MetaInfo(void);
 
        //Getter
-       inline const QString &title(void) const { return m_titel; }
-       inline const QString &artist(void) const { return m_artist; }
-       inline const QString &album(void) const { return m_album; }
-       inline const QString &genre(void) const { return m_genre; }
+       inline const QString &title(void)   const { return m_titel; }
+       inline const QString &artist(void)  const { return m_artist; }
+       inline const QString &album(void)   const { return m_album; }
+       inline const QString &genre(void)   const { return m_genre; }
        inline const QString &comment(void) const { return m_comment; }
-       inline const QString &cover(void) const { return m_cover.filePath(); }
-       inline unsigned int year(void) const { return m_year; }
-       inline unsigned int position(void) const { return m_position; }
+       inline const QString &cover(void)   const { return m_cover.filePath(); }
+       inline unsigned int year(void)      const { return m_year; }
+       inline unsigned int position(void)  const { return m_position; }
 
        //Setter
-       inline void setTitle(const QString &titel) { m_titel = titel.trimmed(); }
-       inline void setArtist(const QString &artist) { m_artist = artist.trimmed(); }
-       inline void setAlbum(const QString &album) { m_album = album.trimmed(); }
-       inline void setGenre(const QString &genre) { m_genre = genre.trimmed(); }
-       inline void setComment(const QString &comment) { m_comment = comment.trimmed(); }
+       inline void setTitle(const QString &titel)                    { m_titel = titel.trimmed(); }
+       inline void setArtist(const QString &artist)                  { m_artist = artist.trimmed(); }
+       inline void setAlbum(const QString &album)                    { m_album = album.trimmed(); }
+       inline void setGenre(const QString &genre)                    { m_genre = genre.trimmed(); }
+       inline void setComment(const QString &comment)                { m_comment = comment.trimmed(); }
        inline void setCover(const QString &path, const bool isOwner) { m_cover.setFilePath(path, isOwner); }
-       inline void setYear(const unsigned int year) { m_year = year; }
-       inline void setPosition(const unsigned int position) { m_position = position; }
+       inline void setYear(const unsigned int year)                  { m_year = year; }
+       inline void setPosition(const unsigned int position)          { m_position = position; }
+
+       //Is empty?
+       bool empty(const bool &ignoreArtwork) const;
 
        //Reset
        void reset(void);
@@ -72,11 +75,11 @@ public:
        void print(void) const;
 
 private:
-       QString m_titel;
-       QString m_artist;
-       QString m_album;
-       QString m_genre;
-       QString m_comment;
+       QString      m_titel;
+       QString      m_artist;
+       QString      m_album;
+       QString      m_genre;
+       QString      m_comment;
        ArtworkModel m_cover;
        unsigned int m_year;
        unsigned int m_position;
@@ -98,32 +101,32 @@ public:
        ~AudioFileModel_TechInfo(void);
 
        //Getter
-       inline const QString &containerType(void) const { return m_containerType; }
+       inline const QString &containerType(void)    const { return m_containerType; }
        inline const QString &containerProfile(void) const { return m_containerProfile; }
-       inline const QString &audioType(void) const { return m_audioType; }
-       inline const QString &audioProfile(void) const { return m_audioProfile; }
-       inline const QString &audioVersion(void) const { return m_audioVersion; }
-       inline const QString &audioEncodeLib(void) const { return m_audioEncodeLib; }
-       inline unsigned int audioSamplerate(void) const { return m_audioSamplerate; }
-       inline unsigned int audioChannels(void) const { return m_audioChannels; }
-       inline unsigned int audioBitdepth(void) const { return m_audioBitdepth; }
-       inline unsigned int audioBitrate(void) const { return m_audioBitrate; }
-       inline unsigned int audioBitrateMode(void) const { return m_audioBitrateMode; }
-       inline unsigned int duration(void) const { return m_duration; }
+       inline const QString &audioType(void)        const { return m_audioType; }
+       inline const QString &audioProfile(void)     const { return m_audioProfile; }
+       inline const QString &audioVersion(void)     const { return m_audioVersion; }
+       inline const QString &audioEncodeLib(void)   const { return m_audioEncodeLib; }
+       inline unsigned int audioSamplerate(void)    const { return m_audioSamplerate; }
+       inline unsigned int audioChannels(void)      const { return m_audioChannels; }
+       inline unsigned int audioBitdepth(void)      const { return m_audioBitdepth; }
+       inline unsigned int audioBitrate(void)       const { return m_audioBitrate; }
+       inline unsigned int audioBitrateMode(void)   const { return m_audioBitrateMode; }
+       inline unsigned int duration(void)           const { return m_duration; }
 
        //Setter
-       inline void setContainerType(const QString &containerType) { m_containerType = containerType.trimmed(); }
-       inline void setContainerProfile(const QString &containerProfile) { m_containerProfile = containerProfile.trimmed(); }
-       inline void setAudioType(const QString &audioType) { m_audioType = audioType.trimmed(); }
-       inline void setAudioProfile(const QString &audioProfile) { m_audioProfile = audioProfile.trimmed(); }
-       inline void setAudioVersion(const QString &audioVersion) { m_audioVersion = audioVersion.trimmed(); }
-       inline void setAudioEncodeLib(const QString &audioEncodeLib) { m_audioEncodeLib = audioEncodeLib.trimmed(); }
-       inline void setAudioSamplerate(const unsigned int audioSamplerate) { m_audioSamplerate = audioSamplerate; }
-       inline void setAudioChannels(const unsigned int audioChannels) { m_audioChannels = audioChannels; }
-       inline void setAudioBitdepth(const unsigned int audioBitdepth) { m_audioBitdepth = audioBitdepth; }
-       inline void setAudioBitrate(const unsigned int audioBitrate) { m_audioBitrate = audioBitrate; }
+       inline void setContainerType(const QString &containerType)           { m_containerType = containerType.trimmed(); }
+       inline void setContainerProfile(const QString &containerProfile)     { m_containerProfile = containerProfile.trimmed(); }
+       inline void setAudioType(const QString &audioType)                   { m_audioType = audioType.trimmed(); }
+       inline void setAudioProfile(const QString &audioProfile)             { m_audioProfile = audioProfile.trimmed(); }
+       inline void setAudioVersion(const QString &audioVersion)             { m_audioVersion = audioVersion.trimmed(); }
+       inline void setAudioEncodeLib(const QString &audioEncodeLib)         { m_audioEncodeLib = audioEncodeLib.trimmed(); }
+       inline void setAudioSamplerate(const unsigned int audioSamplerate)   { m_audioSamplerate = audioSamplerate; }
+       inline void setAudioChannels(const unsigned int audioChannels)       { m_audioChannels = audioChannels; }
+       inline void setAudioBitdepth(const unsigned int audioBitdepth)       { m_audioBitdepth = audioBitdepth; }
+       inline void setAudioBitrate(const unsigned int audioBitrate)         { m_audioBitrate = audioBitrate; }
        inline void setAudioBitrateMode(const unsigned int audioBitrateMode) { m_audioBitrateMode = audioBitrateMode; }
-       inline void setDuration(const unsigned int duration) { m_duration = duration; }
+       inline void setDuration(const unsigned int duration)                 { m_duration = duration; }
 
        //Reset
        void reset(void);
@@ -170,14 +173,14 @@ public:
        ~AudioFileModel(void);
 
        //Getter
-       inline const QString &filePath(void) const { return m_filePath; }
+       inline const QString &filePath(void)                 const { return m_filePath; }
        inline const AudioFileModel_MetaInfo &metaInfo(void) const { return m_metaInfo; }
        inline const AudioFileModel_TechInfo &techInfo(void) const { return m_techInfo; }
-       inline AudioFileModel_MetaInfo &metaInfo(void) { return m_metaInfo; }
-       inline AudioFileModel_TechInfo &techInfo(void) { return m_techInfo; }
+       inline AudioFileModel_MetaInfo &metaInfo(void)             { return m_metaInfo; }
+       inline AudioFileModel_TechInfo &techInfo(void)             { return m_techInfo; }
 
        //Setter
-       inline void setFilePath(const QString &filePath) { m_filePath = filePath; }
+       inline void setFilePath(const QString &filePath)                 { m_filePath = filePath; }
        inline void setMetaInfo(const AudioFileModel_MetaInfo &metaInfo) { m_metaInfo = metaInfo; }
        inline void setTechInfo(const AudioFileModel_TechInfo &techInfo) { m_techInfo = techInfo; }