From 5f7444d7956a6cc517ada1b8b96c4f9cdd408fd5 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Mon, 21 Nov 2022 08:00:52 +1100 Subject: [PATCH] WIP --- src/audio/CMakeLists.txt | 6 ++++ src/{drivers => audio}/i2s_audio_output.cpp | 0 .../include/i2s_audio_output.hpp | 2 -- src/codecs/include/codec.hpp | 29 +++++++++++++++++++ src/main/app_console.cpp | 12 ++++---- src/main/app_console.hpp | 8 ++--- src/main/main.cpp | 8 ++--- 7 files changed, 48 insertions(+), 17 deletions(-) create mode 100644 src/audio/CMakeLists.txt rename src/{drivers => audio}/i2s_audio_output.cpp (100%) rename src/{drivers => audio}/include/i2s_audio_output.hpp (93%) create mode 100644 src/codecs/include/codec.hpp diff --git a/src/audio/CMakeLists.txt b/src/audio/CMakeLists.txt new file mode 100644 index 00000000..d98484c6 --- /dev/null +++ b/src/audio/CMakeLists.txt @@ -0,0 +1,6 @@ +idf_component_register( + SRCS "audio_decoder.cpp" "fatfs_audio_input.cpp" "audio_task.cpp" + INCLUDE_DIRS "include" + REQUIRES "codecs" "drivers") + +target_compile_options(${COMPONENT_LIB} PRIVATE ${EXTRA_WARNINGS}) diff --git a/src/drivers/i2s_audio_output.cpp b/src/audio/i2s_audio_output.cpp similarity index 100% rename from src/drivers/i2s_audio_output.cpp rename to src/audio/i2s_audio_output.cpp diff --git a/src/drivers/include/i2s_audio_output.hpp b/src/audio/include/i2s_audio_output.hpp similarity index 93% rename from src/drivers/include/i2s_audio_output.hpp rename to src/audio/include/i2s_audio_output.hpp index ca0e6452..cd542f71 100644 --- a/src/drivers/include/i2s_audio_output.hpp +++ b/src/audio/include/i2s_audio_output.hpp @@ -3,10 +3,8 @@ #include #include -#include "audio_element.h" #include "result.hpp" -#include "audio_output.hpp" #include "dac.hpp" #include "gpio_expander.hpp" diff --git a/src/codecs/include/codec.hpp b/src/codecs/include/codec.hpp new file mode 100644 index 00000000..5e8763a6 --- /dev/null +++ b/src/codecs/include/codec.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include +#include + +#include "result.hpp" + +namespace codecs { + + enum CreateCodecError {}; + + auto CreateCodecForExtension(std::string extension) -> cpp::result, CreateCodecError>; + + class ICodec { + public: + virtual ~ICodec() {} + + virtual auto CanHandleExtension(std::string extension) -> bool = 0; + + enum Error {}; + + virtual auto Process( + uint8_t *input, + std::size_t input_len, + uint8_t *output, + std::size_t output_length) -> cpp::result = 0; + }; + +} // namespace codecs diff --git a/src/main/app_console.cpp b/src/main/app_console.cpp index 74225534..765b17d2 100644 --- a/src/main/app_console.cpp +++ b/src/main/app_console.cpp @@ -12,8 +12,6 @@ namespace console { -static AppConsole* sInstance = nullptr; - std::string toSdPath(std::string filepath) { return std::string(drivers::kStoragePath) + "/" + filepath; } @@ -59,10 +57,12 @@ int CmdPlayFile(int argc, char** argv) { return 1; } + /* sInstance->playback_->Play(toSdPath(argv[1])); if (argc == 3) { sInstance->playback_->SetNextFile(toSdPath(argv[2])); } + */ return 0; } @@ -83,7 +83,7 @@ int CmdToggle(int argc, char** argv) { return 1; } - sInstance->playback_->Toggle(); + //sInstance->playback_->Toggle(); return 0; } @@ -110,7 +110,7 @@ int CmdVolume(int argc, char** argv) { return 1; } - sInstance->playback_->SetVolume((uint8_t)raw_vol); + //sInstance->playback_->SetVolume((uint8_t)raw_vol); return 0; } @@ -125,12 +125,14 @@ void RegisterVolume() { esp_console_cmd_register(&cmd); } -AppConsole::AppConsole(drivers::AudioPlayback* playback) : playback_(playback) { +/* +AppConsole::AppConsole() { sInstance = this; } AppConsole::~AppConsole() { sInstance = nullptr; } +*/ auto AppConsole::RegisterExtraComponents() -> void { RegisterListDir(); diff --git a/src/main/app_console.hpp b/src/main/app_console.hpp index 0beffd76..9cd9d50c 100644 --- a/src/main/app_console.hpp +++ b/src/main/app_console.hpp @@ -2,17 +2,15 @@ #include -#include "audio_playback.hpp" +#include "storage.hpp" #include "console.hpp" namespace console { class AppConsole : public Console { public: - AppConsole(drivers::AudioPlayback* playback); - virtual ~AppConsole(); - - drivers::AudioPlayback* playback_; + AppConsole() {}; + virtual ~AppConsole() {}; protected: virtual auto RegisterExtraComponents() -> void; diff --git a/src/main/main.cpp b/src/main/main.cpp index a18e12d0..24d47e9a 100644 --- a/src/main/main.cpp +++ b/src/main/main.cpp @@ -5,9 +5,6 @@ #include #include -#include "audio_common.h" -#include "audio_element.h" -#include "audio_pipeline.h" #include "core/lv_disp.h" #include "core/lv_obj_pos.h" #include "driver/gpio.h" @@ -27,7 +24,6 @@ #include "widgets/lv_label.h" #include "app_console.hpp" -#include "audio_playback.hpp" #include "battery.hpp" #include "dac.hpp" #include "display.hpp" @@ -123,6 +119,7 @@ extern "C" void app_main(void) { } std::unique_ptr sink = std::move(sink_res.value()); + /* ESP_LOGI(TAG, "Init audio pipeline"); auto playback_res = drivers::AudioPlayback::create(std::move(sink)); if (playback_res.has_error()) { @@ -132,13 +129,14 @@ extern "C" void app_main(void) { std::unique_ptr playback = std::move(playback_res.value()); playback->SetVolume(130); + */ ESP_LOGI(TAG, "Launch console"); console::AppConsole console(playback.get()); console.Launch(); while (1) { - playback->ProcessEvents(5); + //playback->ProcessEvents(5); vTaskDelay(pdMS_TO_TICKS(100)); } }