0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-19 20:32:15 +02:00

add names to sources, use 'id' for the internal source identifier names rather than 'name'

This commit is contained in:
jp9000 2013-12-20 17:23:19 -07:00
parent 0781670ba2
commit 95a7da2d4c
10 changed files with 62 additions and 59 deletions

View File

@ -19,49 +19,49 @@
#include "obs-data.h"
bool get_output_info(void *module, const char *module_name,
const char *output_name, struct output_info *info)
const char *output_id, struct output_info *info)
{
info->getname = load_module_subfunc(module, module_name,
output_name, "getname", true);
output_id, "getname", true);
info->create = load_module_subfunc(module, module_name,
output_name, "create", true);
output_id, "create", true);
info->destroy = load_module_subfunc(module, module_name,
output_name, "destroy", true);
output_id, "destroy", true);
info->start = load_module_subfunc(module, module_name,
output_name, "start", true);
output_id, "start", true);
info->stop = load_module_subfunc(module, module_name,
output_name, "stop", true);
output_id, "stop", true);
if (!info->getname || !info->create || !info->destroy ||
!info->start || !info->stop)
return false;
info->config = load_module_subfunc(module, module_name,
output_name, "config", false);
output_id, "config", false);
info->pause = load_module_subfunc(module, module_name,
output_name, "pause", false);
output_id, "pause", false);
info->name = output_name;
info->id = output_id;
return true;
}
static inline const struct output_info *find_output(const char *type)
static inline const struct output_info *find_output(const char *id)
{
size_t i;
for (i = 0; i < obs->output_types.num; i++)
if (strcmp(obs->output_types.array[i].name, type) == 0)
if (strcmp(obs->output_types.array[i].id, id) == 0)
return obs->output_types.array+i;
return NULL;
}
obs_output_t obs_output_create(const char *type, const char *settings)
obs_output_t obs_output_create(const char *id, const char *settings)
{
const struct output_info *info = find_output(type);
const struct output_info *info = find_output(id);
struct obs_output *output;
if (!info) {
blog(LOG_WARNING, "Output type '%s' not found", type);
blog(LOG_WARNING, "Output '%s' not found", id);
return NULL;
}

View File

@ -98,7 +98,7 @@
struct obs_output;
struct output_info {
const char *name;
const char *id;
const char *(*getname)(const char *locale);

View File

@ -87,7 +87,7 @@ static uint32_t scene_getsize(void *data)
static const struct source_info scene_info =
{
.name = "scene",
.id = "scene",
.getname = scene_getname,
.create = scene_create,
.destroy = scene_destroy,

View File

@ -20,6 +20,8 @@
struct service_data;
struct service_info {
char *id;
const char *(*getname)(const char *locale);
void *(*create)(const char *settings, struct service_data *service);

View File

@ -26,59 +26,59 @@
static void obs_source_destroy(obs_source_t source);
bool get_source_info(void *module, const char *module_name,
const char *source_name, struct source_info *info)
const char *source_id, struct source_info *info)
{
info->getname = load_module_subfunc(module, module_name,
source_name, "getname", true);
source_id, "getname", true);
info->create = load_module_subfunc(module, module_name,
source_name,"create", true);
source_id,"create", true);
info->destroy = load_module_subfunc(module, module_name,
source_name, "destroy", true);
source_id, "destroy", true);
info->get_output_flags = load_module_subfunc(module, module_name,
source_name, "get_output_flags", true);
source_id, "get_output_flags", true);
if (!info->getname || !info->create || !info->destroy ||
!info->get_output_flags)
return false;
info->config = load_module_subfunc(module, module_name,
source_name, "config", false);
source_id, "config", false);
info->activate = load_module_subfunc(module, module_name,
source_name, "activate", false);
source_id, "activate", false);
info->deactivate = load_module_subfunc(module, module_name,
source_name, "deactivate", false);
source_id, "deactivate", false);
info->video_tick = load_module_subfunc(module, module_name,
source_name, "video_tick", false);
source_id, "video_tick", false);
info->video_render = load_module_subfunc(module, module_name,
source_name, "video_render", false);
source_id, "video_render", false);
info->getwidth = load_module_subfunc(module, module_name,
source_name, "getwidth", false);
source_id, "getwidth", false);
info->getheight = load_module_subfunc(module, module_name,
source_name, "getheight", false);
source_id, "getheight", false);
info->getparam = load_module_subfunc(module, module_name,
source_name, "getparam", false);
source_id, "getparam", false);
info->setparam = load_module_subfunc(module, module_name,
source_name, "setparam", false);
source_id, "setparam", false);
info->filter_video = load_module_subfunc(module, module_name,
source_name, "filter_video", false);
source_id, "filter_video", false);
info->filter_audio = load_module_subfunc(module, module_name,
source_name, "filter_audio", false);
source_id, "filter_audio", false);
info->name = source_name;
info->id = source_id;
return true;
}
static inline const struct source_info *find_source(struct darray *list,
const char *name)
const char *id)
{
size_t i;
struct source_info *array = list->array;
for (i = 0; i < list->num; i++) {
struct source_info *info = array+i;
if (strcmp(info->name, name) == 0)
if (strcmp(info->id, id) == 0)
return info;
}
@ -117,8 +117,8 @@ bool obs_source_init(struct obs_source *source, const char *settings,
return true;
}
obs_source_t obs_source_create(enum obs_source_type type, const char *name,
const char *settings)
obs_source_t obs_source_create(enum obs_source_type type, const char *id,
const char *name, const char *settings)
{
const struct source_info *info = NULL;
struct darray *list = NULL;
@ -134,15 +134,16 @@ obs_source_t obs_source_create(enum obs_source_type type, const char *name,
return NULL;
}
info = find_source(list, name);
info = find_source(list, id);
if (!info) {
blog(LOG_WARNING, "Source type '%s' not found", name);
blog(LOG_WARNING, "Source '%s' not found", id);
return NULL;
}
source = bmalloc(sizeof(struct obs_source));
memset(source, 0, sizeof(struct obs_source));
source->name = bstrdup(name);
source->data = info->create(settings, source);
if (!source->data)
goto fail;

View File

@ -153,7 +153,7 @@
struct obs_source;
struct source_info {
const char *name;
const char *id;
/* ----------------------------------------------------------------- */
/* required implementations */
@ -204,7 +204,7 @@ struct obs_source {
volatile int refs;
/* source-specific data */
char *name;
char *name; /* user-defined name */
struct dstr settings;
void *data;
struct source_info callbacks;

View File

@ -374,35 +374,35 @@ bool obs_get_audio_info(struct audio_info *ai)
return true;
}
bool obs_enum_input_types(size_t idx, const char **name)
bool obs_enum_input_types(size_t idx, const char **id)
{
if (idx >= obs->input_types.num)
return false;
*name = obs->input_types.array[idx].name;
*id = obs->input_types.array[idx].id;
return true;
}
bool obs_enum_filter_types(size_t idx, const char **name)
bool obs_enum_filter_types(size_t idx, const char **id)
{
if (idx >= obs->filter_types.num)
return false;
*name = obs->filter_types.array[idx].name;
*id = obs->filter_types.array[idx].id;
return true;
}
bool obs_enum_transition_types(size_t idx, const char **name)
bool obs_enum_transition_types(size_t idx, const char **id)
{
if (idx >= obs->transition_types.num)
return false;
*name = obs->transition_types.array[idx].name;
*id = obs->transition_types.array[idx].id;
return true;
}
bool obs_enum_output_types(size_t idx, const char **name)
bool obs_enum_output_types(size_t idx, const char **id)
{
if (idx >= obs->output_types.num)
return false;
*name = obs->output_types.array[idx].name;
*id = obs->output_types.array[idx].id;
return true;
}

View File

@ -191,7 +191,7 @@ EXPORT int obs_load_module(const char *path);
* Inputs are general source inputs (such as capture sources, device sources,
* etc).
*/
EXPORT bool obs_enum_input_types(size_t idx, const char **name);
EXPORT bool obs_enum_input_types(size_t idx, const char **id);
/**
* Enumerates all available filter source types.
@ -199,7 +199,7 @@ EXPORT bool obs_enum_input_types(size_t idx, const char **name);
* Filters are sources that are used to modify the video/audio output of
* other sources.
*/
EXPORT bool obs_enum_filter_types(size_t idx, const char **name);
EXPORT bool obs_enum_filter_types(size_t idx, const char **id);
/**
* Enumerates all available transition source types.
@ -207,7 +207,7 @@ EXPORT bool obs_enum_filter_types(size_t idx, const char **name);
* Transitions are sources used to transition between two or more other
* sources.
*/
EXPORT bool obs_enum_transition_types(size_t idx, const char **name);
EXPORT bool obs_enum_transition_types(size_t idx, const char **id);
/**
* Enumerates all available ouput types.
@ -215,7 +215,7 @@ EXPORT bool obs_enum_transition_types(size_t idx, const char **name);
* Outputs handle color space conversion, encoding, and output to file or
* streams.
*/
EXPORT bool obs_enum_output_types(size_t idx, const char **name);
EXPORT bool obs_enum_output_types(size_t idx, const char **id);
/** Gets the graphics context for this OBS context */
EXPORT graphics_t obs_graphics(void);
@ -281,7 +281,7 @@ EXPORT obs_source_t obs_display_getsource(obs_display_t display,
* Gets the translated display name of a source
*/
EXPORT const char *obs_source_getdisplayname(enum obs_source_type type,
const char *name, const char *locale);
const char *id, const char *locale);
/**
* Creates a source of the specified type with the specified settings.
@ -290,7 +290,7 @@ EXPORT const char *obs_source_getdisplayname(enum obs_source_type type,
* or modifying video/audio.
*/
EXPORT obs_source_t obs_source_create(enum obs_source_type type,
const char *name, const char *settings);
const char *id, const char *name, const char *settings);
/**
* Adds/releases a reference to a source. When the last reference is

View File

@ -149,14 +149,14 @@ static void test()
/* ------------------------------------------------------ */
/* create source */
SourceContext source{obs_source_create(SOURCE_INPUT,
"random", NULL)};
"random", "a test source", NULL)};
if (!source)
throw "Couldn't create random test source";
/* ------------------------------------------------------ */
/* create filter */
SourceContext filter{obs_source_create(SOURCE_FILTER,
"test", NULL)};
"test", "a test filter", NULL)};
if (!filter)
throw "Couldn't create test filter";
obs_source_filter_add(source, filter);

View File

@ -153,14 +153,14 @@ int WINAPI WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdLine,
/* ------------------------------------------------------ */
/* create source */
SourceContext source = obs_source_create(SOURCE_INPUT,
"random", NULL);
"random", "some randon source", NULL);
if (!source)
throw "Couldn't create random test source";
/* ------------------------------------------------------ */
/* create filter */
SourceContext filter = obs_source_create(SOURCE_FILTER,
"test", NULL);
"test", "a nice little green filter", NULL);
if (!filter)
throw "Couldn't create test filter";
obs_source_filter_add(source, filter);