Monkey's Audio: Don't call "tag" program, if there is *no* meta-data to be embedded, because it will fail (bug probably existed since MAC encoding support was added)

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)
This commit is contained in:
LoRd_MuldeR 2015-10-24 13:43:25 +02:00
parent 2db74fad61
commit 5d3ff699da
6 changed files with 105 additions and 58 deletions

View File

@ -34,6 +34,7 @@
<nav id="TOC"> <nav id="TOC">
<ul> <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.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.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.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> <li><a href="#lamexp-v4.10-2014-06-23">LameXP v4.10 [2014-06-23]</a></li>
@ -80,6 +81,11 @@
</ul> </ul>
</nav> </nav>
<h1 id="lamexp-v4.xx-history"><span class="header-section-number">1</span> LameXP v4.xx History</h1> <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> <h2 id="lamexp-v4.12-2015-10-23" class="unnumbered">LameXP v4.12 [2015-10-23]</h2>
<ul> <ul>
<li>Upgraded build environment to Microsoft Visual Studio 2013 with Update-5<br /></li> <li>Upgraded build environment to Microsoft Visual Studio 2013 with Update-5<br /></li>

View File

@ -2,6 +2,11 @@
# LameXP v4.xx History # # 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] ## {-} ## LameXP v4.12 [2015-10-23] ## {-}
* Upgraded build environment to Microsoft Visual Studio 2013 with Update-5 * Upgraded build environment to Microsoft Visual Studio 2013 with Update-5

View File

@ -285,19 +285,24 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
return false; return false;
} }
if(metaInfo.empty(false))
{
return true;
}
emit messageLogged("\n-------------------------------\n"); emit messageLogged("\n-------------------------------\n");
args.clear(); args.clear();
args << QDir::toNativeSeparators(outputFile); args << QDir::toNativeSeparators(outputFile);
if(!metaInfo.title().isEmpty()) args << QString("-meta:title=%1").arg(cleanTag(metaInfo.title())); 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.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.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.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.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.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.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.cover().isEmpty()) args << QString("-add-cover:%1:%2").arg("front", metaInfo.cover());
if(!startProcess(process, m_binary_tag, args)) if(!startProcess(process, m_binary_tag, args))
{ {

View File

@ -216,18 +216,23 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
return false; return false;
} }
if(metaInfo.empty(true))
{
return true;
}
emit messageLogged("\n-------------------------------\n"); emit messageLogged("\n-------------------------------\n");
args.clear(); args.clear();
args << "APE2" << QDir::toNativeSeparators(outputFile); args << "APE2" << QDir::toNativeSeparators(outputFile);
if(!metaInfo.title().isEmpty()) args << QString("Title=%1").arg(cleanTag(metaInfo.title())); 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.artist().isEmpty()) args << QString("Artist=%1").arg(cleanTag(metaInfo.artist()));
if(!metaInfo.album().isEmpty()) args << QString("Album=%1").arg(cleanTag(metaInfo.album())); 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.genre().isEmpty()) args << QString("Genre=%1").arg(cleanTag(metaInfo.genre()));
if(!metaInfo.comment().isEmpty()) args << QString("Comment=%1").arg(cleanTag(metaInfo.comment())); 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.year()) args << QString("Year=%1").arg(QString::number(metaInfo.year()));
if(metaInfo.position()) args << QString("Track=%1").arg(QString::number(metaInfo.position())); 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()); //if(!metaInfo.cover().isEmpty()) args << QString("-add-cover:%1:%2").arg("front", metaInfo.cover());

View File

@ -155,6 +155,29 @@ void AudioFileModel_MetaInfo::print(void) const
PRINT_U(m_position); 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 // Audio File - Technical Info
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

View File

