mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-23 00:34:03 +02:00
Add new functions for getting and setting the engine's global time.
* ma_engine_get_time_in_pcm_frames() (replaces ma_engine_get_time()) * ma_engine_get_time_in_milliseconds() * ma_engine_set_time_in_pcm_frames() (replaces ma_engine_set_time()) * ma_engine_set_time_in_milliseconds() These changes are consistent with the naming of other time based functions, eliminates ambiguity and just makes it clearer as to what you're working with. ma_engine_get_time() and ma_engine_set_time() have been deprecated.
This commit is contained in:
+39
-15
@@ -398,13 +398,13 @@ the be started and/or stopped at a specific time. This can be done with the foll
|
|||||||
```
|
```
|
||||||
|
|
||||||
The start/stop time needs to be specified based on the absolute timer which is controlled by the
|
The start/stop time needs to be specified based on the absolute timer which is controlled by the
|
||||||
engine. The current global time time in PCM frames can be retrieved with `ma_engine_get_time()`.
|
engine. The current global time time in PCM frames can be retrieved with
|
||||||
The engine's global time can be changed with `ma_engine_set_time()` for synchronization purposes if
|
`ma_engine_get_time_in_pcm_frames()`. The engine's global time can be changed with
|
||||||
required. Note that scheduling a start time still requires an explicit call to `ma_sound_start()`
|
`ma_engine_set_time_in_pcm_frames()` for synchronization purposes if required. Note that scheduling
|
||||||
before anything will play:
|
a start time still requires an explicit call to `ma_sound_start()` before anything will play:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
ma_sound_set_start_time_in_pcm_frames(&sound, ma_engine_get_time(&engine) + (ma_engine_get_sample_rate(&engine) * 2);
|
ma_sound_set_start_time_in_pcm_frames(&sound, ma_engine_get_time_in_pcm_frames(&engine) + (ma_engine_get_sample_rate(&engine) * 2);
|
||||||
ma_sound_start(&sound);
|
ma_sound_start(&sound);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -1429,19 +1429,19 @@ can be useful to schedule a sound to start or stop:
|
|||||||
|
|
||||||
```c
|
```c
|
||||||
// Start the sound in 1 second from now.
|
// Start the sound in 1 second from now.
|
||||||
ma_sound_set_start_time_in_pcm_frames(&sound, ma_engine_get_time(&engine) + (ma_engine_get_sample_rate(&engine) * 1));
|
ma_sound_set_start_time_in_pcm_frames(&sound, ma_engine_get_time_in_pcm_frames(&engine) + (ma_engine_get_sample_rate(&engine) * 1));
|
||||||
|
|
||||||
// Stop the sound in 2 seconds from now.
|
// Stop the sound in 2 seconds from now.
|
||||||
ma_sound_set_stop_time_in_pcm_frames(&sound, ma_engine_get_time(&engine) + (ma_engine_get_sample_rate(&engine) * 2));
|
ma_sound_set_stop_time_in_pcm_frames(&sound, ma_engine_get_time_in_pcm_frames(&engine) + (ma_engine_get_sample_rate(&engine) * 2));
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that scheduling a start time still requires an explicit call to `ma_sound_start()` before
|
Note that scheduling a start time still requires an explicit call to `ma_sound_start()` before
|
||||||
anything will play.
|
anything will play.
|
||||||
|
|
||||||
The time is specified in global time which is controlled by the engine. You can get the engine's
|
The time is specified in global time which is controlled by the engine. You can get the engine's
|
||||||
current time with `ma_engine_get_time()`. The engine's global time is incremented automatically as
|
current time with `ma_engine_get_time_in_pcm_frames()`. The engine's global time is incremented
|
||||||
audio data is read, but it can be reset with `ma_engine_set_time()` in case it needs to be
|
automatically as audio data is read, but it can be reset with `ma_engine_set_time_in_pcm_frames()`
|
||||||
resynchronized for some reason.
|
in case it needs to be resynchronized for some reason.
|
||||||
|
|
||||||
To determine whether or not a sound is currently playing, use `ma_sound_is_playing()`. This will
|
To determine whether or not a sound is currently playing, use `ma_sound_is_playing()`. This will
|
||||||
take the scheduled start and stop times into account.
|
take the scheduled start and stop times into account.
|
||||||
@@ -11138,8 +11138,12 @@ MA_API ma_resource_manager* ma_engine_get_resource_manager(ma_engine* pEngine);
|
|||||||
MA_API ma_device* ma_engine_get_device(ma_engine* pEngine);
|
MA_API ma_device* ma_engine_get_device(ma_engine* pEngine);
|
||||||
MA_API ma_log* ma_engine_get_log(ma_engine* pEngine);
|
MA_API ma_log* ma_engine_get_log(ma_engine* pEngine);
|
||||||
MA_API ma_node* ma_engine_get_endpoint(ma_engine* pEngine);
|
MA_API ma_node* ma_engine_get_endpoint(ma_engine* pEngine);
|
||||||
MA_API ma_uint64 ma_engine_get_time(const ma_engine* pEngine);
|
MA_API ma_uint64 ma_engine_get_time_in_pcm_frames(const ma_engine* pEngine);
|
||||||
MA_API ma_result ma_engine_set_time(ma_engine* pEngine, ma_uint64 globalTime);
|
MA_API ma_uint64 ma_engine_get_time_in_milliseconds(const ma_engine* pEngine);
|
||||||
|
MA_API ma_result ma_engine_set_time_in_pcm_frames(ma_engine* pEngine, ma_uint64 globalTime);
|
||||||
|
MA_API ma_result ma_engine_set_time_in_milliseconds(ma_engine* pEngine, ma_uint64 globalTime);
|
||||||
|
MA_API ma_uint64 ma_engine_get_time(const ma_engine* pEngine); /* Deprecated. Use ma_engine_get_time_in_pcm_frames(). Will be removed in version 0.12. */
|
||||||
|
MA_API ma_result ma_engine_set_time(ma_engine* pEngine, ma_uint64 globalTime); /* Deprecated. Use ma_engine_set_time_in_pcm_frames(). Will be removed in version 0.12. */
|
||||||
MA_API ma_uint32 ma_engine_get_channels(const ma_engine* pEngine);
|
MA_API ma_uint32 ma_engine_get_channels(const ma_engine* pEngine);
|
||||||
MA_API ma_uint32 ma_engine_get_sample_rate(const ma_engine* pEngine);
|
MA_API ma_uint32 ma_engine_get_sample_rate(const ma_engine* pEngine);
|
||||||
|
|
||||||
@@ -74465,16 +74469,36 @@ MA_API ma_node* ma_engine_get_endpoint(ma_engine* pEngine)
|
|||||||
return ma_node_graph_get_endpoint(&pEngine->nodeGraph);
|
return ma_node_graph_get_endpoint(&pEngine->nodeGraph);
|
||||||
}
|
}
|
||||||
|
|
||||||
MA_API ma_uint64 ma_engine_get_time(const ma_engine* pEngine)
|
MA_API ma_uint64 ma_engine_get_time_in_pcm_frames(const ma_engine* pEngine)
|
||||||
{
|
{
|
||||||
return ma_node_graph_get_time(&pEngine->nodeGraph);
|
return ma_node_graph_get_time(&pEngine->nodeGraph);
|
||||||
}
|
}
|
||||||
|
|
||||||
MA_API ma_result ma_engine_set_time(ma_engine* pEngine, ma_uint64 globalTime)
|
MA_API ma_uint64 ma_engine_get_time_in_milliseconds(const ma_engine* pEngine)
|
||||||
|
{
|
||||||
|
return ma_engine_get_time_in_pcm_frames(pEngine) * 1000 / ma_engine_get_sample_rate(pEngine);
|
||||||
|
}
|
||||||
|
|
||||||
|
MA_API ma_result ma_engine_set_time_in_pcm_frames(ma_engine* pEngine, ma_uint64 globalTime)
|
||||||
{
|
{
|
||||||
return ma_node_graph_set_time(&pEngine->nodeGraph, globalTime);
|
return ma_node_graph_set_time(&pEngine->nodeGraph, globalTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MA_API ma_result ma_engine_set_time_in_milliseconds(ma_engine* pEngine, ma_uint64 globalTime)
|
||||||
|
{
|
||||||
|
return ma_engine_set_time_in_pcm_frames(pEngine, globalTime * ma_engine_get_sample_rate(pEngine) / 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
MA_API ma_uint64 ma_engine_get_time(const ma_engine* pEngine)
|
||||||
|
{
|
||||||
|
return ma_engine_get_time_in_pcm_frames(pEngine);
|
||||||
|
}
|
||||||
|
|
||||||
|
MA_API ma_result ma_engine_set_time(ma_engine* pEngine, ma_uint64 globalTime)
|
||||||
|
{
|
||||||
|
return ma_engine_set_time_in_pcm_frames(pEngine, globalTime);
|
||||||
|
}
|
||||||
|
|
||||||
MA_API ma_uint32 ma_engine_get_channels(const ma_engine* pEngine)
|
MA_API ma_uint32 ma_engine_get_channels(const ma_engine* pEngine)
|
||||||
{
|
{
|
||||||
return ma_node_graph_get_channels(&pEngine->nodeGraph);
|
return ma_node_graph_get_channels(&pEngine->nodeGraph);
|
||||||
@@ -75695,7 +75719,7 @@ MA_API ma_bool32 ma_sound_is_playing(const ma_sound* pSound)
|
|||||||
return MA_FALSE;
|
return MA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ma_node_get_state_by_time(pSound, ma_engine_get_time(ma_sound_get_engine(pSound))) == ma_node_state_started;
|
return ma_node_get_state_by_time(pSound, ma_engine_get_time_in_pcm_frames(ma_sound_get_engine(pSound))) == ma_node_state_started;
|
||||||
}
|
}
|
||||||
|
|
||||||
MA_API ma_uint64 ma_sound_get_time_in_pcm_frames(const ma_sound* pSound)
|
MA_API ma_uint64 ma_sound_get_time_in_pcm_frames(const ma_sound* pSound)
|
||||||
|
|||||||
Reference in New Issue
Block a user