mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-17 02:19:06 -05:00
Increasd io stream buffers: - 64kB for big files with short lifetime scope - 16kB for big files with long lifetime scope - 1kB - dont changes default forr the rest
54 lines
1.3 KiB
C++
54 lines
1.3 KiB
C++
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include "Encoder.hpp"
|
|
#include "EncoderWAV.hpp"
|
|
|
|
#include <stdint.h>
|
|
#include <string>
|
|
#include <memory>
|
|
#include <cstring>
|
|
|
|
namespace audio
|
|
{
|
|
|
|
Encoder::Encoder(const char *fileName, const Format &frmt) : format(frmt), filePath(fileName)
|
|
{
|
|
|
|
fd = std::fopen(fileName, "w");
|
|
if (fd == NULL) {
|
|
return;
|
|
}
|
|
constexpr size_t streamBufferSize = 6;
|
|
streamBuffer = std::make_unique<char[]>(streamBufferSize);
|
|
setvbuf(fd, streamBuffer.get(), _IOFBF, streamBufferSize);
|
|
isInitialized = true;
|
|
}
|
|
|
|
Encoder::~Encoder()
|
|
{
|
|
if (fd) {
|
|
std::fclose(fd);
|
|
}
|
|
}
|
|
|
|
std::unique_ptr<Encoder> Encoder::Create(const char *file, const Format &frmt)
|
|
{
|
|
std::unique_ptr<Encoder> enc;
|
|
if ((strstr(file, ".wav") != NULL) || (strstr(file, ".WAV") != NULL)) {
|
|
enc = std::make_unique<EncoderWAV>(file, frmt);
|
|
}
|
|
else {
|
|
return nullptr;
|
|
}
|
|
|
|
if (enc->isInitialized) {
|
|
return enc;
|
|
}
|
|
else {
|
|
return nullptr;
|
|
}
|
|
}
|
|
|
|
} // namespace audio
|