1 ///////////////////////////////////////////////////////////////////////////////
2 // LameXP - Audio Encoder Front-End
3 // Copyright (C) 2004-2020 LoRd_MuldeR <MuldeR2@GMX.de>
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU GENERAL PUBLIC LICENSE as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // (at your option) any later version; always including the non-optional
9 // LAMEXP GNU GENERAL PUBLIC LICENSE ADDENDUM. See "License.txt" file!
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this program; if not, write to the Free Software Foundation, Inc.,
18 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 // http://www.gnu.org/licenses/gpl-2.0.txt
21 ///////////////////////////////////////////////////////////////////////////////
28 #include "Model_Artwork.h"
30 ///////////////////////////////////////////////////////////////////////////////
31 // Audio File - Meta Info
32 ///////////////////////////////////////////////////////////////////////////////
34 class AudioFileModel_MetaInfo
: public QObject
39 //Constructors & Destructor
40 AudioFileModel_MetaInfo(void);
41 AudioFileModel_MetaInfo(const AudioFileModel_MetaInfo
&model
);
42 AudioFileModel_MetaInfo
&operator=(const AudioFileModel_MetaInfo
&model
);
43 ~AudioFileModel_MetaInfo(void);
46 inline const QString
&title(void) const { return m_titel
; }
47 inline const QString
&artist(void) const { return m_artist
; }
48 inline const QString
&album(void) const { return m_album
; }
49 inline const QString
&genre(void) const { return m_genre
; }
50 inline const QString
&comment(void) const { return m_comment
; }
51 inline const QString
&cover(void) const { return m_cover
.filePath(); }
52 inline unsigned int year(void) const { return m_year
; }
53 inline unsigned int position(void) const { return m_position
; }
56 inline void setTitle(const QString
&titel
) { m_titel
= titel
.trimmed(); }
57 inline void setArtist(const QString
&artist
) { m_artist
= artist
.trimmed(); }
58 inline void setAlbum(const QString
&album
) { m_album
= album
.trimmed(); }
59 inline void setGenre(const QString
&genre
) { m_genre
= genre
.trimmed(); }
60 inline void setComment(const QString
&comment
) { m_comment
= comment
.trimmed(); }
61 inline void setCover(const QString
&path
, const bool isOwner
) { m_cover
.setFilePath(path
, isOwner
); }
62 inline void setYear(const unsigned int year
) { m_year
= year
; }
63 inline void setPosition(const unsigned int position
) { m_position
= position
; }
66 bool empty(const bool &ignoreArtwork
) const;
72 void update(const AudioFileModel_MetaInfo
&model
, const bool replace
);
75 void print(void) const;
85 unsigned int m_position
;
88 ///////////////////////////////////////////////////////////////////////////////
89 // Audio File - Technical Info
90 ///////////////////////////////////////////////////////////////////////////////
92 class AudioFileModel_TechInfo
: public QObject
97 //Constructors & Destructor
98 AudioFileModel_TechInfo(void);
99 AudioFileModel_TechInfo(const AudioFileModel_TechInfo
&model
);
100 AudioFileModel_TechInfo
&operator=(const AudioFileModel_TechInfo
&model
);
101 ~AudioFileModel_TechInfo(void);
104 inline const QString
&containerType(void) const { return m_containerType
; }
105 inline const QString
&containerProfile(void) const { return m_containerProfile
; }
106 inline const QString
&audioType(void) const { return m_audioType
; }
107 inline const QString
&audioProfile(void) const { return m_audioProfile
; }
108 inline const QString
&audioVersion(void) const { return m_audioVersion
; }
109 inline const QString
&audioEncodeLib(void) const { return m_audioEncodeLib
; }
110 inline unsigned int audioSamplerate(void) const { return m_audioSamplerate
; }
111 inline unsigned int audioChannels(void) const { return m_audioChannels
; }
112 inline unsigned int audioBitdepth(void) const { return m_audioBitdepth
; }
113 inline unsigned int audioBitrate(void) const { return m_audioBitrate
; }
114 inline unsigned int audioBitrateMode(void) const { return m_audioBitrateMode
; }
115 inline unsigned int duration(void) const { return m_duration
; }
118 inline void setContainerType(const QString
&containerType
) { m_containerType
= containerType
.trimmed(); }
119 inline void setContainerProfile(const QString
&containerProfile
) { m_containerProfile
= containerProfile
.trimmed(); }
120 inline void setAudioType(const QString
&audioType
) { m_audioType
= audioType
.trimmed(); }
121 inline void setAudioProfile(const QString
&audioProfile
) { m_audioProfile
= audioProfile
.trimmed(); }
122 inline void setAudioVersion(const QString
&audioVersion
) { m_audioVersion
= audioVersion
.trimmed(); }
123 inline void setAudioEncodeLib(const QString
&audioEncodeLib
) { m_audioEncodeLib
= audioEncodeLib
.trimmed(); }
124 inline void setAudioSamplerate(const unsigned int audioSamplerate
) { m_audioSamplerate
= audioSamplerate
; }
125 inline void setAudioChannels(const unsigned int audioChannels
) { m_audioChannels
= audioChannels
; }
126 inline void setAudioBitdepth(const unsigned int audioBitdepth
) { m_audioBitdepth
= audioBitdepth
; }
127 inline void setAudioBitrate(const unsigned int audioBitrate
) { m_audioBitrate
= audioBitrate
; }
128 inline void setAudioBitrateMode(const unsigned int audioBitrateMode
) { m_audioBitrateMode
= audioBitrateMode
; }
129 inline void setDuration(const unsigned int duration
) { m_duration
= duration
; }
135 QString m_containerType
;
136 QString m_containerProfile
;
138 QString m_audioProfile
;
139 QString m_audioVersion
;
140 QString m_audioEncodeLib
;
141 unsigned int m_audioSamplerate
;
142 unsigned int m_audioChannels
;
143 unsigned int m_audioBitdepth
;
144 unsigned int m_audioBitrate
;
145 unsigned int m_audioBitrateMode
;
146 unsigned int m_duration
;
149 ///////////////////////////////////////////////////////////////////////////////
151 ///////////////////////////////////////////////////////////////////////////////
153 class AudioFileModel
: public QObject
161 BitrateModeUndefined
= 0,
162 BitrateModeConstant
= 1,
163 BitrateModeVariable
= 2,
167 static const unsigned int BITDEPTH_IEEE_FLOAT32
;
169 //Constructors & Destructor
170 AudioFileModel(const QString
&path
= QString());
171 AudioFileModel(const AudioFileModel
&model
);
172 AudioFileModel
&operator=(const AudioFileModel
&model
);
173 ~AudioFileModel(void);
176 inline const QString
&filePath(void) const { return m_filePath
; }
177 inline const AudioFileModel_MetaInfo
&metaInfo(void) const { return m_metaInfo
; }
178 inline const AudioFileModel_TechInfo
&techInfo(void) const { return m_techInfo
; }
179 inline AudioFileModel_MetaInfo
&metaInfo(void) { return m_metaInfo
; }
180 inline AudioFileModel_TechInfo
&techInfo(void) { return m_techInfo
; }
183 inline void setFilePath(const QString
&filePath
) { m_filePath
= filePath
; }
184 inline void setMetaInfo(const AudioFileModel_MetaInfo
&metaInfo
) { m_metaInfo
= metaInfo
; }
185 inline void setTechInfo(const AudioFileModel_TechInfo
&techInfo
) { m_techInfo
= techInfo
; }
188 const QString
durationInfo(void) const;
189 const QString
containerInfo(void) const;
190 const QString
audioBaseInfo(void) const;
191 const QString
audioCompressInfo(void) const;
198 AudioFileModel_MetaInfo m_metaInfo
;
199 AudioFileModel_TechInfo m_techInfo
;