mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 21:13:04 +02:00
c9df41c1e2
Typedef pointers are unsafe. If you do: typedef struct bla *bla_t; then you cannot use it as a constant, such as: const bla_t, because that constant will be to the pointer itself rather than to the underlying data. I admit this was a fundamental mistake that must be corrected. All typedefs that were pointer types will now have their pointers removed from the type itself, and the pointers will be used when they are actually used as variables/parameters/returns instead. This does not break ABI though, which is pretty nice.
74 lines
1.7 KiB
C
74 lines
1.7 KiB
C
#include <obs-module.h>
|
|
|
|
struct rtmp_custom {
|
|
char *server, *key;
|
|
};
|
|
|
|
static const char *rtmp_custom_name(void)
|
|
{
|
|
return obs_module_text("CustomStreamingServer");
|
|
}
|
|
|
|
static void rtmp_custom_update(void *data, obs_data_t *settings)
|
|
{
|
|
struct rtmp_custom *service = data;
|
|
|
|
bfree(service->server);
|
|
bfree(service->key);
|
|
|
|
service->server = bstrdup(obs_data_get_string(settings, "server"));
|
|
service->key = bstrdup(obs_data_get_string(settings, "key"));
|
|
}
|
|
|
|
static void rtmp_custom_destroy(void *data)
|
|
{
|
|
struct rtmp_custom *service = data;
|
|
|
|
bfree(service->server);
|
|
bfree(service->key);
|
|
bfree(service);
|
|
}
|
|
|
|
static void *rtmp_custom_create(obs_data_t *settings, obs_service_t *service)
|
|
{
|
|
struct rtmp_custom *data = bzalloc(sizeof(struct rtmp_custom));
|
|
rtmp_custom_update(data, settings);
|
|
|
|
UNUSED_PARAMETER(service);
|
|
return data;
|
|
}
|
|
|
|
static obs_properties_t *rtmp_custom_properties(void)
|
|
{
|
|
obs_properties_t *ppts = obs_properties_create();
|
|
|
|
obs_properties_add_text(ppts, "server", "URL", OBS_TEXT_DEFAULT);
|
|
|
|
obs_properties_add_text(ppts, "key", obs_module_text("StreamKey"),
|
|
OBS_TEXT_PASSWORD);
|
|
return ppts;
|
|
}
|
|
|
|
static const char *rtmp_custom_url(void *data)
|
|
{
|
|
struct rtmp_custom *service = data;
|
|
return service->server;
|
|
}
|
|
|
|
static const char *rtmp_custom_key(void *data)
|
|
{
|
|
struct rtmp_custom *service = data;
|
|
return service->key;
|
|
}
|
|
|
|
struct obs_service_info rtmp_custom_service = {
|
|
.id = "rtmp_custom",
|
|
.get_name = rtmp_custom_name,
|
|
.create = rtmp_custom_create,
|
|
.destroy = rtmp_custom_destroy,
|
|
.update = rtmp_custom_update,
|
|
.get_properties = rtmp_custom_properties,
|
|
.get_url = rtmp_custom_url,
|
|
.get_key = rtmp_custom_key
|
|
};
|