Use structs to pass data around

This commit is contained in:
DataHoarder 2022-01-29 01:55:51 +01:00
parent 444e444b22
commit d70702bf2c
4 changed files with 17 additions and 14 deletions

View file

@ -13,10 +13,18 @@ if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb -O0")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -O0")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Ofast")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb -O0 -fno-exceptions -fno-rtti")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -O0 -fno-exceptions")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast -fno-exceptions -fno-rtti")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Ofast -fno-exceptions")
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -frecord-gcc-switches -Rpass=loop-vectorize -Rpass-missed=loop-vectorize -Rpass-analysis=loop-vectorize")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -frecord-gcc-switches -Rpass=loop-vectorize -Rpass-missed=loop-vectorize -Rpass-analysis=loop-vectorize")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fopt-info-all -frecord-gcc-switches")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fopt-info-all -frecord-gcc-switches")
endif()
add_definitions(-DGABORATOR_USE_PFFFT)

View file

@ -49,7 +49,7 @@ long gaborator_get_anal_support(void* ptr) {
return reinterpret_cast<GaboratorState*>(ptr)->anal_support;
}
gaborator_analyze_entry* gaborator_analyze(void* ptr, float* audio_block, int audio_block_length) {
struct gaborator_analyze_entry* gaborator_analyze(void* ptr, float* audio_block, int audio_block_length, int* length) {
auto state = reinterpret_cast<GaboratorState*>(ptr);
if (audio_block == nullptr) {
@ -85,14 +85,10 @@ gaborator_analyze_entry* gaborator_analyze(void* ptr, float* audio_block, int au
forget_before(*state->analyzerRef, *state->coefsRef, t_out - audio_block_length);
*length = output_index;
return &state->cArray[0];
}
int gaborator_analyze_array_length(void* ptr) {
auto state = reinterpret_cast<GaboratorState*>(ptr);
return sizeof(state->cArray) / sizeof(state->cArray[0]);
}
int gaborator_bandcenters_array_length(void* ptr) {
auto state = reinterpret_cast<GaboratorState*>(ptr);
int max_band = state->analyzerRef->bandpass_bands_end();

View file

@ -12,9 +12,7 @@ struct gaborator_analyze_entry {
void* gaborator_initialize(double sampleRate, int bandsPerOctave, double minimumFrequency, double referenceFrequency, double maximumFrequency);
long gaborator_get_anal_support(void* ptr);
gaborator_analyze_entry* gaborator_analyze(void* ptr, float* audio_block, int audio_block_length);
int gaborator_analyze_array_length(void* ptr);
struct gaborator_analyze_entry* gaborator_analyze(void* ptr, float* audio_block, int audio_block_length, int* length);
int gaborator_bandcenters_array_length(void* ptr);

View file

@ -23,7 +23,8 @@ int main() {
if (read < sizeof(audioData) / sizeof(audioData[0])) { //EOF
break;
}
gaborator_analyze(ptr, &audioData[0], sizeof(audioData) / sizeof(audioData[0]));
int len;
gaborator_analyze(ptr, &audioData[0], sizeof(audioData) / sizeof(audioData[0]), &len);
}
fclose(fp);