mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-23 00:34:03 +02:00
Deprecate some APIs and add mal_src/dsp_set_sample_rate().
When dynamically adjusting the sample rate you must now set both the input and output sample rates at the same time. This is required for future support for specifying a ratio instead of in/out rates.
This commit is contained in:
@@ -2214,14 +2214,24 @@ mal_channel_router_config mal_channel_router_config_init(mal_uint32 channelsIn,
|
|||||||
mal_result mal_src_init(const mal_src_config* pConfig, mal_src* pSRC);
|
mal_result mal_src_init(const mal_src_config* pConfig, mal_src* pSRC);
|
||||||
|
|
||||||
// Dynamically adjusts the input sample rate.
|
// Dynamically adjusts the input sample rate.
|
||||||
|
//
|
||||||
|
// DEPRECATED. Use mal_src_set_sample_rate() instead.
|
||||||
mal_result mal_src_set_input_sample_rate(mal_src* pSRC, mal_uint32 sampleRateIn);
|
mal_result mal_src_set_input_sample_rate(mal_src* pSRC, mal_uint32 sampleRateIn);
|
||||||
|
|
||||||
// Dynamically adjusts the output sample rate.
|
// Dynamically adjusts the output sample rate.
|
||||||
//
|
//
|
||||||
// This is useful for dynamically adjust pitch. Keep in mind, however, that this will speed up or slow down the sound. If this
|
// This is useful for dynamically adjust pitch. Keep in mind, however, that this will speed up or slow down the sound. If this
|
||||||
// is not acceptable you will need to use your own algorithm.
|
// is not acceptable you will need to use your own algorithm.
|
||||||
|
//
|
||||||
|
// DEPRECATED. Use mal_src_set_sample_rate() instead.
|
||||||
mal_result mal_src_set_output_sample_rate(mal_src* pSRC, mal_uint32 sampleRateOut);
|
mal_result mal_src_set_output_sample_rate(mal_src* pSRC, mal_uint32 sampleRateOut);
|
||||||
|
|
||||||
|
// Dynamically adjusts the sample rate.
|
||||||
|
//
|
||||||
|
// This is useful for dynamically adjust pitch. Keep in mind, however, that this will speed up or slow down the sound. If this
|
||||||
|
// is not acceptable you will need to use your own algorithm.
|
||||||
|
mal_result mal_src_set_sample_rate(mal_src* pSRC, mal_uint32 sampleRateIn, mal_uint32 sampleRateOut);
|
||||||
|
|
||||||
// Reads a number of frames.
|
// Reads a number of frames.
|
||||||
//
|
//
|
||||||
// Returns the number of frames actually read.
|
// Returns the number of frames actually read.
|
||||||
@@ -2245,6 +2255,8 @@ mal_result mal_dsp_init(const mal_dsp_config* pConfig, mal_dsp* pDSP);
|
|||||||
// Dynamically adjusts the input sample rate.
|
// Dynamically adjusts the input sample rate.
|
||||||
//
|
//
|
||||||
// This will fail is the DSP was not initialized with allowDynamicSampleRate.
|
// This will fail is the DSP was not initialized with allowDynamicSampleRate.
|
||||||
|
//
|
||||||
|
// DEPRECATED. Use mal_dsp_set_sample_rate() instead.
|
||||||
mal_result mal_dsp_set_input_sample_rate(mal_dsp* pDSP, mal_uint32 sampleRateOut);
|
mal_result mal_dsp_set_input_sample_rate(mal_dsp* pDSP, mal_uint32 sampleRateOut);
|
||||||
|
|
||||||
// Dynamically adjusts the output sample rate.
|
// Dynamically adjusts the output sample rate.
|
||||||
@@ -2253,8 +2265,19 @@ mal_result mal_dsp_set_input_sample_rate(mal_dsp* pDSP, mal_uint32 sampleRateOut
|
|||||||
// is not acceptable you will need to use your own algorithm.
|
// is not acceptable you will need to use your own algorithm.
|
||||||
//
|
//
|
||||||
// This will fail is the DSP was not initialized with allowDynamicSampleRate.
|
// This will fail is the DSP was not initialized with allowDynamicSampleRate.
|
||||||
|
//
|
||||||
|
// DEPRECATED. Use mal_dsp_set_sample_rate() instead.
|
||||||
mal_result mal_dsp_set_output_sample_rate(mal_dsp* pDSP, mal_uint32 sampleRateOut);
|
mal_result mal_dsp_set_output_sample_rate(mal_dsp* pDSP, mal_uint32 sampleRateOut);
|
||||||
|
|
||||||
|
// Dynamically adjusts the output sample rate.
|
||||||
|
//
|
||||||
|
// This is useful for dynamically adjust pitch. Keep in mind, however, that this will speed up or slow down the sound. If this
|
||||||
|
// is not acceptable you will need to use your own algorithm.
|
||||||
|
//
|
||||||
|
// This will fail is the DSP was not initialized with allowDynamicSampleRate.
|
||||||
|
mal_result mal_dsp_set_sample_rate(mal_dsp* pDSP, mal_uint32 sampleRateIn, mal_uint32 sampleRateOut);
|
||||||
|
|
||||||
|
|
||||||
// Reads a number of frames and runs them through the DSP processor.
|
// Reads a number of frames and runs them through the DSP processor.
|
||||||
mal_uint64 mal_dsp_read(mal_dsp* pDSP, mal_uint64 frameCount, void* pFramesOut, void* pUserData);
|
mal_uint64 mal_dsp_read(mal_dsp* pDSP, mal_uint64 frameCount, void* pFramesOut, void* pUserData);
|
||||||
|
|
||||||
@@ -22555,6 +22578,23 @@ mal_result mal_src_set_output_sample_rate(mal_src* pSRC, mal_uint32 sampleRateOu
|
|||||||
return MAL_SUCCESS;
|
return MAL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mal_result mal_src_set_sample_rate(mal_src* pSRC, mal_uint32 sampleRateIn, mal_uint32 sampleRateOut)
|
||||||
|
{
|
||||||
|
if (pSRC == NULL) {
|
||||||
|
return MAL_INVALID_ARGS;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Must have a sample rate of > 0.
|
||||||
|
if (sampleRateIn == 0 || sampleRateOut == 0) {
|
||||||
|
return MAL_INVALID_ARGS;
|
||||||
|
}
|
||||||
|
|
||||||
|
mal_atomic_exchange_32(&pSRC->config.sampleRateIn, sampleRateIn);
|
||||||
|
mal_atomic_exchange_32(&pSRC->config.sampleRateOut, sampleRateOut);
|
||||||
|
|
||||||
|
return MAL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
mal_uint64 mal_src_read_deinterleaved(mal_src* pSRC, mal_uint64 frameCount, void** ppSamplesOut, void* pUserData)
|
mal_uint64 mal_src_read_deinterleaved(mal_src* pSRC, mal_uint64 frameCount, void** ppSamplesOut, void* pUserData)
|
||||||
{
|
{
|
||||||
if (pSRC == NULL || frameCount == 0 || ppSamplesOut == NULL) {
|
if (pSRC == NULL || frameCount == 0 || ppSamplesOut == NULL) {
|
||||||
@@ -23712,6 +23752,28 @@ mal_result mal_dsp_set_output_sample_rate(mal_dsp* pDSP, mal_uint32 sampleRateOu
|
|||||||
return mal_dsp_refresh_sample_rate(pDSP);
|
return mal_dsp_refresh_sample_rate(pDSP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mal_result mal_dsp_set_sample_rate(mal_dsp* pDSP, mal_uint32 sampleRateIn, mal_uint32 sampleRateOut)
|
||||||
|
{
|
||||||
|
if (pDSP == NULL) {
|
||||||
|
return MAL_INVALID_ARGS;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Must have a sample rate of > 0.
|
||||||
|
if (sampleRateIn == 0 || sampleRateOut == 0) {
|
||||||
|
return MAL_INVALID_ARGS;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Must have been initialized with allowDynamicSampleRate.
|
||||||
|
if (!pDSP->isDynamicSampleRateAllowed) {
|
||||||
|
return MAL_INVALID_OPERATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
mal_atomic_exchange_32(&pDSP->src.config.sampleRateIn, sampleRateIn);
|
||||||
|
mal_atomic_exchange_32(&pDSP->src.config.sampleRateOut, sampleRateOut);
|
||||||
|
|
||||||
|
return mal_dsp_refresh_sample_rate(pDSP);
|
||||||
|
}
|
||||||
|
|
||||||
mal_uint64 mal_dsp_read(mal_dsp* pDSP, mal_uint64 frameCount, void* pFramesOut, void* pUserData)
|
mal_uint64 mal_dsp_read(mal_dsp* pDSP, mal_uint64 frameCount, void* pFramesOut, void* pUserData)
|
||||||
{
|
{
|
||||||
if (pDSP == NULL || pFramesOut == NULL) return 0;
|
if (pDSP == NULL || pFramesOut == NULL) return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user