Improvements to the build system for extra nodes.

With this change, nodes in the extras folder can now be compiled as a
conventional library.
This commit is contained in:
David Reid
2025-02-22 14:25:45 +10:00
parent 1fbad32949
commit 9f10bc7540
16 changed files with 105 additions and 44 deletions
@@ -1,11 +1,15 @@
#ifndef miniaudio_channel_combiner_node_c
#define miniaudio_channel_combiner_node_c
#include "ma_channel_combiner_node.h"
#include <string.h> /* For memset(). */
MA_API ma_channel_combiner_node_config ma_channel_combiner_node_config_init(ma_uint32 channels)
{
ma_channel_combiner_node_config config;
MA_ZERO_OBJECT(&config);
memset(&config, 0, sizeof(config));
config.nodeConfig = ma_node_config_init(); /* Input and output channels will be set in ma_channel_combiner_node_init(). */
config.channels = channels;
@@ -43,7 +47,7 @@ MA_API ma_result ma_channel_combiner_node_init(ma_node_graph* pNodeGraph, const
return MA_INVALID_ARGS;
}
MA_ZERO_OBJECT(pCombinerNode);
memset(pCombinerNode, 0, sizeof(*pCombinerNode));
if (pConfig == NULL) {
return MA_INVALID_ARGS;
@@ -74,4 +78,6 @@ MA_API void ma_channel_combiner_node_uninit(ma_channel_combiner_node* pCombinerN
{
/* The base node is always uninitialized first. */
ma_node_uninit(pCombinerNode, pAllocationCallbacks);
}
}
#endif /* miniaudio_channel_combiner_node_c */
@@ -1,6 +1,8 @@
/* Include ma_channel_combiner_node.h after miniaudio.h */
#ifndef ma_channel_combiner_node_h
#define ma_channel_combiner_node_h
#ifndef miniaudio_channel_combiner_node_h
#define miniaudio_channel_combiner_node_h
#include "../../../miniaudio.h"
#ifdef __cplusplus
extern "C" {
@@ -27,4 +29,4 @@ MA_API void ma_channel_combiner_node_uninit(ma_channel_combiner_node* pSeparator
#ifdef __cplusplus
}
#endif
#endif /* ma_reverb_node_h */
#endif /* miniaudio_channel_combiner_node_h */
@@ -1,11 +1,15 @@
#ifndef miniaudio_channel_separator_node_c
#define miniaudio_channel_separator_node_c
#include "ma_channel_separator_node.h"
#include <string.h> /* For memset(). */
MA_API ma_channel_separator_node_config ma_channel_separator_node_config_init(ma_uint32 channels)
{
ma_channel_separator_node_config config;
MA_ZERO_OBJECT(&config);
memset(&config, 0, sizeof(config));
config.nodeConfig = ma_node_config_init(); /* Input and output channels will be set in ma_channel_separator_node_init(). */
config.channels = channels;
@@ -43,7 +47,7 @@ MA_API ma_result ma_channel_separator_node_init(ma_node_graph* pNodeGraph, const
return MA_INVALID_ARGS;
}
MA_ZERO_OBJECT(pSeparatorNode);
memset(pSeparatorNode, 0, sizeof(*pSeparatorNode));
if (pConfig == NULL) {
return MA_INVALID_ARGS;
@@ -79,3 +83,5 @@ MA_API void ma_channel_separator_node_uninit(ma_channel_separator_node* pSeparat
/* The base node is always uninitialized first. */
ma_node_uninit(pSeparatorNode, pAllocationCallbacks);
}
#endif /* miniaudio_channel_separator_node_c */
@@ -1,6 +1,8 @@
/* Include ma_channel_separator_node.h after miniaudio.h */
#ifndef ma_channel_separator_node_h
#define ma_channel_separator_node_h
#ifndef miniaudio_channel_separator_node_h
#define miniaudio_channel_separator_node_h
#include "../../../miniaudio.h"
#ifdef __cplusplus
extern "C" {
@@ -26,4 +28,4 @@ MA_API void ma_channel_separator_node_uninit(ma_channel_separator_node* pSeparat
#ifdef __cplusplus
}
#endif
#endif /* ma_reverb_node_h */
#endif /* miniaudio_channel_separator_node_h */
@@ -1,5 +1,4 @@
#define MINIAUDIO_IMPLEMENTATION
#include "../../../miniaudio.h"
#include "../../../miniaudio.c"
#include "ma_channel_separator_node.c"
#include "../ma_channel_combiner_node/ma_channel_combiner_node.c"
@@ -1,6 +1,5 @@
#define MINIAUDIO_IMPLEMENTATION
#include "../../../miniaudio.h"
#include "../../../miniaudio.c"
#include <stdio.h>
+14 -4
View File
@@ -1,11 +1,19 @@
#ifndef miniaudio_ltrim_node_c
#define miniaudio_ltrim_node_c
#include "ma_ltrim_node.h"
#include <string.h> /* For memset(). */
#ifndef ma_min
#define ma_min(a, b) (((a) < (b)) ? (a) : (b))
#endif
MA_API ma_ltrim_node_config ma_ltrim_node_config_init(ma_uint32 channels, float threshold)
{
ma_ltrim_node_config config;
MA_ZERO_OBJECT(&config);
memset(&config, 0, sizeof(config));
config.nodeConfig = ma_node_config_init(); /* Input and output channels will be set in ma_ltrim_node_init(). */
config.channels = channels;
config.threshold = threshold;
@@ -59,8 +67,8 @@ static ma_node_vtable g_ma_ltrim_node_vtable =
{
ma_ltrim_node_process_pcm_frames,
NULL,
1, /* 1 input channel. */
1, /* 1 output channel. */
1, /* 1 input bus. */
1, /* 1 output bus. */
MA_NODE_FLAG_DIFFERENT_PROCESSING_RATES
};
@@ -73,7 +81,7 @@ MA_API ma_result ma_ltrim_node_init(ma_node_graph* pNodeGraph, const ma_ltrim_no
return MA_INVALID_ARGS;
}
MA_ZERO_OBJECT(pTrimNode);
memset(pTrimNode, 0, sizeof(*pTrimNode));
if (pConfig == NULL) {
return MA_INVALID_ARGS;
@@ -100,3 +108,5 @@ MA_API void ma_ltrim_node_uninit(ma_ltrim_node* pTrimNode, const ma_allocation_c
/* The base node is always uninitialized first. */
ma_node_uninit(pTrimNode, pAllocationCallbacks);
}
#endif /* miniaudio_ltrim_node_c */
+5 -3
View File
@@ -1,6 +1,8 @@
/* Include ma_ltrim_node.h after miniaudio.h */
#ifndef ma_ltrim_node_h
#define ma_ltrim_node_h
#ifndef miniaudio_ltrim_node_h
#define miniaudio_ltrim_node_h
#include "../../../miniaudio.h"
#ifdef __cplusplus
extern "C" {
@@ -32,4 +34,4 @@ MA_API void ma_ltrim_node_uninit(ma_ltrim_node* pTrimNode, const ma_allocation_c
#ifdef __cplusplus
}
#endif
#endif /* ma_ltrim_node_h */
#endif /* miniaudio_ltrim_node_h */
@@ -1,5 +1,4 @@
#define MINIAUDIO_IMPLEMENTATION
#include "../../../miniaudio.h"
#include "../../../miniaudio.c"
#include "ma_ltrim_node.c"
#include <stdio.h>
+10 -4
View File
@@ -1,12 +1,16 @@
#ifndef miniaudio_reverb_node_c
#define miniaudio_reverb_node_c
#define VERBLIB_IMPLEMENTATION
#include "ma_reverb_node.h"
#include <string.h> /* For memset(). */
MA_API ma_reverb_node_config ma_reverb_node_config_init(ma_uint32 channels, ma_uint32 sampleRate)
{
ma_reverb_node_config config;
MA_ZERO_OBJECT(&config);
memset(&config, 0, sizeof(config));
config.nodeConfig = ma_node_config_init(); /* Input and output channels will be set in ma_reverb_node_init(). */
config.channels = channels;
config.sampleRate = sampleRate;
@@ -34,8 +38,8 @@ static ma_node_vtable g_ma_reverb_node_vtable =
{
ma_reverb_node_process_pcm_frames,
NULL,
1, /* 1 input channel. */
1, /* 1 output channel. */
1, /* 1 input bus. */
1, /* 1 output bus. */
MA_NODE_FLAG_CONTINUOUS_PROCESSING /* Reverb requires continuous processing to ensure the tail get's processed. */
};
@@ -48,7 +52,7 @@ MA_API ma_result ma_reverb_node_init(ma_node_graph* pNodeGraph, const ma_reverb_
return MA_INVALID_ARGS;
}
MA_ZERO_OBJECT(pReverbNode);
memset(pReverbNode, 0, sizeof(*pReverbNode));
if (pConfig == NULL) {
return MA_INVALID_ARGS;
@@ -76,3 +80,5 @@ MA_API void ma_reverb_node_uninit(ma_reverb_node* pReverbNode, const ma_allocati
/* The base node is always uninitialized first. */
ma_node_uninit(pReverbNode, pAllocationCallbacks);
}
#endif /* miniaudio_reverb_node_c */
+4 -3
View File
@@ -1,7 +1,8 @@
/* Include ma_reverb_node.h after miniaudio.h */
#ifndef ma_reverb_node_h
#define ma_reverb_node_h
#ifndef miniaudio_reverb_node_h
#define miniaudio_reverb_node_h
#include "../../../miniaudio.h"
#include "verblib.h"
#ifdef __cplusplus
@@ -39,4 +40,4 @@ MA_API void ma_reverb_node_uninit(ma_reverb_node* pReverbNode, const ma_allocati
#ifdef __cplusplus
}
#endif
#endif /* ma_reverb_node_h */
#endif /* miniaudio_reverb_node_h */
@@ -1,5 +1,4 @@
#define MINIAUDIO_IMPLEMENTATION
#include "../../../miniaudio.h"
#include "../../../miniaudio.c"
#include "ma_reverb_node.c"
#include <stdio.h>
+10 -4
View File
@@ -1,12 +1,16 @@
#ifndef miniaudio_vocoder_node_c
#define miniaudio_vocoder_node_c
#define VOCLIB_IMPLEMENTATION
#include "ma_vocoder_node.h"
#include <string.h> /* For memset(). */
MA_API ma_vocoder_node_config ma_vocoder_node_config_init(ma_uint32 channels, ma_uint32 sampleRate)
{
ma_vocoder_node_config config;
MA_ZERO_OBJECT(&config);
memset(&config, 0, sizeof(config));
config.nodeConfig = ma_node_config_init(); /* Input and output channels will be set in ma_vocoder_node_init(). */
config.channels = channels;
config.sampleRate = sampleRate;
@@ -30,8 +34,8 @@ static ma_node_vtable g_ma_vocoder_node_vtable =
{
ma_vocoder_node_process_pcm_frames,
NULL,
2, /* 2 input channels. */
1, /* 1 output channel. */
2, /* 2 input buses. */
1, /* 1 output bus. */
0
};
@@ -46,7 +50,7 @@ MA_API ma_result ma_vocoder_node_init(ma_node_graph* pNodeGraph, const ma_vocode
return MA_INVALID_ARGS;
}
MA_ZERO_OBJECT(pVocoderNode);
memset(pVocoderNode, 0, sizeof(*pVocoderNode));
if (pConfig == NULL) {
return MA_INVALID_ARGS;
@@ -78,3 +82,5 @@ MA_API void ma_vocoder_node_uninit(ma_vocoder_node* pVocoderNode, const ma_alloc
/* The base node must always be initialized first. */
ma_node_uninit(pVocoderNode, pAllocationCallbacks);
}
#endif /* miniaudio_vocoder_node_c */
@@ -1,14 +1,14 @@
/* Include ma_vocoder_node.h after miniaudio.h */
#ifndef ma_vocoder_node_h
#define ma_vocoder_node_h
#ifndef miniaudio_vocoder_node_h
#define miniaudio_vocoder_node_h
#include "../../../miniaudio.h"
#include "voclib.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
The vocoder node has two inputs and one output. Inputs:
@@ -42,4 +42,4 @@ MA_API void ma_vocoder_node_uninit(ma_vocoder_node* pVocoderNode, const ma_alloc
#ifdef __cplusplus
}
#endif
#endif /* ma_vocoder_node_h */
#endif /* miniaudio_vocoder_node_h */
@@ -6,8 +6,7 @@ called `ma_vocoder_node` is used to achieve the effect which can be found in the
the miniaudio repository. The vocoder node uses https://github.com/blastbay/voclib to achieve the
effect.
*/
#define MINIAUDIO_IMPLEMENTATION
#include "../../../miniaudio.h"
#include "../../../miniaudio.c"
#include "ma_vocoder_node.c"
#include <stdio.h>