mirror of
https://gitlab.com/dosowisko.net/libsuperderpy.git
synced 2025-02-08 06:06:43 +01:00
implement audio stream seeking in emscripten
This commit is contained in:
parent
3581c6060c
commit
9a6cbd2449
2 changed files with 12 additions and 9 deletions
|
@ -210,21 +210,24 @@ SYMBOL_EXPORT unsigned int emscripten_get_available_audio_stream_fragments(ALLEG
|
|||
}
|
||||
|
||||
SYMBOL_EXPORT double emscripten_get_audio_stream_length_sec(ALLEGRO_AUDIO_STREAM *stream) {
|
||||
// FIXME
|
||||
EMSCRIPTEN_AUDIO_STREAM *s = (EMSCRIPTEN_AUDIO_STREAM*)stream;
|
||||
return al_get_sample_instance_length(s->instance);
|
||||
unsigned int samples_per_sec = al_get_sample_instance_frequency(s->instance);
|
||||
return al_get_sample_instance_length(s->instance) / (double)samples_per_sec;
|
||||
}
|
||||
|
||||
SYMBOL_EXPORT bool emscripten_seek_audio_stream_secs(ALLEGRO_AUDIO_STREAM *stream, double val) {
|
||||
// FIXME
|
||||
EMSCRIPTEN_AUDIO_STREAM *s = (EMSCRIPTEN_AUDIO_STREAM*)stream;
|
||||
return al_set_sample_instance_position(s->instance, val);
|
||||
double length = emscripten_get_audio_stream_length_sec(stream);
|
||||
unsigned int samples = emscripten_get_audio_stream_length(stream);
|
||||
return al_set_sample_instance_position(s->instance, samples * (val / length));
|
||||
}
|
||||
|
||||
SYMBOL_EXPORT double emscripten_get_audio_stream_position_secs(ALLEGRO_AUDIO_STREAM *stream) {
|
||||
// FIXME
|
||||
EMSCRIPTEN_AUDIO_STREAM *s = (EMSCRIPTEN_AUDIO_STREAM*)stream;
|
||||
return al_get_sample_instance_position(s->instance);
|
||||
double sample_pos = al_get_sample_instance_position(s->instance);
|
||||
double length = emscripten_get_audio_stream_length_sec(stream);
|
||||
unsigned int samples = emscripten_get_audio_stream_length(stream);
|
||||
return length * (sample_pos / (double)samples);
|
||||
}
|
||||
|
||||
SYMBOL_EXPORT void emscripten_destroy_audio_stream(ALLEGRO_AUDIO_STREAM *stream) {
|
||||
|
|
|
@ -50,9 +50,9 @@ float emscripten_get_audio_stream_gain(ALLEGRO_AUDIO_STREAM *stream);
|
|||
float emscripten_get_audio_stream_pan(ALLEGRO_AUDIO_STREAM *stream);
|
||||
bool emscripten_set_audio_stream_speed(ALLEGRO_AUDIO_STREAM *stream, float val);
|
||||
bool emscripten_set_audio_stream_pan(ALLEGRO_AUDIO_STREAM *stream, float val);
|
||||
double emscripten_get_audio_stream_length_sec(ALLEGRO_AUDIO_STREAM *stream) __attribute__((deprecated("not implemented yet for Emscripten")));
|
||||
bool emscripten_seek_audio_stream_secs(ALLEGRO_AUDIO_STREAM *stream, double val) __attribute__((deprecated("not implemented yet for Emscripten")));
|
||||
double emscripten_get_audio_stream_position_secs(ALLEGRO_AUDIO_STREAM *stream) __attribute__((deprecated("not implemented yet for Emscripten")));
|
||||
double emscripten_get_audio_stream_length_sec(ALLEGRO_AUDIO_STREAM *stream);
|
||||
bool emscripten_seek_audio_stream_secs(ALLEGRO_AUDIO_STREAM *stream, double val);
|
||||
double emscripten_get_audio_stream_position_secs(ALLEGRO_AUDIO_STREAM *stream);
|
||||
void emscripten_destroy_audio_stream(ALLEGRO_AUDIO_STREAM *stream);
|
||||
#ifdef ALLEGRO_UNSTABLE
|
||||
bool emscripten_set_audio_stream_channel_matrix(ALLEGRO_AUDIO_STREAM *stream, const float *val);
|
||||
|
|
Loading…
Reference in a new issue