(API Change) libobs: Remove source_type param from functions
(Note: test and UI are also modified by this commit) API Changed (removed "enum obs_source_type type" parameter): ------------------------- obs_source_get_display_name obs_source_create obs_get_source_output_flags obs_get_source_defaults obs_get_source_properties Removes the "type" parameter from these functions. The "type" parameter really doesn't serve much of a purpose being a parameter in any of these cases, the type is just to indicate what it's used for.master
parent
20db7649aa
commit
b0104fcee0
|
@ -340,6 +340,7 @@ struct obs_core {
|
|||
struct obs_module *first_module;
|
||||
DARRAY(struct obs_module_path) module_paths;
|
||||
|
||||
DARRAY(struct obs_source_info) source_types;
|
||||
DARRAY(struct obs_source_info) input_types;
|
||||
DARRAY(struct obs_source_info) filter_types;
|
||||
DARRAY(struct obs_source_info) transition_types;
|
||||
|
@ -597,8 +598,7 @@ struct obs_source {
|
|||
uint64_t push_to_talk_stop_time;
|
||||
};
|
||||
|
||||
extern const struct obs_source_info *find_source(struct darray *list,
|
||||
const char *id);
|
||||
extern const struct obs_source_info *get_source_info(const char *id);
|
||||
extern bool obs_source_init_context(struct obs_source *source,
|
||||
obs_data_t *settings, const char *name,
|
||||
obs_data_t *hotkey_data);
|
||||
|
|
|
@ -540,7 +540,7 @@ void obs_register_source_s(const struct obs_source_info *info, size_t size)
|
|||
goto error;
|
||||
}
|
||||
|
||||
if (find_source(array, info->id)) {
|
||||
if (get_source_info(info->id)) {
|
||||
blog(LOG_WARNING, "Source d '%s' already exists! "
|
||||
"Duplicate library?", info->id);
|
||||
goto error;
|
||||
|
@ -601,7 +601,9 @@ void obs_register_source_s(const struct obs_source_info *info, size_t size)
|
|||
data.output_flags |= OBS_SOURCE_ASYNC;
|
||||
}
|
||||
|
||||
darray_push_back(sizeof(struct obs_source_info), array, &data);
|
||||
if (array)
|
||||
darray_push_back(sizeof(struct obs_source_info), array, &data);
|
||||
da_push_back(obs->source_types, &data);
|
||||
return;
|
||||
|
||||
error:
|
||||
|
|
|
@ -711,9 +711,8 @@ const struct obs_source_info scene_info =
|
|||
|
||||
obs_scene_t *obs_scene_create(const char *name)
|
||||
{
|
||||
struct obs_source *source =
|
||||
obs_source_create(OBS_SOURCE_TYPE_INPUT, "scene", name, NULL,
|
||||
NULL);
|
||||
struct obs_source *source = obs_source_create("scene", name, NULL,
|
||||
NULL);
|
||||
return source->context.data;
|
||||
}
|
||||
|
||||
|
|
|
@ -34,13 +34,10 @@ static inline bool data_valid(const struct obs_source *source, const char *f)
|
|||
return obs_source_valid(source, f) && source->context.data;
|
||||
}
|
||||
|
||||
const struct obs_source_info *find_source(struct darray *list, const char *id)
|
||||
const struct obs_source_info *get_source_info(const char *id)
|
||||
{
|
||||
size_t i;
|
||||
struct obs_source_info *array = list->array;
|
||||
|
||||
for (i = 0; i < list->num; i++) {
|
||||
struct obs_source_info *info = array+i;
|
||||
for (size_t i = 0; i < obs->source_types.num; i++) {
|
||||
struct obs_source_info *info = &obs->source_types.array[i];
|
||||
if (strcmp(info->id, id) == 0)
|
||||
return info;
|
||||
}
|
||||
|
@ -48,28 +45,6 @@ const struct obs_source_info *find_source(struct darray *list, const char *id)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static const struct obs_source_info *get_source_info(enum obs_source_type type,
|
||||
const char *id)
|
||||
{
|
||||
struct darray *list = NULL;
|
||||
|
||||
switch (type) {
|
||||
case OBS_SOURCE_TYPE_INPUT:
|
||||
list = &obs->input_types.da;
|
||||
break;
|
||||
|
||||
case OBS_SOURCE_TYPE_FILTER:
|
||||
list = &obs->filter_types.da;
|
||||
break;
|
||||
|
||||
case OBS_SOURCE_TYPE_TRANSITION:
|
||||
list = &obs->transition_types.da;
|
||||
break;
|
||||
}
|
||||
|
||||
return find_source(list, id);
|
||||
}
|
||||
|
||||
static const char *source_signals[] = {
|
||||
"void destroy(ptr source)",
|
||||
"void remove(ptr source)",
|
||||
|
@ -109,10 +84,9 @@ bool obs_source_init_context(struct obs_source *source,
|
|||
source_signals);
|
||||
}
|
||||
|
||||
const char *obs_source_get_display_name(enum obs_source_type type,
|
||||
const char *id)
|
||||
const char *obs_source_get_display_name(const char *id)
|
||||
{
|
||||
const struct obs_source_info *info = get_source_info(type, id);
|
||||
const struct obs_source_info *info = get_source_info(id);
|
||||
return (info != NULL) ? info->get_name(info->type_data) : NULL;
|
||||
}
|
||||
|
||||
|
@ -306,17 +280,16 @@ static inline void obs_source_dosignal(struct obs_source *source,
|
|||
calldata_free(&data);
|
||||
}
|
||||
|
||||
obs_source_t *obs_source_create(enum obs_source_type type, const char *id,
|
||||
const char *name, obs_data_t *settings, obs_data_t *hotkey_data)
|
||||
obs_source_t *obs_source_create(const char *id, const char *name,
|
||||
obs_data_t *settings, obs_data_t *hotkey_data)
|
||||
{
|
||||
struct obs_source *source = bzalloc(sizeof(struct obs_source));
|
||||
|
||||
const struct obs_source_info *info = get_source_info(type, id);
|
||||
const struct obs_source_info *info = get_source_info(id);
|
||||
if (!info) {
|
||||
blog(LOG_ERROR, "Source ID '%s' not found", id);
|
||||
|
||||
source->info.id = bstrdup(id);
|
||||
source->info.type = type;
|
||||
source->owns_info_id = true;
|
||||
} else {
|
||||
source->info = *info;
|
||||
|
@ -562,23 +535,21 @@ static inline obs_data_t *get_defaults(const struct obs_source_info *info)
|
|||
return settings;
|
||||
}
|
||||
|
||||
obs_data_t *obs_source_settings(enum obs_source_type type, const char *id)
|
||||
obs_data_t *obs_source_settings(const char *id)
|
||||
{
|
||||
const struct obs_source_info *info = get_source_info(type, id);
|
||||
const struct obs_source_info *info = get_source_info(id);
|
||||
return (info) ? get_defaults(info) : NULL;
|
||||
}
|
||||
|
||||
obs_data_t *obs_get_source_defaults(enum obs_source_type type,
|
||||
const char *id)
|
||||
obs_data_t *obs_get_source_defaults(const char *id)
|
||||
{
|
||||
const struct obs_source_info *info = get_source_info(type, id);
|
||||
const struct obs_source_info *info = get_source_info(id);
|
||||
return info ? get_defaults(info) : NULL;
|
||||
}
|
||||
|
||||
obs_properties_t *obs_get_source_properties(enum obs_source_type type,
|
||||
const char *id)
|
||||
obs_properties_t *obs_get_source_properties(const char *id)
|
||||
{
|
||||
const struct obs_source_info *info = get_source_info(type, id);
|
||||
const struct obs_source_info *info = get_source_info(id);
|
||||
if (info && info->get_properties) {
|
||||
obs_data_t *defaults = get_defaults(info);
|
||||
obs_properties_t *properties;
|
||||
|
@ -612,9 +583,9 @@ uint32_t obs_source_get_output_flags(const obs_source_t *source)
|
|||
source->info.output_flags : 0;
|
||||
}
|
||||
|
||||
uint32_t obs_get_source_output_flags(enum obs_source_type type, const char *id)
|
||||
uint32_t obs_get_source_output_flags(const char *id)
|
||||
{
|
||||
const struct obs_source_info *info = get_source_info(type, id);
|
||||
const struct obs_source_info *info = get_source_info(id);
|
||||
return info ? info->output_flags : 0;
|
||||
}
|
||||
|
||||
|
|
12
libobs/obs.c
12
libobs/obs.c
|
@ -770,6 +770,7 @@ void obs_shutdown(void)
|
|||
da_free(list); \
|
||||
} while (false)
|
||||
|
||||
FREE_REGISTERED_TYPES(obs_source_info, obs->source_types);
|
||||
FREE_REGISTERED_TYPES(obs_source_info, obs->input_types);
|
||||
FREE_REGISTERED_TYPES(obs_source_info, obs->filter_types);
|
||||
FREE_REGISTERED_TYPES(obs_source_info, obs->transition_types);
|
||||
|
@ -1386,8 +1387,7 @@ float obs_get_master_volume(void)
|
|||
return obs ? obs->audio.user_volume : 0.0f;
|
||||
}
|
||||
|
||||
static obs_source_t *obs_load_source_type(obs_data_t *source_data,
|
||||
enum obs_source_type type)
|
||||
static obs_source_t *obs_load_source_type(obs_data_t *source_data)
|
||||
{
|
||||
obs_data_array_t *filters = obs_data_get_array(source_data, "filters");
|
||||
obs_source_t *source;
|
||||
|
@ -1400,7 +1400,7 @@ static obs_source_t *obs_load_source_type(obs_data_t *source_data,
|
|||
uint32_t flags;
|
||||
uint32_t mixers;
|
||||
|
||||
source = obs_source_create(type, id, name, settings, hotkeys);
|
||||
source = obs_source_create(id, name, settings, hotkeys);
|
||||
|
||||
obs_data_release(hotkeys);
|
||||
|
||||
|
@ -1450,7 +1450,7 @@ static obs_source_t *obs_load_source_type(obs_data_t *source_data,
|
|||
obs_data_array_item(filters, i);
|
||||
|
||||
obs_source_t *filter = obs_load_source_type(
|
||||
filter_data, OBS_SOURCE_TYPE_FILTER);
|
||||
filter_data);
|
||||
if (filter) {
|
||||
obs_source_filter_add(source, filter);
|
||||
obs_source_release(filter);
|
||||
|
@ -1469,7 +1469,7 @@ static obs_source_t *obs_load_source_type(obs_data_t *source_data,
|
|||
|
||||
obs_source_t *obs_load_source(obs_data_t *source_data)
|
||||
{
|
||||
return obs_load_source_type(source_data, OBS_SOURCE_TYPE_INPUT);
|
||||
return obs_load_source_type(source_data);
|
||||
}
|
||||
|
||||
void obs_load_sources(obs_data_array_t *array)
|
||||
|
@ -1589,7 +1589,7 @@ obs_data_array_t *obs_save_sources_filtered(obs_save_source_filter_cb cb,
|
|||
source = data->first_source;
|
||||
|
||||
while (source) {
|
||||
if ((source->info.type == OBS_SOURCE_TYPE_INPUT) != 0 &&
|
||||
if ((source->info.type != OBS_SOURCE_TYPE_FILTER) != 0 &&
|
||||
cb(data_, source)) {
|
||||
obs_data_t *source_data = obs_save_source(source);
|
||||
|
||||
|
|
17
libobs/obs.h
17
libobs/obs.h
|
@ -634,8 +634,7 @@ EXPORT void obs_display_set_background_color(obs_display_t *display,
|
|||
/* Sources */
|
||||
|
||||
/** Returns the translated display name of a source */
|
||||
EXPORT const char *obs_source_get_display_name(enum obs_source_type type,
|
||||
const char *id);
|
||||
EXPORT const char *obs_source_get_display_name(const char *id);
|
||||
|
||||
/**
|
||||
* Creates a source of the specified type with the specified settings.
|
||||
|
@ -643,9 +642,8 @@ EXPORT const char *obs_source_get_display_name(enum obs_source_type type,
|
|||
* The "source" context is used for anything related to presenting
|
||||
* or modifying video/audio. Use obs_source_release to release it.
|
||||
*/
|
||||
EXPORT obs_source_t *obs_source_create(enum obs_source_type type,
|
||||
const char *id, const char *name, obs_data_t *settings,
|
||||
obs_data_t *hotkey_data);
|
||||
EXPORT obs_source_t *obs_source_create(const char *id, const char *name,
|
||||
obs_data_t *settings, obs_data_t *hotkey_data);
|
||||
|
||||
/**
|
||||
* Adds/releases a reference to a source. When the last reference is
|
||||
|
@ -674,16 +672,13 @@ EXPORT bool obs_source_removed(const obs_source_t *source);
|
|||
EXPORT uint32_t obs_source_get_output_flags(const obs_source_t *source);
|
||||
|
||||
/** Returns capability flags of a source type */
|
||||
EXPORT uint32_t obs_get_source_output_flags(enum obs_source_type type,
|
||||
const char *id);
|
||||
EXPORT uint32_t obs_get_source_output_flags(const char *id);
|
||||
|
||||
/** Gets the default settings for a source type */
|
||||
EXPORT obs_data_t *obs_get_source_defaults(enum obs_source_type type,
|
||||
const char *id);
|
||||
EXPORT obs_data_t *obs_get_source_defaults(const char *id);
|
||||
|
||||
/** Returns the property list, if any. Free with obs_properties_destroy */
|
||||
EXPORT obs_properties_t *obs_get_source_properties(enum obs_source_type type,
|
||||
const char *id);
|
||||
EXPORT obs_properties_t *obs_get_source_properties(const char *id);
|
||||
|
||||
/**
|
||||
* Returns the properties list for a specific existing source. Free with
|
||||
|
|
|
@ -308,10 +308,8 @@ QMenu *OBSBasicFilters::CreateAddFilterPopupMenu(bool async)
|
|||
|
||||
QMenu *popup = new QMenu(QTStr("Add"), this);
|
||||
while (obs_enum_filter_types(idx++, &type)) {
|
||||
const char *name = obs_source_get_display_name(
|
||||
OBS_SOURCE_TYPE_FILTER, type);
|
||||
uint32_t filterFlags = obs_get_source_output_flags(
|
||||
OBS_SOURCE_TYPE_FILTER, type);
|
||||
const char *name = obs_source_get_display_name(type);
|
||||
uint32_t filterFlags = obs_get_source_output_flags(type);
|
||||
|
||||
if (!filter_compatible(async, sourceFlags, filterFlags))
|
||||
continue;
|
||||
|
@ -337,8 +335,7 @@ void OBSBasicFilters::AddNewFilter(const char *id)
|
|||
{
|
||||
if (id && *id) {
|
||||
obs_source_t *existing_filter;
|
||||
string name = obs_source_get_display_name(
|
||||
OBS_SOURCE_TYPE_FILTER, id);
|
||||
string name = obs_source_get_display_name(id);
|
||||
|
||||
bool success = NameDialog::AskForName(this,
|
||||
QTStr("Basic.Filters.AddFilter.Title"),
|
||||
|
@ -366,8 +363,8 @@ void OBSBasicFilters::AddNewFilter(const char *id)
|
|||
return;
|
||||
}
|
||||
|
||||
obs_source_t *filter = obs_source_create(OBS_SOURCE_TYPE_FILTER,
|
||||
id, name.c_str(), nullptr, nullptr);
|
||||
obs_source_t *filter = obs_source_create(id, name.c_str(),
|
||||
nullptr, nullptr);
|
||||
if (filter) {
|
||||
obs_source_filter_add(source, filter);
|
||||
obs_source_release(filter);
|
||||
|
|
|
@ -366,8 +366,7 @@ static void LoadAudioDevice(const char *name, int channel, obs_data_t *parent)
|
|||
static inline bool HasAudioDevices(const char *source_id)
|
||||
{
|
||||
const char *output_id = source_id;
|
||||
obs_properties_t *props = obs_get_source_properties(
|
||||
OBS_SOURCE_TYPE_INPUT, output_id);
|
||||
obs_properties_t *props = obs_get_source_properties(output_id);
|
||||
size_t count = 0;
|
||||
|
||||
if (!props)
|
||||
|
@ -2220,8 +2219,8 @@ void OBSBasic::ResetAudioDevice(const char *sourceId, const char *deviceId,
|
|||
if (!same && strcmp(deviceId, "disabled") != 0) {
|
||||
obs_data_t *settings = obs_data_create();
|
||||
obs_data_set_string(settings, "device_id", deviceId);
|
||||
source = obs_source_create(OBS_SOURCE_TYPE_INPUT,
|
||||
sourceId, deviceDesc, settings, nullptr);
|
||||
source = obs_source_create(sourceId, deviceDesc, settings,
|
||||
nullptr);
|
||||
obs_data_release(settings);
|
||||
|
||||
obs_set_output_source(channel, source);
|
||||
|
@ -2718,8 +2717,7 @@ QMenu *OBSBasic::CreateAddSourcePopupMenu()
|
|||
|
||||
QMenu *popup = new QMenu(QTStr("Add"), this);
|
||||
while (obs_enum_input_types(idx++, &type)) {
|
||||
const char *name = obs_source_get_display_name(
|
||||
OBS_SOURCE_TYPE_INPUT, type);
|
||||
const char *name = obs_source_get_display_name(type);
|
||||
|
||||
if (strcmp(type, "scene") == 0)
|
||||
continue;
|
||||
|
|
|
@ -1464,10 +1464,8 @@ void OBSBasicSettings::LoadAudioDevices()
|
|||
const char *input_id = App()->InputAudioSource();
|
||||
const char *output_id = App()->OutputAudioSource();
|
||||
|
||||
obs_properties_t *input_props = obs_get_source_properties(
|
||||
OBS_SOURCE_TYPE_INPUT, input_id);
|
||||
obs_properties_t *output_props = obs_get_source_properties(
|
||||
OBS_SOURCE_TYPE_INPUT, output_id);
|
||||
obs_properties_t *input_props = obs_get_source_properties(input_id);
|
||||
obs_properties_t *output_props = obs_get_source_properties(output_id);
|
||||
|
||||
if (input_props) {
|
||||
obs_property_t *inputs = obs_properties_get(input_props,
|
||||
|
|
|
@ -129,8 +129,7 @@ bool AddNew(QWidget *parent, const char *id, const char *name,
|
|||
QTStr("NameExists.Text"));
|
||||
|
||||
} else {
|
||||
source = obs_source_create(OBS_SOURCE_TYPE_INPUT,
|
||||
id, name, NULL, nullptr);
|
||||
source = obs_source_create(id, name, NULL, nullptr);
|
||||
|
||||
if (source) {
|
||||
AddSourceData data;
|
||||
|
@ -191,8 +190,7 @@ OBSBasicSourceSelect::OBSBasicSourceSelect(OBSBasic *parent, const char *id_)
|
|||
|
||||
ui->sourceList->setAttribute(Qt::WA_MacShowFocusRect, false);
|
||||
|
||||
QString placeHolderText{QT_UTF8(obs_source_get_display_name(
|
||||
OBS_SOURCE_TYPE_INPUT, id))};
|
||||
QString placeHolderText{QT_UTF8(obs_source_get_display_name(id))};
|
||||
|
||||
QString text{placeHolderText};
|
||||
int i = 1;
|
||||
|
|
|
@ -79,8 +79,8 @@ static SceneContext SetupScene()
|
|||
|
||||
/* ------------------------------------------------------ */
|
||||
/* create source */
|
||||
SourceContext source{obs_source_create(OBS_SOURCE_TYPE_INPUT,
|
||||
"random", "a test source", nullptr, nullptr)};
|
||||
SourceContext source{obs_source_create("random", "a test source",
|
||||
nullptr, nullptr)};
|
||||
if (!source)
|
||||
throw "Couldn't create random test source";
|
||||
|
||||
|
|
|
@ -180,16 +180,15 @@ int WINAPI WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdLine,
|
|||
|
||||
/* ------------------------------------------------------ */
|
||||
/* create source */
|
||||
SourceContext source = obs_source_create(OBS_SOURCE_TYPE_INPUT,
|
||||
"random", "some randon source", NULL, nullptr);
|
||||
SourceContext source = obs_source_create("random",
|
||||
"some randon source", NULL, nullptr);
|
||||
if (!source)
|
||||
throw "Couldn't create random test source";
|
||||
|
||||
/* ------------------------------------------------------ */
|
||||
/* create filter */
|
||||
SourceContext filter = obs_source_create(OBS_SOURCE_TYPE_FILTER,
|
||||
"test_filter", "a nice green filter", NULL,
|
||||
nullptr);
|
||||
SourceContext filter = obs_source_create("test_filter",
|
||||
"a nice green filter", NULL, nullptr);
|
||||
if (!filter)
|
||||
throw "Couldn't create test filter";
|
||||
obs_source_filter_add(source, filter);
|
||||
|
|
Loading…
Reference in New Issue