@ -43,24 +43,27 @@ public:
~AudioFileModel_MetaInfo(void); ~AudioFileModel_MetaInfo(void);
//Getter //Getter
inline const QString &title(void) const { return m_titel; } inline const QString &title(void) const { return m_titel; }
inline const QString &artist(void) const { return m_artist; } inline const QString &artist(void) const { return m_artist; }
inline const QString &album(void) const { return m_album; } inline const QString &album(void) const { return m_album; }
inline const QString &genre(void) const { return m_genre; } inline const QString &genre(void) const { return m_genre; }
inline const QString &comment(void) const { return m_comment; } inline const QString &comment(void) const { return m_comment; }
inline const QString &cover(void) const { return m_cover.filePath(); } inline const QString &cover(void) const { return m_cover.filePath(); }
inline unsigned int year(void) const { return m_year; } inline unsigned int year(void) const { return m_year; }
inline unsigned int position(void) const { return m_position; } inline unsigned int position(void) const { return m_position; }
//Setter //Setter
inline void setTitle(const QString &titel) { m_titel = titel.trimmed(); } inline void setTitle(const QString &titel) { m_titel = titel.trimmed(); }
inline void setArtist(const QString &artist) { m_artist = artist.trimmed(); } inline void setArtist(const QString &artist) { m_artist = artist.trimmed(); }
inline void setAlbum(const QString &album) { m_album = album.trimmed(); } inline void setAlbum(const QString &album) { m_album = album.trimmed(); }
inline void setGenre(const QString &genre) { m_genre = genre.trimmed(); } inline void setGenre(const QString &genre) { m_genre = genre.trimmed(); }
inline void setComment(const QString &comment) { m_comment = comment.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 setCover(const QString &path, const bool isOwner) { m_cover.setFilePath(path, isOwner); }
inline void setYear(const unsigned int year) { m_year = year; } inline void setYear(const unsigned int year) { m_year = year; }
inline void setPosition(const unsigned int position) { m_position = position; } inline void setPosition(const unsigned int position) { m_position = position; }
//Is empty?
bool empty(const bool &ignoreArtwork) const;
//Reset //Reset
void reset(void); void reset(void);
@ -72,11 +75,11 @@ public:
void print(void) const; void print(void) const;
private: private:
QString m_titel; QString m_titel;
QString m_artist; QString m_artist;
QString m_album; QString m_album;
QString m_genre; QString m_genre;
QString m_comment; QString m_comment;
ArtworkModel m_cover; ArtworkModel m_cover;
unsigned int m_year; unsigned int m_year;
unsigned int m_position; unsigned int m_position;
@ -98,32 +101,32 @@ public:
~AudioFileModel_TechInfo(void); ~AudioFileModel_TechInfo(void);
//Getter //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 &containerProfile(void) const { return m_containerProfile; }
inline const QString &audioType(void) const { return m_audioType; } inline const QString &audioType(void) const { return m_audioType; }
inline const QString &audioProfile(void) const { return m_audioProfile; } inline const QString &audioProfile(void) const { return m_audioProfile; }
inline const QString &audioVersion(void) const { return m_audioVersion; } inline const QString &audioVersion(void) const { return m_audioVersion; }
inline const QString &audioEncodeLib(void) const { return m_audioEncodeLib; } inline const QString &audioEncodeLib(void) const { return m_audioEncodeLib; }
inline unsigned int audioSamplerate(void) const { return m_audioSamplerate; } inline unsigned int audioSamplerate(void) const { return m_audioSamplerate; }
inline unsigned int audioChannels(void) const { return m_audioChannels; } inline unsigned int audioChannels(void) const { return m_audioChannels; }
inline unsigned int audioBitdepth(void) const { return m_audioBitdepth; } inline unsigned int audioBitdepth(void) const { return m_audioBitdepth; }
inline unsigned int audioBitrate(void) const { return m_audioBitrate; } inline unsigned int audioBitrate(void) const { return m_audioBitrate; }
inline unsigned int audioBitrateMode(void) const { return m_audioBitrateMode; } inline unsigned int audioBitrateMode(void) const { return m_audioBitrateMode; }
inline unsigned int duration(void) const { return m_duration; } inline unsigned int duration(void) const { return m_duration; }
//Setter //Setter
inline void setContainerType(const QString &containerType) { m_containerType = containerType.trimmed(); } inline void setContainerType(const QString &containerType) { m_containerType = containerType.trimmed(); }
inline void setContainerProfile(const QString &containerProfile) { m_containerProfile = containerProfile.trimmed(); } inline void setContainerProfile(const QString &containerProfile) { m_containerProfile = containerProfile.trimmed(); }
inline void setAudioType(const QString &audioType) { m_audioType = audioType.trimmed(); } inline void setAudioType(const QString &audioType) { m_audioType = audioType.trimmed(); }
inline void setAudioProfile(const QString &audioProfile) { m_audioProfile = audioProfile.trimmed(); } inline void setAudioProfile(const QString &audioProfile) { m_audioProfile = audioProfile.trimmed(); }
inline void setAudioVersion(const QString &audioVersion) { m_audioVersion = audioVersion.trimmed(); } inline void setAudioVersion(const QString &audioVersion) { m_audioVersion = audioVersion.trimmed(); }
inline void setAudioEncodeLib(const QString &audioEncodeLib) { m_audioEncodeLib = audioEncodeLib.trimmed(); } inline void setAudioEncodeLib(const QString &audioEncodeLib) { m_audioEncodeLib = audioEncodeLib.trimmed(); }
inline void setAudioSamplerate(const unsigned int audioSamplerate) { m_audioSamplerate = audioSamplerate; } inline void setAudioSamplerate(const unsigned int audioSamplerate) { m_audioSamplerate = audioSamplerate; }
inline void setAudioChannels(const unsigned int audioChannels) { m_audioChannels = audioChannels; } inline void setAudioChannels(const unsigned int audioChannels) { m_audioChannels = audioChannels; }
inline void setAudioBitdepth(const unsigned int audioBitdepth) { m_audioBitdepth = audioBitdepth; } inline void setAudioBitdepth(const unsigned int audioBitdepth) { m_audioBitdepth = audioBitdepth; }
inline void setAudioBitrate(const unsigned int audioBitrate) { m_audioBitrate = audioBitrate; } inline void setAudioBitrate(const unsigned int audioBitrate) { m_audioBitrate = audioBitrate; }
inline void setAudioBitrateMode(const unsigned int audioBitrateMode) { m_audioBitrateMode = audioBitrateMode; } 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 //Reset
void reset(void); void reset(void);
@ -170,14 +173,14 @@ public:
~AudioFileModel(void); ~AudioFileModel(void);
//Getter //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_MetaInfo &metaInfo(void) const { return m_metaInfo; }
inline const AudioFileModel_TechInfo &techInfo(void) const { return m_techInfo; } inline const AudioFileModel_TechInfo &techInfo(void) const { return m_techInfo; }
inline AudioFileModel_MetaInfo &metaInfo(void) { return m_metaInfo; } inline AudioFileModel_MetaInfo &metaInfo(void) { return m_metaInfo; }
inline AudioFileModel_TechInfo &techInfo(void) { return m_techInfo; } inline AudioFileModel_TechInfo &techInfo(void) { return m_techInfo; }
//Setter //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 setMetaInfo(const AudioFileModel_MetaInfo &metaInfo) { m_metaInfo = metaInfo; }
inline void setTechInfo(const AudioFileModel_TechInfo &techInfo) { m_techInfo = techInfo; } inline void setTechInfo(const AudioFileModel_TechInfo &techInfo) { m_techInfo = techInfo; }