Eric Oulashin's C++ Audio Mixer 1.0
MP3File.h
Go to the documentation of this file.
1#ifndef __EO_UTILS_MP3_FILE_H__
2#define __EO_UTILS_MP3_FILE_H__
3
4#include <cstdint>
5
6#include <string>
7#include <utility>
8
10#include "MP3FileInfo.h"
11
12namespace EOUtils
13{
15 enum class Mp3BitrateMode : int
16 {
17 Constant = SF_BITRATE_MODE_CONSTANT,
18 Average = SF_BITRATE_MODE_AVERAGE,
19 Variable = SF_BITRATE_MODE_VARIABLE
20 };
21
23 {
24 public:
25 explicit MP3File(const std::string& pFilename);
26
27 explicit MP3File(const std::string& pFilename, const MP3FileInfo& pFileInfo);
28
29 explicit MP3File(const std::string& pFilename, AudioFileModes pFileMode);
30
35 explicit MP3File(const std::string& pFilename, Mp3BitrateMode pBitrateMode, std::uint32_t pNominalBitrateKbps);
36
41 explicit MP3File(const std::string& pFilename, double pVariableBitrateCompressionZeroBestOneWorst);
42
43 MP3File(const MP3File& pOther);
44
45 MP3File(MP3File&& pOther) noexcept;
46
47 ~MP3File() override;
48
49 AudioFileResultType open(AudioFileModes pOpenMode) override;
50
51 void setAudioFileInfo(const AudioFileInfo& pAudioFileInfo) override;
52
53 const MP3FileInfo& getFileInfo() const;
54
56
57 void setMp3WriteNominalBitrateKbps(std::uint32_t pBitrateKbps);
58
60 void setMp3WriteVariableBitrateCompression(double pZeroBestOneWorst);
61
63
64 protected:
65 bool readFormatMatches(int pSfFullFormat) const override;
66
67 int newFileSfFormatMask() const override;
68
69 const char* formatLabel() const override;
70
71 void configureSndfileEncoderForWrite(SNDFILE* pSnd) override;
72
73 private:
74 MP3FileInfo mMp3Info;
75 bool mMp3CustomizeWriteEncoding = false;
77 std::uint32_t mMp3NominalBitrateKbps = 192;
78 double mMp3VariableCompression = 0.35;
79 };
80}
81
82#endif
Definition AudioFileInfo.h:14
Definition AudioFileResultType.h:13
Definition MP3FileInfo.h:10
MP3File(const std::string &pFilename)
Definition MP3File.cpp:40
void configureSndfileEncoderForWrite(SNDFILE *pSnd) override
Definition MP3File.cpp:167
AudioFileResultType open(AudioFileModes pOpenMode) override
Definition MP3File.cpp:139
~MP3File() override
void setMp3WriteNominalBitrateKbps(std::uint32_t pBitrateKbps)
Definition MP3File.cpp:112
int newFileSfFormatMask() const override
Definition MP3File.cpp:157
void setMp3WriteBitrateMode(Mp3BitrateMode pMode)
Definition MP3File.cpp:106
const char * formatLabel() const override
Definition MP3File.cpp:162
void setAudioFileInfo(const AudioFileInfo &pAudioFileInfo) override
Definition MP3File.cpp:133
const MP3FileInfo & getFileInfo() const
Definition MP3File.cpp:147
void clearMp3WriteEncodingOverrides()
Definition MP3File.cpp:125
bool readFormatMatches(int pSfFullFormat) const override
Definition MP3File.cpp:152
void setMp3WriteVariableBitrateCompression(double pZeroBestOneWorst)
Definition MP3File.cpp:118
SndFileBackedMetadataAudioFile(const std::string &pFilename)
Definition SndFileBackedMetadataAudioFile.cpp:73
Definition StringUtils.cpp:6
AudioFileModes
Definition AudioFile.h:15
Mp3BitrateMode
Definition MP3File.h:16
@ Variable
Definition MP3File.h:19
@ Average
Definition MP3File.h:18
@ Constant
Definition MP3File.h:17