remove init setup
This commit is contained in:
@@ -8,7 +8,8 @@ auto main() -> int
|
|||||||
// данных для чтения m_block_size; см. установки по умолчанию.
|
// данных для чтения m_block_size; см. установки по умолчанию.
|
||||||
// Передается по ссылке и заполняется необходимыми данными
|
// Передается по ссылке и заполняется необходимыми данными
|
||||||
hr::setup setup;
|
hr::setup setup;
|
||||||
setup.init(hr::DOMAIN_PLUGIN::FREQUENSY, "./sin.wav");
|
setup.m_domain = hr::DOMAIN_PLUGIN::FREQUENSY;
|
||||||
|
setup.m_file = "./sin.wav";
|
||||||
|
|
||||||
auto r = hr::run<hr::plugins::fft>(setup);
|
auto r = hr::run<hr::plugins::fft>(setup);
|
||||||
hack::log()("grad:", r.m_grad);
|
hack::log()("grad:", r.m_grad);
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ auto main() -> int
|
|||||||
// данных для чтения m_block_size; см. установки по умолчанию.
|
// данных для чтения m_block_size; см. установки по умолчанию.
|
||||||
// Передается по ссылке и заполняется необходимыми данными
|
// Передается по ссылке и заполняется необходимыми данными
|
||||||
hr::setup setup;
|
hr::setup setup;
|
||||||
setup.init(hr::DOMAIN_PLUGIN::TIME, "./sin.wav");
|
setup.m_domain = hr::DOMAIN_PLUGIN::TIME;
|
||||||
|
setup.m_file = "./sin.wav";
|
||||||
|
|
||||||
auto r = hr::run<hr::plugins::raw_data>(setup);
|
auto r = hr::run<hr::plugins::raw_data>(setup);
|
||||||
hack::log()("grad:", r.m_grad);
|
hack::log()("grad:", r.m_grad);
|
||||||
|
|||||||
@@ -24,14 +24,12 @@ namespace hr
|
|||||||
template<typename Plugin>
|
template<typename Plugin>
|
||||||
inline result run(setup& setup)
|
inline result run(setup& setup)
|
||||||
{
|
{
|
||||||
// Инициализация структуры для libsndfile и открытие файла
|
|
||||||
SF_INFO sf_info;
|
SF_INFO sf_info;
|
||||||
auto deleter = [&](SNDFILE* f) { if (f) sf_close(f); hack::log()("reading file completed", setup.m_file);};
|
auto deleter = [&](SNDFILE* f) { if (f) sf_close(f); };
|
||||||
std::unique_ptr<SNDFILE, decltype(deleter)> sf_file(sf_open(setup.m_file.c_str(), SFM_READ, &sf_info), deleter);
|
std::unique_ptr<SNDFILE, decltype(deleter)> sf_file(sf_open(setup.m_file.c_str(), SFM_READ, &sf_info), deleter);
|
||||||
|
|
||||||
if (!sf_file)
|
if (!sf_file)
|
||||||
{
|
{
|
||||||
// Обработка ошибки открытия файла
|
|
||||||
hack::exception ex;
|
hack::exception ex;
|
||||||
hack::log().on_file();
|
hack::log().on_file();
|
||||||
hack::log().on_func();
|
hack::log().on_func();
|
||||||
@@ -43,12 +41,15 @@ namespace hr
|
|||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Инициализация переменных для чтения
|
setup.m_sample_rate = sf_info.samplerate;
|
||||||
std::size_t read = 0; // Количество обработанных кадров
|
setup.m_frames = sf_info.frames;
|
||||||
|
setup.m_channels = sf_info.channels;
|
||||||
|
setup.check();
|
||||||
|
|
||||||
|
std::size_t read = 0; // Количество обработанных кадров
|
||||||
fvec_t read_data(setup.m_channels * setup.m_step_size, .0); // Буфер для чтения (интерливированные данные)
|
fvec_t read_data(setup.m_channels * setup.m_step_size, .0); // Буфер для чтения (интерливированные данные)
|
||||||
fvec_t in(setup.m_step_size, .0); // Буфер для моно-данных
|
fvec_t in(setup.m_step_size, .0); // Буфер для моно-данных
|
||||||
|
|
||||||
// Создание плагина и адаптера для обработки
|
|
||||||
Plugin pl { setup };
|
Plugin pl { setup };
|
||||||
adapter ad { pl };
|
adapter ad { pl };
|
||||||
|
|
||||||
@@ -66,8 +67,7 @@ namespace hr
|
|||||||
{
|
{
|
||||||
in[i] = 0.0;
|
in[i] = 0.0;
|
||||||
// Суммирование всех каналов
|
// Суммирование всех каналов
|
||||||
for (int c = 0; c < setup.m_channels; ++c)
|
for (int c = 0; c < setup.m_channels; ++c) in[i] += read_data[setup.m_channels * i + c];
|
||||||
in[i] += read_data[setup.m_channels * i + c];
|
|
||||||
// Усреднение для получения моно-сигнала
|
// Усреднение для получения моно-сигнала
|
||||||
in[i] /= static_cast<base_t>(setup.m_channels);
|
in[i] /= static_cast<base_t>(setup.m_channels);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,21 +13,6 @@ namespace hr
|
|||||||
FREQUENSY
|
FREQUENSY
|
||||||
};
|
};
|
||||||
|
|
||||||
inline std::string domain_to_string(DOMAIN_PLUGIN d)
|
|
||||||
{
|
|
||||||
std::string res;
|
|
||||||
switch (d)
|
|
||||||
{
|
|
||||||
case hr::DOMAIN_PLUGIN::FREQUENSY:
|
|
||||||
res = "FREQUENSY";
|
|
||||||
break;
|
|
||||||
case hr::DOMAIN_PLUGIN::TIME:
|
|
||||||
res = "TIME";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct setup
|
struct setup
|
||||||
{
|
{
|
||||||
// Эти данные заполняются из прочитанного файла (sndfile)
|
// Эти данные заполняются из прочитанного файла (sndfile)
|
||||||
@@ -46,51 +31,19 @@ namespace hr
|
|||||||
|
|
||||||
DOMAIN_PLUGIN m_domain = DOMAIN_PLUGIN::TIME;
|
DOMAIN_PLUGIN m_domain = DOMAIN_PLUGIN::TIME;
|
||||||
|
|
||||||
void init(DOMAIN_PLUGIN domain, std::filesystem::path file)
|
void check()
|
||||||
{
|
{
|
||||||
m_domain = domain;
|
if (m_channels == 0)
|
||||||
m_file = file;
|
|
||||||
|
|
||||||
// Инициализация структуры для libsndfile и открытие файла
|
|
||||||
SF_INFO sf_info;
|
|
||||||
auto deleter = [&](SNDFILE* f) { if (f) sf_close(f); hack::log()("setup file completed", m_file);};
|
|
||||||
std::unique_ptr<SNDFILE, decltype(deleter)> sf_file(sf_open(m_file.c_str(), SFM_READ, &sf_info), deleter);
|
|
||||||
|
|
||||||
if (!sf_file)
|
|
||||||
{
|
{
|
||||||
// Обработка ошибки открытия файла
|
|
||||||
hack::exception ex;
|
hack::exception ex;
|
||||||
hack::log().on_file();
|
hack::log().on_file();
|
||||||
hack::log().on_func();
|
hack::log().on_func();
|
||||||
hack::log().on_row();
|
hack::log().on_row();
|
||||||
ex.title("Error of open file");
|
ex.title("Нет каналов в аудиофайле");
|
||||||
ex.description(sf_strerror(sf_file.get()));
|
|
||||||
ex.set("file", m_file);
|
ex.set("file", m_file);
|
||||||
hack::error()(ex);
|
hack::error()(ex);
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
// HERE
|
|
||||||
// тут нужен DEBUG
|
|
||||||
print_info();
|
|
||||||
|
|
||||||
// Сохранение информации о файле в настройки
|
|
||||||
m_sample_rate = sf_info.samplerate;
|
|
||||||
m_frames = sf_info.frames;
|
|
||||||
m_channels = sf_info.channels;
|
|
||||||
|
|
||||||
// можно конечн throw, но не нужно...
|
|
||||||
if (m_channels == 0)
|
|
||||||
hack::error()("Нет каналов в аудиофайле");
|
|
||||||
}
|
|
||||||
|
|
||||||
void print_info() const noexcept
|
|
||||||
{
|
|
||||||
hack::log()("file", m_file);
|
|
||||||
hack::log()("domain", domain_to_string(m_domain));
|
|
||||||
hack::log()("sample rate", m_sample_rate);
|
|
||||||
hack::log()("channels", m_channels);
|
|
||||||
hack::log()("frames", m_frames);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user