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

libobs: Add custom size support to scenes

Allows scenes to have a custom size.  Mainly used for grouping, but can
be extended with public API later.
This commit is contained in:
jp9000 2018-06-01 08:18:19 -07:00
parent f0164f9d28
commit 690f738a76
2 changed files with 19 additions and 4 deletions

View File

@ -714,6 +714,12 @@ static void scene_load(void *data, obs_data_t *settings)
if (obs_data_has_user_value(settings, "id_counter"))
scene->id_counter = obs_data_get_int(settings, "id_counter");
if (obs_data_get_bool(settings, "custom_size")) {
scene->cx = (uint32_t)obs_data_get_int(settings, "cx");
scene->cy = (uint32_t)obs_data_get_int(settings, "cy");
scene->custom_size = true;
}
obs_data_array_release(items);
}
@ -775,6 +781,11 @@ static void scene_save(void *data, obs_data_t *settings)
}
obs_data_set_int(settings, "id_counter", scene->id_counter);
obs_data_set_bool(settings, "custom_size", scene->custom_size);
if (scene->custom_size) {
obs_data_set_int(settings, "cx", scene->cx);
obs_data_set_int(settings, "cy", scene->cy);
}
full_unlock(scene);
@ -784,14 +795,14 @@ static void scene_save(void *data, obs_data_t *settings)
static uint32_t scene_getwidth(void *data)
{
UNUSED_PARAMETER(data);
return obs->video.base_width;
obs_scene_t *scene = data;
return scene->custom_size ? scene->cx : obs->video.base_width;
}
static uint32_t scene_getheight(void *data)
{
UNUSED_PARAMETER(data);
return obs->video.base_height;
obs_scene_t *scene = data;
return scene->custom_size ? scene->cy : obs->video.base_height;
}
static void apply_scene_item_audio_actions(struct obs_scene_item *item,

View File

@ -83,6 +83,10 @@ struct obs_scene_item {
struct obs_scene {
struct obs_source *source;
bool custom_size;
uint32_t cx;
uint32_t cy;
int64_t id_counter;
pthread_mutex_t video_mutex;