OSDN Git Service

Added Visual Studio 2012 project files.
[lamexp/LameXP.git] / src / Model_AudioFile.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // LameXP - Audio Encoder Front-End
3 // Copyright (C) 2004-2012 LoRd_MuldeR <MuldeR2@GMX.de>
4 //
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.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License along
16 // with this program; if not, write to the Free Software Foundation, Inc.,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 //
19 // http://www.gnu.org/licenses/gpl-2.0.txt
20 ///////////////////////////////////////////////////////////////////////////////
21
22 #pragma once
23
24 #include "Model_Artwork.h"
25
26 #include <QObject>
27 #include <QString>
28 #include <QMap>
29 #include <QMutex>
30
31 class AudioFileModel : public QObject
32 {
33         Q_OBJECT
34
35 public:
36         AudioFileModel(const QString &path = QString(), const QString &name = QString());
37         AudioFileModel(const AudioFileModel &model, bool copyMetaInfo = true);
38         AudioFileModel &operator=(const AudioFileModel &model);
39         ~AudioFileModel(void);
40
41         enum BitrateMode
42         {
43                 BitrateModeUndefined = 0,
44                 BitrateModeConstant = 1,
45                 BitrateModeVariable = 2,
46         };
47
48         static const unsigned int BITDEPTH_IEEE_FLOAT32;
49
50         //-----------------------
51         //Getters
52         //-----------------------
53
54         const QString &filePath(void) const;
55         const QString &fileName(void) const;
56         const QString &fileArtist(void) const;
57         const QString &fileAlbum(void) const;
58         const QString &fileGenre(void) const;
59         const QString &fileComment(void) const;
60         const QString &fileCover(void) const;
61         unsigned int fileYear(void) const;
62         unsigned int filePosition(void) const;
63         unsigned int fileDuration(void) const;
64
65         const QString &formatContainerType(void) const;
66         const QString &formatContainerProfile(void) const;
67         const QString &formatAudioType(void) const;
68         const QString &formatAudioProfile(void) const;
69         const QString &formatAudioVersion(void) const;
70         unsigned int formatAudioSamplerate(void) const;
71         unsigned int formatAudioChannels(void) const;
72         unsigned int formatAudioBitdepth(void) const;
73         unsigned int formatAudioBitrate(void) const;
74         unsigned int formatAudioBitrateMode(void) const;
75         
76         const QString fileDurationInfo(void) const;
77         const QString formatContainerInfo(void) const;
78         const QString formatAudioBaseInfo(void) const;
79         const QString formatAudioCompressInfo(void) const;
80
81         //-----------------------
82         //Setters
83         //-----------------------
84
85         void setFilePath(const QString &path);
86         void setFileName(const QString &name);
87         void setFileArtist(const QString &artist);
88         void setFileAlbum(const QString &album);
89         void setFileGenre(const QString &genre);
90         void setFileComment(const QString &comment);
91         void setFileCover(const QString &coverFile, bool owner);
92         void setFileCover(const ArtworkModel &model);
93         void setFileYear(unsigned int year);
94         void setFilePosition(unsigned int position);
95         void setFileDuration(unsigned int duration);
96
97         void setFormatContainerType(const QString &type);
98         void setFormatContainerProfile(const QString &profile);
99         void setFormatAudioType(const QString &type);
100         void setFormatAudioProfile(const QString &profile);
101         void setFormatAudioVersion(const QString &version);
102         void setFormatAudioEncodeLib(const QString &encodeLib);
103         void setFormatAudioSamplerate(unsigned int samplerate);
104         void setFormatAudioChannels(unsigned int channels);
105         void setFormatAudioBitdepth(unsigned int bitdepth);
106         void setFormatAudioBitrate(unsigned int bitrate);
107         void setFormatAudioBitrateMode(unsigned int bitrateMode);
108
109         void updateMetaInfo(const AudioFileModel &model);
110
111 private:
112         QString m_filePath;
113         QString m_fileName;
114         QString m_fileArtist;
115         QString m_fileAlbum;
116         QString m_fileGenre;
117         QString m_fileComment;
118         ArtworkModel m_fileCover;
119         unsigned int m_fileYear;
120         unsigned int m_filePosition;
121         unsigned int m_fileDuration;
122
123         QString m_formatContainerType;
124         QString m_formatContainerProfile;
125         QString m_formatAudioType;
126         QString m_formatAudioProfile;
127         QString m_formatAudioVersion;
128         QString m_formatAudioEncodeLib;
129         unsigned int m_formatAudioSamplerate;
130         unsigned int m_formatAudioChannels;
131         unsigned int m_formatAudioBitdepth;
132         unsigned int m_formatAudioBitrate;
133         unsigned int m_formatAudioBitrateMode;
134
135         void resetAll(void);
136 };