summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/opusfile/CMakeLists.txt6
-rw-r--r--lib/opusfile/include/custom_support.h10
-rw-r--r--src/dev_console/include/console.hpp2
-rw-r--r--src/tasks/tasks.cpp12
4 files changed, 16 insertions, 14 deletions
diff --git a/lib/opusfile/CMakeLists.txt b/lib/opusfile/CMakeLists.txt
index f9b5e4ce..fe958b67 100644
--- a/lib/opusfile/CMakeLists.txt
+++ b/lib/opusfile/CMakeLists.txt
@@ -11,6 +11,11 @@ set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
set(OPUS_FIXED_POINT ON)
set(OPUS_ENABLE_FLOAT_API OFF)
+
+set(OPUS_VAR_ARRAYS OFF)
+set(OPUS_USE_ALLOCA ON)
+set(OPUS_NONTHREADSAFE_PSEUDOSTACK OFF)
+
set(OPUS_INSTALL_PKG_CONFIG_MODULE OFF)
set(OPUS_INSTALL_CMAKE_CONFIG_MODULE OFF)
set(OPUS_BUILD_TESTING OFF)
@@ -18,5 +23,6 @@ set(OPUS_BUILD_SHARED_LIBS OFF)
add_subdirectory($ENV{PROJ_PATH}/lib/opus ${CMAKE_CURRENT_BINARY_DIR}/opus)
target_compile_definitions(opus PRIVATE CUSTOM_SUPPORT)
+target_compile_options(opus PRIVATE -Os -DSMALL_FOOTPRINT -funroll-loops -ffast-math)
target_include_directories(opus PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_link_libraries(${COMPONENT_LIB} PUBLIC opus)
diff --git a/lib/opusfile/include/custom_support.h b/lib/opusfile/include/custom_support.h
index a5748989..60cab623 100644
--- a/lib/opusfile/include/custom_support.h
+++ b/lib/opusfile/include/custom_support.h
@@ -6,12 +6,10 @@
#define OVERRIDE_OPUS_ALLOC
#define OVERRIDE_OPUS_FREE
-static OPUS_INLINE void *opus_alloc (size_t size)
-{
- return heap_caps_malloc(size, MALLOC_CAP_SPIRAM);
+static OPUS_INLINE void* opus_alloc(size_t size) {
+ return heap_caps_malloc(size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
}
-static OPUS_INLINE void opus_free (void *ptr)
-{
- heap_caps_free(ptr);
+static OPUS_INLINE void opus_free(void* ptr) {
+ heap_caps_free(ptr);
}
diff --git a/src/dev_console/include/console.hpp b/src/dev_console/include/console.hpp
index fd4050c2..fedf3632 100644
--- a/src/dev_console/include/console.hpp
+++ b/src/dev_console/include/console.hpp
@@ -18,7 +18,7 @@ class Console {
auto Launch() -> void;
protected:
- virtual auto GetStackSizeKiB() -> uint16_t { return 16; }
+ virtual auto GetStackSizeKiB() -> uint16_t { return 8; }
virtual auto RegisterExtraComponents() -> void {}
private:
diff --git a/src/tasks/tasks.cpp b/src/tasks/tasks.cpp
index d53eface..aa382655 100644
--- a/src/tasks/tasks.cpp
+++ b/src/tasks/tasks.cpp
@@ -39,22 +39,20 @@ auto AllocateStack() -> cpp::span<StackType_t>;
// usually written with embedded use cases in mind.
template <>
auto AllocateStack<Type::kAudioDecoder>() -> cpp::span<StackType_t> {
- constexpr std::size_t size = 24 * 1024;
+ constexpr std::size_t size = 20 * 1024;
static StackType_t sStack[size];
return {sStack, size};
}
-// LVGL requires only a relatively small stack. However, it can be allocated in
-// PSRAM so we give it a bit of headroom for safety.
+// LVGL requires only a relatively small stack. Lua's stack is allocated
+// separately.
template <>
auto AllocateStack<Type::kUi>() -> cpp::span<StackType_t> {
- constexpr std::size_t size = 16 * 1024;
+ constexpr std::size_t size = 14 * 1024;
static StackType_t sStack[size];
return {sStack, size};
}
template <>
-// PCM conversion and resampling uses a very small amount of stack. It works
-// entirely with PSRAM-allocated buffers, so no real speed gain from allocating
-// it internally.
+// PCM conversion and resampling uses a very small amount of stack.
auto AllocateStack<Type::kAudioConverter>() -> cpp::span<StackType_t> {
constexpr std::size_t size = 4 * 1024;
static StackType_t sStack[size];