summaryrefslogtreecommitdiffstats
path: root/src/encoder/encoderfdkaacsettings.cpp
blob: 3abaa8d1bdd1d4edaa4b8c0a44b328a29f0414c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include "encoder/encoderfdkaacsettings.h"

#include "recording/defs_recording.h"
#include "util/logger.h"

namespace {
const int kDefaultQualityIndex = 6;
const char* kQualityKey = "FdkAac_Quality";
const mixxx::Logger kLogger("EncoderFdkAacSettings");
} // namespace

EncoderFdkAacSettings::EncoderFdkAacSettings(
        UserSettingsPointer pConfig,
        QString format)
        : m_pConfig(pConfig),
          m_format(std::move(format)) {
    m_qualList.append(32);
    m_qualList.append(48);
    m_qualList.append(64);
    m_qualList.append(80);
    m_qualList.append(96);
    m_qualList.append(112); // stereo
    m_qualList.append(128); // stereo
    m_qualList.append(160); // stereo
    m_qualList.append(192); // stereo
    m_qualList.append(224); // stereo
    m_qualList.append(256); // stereo
    m_qualList.append(320); // stereo
}

EncoderFdkAacSettings::~EncoderFdkAacSettings() {
}

QList<int> EncoderFdkAacSettings::getQualityValues() const {
    return m_qualList;
}

void EncoderFdkAacSettings::setQualityByIndex(int qualityIndex) {
    if (qualityIndex >= 0 && qualityIndex < m_qualList.size()) {
        m_pConfig->set(ConfigKey(RECORDING_PREF_KEY, kQualityKey), ConfigValue(qualityIndex));
    } else {
        qWarning() << "Invalid qualityIndex given to EncoderMp3Settings: "
                   << qualityIndex << ". Ignoring it";
    }
}

int EncoderFdkAacSettings::getQuality() const {
    return m_qualList.at(getQualityIndex());
}

int EncoderFdkAacSettings::getQualityIndex() const {
    int qualityIndex = m_pConfig->getValue(
            ConfigKey(RECORDING_PREF_KEY, kQualityKey), kDefaultQualityIndex);
    if (qualityIndex >= 0 && qualityIndex < m_qualList.size()) {
        return qualityIndex;
    } else {
        kLogger.warning()
                << "Invalid qualityIndex:"
                << qualityIndex << "(Max is:" << m_qualList.size() << "). Ignoring it"
                << "and returning default, which is:" << kDefaultQualityIndex;
    }
    return kDefaultQualityIndex;
}