mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 13:08:50 +02:00
libobs: Add data signal to audio sources
This adds a new signal to (audio) sources which is emitted whenever new audio data is received from the source. This enables other code that is interested in the raw audio data to directly access it when it becomes available.
This commit is contained in:
parent
35d7a9ff1f
commit
984dd53389
@ -84,6 +84,7 @@ static const char *source_signals[] = {
|
||||
"float peak)",
|
||||
"void update_properties(ptr source)",
|
||||
"void update_flags(ptr source, int flags)",
|
||||
"void audio_data(ptr source, ptr data)",
|
||||
NULL
|
||||
};
|
||||
|
||||
@ -700,6 +701,21 @@ static void obs_source_update_volume_level(obs_source_t *source,
|
||||
}
|
||||
}
|
||||
|
||||
static void source_signal_audio_data(obs_source_t *source,
|
||||
struct audio_data *in)
|
||||
{
|
||||
struct calldata data;
|
||||
|
||||
calldata_init(&data);
|
||||
|
||||
calldata_set_ptr(&data, "source", source);
|
||||
calldata_set_ptr(&data, "data", in);
|
||||
|
||||
signal_handler_signal(source->context.signals, "audio_data", &data);
|
||||
|
||||
calldata_free(&data);
|
||||
}
|
||||
|
||||
static inline uint64_t uint64_diff(uint64_t ts1, uint64_t ts2)
|
||||
{
|
||||
return (ts1 < ts2) ? (ts2 - ts1) : (ts1 - ts2);
|
||||
@ -740,6 +756,7 @@ static void source_output_audio_line(obs_source_t *source,
|
||||
obs->audio.user_volume * obs->audio.present_volume;
|
||||
|
||||
audio_line_output(source->audio_line, &in);
|
||||
source_signal_audio_data(source, &in);
|
||||
obs_source_update_volume_level(source, &in);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user