Add 'common' and 'custom' RTMP services
This plugin is just a generic service plugin for basic RTMP streaming service stuff. This just has a 'common' service that has a list of common/simple streaming services that don't have their own custom service modules, and then a 'custom' service that allows you to enter in the stream URL and key manually, without a service/server list. Also, copy the jansson VS projects file (don't modify the old one) so that it's located in the vs/2013 directory, so that other libraries can properly link with it without having to enter in extra information just to include jansson
This commit is contained in:
parent
506daa17d9
commit
43057038fc
1
build/data/.gitignore
vendored
Normal file
1
build/data/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
!*.json
|
102
build/data/obs-plugins/rtmp-services/services.json
Normal file
102
build/data/obs-plugins/rtmp-services/services.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"Twitch / Justin.tv": {
|
||||
"servers": {
|
||||
"US West: San Francisco, CA" : "rtmp://live.justin.tv/app",
|
||||
"Asia: Singapore" : "rtmp://live-sin-backup.justin.tv/app",
|
||||
"EU: Amsterdam, NL" : "rtmp://live-ams.justin.tv/app",
|
||||
"EU: Frankfurt, DE" : "rtmp://live-fra.justin.tv/app",
|
||||
"EU: London, UK" : "rtmp://live-lhr.justin.tv/app",
|
||||
"EU: Paris, FR" : "rtmp://live-cdg.justin.tv/app",
|
||||
"EU: Prague, CZ" : "rtmp://live-prg.justin.tv/app",
|
||||
"EU: Stockholm, SE" : "rtmp://live-arn.justin.tv/app",
|
||||
"US Central: Dallas, TX" : "rtmp://live-dfw.justin.tv/app",
|
||||
"US East: Ashburn, VA" : "rtmp://live-iad.justin.tv/app",
|
||||
"US East: Miami, FL" : "rtmp://live-mia.justin.tv/app",
|
||||
"US East: New York, NY" : "rtmp://live-jfk.justin.tv/app",
|
||||
"US Midwest: Chicago, IL" : "rtmp://live-ord.justin.tv/app",
|
||||
"US West: Los Angeles, CA" : "rtmp://live-lax.justin.tv/app"
|
||||
},
|
||||
"recommended": {
|
||||
"keyint" : 2,
|
||||
"cbr" : true,
|
||||
"profile" : "main",
|
||||
"max video bitrate" : 3500,
|
||||
"max audio bitrate" : 160
|
||||
}
|
||||
},
|
||||
"Youtube": {
|
||||
"servers": {
|
||||
"Primary Youtube ingest server" : "rtmp://a.rtmp.youtube.com/live2",
|
||||
"Backup Youtube ingest server" : "rtmp://b.rtmp.youtube.com/live2?backup=1"
|
||||
},
|
||||
"recommended": {
|
||||
"keyint" : 2,
|
||||
"cbr" : true,
|
||||
"profile" : "main",
|
||||
"max video bitrate" : 3500,
|
||||
"max audio bitrate" : 160
|
||||
}
|
||||
},
|
||||
"hitbox.tv": {
|
||||
"servers": {
|
||||
"Default" : "rtmp://live.hitbox.tv/push",
|
||||
"EU-East" : "rtmp://live.vie.hitbox.tv/push",
|
||||
"EU-Central" : "rtmp://live.nbg.hitbox.tv/push",
|
||||
"EU-West" : "rtmp://live.fra.hitbox.tv/push",
|
||||
"EU-North" : "rtmp://live.ams.hitbox.tv/push",
|
||||
"US-East" : "rtmp://live.vgn.hitbox.tv/push",
|
||||
"US-West" : "rtmp://live.lax.hitbox.tv/push",
|
||||
"South America" : "rtmp://live.gru.hitbox.tv/push",
|
||||
"Asia" : "rtmp://live.lax.hitbox.tv/push"
|
||||
},
|
||||
"recommended": {
|
||||
"keyint" : 2,
|
||||
"cbr" : true,
|
||||
"profile" : "main",
|
||||
"max video bitrate" : 3500,
|
||||
"max audio bitrate" : 160
|
||||
}
|
||||
},
|
||||
"Vaughn Live / iNSTAGIB.tv": {
|
||||
"servers": {
|
||||
"US: Primary" : "rtmp://live.vaughnsoft.net:443/live",
|
||||
"US: Virginia, USA" : "rtmp://live-iad.vaughnsoft.net:443/live",
|
||||
"US: Chicago, IL" : "rtmp://live-ord.vaughnsoft.net:443/live",
|
||||
"EU: Frankfurt, Germany" : "rtmp://live-de.vaughnsoft.net:443/live"
|
||||
}
|
||||
},
|
||||
"DailyMotion": {
|
||||
"servers": {
|
||||
"Primary" : "rtmp://publish.dailymotion.com/publish-dm"
|
||||
}
|
||||
},
|
||||
"connectcast.tv": {
|
||||
"servers": {
|
||||
"Default" : "rtmp://stream.connectcast.tv/live"
|
||||
}
|
||||
},
|
||||
"iNSTAGIB.tv": {
|
||||
"servers": {
|
||||
"US Chicago (Primary)" : "rtmp://live.instagib.tv:443/live"
|
||||
}
|
||||
},
|
||||
"GoodGame.ru": {
|
||||
"servers": {
|
||||
"Moscow M9" : "rtmp://stream.goodgame.ru:1940/live",
|
||||
"Moscow M10" : "rtmp://stream2.goodgame.ru:1940/live",
|
||||
"Saint-Petersburg" : "rtmp://spb1.goodgame.ru:1940/live"
|
||||
}
|
||||
},
|
||||
"CyberGame.TV": {
|
||||
"servers": {
|
||||
"RU Origin" : "rtmp://st.cybergame.tv:1953/live",
|
||||
"RU Premium" : "rtmp://premium.cybergame.tv:1953/premium"
|
||||
}
|
||||
},
|
||||
"CashPlay.tv": {
|
||||
"servers": {
|
||||
"Primary, UK" : "rtmp://live.cashplay.tv/live",
|
||||
"Low Priority, DE" : "rtmp://de.live.cashplay.tv/live"
|
||||
}
|
||||
}
|
||||
}
|
@ -14,3 +14,4 @@ endif()
|
||||
add_subdirectory(obs-x264)
|
||||
add_subdirectory(obs-ffmpeg)
|
||||
add_subdirectory(obs-outputs)
|
||||
add_subdirectory(rtmp-services)
|
||||
|
15
plugins/rtmp-services/CMakeLists.txt
Normal file
15
plugins/rtmp-services/CMakeLists.txt
Normal file
@ -0,0 +1,15 @@
|
||||
project(rtmp-services)
|
||||
|
||||
set(rtmp-services_SOURCES
|
||||
rtmp-common.c
|
||||
rtmp-custom.c
|
||||
rtmp-services-main.c)
|
||||
|
||||
add_library(rtmp-services MODULE
|
||||
${rtmp-services_SOURCES})
|
||||
target_link_libraries(rtmp-services
|
||||
libobs
|
||||
jansson)
|
||||
|
||||
install_obs_plugin(rtmp-services)
|
||||
install_obs_plugin_data(rtmp-services ../../build/data/obs-plugins/rtmp-services)
|
201
plugins/rtmp-services/rtmp-common.c
Normal file
201
plugins/rtmp-services/rtmp-common.c
Normal file
@ -0,0 +1,201 @@
|
||||
#include <util/platform.h>
|
||||
#include <obs-module.h>
|
||||
#include <jansson.h>
|
||||
|
||||
struct rtmp_common {
|
||||
char *service;
|
||||
char *server;
|
||||
char *key;
|
||||
};
|
||||
|
||||
static const char *rtmp_common_getname(const char *locale)
|
||||
{
|
||||
UNUSED_PARAMETER(locale);
|
||||
|
||||
/* TODO: locale */
|
||||
return "Other Streaming Services";
|
||||
}
|
||||
|
||||
static void rtmp_common_update(void *data, obs_data_t settings)
|
||||
{
|
||||
struct rtmp_common *service = data;
|
||||
|
||||
bfree(service->service);
|
||||
bfree(service->server);
|
||||
bfree(service->key);
|
||||
|
||||
service->service = bstrdup(obs_data_getstring(settings, "service"));
|
||||
service->server = bstrdup(obs_data_getstring(settings, "server"));
|
||||
service->key = bstrdup(obs_data_getstring(settings, "key"));
|
||||
}
|
||||
|
||||
static void rtmp_common_destroy(void *data)
|
||||
{
|
||||
struct rtmp_common *service = data;
|
||||
|
||||
bfree(service->service);
|
||||
bfree(service->server);
|
||||
bfree(service->key);
|
||||
bfree(service);
|
||||
}
|
||||
|
||||
static void *rtmp_common_create(obs_data_t settings, obs_service_t service)
|
||||
{
|
||||
struct rtmp_common *data = bzalloc(sizeof(struct rtmp_common));
|
||||
rtmp_common_update(data, settings);
|
||||
|
||||
UNUSED_PARAMETER(service);
|
||||
return data;
|
||||
}
|
||||
|
||||
static void add_service(obs_property_t list, const char *name,
|
||||
json_t *service)
|
||||
{
|
||||
json_t *servers;
|
||||
|
||||
if (!json_is_object(service)) {
|
||||
blog(LOG_WARNING, "rtmp-common.c: [add_service] service "
|
||||
"'%s' is not an object", name);
|
||||
return;
|
||||
}
|
||||
|
||||
servers = json_object_get(service, "servers");
|
||||
if (!servers) {
|
||||
blog(LOG_WARNING, "rtmp-common.c: [add_service] service "
|
||||
"'%s' has no servers", name);
|
||||
return;
|
||||
}
|
||||
|
||||
obs_property_list_add_string(list, name, name);
|
||||
}
|
||||
|
||||
static void add_services(obs_property_t list, const char *file, json_t *root)
|
||||
{
|
||||
json_t *service;
|
||||
const char *name;
|
||||
|
||||
if (!json_is_object(root)) {
|
||||
blog(LOG_WARNING, "rtmp-common.c: [add_services] JSON file "
|
||||
"'%s' root is not an object", file);
|
||||
return;
|
||||
}
|
||||
|
||||
json_object_foreach (root, name, service) {
|
||||
add_service(list, name, service);
|
||||
}
|
||||
}
|
||||
|
||||
static json_t *build_service_list(obs_property_t list, const char *file)
|
||||
{
|
||||
char *file_data = os_quick_read_utf8_file(file);
|
||||
json_error_t error;
|
||||
json_t *root;
|
||||
|
||||
if (!file_data)
|
||||
return NULL;
|
||||
|
||||
root = json_loads(file_data, JSON_REJECT_DUPLICATES, &error);
|
||||
bfree(file_data);
|
||||
|
||||
if (!root) {
|
||||
blog(LOG_WARNING, "rtmp-common.c: [build_service_list] "
|
||||
"Error reading JSON file '%s' (%d): %s",
|
||||
file, error.line, error.text);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
add_services(list, file, root);
|
||||
return root;
|
||||
}
|
||||
|
||||
static void properties_data_destroy(void *data)
|
||||
{
|
||||
json_t *root = data;
|
||||
if (root)
|
||||
json_decref(root);
|
||||
}
|
||||
|
||||
static void fill_servers(obs_property_t servers, json_t *service,
|
||||
const char *name)
|
||||
{
|
||||
json_t *server;
|
||||
const char *server_name;
|
||||
|
||||
obs_property_list_clear(servers);
|
||||
|
||||
if (!json_is_object(service)) {
|
||||
blog(LOG_WARNING, "rtmp-common.c: [fill_servers] "
|
||||
"Servers for service '%s' not a valid object",
|
||||
name);
|
||||
return;
|
||||
}
|
||||
|
||||
json_object_foreach (service, server_name, server) {
|
||||
if (json_is_string(server)) {
|
||||
obs_property_list_add_string(servers, server_name,
|
||||
json_string_value(server));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bool service_selected(obs_properties_t props, obs_property_t p,
|
||||
obs_data_t settings)
|
||||
{
|
||||
const char *name = obs_data_getstring(settings, "service");
|
||||
json_t *root = obs_properties_get_param(props);
|
||||
json_t *service = json_object_get(root, name);
|
||||
|
||||
fill_servers(obs_properties_get(props, "server"), service, name);
|
||||
|
||||
UNUSED_PARAMETER(p);
|
||||
return true;
|
||||
}
|
||||
|
||||
static obs_properties_t rtmp_common_properties(const char *locale)
|
||||
{
|
||||
obs_properties_t ppts = obs_properties_create(locale);
|
||||
obs_property_t list;
|
||||
char *file;
|
||||
|
||||
/* TODO: locale */
|
||||
|
||||
list = obs_properties_add_list(ppts, "service", "Service",
|
||||
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_STRING);
|
||||
|
||||
file = obs_find_plugin_file("rtmp-services/services.json");
|
||||
if (file) {
|
||||
json_t *root = build_service_list(list, file);
|
||||
obs_properties_set_param(ppts, root, properties_data_destroy);
|
||||
obs_property_set_modified_callback(list, service_selected);
|
||||
bfree(file);
|
||||
}
|
||||
|
||||
obs_properties_add_list(ppts, "server", "Server",
|
||||
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_STRING);
|
||||
|
||||
obs_properties_add_text(ppts, "key", "Stream Key", OBS_TEXT_PASSWORD);
|
||||
return ppts;
|
||||
}
|
||||
|
||||
static const char *rtmp_common_url(void *data)
|
||||
{
|
||||
struct rtmp_common *service = data;
|
||||
return service->server;
|
||||
}
|
||||
|
||||
static const char *rtmp_common_key(void *data)
|
||||
{
|
||||
struct rtmp_common *service = data;
|
||||
return service->key;
|
||||
}
|
||||
|
||||
struct obs_service_info rtmp_common_service = {
|
||||
.id = "rtmp_common",
|
||||
.getname = rtmp_common_getname,
|
||||
.create = rtmp_common_create,
|
||||
.destroy = rtmp_common_destroy,
|
||||
.update = rtmp_common_update,
|
||||
.properties = rtmp_common_properties,
|
||||
.get_url = rtmp_common_url,
|
||||
.get_key = rtmp_common_key
|
||||
};
|
76
plugins/rtmp-services/rtmp-custom.c
Normal file
76
plugins/rtmp-services/rtmp-custom.c
Normal file
@ -0,0 +1,76 @@
|
||||
#include <obs-module.h>
|
||||
|
||||
struct rtmp_custom {
|
||||
char *server, *key;
|
||||
};
|
||||
|
||||
static const char *rtmp_custom_name(const char *locale)
|
||||
{
|
||||
UNUSED_PARAMETER(locale);
|
||||
|
||||
/* TODO: locale */
|
||||
return "Custom Streaming Server";
|
||||
}
|
||||
|
||||
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_getstring(settings, "server"));
|
||||
service->key = bstrdup(obs_data_getstring(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(const char *locale)
|
||||
{
|
||||
obs_properties_t ppts = obs_properties_create(locale);
|
||||
|
||||
/* TODO: locale */
|
||||
|
||||
obs_properties_add_text(ppts, "server", "URL", OBS_TEXT_DEFAULT);
|
||||
obs_properties_add_text(ppts, "key", "Stream Key", 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",
|
||||
.getname = rtmp_custom_name,
|
||||
.create = rtmp_custom_create,
|
||||
.destroy = rtmp_custom_destroy,
|
||||
.update = rtmp_custom_update,
|
||||
.properties = rtmp_custom_properties,
|
||||
.get_url = rtmp_custom_url,
|
||||
.get_key = rtmp_custom_key
|
||||
};
|
13
plugins/rtmp-services/rtmp-services-main.c
Normal file
13
plugins/rtmp-services/rtmp-services-main.c
Normal file
@ -0,0 +1,13 @@
|
||||
#include <obs-module.h>
|
||||
|
||||
extern struct obs_service_info rtmp_common_service;
|
||||
extern struct obs_service_info rtmp_custom_service;
|
||||
|
||||
bool obs_module_load(uint32_t libobs_ver)
|
||||
{
|
||||
obs_register_service(&rtmp_common_service);
|
||||
obs_register_service(&rtmp_custom_service);
|
||||
|
||||
UNUSED_PARAMETER(libobs_ver);
|
||||
return true;
|
||||
}
|
@ -60,7 +60,7 @@ static void update_settings(struct window_capture *wc, obs_data_t s)
|
||||
if (window) {
|
||||
char **strlist = strlist_split(window, ':', true);
|
||||
|
||||
if (strlist[0] && strlist[1] && strlist[2]) {
|
||||
if (strlist && strlist[0] && strlist[1] && strlist[2]) {
|
||||
wc->title = decode_str(strlist[0]);
|
||||
wc->class = decode_str(strlist[1]);
|
||||
wc->executable = decode_str(strlist[2]);
|
||||
|
@ -5,6 +5,7 @@ VisualStudioVersion = 12.0.21005.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libobs", "libobs\libobs.vcxproj", "{6F1AC2AE-6424-401A-AF9F-A771E6BEE026}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C7549517-7FAB-46A5-BB21-228984573265} = {C7549517-7FAB-46A5-BB21-228984573265}
|
||||
{E11367B7-20CC-4741-B8E0-C20E85302A40} = {E11367B7-20CC-4741-B8E0-C20E85302A40}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
@ -31,8 +32,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libobs-opengl", "libobs-ope
|
||||
{6F1AC2AE-6424-401A-AF9F-A771E6BEE026} = {6F1AC2AE-6424-401A-AF9F-A771E6BEE026}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jansson", "..\..\deps\jansson\win32\vs2010\jansson.vcxproj", "{76226D20-1972-4789-A595-EDACC7A76DC3}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "obs-ffmpeg", "obs-ffmpeg\obs-ffmpeg.vcxproj", "{36970254-B1E5-4BE6-A561-301B6E7CDCE3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6F1AC2AE-6424-401A-AF9F-A771E6BEE026} = {6F1AC2AE-6424-401A-AF9F-A771E6BEE026}
|
||||
@ -65,6 +64,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "obs-outputs", "obs-outputs\
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glad", "glad\glad.vcxproj", "{B9F9CE2C-FAC8-4528-AAFF-0BC3753C7BDA}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jansson", "jansson\jansson.vcxproj", "{C7549517-7FAB-46A5-BB21-228984573265}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rtmp-services", "rtmp-services\rtmp-services.vcxproj", "{15139C6C-8DD7-42A5-B907-7A1A9862FA39}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C7549517-7FAB-46A5-BB21-228984573265} = {C7549517-7FAB-46A5-BB21-228984573265}
|
||||
{6F1AC2AE-6424-401A-AF9F-A771E6BEE026} = {6F1AC2AE-6424-401A-AF9F-A771E6BEE026}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
@ -147,18 +154,6 @@ Global
|
||||
{B6EAE19B-79BF-4F7C-9E66-976D14B9DC6C}.Release|Win32.Build.0 = Release|Win32
|
||||
{B6EAE19B-79BF-4F7C-9E66-976D14B9DC6C}.Release|x64.ActiveCfg = Release|x64
|
||||
{B6EAE19B-79BF-4F7C-9E66-976D14B9DC6C}.Release|x64.Build.0 = Release|x64
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Debug|x64.Build.0 = Debug|Win32
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Release|Win32.Build.0 = Release|Win32
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Release|x64.ActiveCfg = Release|Win32
|
||||
{76226D20-1972-4789-A595-EDACC7A76DC3}.Release|x64.Build.0 = Release|Win32
|
||||
{36970254-B1E5-4BE6-A561-301B6E7CDCE3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{36970254-B1E5-4BE6-A561-301B6E7CDCE3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{36970254-B1E5-4BE6-A561-301B6E7CDCE3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
@ -243,6 +238,30 @@ Global
|
||||
{B9F9CE2C-FAC8-4528-AAFF-0BC3753C7BDA}.Release|Win32.Build.0 = Release|Win32
|
||||
{B9F9CE2C-FAC8-4528-AAFF-0BC3753C7BDA}.Release|x64.ActiveCfg = Release|x64
|
||||
{B9F9CE2C-FAC8-4528-AAFF-0BC3753C7BDA}.Release|x64.Build.0 = Release|x64
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Debug|x64.Build.0 = Debug|x64
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Release|Win32.Build.0 = Release|Win32
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Release|x64.ActiveCfg = Release|x64
|
||||
{C7549517-7FAB-46A5-BB21-228984573265}.Release|x64.Build.0 = Release|x64
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Debug|x64.Build.0 = Debug|x64
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Release|Win32.Build.0 = Release|Win32
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Release|x64.ActiveCfg = Release|x64
|
||||
{15139C6C-8DD7-42A5-B907-7A1A9862FA39}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
161
vs/2013/rtmp-services/rtmp-services.vcxproj
Normal file
161
vs/2013/rtmp-services/rtmp-services.vcxproj
Normal file
@ -0,0 +1,161 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{15139C6C-8DD7-42A5-B907-7A1A9862FA39}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>rtmpservices</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RTMPSERVICES_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../../libobs;../../../deps/jansson/src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>jansson.lib;libobs.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RTMPSERVICES_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../../libobs;../../../deps/jansson/src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>jansson.lib;libobs.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RTMPSERVICES_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../../libobs;../../../deps/jansson/src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>jansson.lib;libobs.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RTMPSERVICES_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../../libobs;../../../deps/jansson/src</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>jansson.lib;libobs.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\plugins\rtmp-services\rtmp-common.c" />
|
||||
<ClCompile Include="..\..\..\plugins\rtmp-services\rtmp-custom.c" />
|
||||
<ClCompile Include="..\..\..\plugins\rtmp-services\rtmp-services-main.c" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
28
vs/2013/rtmp-services/rtmp-services.vcxproj.filters
Normal file
28
vs/2013/rtmp-services/rtmp-services.vcxproj.filters
Normal file
@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\plugins\rtmp-services\rtmp-common.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\plugins\rtmp-services\rtmp-custom.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\plugins\rtmp-services\rtmp-services-main.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
Loading…
x
Reference in New Issue
Block a user