Use structs to pass data around
This commit is contained in:
parent
444e444b22
commit
d70702bf2c
|
@ -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)
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
3
test.cpp
3
test.cpp
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue