M module-audio/Audio/decoder/decoder.cpp => module-audio/Audio/decoder/decoder.cpp +10 -9
@@ 1,6 1,7 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+#include <cstdio>
#include <Utils.hpp>
#include "decoder.hpp"
#include "decoderMP3.hpp"
@@ 18,28 19,28 @@ namespace audio
: filePath(fileName), workerBuffer(std::make_unique<int16_t[]>(workerBufferSize)), tag(std::make_unique<Tags>())
{
- fd = vfs.fopen(fileName, "r");
+ fd = std::fopen(fileName, "r");
if (fd == NULL) {
return;
}
- vfs.fseek(fd, 0, SEEK_END);
- fileSize = vfs.ftell(fd);
- vfs.rewind(fd);
+ std::fseek(fd, 0, SEEK_END);
+ fileSize = std::ftell(fd);
+ std::rewind(fd);
}
decoder::~decoder()
{
if (fd) {
- vfs.fclose(fd);
+ std::fclose(fd);
}
}
std::unique_ptr<Tags> decoder::fetchTags()
{
if (fd) {
- auto inPos = vfs.ftell(fd);
- vfs.rewind(fd);
+ auto inPos = std::ftell(fd);
+ std::rewind(fd);
TagLib::FileStream fileStream(fd);
TagLib::FileRef tagReader(&fileStream);
if (!tagReader.isNull() && tagReader.tag()) {
@@ 60,9 61,9 @@ namespace audio
tag->num_channel = properties->channels();
tag->bitrate = properties->bitrate();
}
- vfs.rewind(fd);
+ std::rewind(fd);
fetchTagsSpecific();
- vfs.fseek(fd, inPos, SEEK_SET);
+ std::fseek(fd, inPos, SEEK_SET);
}
tag->filePath.append(filePath);
M module-audio/Audio/decoder/decoder.hpp => module-audio/Audio/decoder/decoder.hpp +1 -2
@@ 9,7 9,6 @@
#include <optional>
#include <cstring>
-#include <vfs.hpp>
namespace audio
{
@@ 104,7 103,7 @@ namespace audio
uint32_t sampleRate = 0;
uint32_t chanNumber = 0;
float position = 0;
- vfs::FILE *fd = nullptr;
+ std::FILE *fd = nullptr;
uint32_t fileSize = 0;
std::string filePath;
M module-audio/Audio/decoder/decoderFLAC.cpp => module-audio/Audio/decoder/decoderFLAC.cpp +2 -2
@@ 72,13 72,13 @@ namespace audio
size_t decoderFLAC::drflac_read(void *pUserData, void *pBufferOut, size_t bytesToRead)
{
decoderFLAC *userdata = (decoderFLAC *)pUserData;
- return vfs.fread(pBufferOut, 1, bytesToRead, userdata->fd);
+ return std::fread(pBufferOut, 1, bytesToRead, userdata->fd);
}
drflac_bool32 decoderFLAC::drflac_seek(void *pUserData, int offset, drflac_seek_origin origin)
{
decoderFLAC *userdata = (decoderFLAC *)pUserData;
- return !vfs.fseek(userdata->fd, offset, origin == drflac_seek_origin_start ? SEEK_SET : SEEK_CUR);
+ return !std::fseek(userdata->fd, offset, origin == drflac_seek_origin_start ? SEEK_SET : SEEK_CUR);
}
void decoderFLAC::drflac_meta(void *pUserData, drflac_metadata *pMetadata)
M module-audio/Audio/decoder/decoderMP3.cpp => module-audio/Audio/decoder/decoderMP3.cpp +17 -14
@@ 8,6 8,7 @@
#include "decoderMP3.hpp"
#include <array>
+#include <cstdio>
namespace audio
{
@@ 34,7 35,7 @@ namespace audio
{
decoderNotFirstRun = false;
- vfs.fseek(fd, (pos * fileSize) + firstValidFrameFileOffset, SEEK_SET);
+ std::fseek(fd, (pos * fileSize) + firstValidFrameFileOffset, SEEK_SET);
// TODO: M.P Currently calculating MP3 position is unsupported, in general seeking is supported though.
// position += (float) ((float) (samplesToReadChann / chanNumber) / (float) sampleRate);
@@ 43,10 44,10 @@ namespace audio
void decoderMP3::fetchTagsSpecific()
{
- vfs.fseek(fd, firstValidFrameFileOffset + 4, SEEK_SET);
+ std::fseek(fd, firstValidFrameFileOffset + 4, SEEK_SET);
auto buff = std::make_unique<uint8_t[]>(firstValidFrameByteSize);
- vfs.fread(buff.get(), 1, firstValidFrameByteSize, fd);
+ std::fread(buff.get(), 1, firstValidFrameByteSize, fd);
xing_info_t xinfo = {};
if (parseXingHeader(buff.get(), firstValidFrameByteSize, &xinfo)) {
@@ 59,7 60,7 @@ namespace audio
tag->total_duration_s = frames_count * (samplesPerFrame) / sampleRate;
}
- vfs.rewind(fd);
+ std::rewind(fd);
}
bool decoderMP3::find_first_valid_frame()
@@ 72,9 73,9 @@ namespace audio
auto decBuffer = std::make_unique<uint8_t[]>(DECODER_BUFFER_SIZE);
- vfs.rewind(fd);
+ std::rewind(fd);
- if (vfs.fread(decBuffer.get(), 1, DECODER_BUFFER_SIZE, fd) == 0) {
+ if (std::fread(decBuffer.get(), 1, DECODER_BUFFER_SIZE, fd) == 0) {
return false;
}
@@ 82,7 83,8 @@ namespace audio
// refill buffer if necessary(only if over 87,5% of bytes are consumed)
if (bufferIndex > (DECODER_BUFFER_SIZE - (DECODER_BUFFER_SIZE / 8))) {
memcpy(&decBuffer[0], &decBuffer[bufferIndex], bytesAvailable);
- uint32_t bytesRead = vfs.fread(&decBuffer[bytesAvailable], 1, DECODER_BUFFER_SIZE - bytesAvailable, fd);
+ uint32_t bytesRead =
+ std::fread(&decBuffer[bytesAvailable], 1, DECODER_BUFFER_SIZE - bytesAvailable, fd);
if (bytesRead == 0) {
return false;
@@ 106,9 108,9 @@ namespace audio
sampleRate = info.hz;
chanNumber = info.channels;
firstValidFrameByteSize = (144 * info.bitrate_kbps * 1000 / info.hz);
- firstValidFrameFileOffset = vfs.ftell(fd) - bytesAvailable - firstValidFrameByteSize;
+ firstValidFrameFileOffset = std::ftell(fd) - bytesAvailable - firstValidFrameByteSize;
- vfs.rewind(fd);
+ std::rewind(fd);
return true;
}
@@ 135,10 137,10 @@ namespace audio
auto decBuffer = std::make_unique<uint8_t[]>(DECODER_BUFFER_SIZE);
// Jump to the file beginning
- vfs.rewind(fd);
+ std::rewind(fd);
/* Fill decBuffer */
- if (vfs.fread(decBuffer.get(), 1, DECODER_BUFFER_SIZE, fd) == 0) {
+ if (std::fread(decBuffer.get(), 1, DECODER_BUFFER_SIZE, fd) == 0) {
return 0;
}
@@ 148,7 150,7 @@ namespace audio
if (bufferIndex > (DECODER_BUFFER_SIZE - (DECODER_BUFFER_SIZE / 8))) {
memcpy(&decBuffer[0], &decBuffer[bufferIndex], bytesAvailable);
uint32_t bytesRead =
- vfs.fread(decBuffer.get() + bytesAvailable, 1, DECODER_BUFFER_SIZE - bytesAvailable, fd);
+ std::fread(decBuffer.get() + bytesAvailable, 1, DECODER_BUFFER_SIZE - bytesAvailable, fd);
if (bytesRead != (DECODER_BUFFER_SIZE - bytesAvailable)) {
last_refill = true;
@@ 195,7 197,7 @@ namespace audio
pcmsamplesbuffer = std::make_unique<uint16_t[]>(pcmsamplesbuffer_size);
// Fill decoderBuffer
- uint32_t bytesRead = vfs.fread(decoderBuffer.get(), 1, DECODER_BUFFER_SIZE, fd);
+ uint32_t bytesRead = std::fread(decoderBuffer.get(), 1, DECODER_BUFFER_SIZE, fd);
if (bytesRead == 0) {
return 0;
@@ 217,7 219,8 @@ namespace audio
// refill buffer if necessary(only if over 87,5% of bytes consumed)
if (!lastRefill && (decoderBufferIdx > (DECODER_BUFFER_SIZE - (DECODER_BUFFER_SIZE / 8)))) {
memcpy(&decoderBuffer[0], &decoderBuffer[decoderBufferIdx], bytesAvailable);
- uint32_t bytesRead = vfs.fread(&decoderBuffer[bytesAvailable], 1, DECODER_BUFFER_SIZE - bytesAvailable, fd);
+ uint32_t bytesRead =
+ std::fread(&decoderBuffer[bytesAvailable], 1, DECODER_BUFFER_SIZE - bytesAvailable, fd);
if (bytesRead != (DECODER_BUFFER_SIZE - bytesAvailable)) {
lastRefill = true;
M module-audio/Audio/decoder/decoderWAV.cpp => module-audio/Audio/decoder/decoderWAV.cpp +4 -4
@@ 17,7 17,7 @@ namespace audio
return;
}
- if (vfs.fread(&waveHeader, 1, sizeof(waveHeader), fd) != sizeof(WAVE_FormatTypeDef)) {
+ if (std::fread(&waveHeader, 1, sizeof(waveHeader), fd) != sizeof(WAVE_FormatTypeDef)) {
return;
}
@@ 46,7 46,7 @@ namespace audio
break;
case 16:
- samples_read = vfs.fread(pcmData, sizeof(int16_t), samplesToRead, fd);
+ samples_read = std::fread(pcmData, sizeof(int16_t), samplesToRead, fd);
break;
case 24:
@@ 70,9 70,9 @@ namespace audio
void decoderWAV::setPosition(float pos)
{
- vfs.fseek(fd, (fileSize * pos) + sizeof(WAVE_FormatTypeDef), SEEK_SET);
+ std::fseek(fd, (fileSize * pos) + sizeof(WAVE_FormatTypeDef), SEEK_SET);
// Calculate new position
- position = (float)((float)(vfs.ftell(fd) / sizeof(int16_t) / chanNumber) / (float)(sampleRate));
+ position = (float)((float)(std::ftell(fd) / sizeof(int16_t) / chanNumber) / (float)(sampleRate));
}
} // namespace audio
M module-audio/Audio/decoder/decoderWAV.hpp => module-audio/Audio/decoder/decoderWAV.hpp +1 -0
@@ 4,6 4,7 @@
#pragma once
#include "decoder.hpp"
+#include <vector>
namespace audio
{
M module-audio/Audio/encoder/Encoder.cpp => module-audio/Audio/encoder/Encoder.cpp +2 -2
@@ 15,7 15,7 @@ namespace audio
Encoder::Encoder(const char *fileName, const Format &frmt) : format(frmt), filePath(fileName)
{
- fd = vfs.fopen(fileName, "w");
+ fd = std::fopen(fileName, "w");
if (fd == NULL) {
return;
}
@@ 25,7 25,7 @@ namespace audio
Encoder::~Encoder()
{
if (fd) {
- vfs.fclose(fd);
+ std::fclose(fd);
}
}
M module-audio/Audio/encoder/Encoder.hpp => module-audio/Audio/encoder/Encoder.hpp +1 -2
@@ 4,7 4,6 @@
#pragma once
#include <memory>
-#include <vfs.hpp>
namespace audio
{
@@ 40,7 39,7 @@ namespace audio
protected:
float position = 0;
- vfs::FILE *fd = nullptr;
+ std::FILE *fd = nullptr;
uint32_t fileSize = 0;
std::string filePath;
M module-audio/Audio/encoder/EncoderWAV.cpp => module-audio/Audio/encoder/EncoderWAV.cpp +3 -3
@@ 27,10 27,10 @@ namespace audio
EncoderWAV::~EncoderWAV()
{
- vfs.rewind(fd);
+ std::rewind(fd);
/* Update the wav file header save it into wav file */
HeaderUpdate();
- if (vfs.fwrite(pHeaderBuff, 1, sizeof(WAVE_FormatTypeDef), fd) != sizeof(WAVE_FormatTypeDef)) {
+ if (std::fwrite(pHeaderBuff, 1, sizeof(WAVE_FormatTypeDef), fd) != sizeof(WAVE_FormatTypeDef)) {
LOG_ERROR("Updating WAV header failed");
}
}
@@ 40,7 40,7 @@ namespace audio
/*
* Write int16_t PCM samples to file.
*/
- auto byteswritten = vfs.fwrite(pcmData, sizeof(int16_t), samplesToWrite, fd);
+ auto byteswritten = std::fwrite(pcmData, sizeof(int16_t), samplesToWrite, fd);
if (byteswritten != samplesToWrite) {
return 0;
}
M module-audio/Audio/test/CMakeLists.txt => module-audio/Audio/test/CMakeLists.txt +1 -1
@@ 7,7 7,7 @@ add_catch2_executable(
SRCS
unittest_audio.cpp
LIBS
- module-vfs module-audio
+ module-audio
)
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/testfiles" DESTINATION "${CMAKE_BINARY_DIR}")
M module-audio/Audio/test/unittest_audio.cpp => module-audio/Audio/test/unittest_audio.cpp +0 -9
@@ 17,15 17,6 @@
#include "Audio/Audio.hpp"
#include "Audio/Operation/Operation.hpp"
-class vfs vfs;
-
-struct vfs_initializer
-{
- vfs_initializer()
- {
- vfs.Init();
- }
-} vfs_init;
TEST_CASE("Test audio tags")
{
M module-audio/CMakeLists.txt => module-audio/CMakeLists.txt +0 -1
@@ 73,7 73,6 @@ target_link_libraries(${PROJECT_NAME}
module-bsp
module-os
module-utils
- module-vfs
module-sys
tag
)
M module-utils/taglib => module-utils/taglib +1 -1
@@ 1,1 1,1 @@
-Subproject commit b2a6e50aedf0cfe1f808eb23dc9f572a848ddffe
+Subproject commit 96d449e4163de4f5d7b448bdb2aee303a746d89f