mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 13:08:50 +02:00
libobs: Add API to mute/unmute sources
This commit is contained in:
parent
f04ef236ac
commit
e31fea66be
@ -322,6 +322,7 @@ struct obs_source {
|
||||
|
||||
/* audio */
|
||||
bool audio_failed;
|
||||
bool muted;
|
||||
struct resample_info sample_info;
|
||||
audio_resampler_t *resampler;
|
||||
audio_line_t *audio_line;
|
||||
|
@ -78,6 +78,7 @@ static const char *source_signals[] = {
|
||||
"void deactivate(ptr source)",
|
||||
"void show(ptr source)",
|
||||
"void hide(ptr source)",
|
||||
"void mute(ptr source, bool muted)",
|
||||
"void enable(ptr source, bool enabled)",
|
||||
"void rename(ptr source, string new_name, string prev_name)",
|
||||
"void volume(ptr source, in out float volume)",
|
||||
@ -729,7 +730,7 @@ static void source_output_audio_line(obs_source_t *source,
|
||||
source->present_volume * obs->audio.user_volume *
|
||||
obs->audio.present_volume;
|
||||
|
||||
if (!source->enabled)
|
||||
if (!source->enabled || source->muted)
|
||||
in.volume = 0.0f;
|
||||
|
||||
audio_line_output(source->audio_line, &in);
|
||||
@ -2627,3 +2628,25 @@ void obs_source_set_enabled(obs_source_t *source, bool enabled)
|
||||
|
||||
calldata_free(&data);
|
||||
}
|
||||
|
||||
bool obs_source_muted(const obs_source_t *source)
|
||||
{
|
||||
return source ? source->muted : false;
|
||||
}
|
||||
|
||||
void obs_source_set_muted(obs_source_t *source, bool muted)
|
||||
{
|
||||
struct calldata data = {0};
|
||||
|
||||
if (!source)
|
||||
return;
|
||||
|
||||
source->muted = muted;
|
||||
|
||||
calldata_set_ptr(&data, "source", source);
|
||||
calldata_set_bool(&data, "muted", muted);
|
||||
|
||||
signal_handler_signal(source->context.signals, "mute", &data);
|
||||
|
||||
calldata_free(&data);
|
||||
}
|
||||
|
@ -1291,6 +1291,9 @@ static obs_source_t *obs_load_source_type(obs_data_t *source_data,
|
||||
obs_source_set_enabled(source,
|
||||
obs_data_get_bool(source_data, "enabled"));
|
||||
|
||||
obs_data_set_default_bool(source_data, "muted", false);
|
||||
obs_source_set_muted(source, obs_data_get_bool(source_data, "muted"));
|
||||
|
||||
if (filters) {
|
||||
size_t count = obs_data_array_count(filters);
|
||||
|
||||
@ -1361,6 +1364,7 @@ obs_data_t *obs_save_source(obs_source_t *source)
|
||||
const char *name = obs_source_get_name(source);
|
||||
const char *id = obs_source_get_id(source);
|
||||
bool enabled = obs_source_enabled(source);
|
||||
bool muted = obs_source_muted(source);
|
||||
|
||||
obs_source_save(source);
|
||||
|
||||
@ -1372,6 +1376,7 @@ obs_data_t *obs_save_source(obs_source_t *source)
|
||||
obs_data_set_int (source_data, "flags", flags);
|
||||
obs_data_set_double(source_data, "volume", volume);
|
||||
obs_data_set_bool (source_data, "enabled", enabled);
|
||||
obs_data_set_bool (source_data, "muted", muted);
|
||||
|
||||
pthread_mutex_lock(&source->filter_mutex);
|
||||
|
||||
|
@ -828,6 +828,9 @@ EXPORT obs_source_t *obs_source_get_filter_by_name(obs_source_t *source,
|
||||
EXPORT bool obs_source_enabled(const obs_source_t *source);
|
||||
EXPORT void obs_source_set_enabled(obs_source_t *source, bool enabled);
|
||||
|
||||
EXPORT bool obs_source_muted(const obs_source_t *source);
|
||||
EXPORT void obs_source_set_muted(obs_source_t *source, bool muted);
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* Functions used by sources */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user