0
0
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:
fryshorts 2014-12-13 14:10:45 +01:00
parent 35d7a9ff1f
commit 984dd53389

View File

@ -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);
}