(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
jp9000 2015-12-29 15:25:45 -08:00
parent 20db7649aa
commit b0104fcee0
12 changed files with 55 additions and 98 deletions

View File

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

View File

@ -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:

View File

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

View File

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

View File

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

View File

@ -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

View File

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

View File

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

View File

@ -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,

View File

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

View File

@ -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";

View File

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