Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions libobs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,17 @@ target_sources(
graphics/vec4.h
)

# Temporarily disables deprecation warnings while obs_data_autoselect_* is deprecated.
if(CMAKE_C_COMPILER_ID STREQUAL "MSVC")
set_source_files_properties(obs-data.c PROPERTIES COMPILE_OPTIONS "/wd4996")
elseif(
CMAKE_C_COMPILER_ID STREQUAL "GNU"
OR CMAKE_C_COMPILER_ID STREQUAL "Clang"
OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang"
)
set_source_files_properties(obs-data.c PROPERTIES COMPILE_OPTIONS "-Wno-deprecated-declarations")
endif()
Comment thread
RytoEX marked this conversation as resolved.

target_compile_features(libobs PUBLIC cxx_std_17)

target_compile_definitions(
Expand Down
87 changes: 45 additions & 42 deletions libobs/obs-data.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,12 @@ EXPORT void obs_data_set_default_array(obs_data_t *data, const char *name, obs_d
* Use these to communicate the actual values of settings in case the user
* settings aren't appropriate
*/
EXPORT void obs_data_set_autoselect_string(obs_data_t *data, const char *name, const char *val);
EXPORT void obs_data_set_autoselect_int(obs_data_t *data, const char *name, long long val);
EXPORT void obs_data_set_autoselect_double(obs_data_t *data, const char *name, double val);
EXPORT void obs_data_set_autoselect_bool(obs_data_t *data, const char *name, bool val);
EXPORT void obs_data_set_autoselect_obj(obs_data_t *data, const char *name, obs_data_t *obj);
EXPORT void obs_data_set_autoselect_array(obs_data_t *data, const char *name, obs_data_array_t *arr);
OBS_DEPRECATED EXPORT void obs_data_set_autoselect_string(obs_data_t *data, const char *name, const char *val);
OBS_DEPRECATED EXPORT void obs_data_set_autoselect_int(obs_data_t *data, const char *name, long long val);
OBS_DEPRECATED EXPORT void obs_data_set_autoselect_double(obs_data_t *data, const char *name, double val);
OBS_DEPRECATED EXPORT void obs_data_set_autoselect_bool(obs_data_t *data, const char *name, bool val);
OBS_DEPRECATED EXPORT void obs_data_set_autoselect_obj(obs_data_t *data, const char *name, obs_data_t *obj);
OBS_DEPRECATED EXPORT void obs_data_set_autoselect_array(obs_data_t *data, const char *name, obs_data_array_t *arr);

/*
* Get functions
Expand All @@ -131,12 +131,12 @@ EXPORT bool obs_data_get_default_bool(obs_data_t *data, const char *name);
EXPORT obs_data_t *obs_data_get_default_obj(obs_data_t *data, const char *name);
EXPORT obs_data_array_t *obs_data_get_default_array(obs_data_t *data, const char *name);

EXPORT const char *obs_data_get_autoselect_string(obs_data_t *data, const char *name);
EXPORT long long obs_data_get_autoselect_int(obs_data_t *data, const char *name);
EXPORT double obs_data_get_autoselect_double(obs_data_t *data, const char *name);
EXPORT bool obs_data_get_autoselect_bool(obs_data_t *data, const char *name);
EXPORT obs_data_t *obs_data_get_autoselect_obj(obs_data_t *data, const char *name);
EXPORT obs_data_array_t *obs_data_get_autoselect_array(obs_data_t *data, const char *name);
OBS_DEPRECATED EXPORT const char *obs_data_get_autoselect_string(obs_data_t *data, const char *name);
OBS_DEPRECATED EXPORT long long obs_data_get_autoselect_int(obs_data_t *data, const char *name);
OBS_DEPRECATED EXPORT double obs_data_get_autoselect_double(obs_data_t *data, const char *name);
OBS_DEPRECATED EXPORT bool obs_data_get_autoselect_bool(obs_data_t *data, const char *name);
OBS_DEPRECATED EXPORT obs_data_t *obs_data_get_autoselect_obj(obs_data_t *data, const char *name);
OBS_DEPRECATED EXPORT obs_data_array_t *obs_data_get_autoselect_array(obs_data_t *data, const char *name);

/* Array functions */
EXPORT obs_data_array_t *obs_data_array_create();
Expand All @@ -156,22 +156,22 @@ EXPORT void obs_data_array_enum(obs_data_array_t *array, void (*cb)(obs_data_t *

EXPORT bool obs_data_has_user_value(obs_data_t *data, const char *name);
EXPORT bool obs_data_has_default_value(obs_data_t *data, const char *name);
EXPORT bool obs_data_has_autoselect_value(obs_data_t *data, const char *name);
OBS_DEPRECATED EXPORT bool obs_data_has_autoselect_value(obs_data_t *data, const char *name);

EXPORT bool obs_data_item_has_user_value(obs_data_item_t *data);
EXPORT bool obs_data_item_has_default_value(obs_data_item_t *data);
EXPORT bool obs_data_item_has_autoselect_value(obs_data_item_t *data);
OBS_DEPRECATED EXPORT bool obs_data_item_has_autoselect_value(obs_data_item_t *data);

/* ------------------------------------------------------------------------- */
/* Clearing data values */

EXPORT void obs_data_unset_user_value(obs_data_t *data, const char *name);
EXPORT void obs_data_unset_default_value(obs_data_t *data, const char *name);
EXPORT void obs_data_unset_autoselect_value(obs_data_t *data, const char *name);
OBS_DEPRECATED EXPORT void obs_data_unset_autoselect_value(obs_data_t *data, const char *name);

EXPORT void obs_data_item_unset_user_value(obs_data_item_t *data);
EXPORT void obs_data_item_unset_default_value(obs_data_item_t *data);
EXPORT void obs_data_item_unset_autoselect_value(obs_data_item_t *data);
OBS_DEPRECATED EXPORT void obs_data_item_unset_autoselect_value(obs_data_item_t *data);

/* ------------------------------------------------------------------------- */
/* Item iteration */
Expand Down Expand Up @@ -202,12 +202,12 @@ EXPORT void obs_data_item_set_default_bool(obs_data_item_t **item, bool val);
EXPORT void obs_data_item_set_default_obj(obs_data_item_t **item, obs_data_t *val);
EXPORT void obs_data_item_set_default_array(obs_data_item_t **item, obs_data_array_t *val);

EXPORT void obs_data_item_set_autoselect_string(obs_data_item_t **item, const char *val);
EXPORT void obs_data_item_set_autoselect_int(obs_data_item_t **item, long long val);
EXPORT void obs_data_item_set_autoselect_double(obs_data_item_t **item, double val);
EXPORT void obs_data_item_set_autoselect_bool(obs_data_item_t **item, bool val);
EXPORT void obs_data_item_set_autoselect_obj(obs_data_item_t **item, obs_data_t *val);
EXPORT void obs_data_item_set_autoselect_array(obs_data_item_t **item, obs_data_array_t *val);
OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_string(obs_data_item_t **item, const char *val);
OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_int(obs_data_item_t **item, long long val);
OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_double(obs_data_item_t **item, double val);
OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_bool(obs_data_item_t **item, bool val);
OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_obj(obs_data_item_t **item, obs_data_t *val);
OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_array(obs_data_item_t **item, obs_data_array_t *val);

/* Item get functions */
EXPORT const char *obs_data_item_get_string(obs_data_item_t *item);
Expand All @@ -224,12 +224,12 @@ EXPORT bool obs_data_item_get_default_bool(obs_data_item_t *item);
EXPORT obs_data_t *obs_data_item_get_default_obj(obs_data_item_t *item);
EXPORT obs_data_array_t *obs_data_item_get_default_array(obs_data_item_t *item);

EXPORT const char *obs_data_item_get_autoselect_string(obs_data_item_t *item);
EXPORT long long obs_data_item_get_autoselect_int(obs_data_item_t *item);
EXPORT double obs_data_item_get_autoselect_double(obs_data_item_t *item);
EXPORT bool obs_data_item_get_autoselect_bool(obs_data_item_t *item);
EXPORT obs_data_t *obs_data_item_get_autoselect_obj(obs_data_item_t *item);
EXPORT obs_data_array_t *obs_data_item_get_autoselect_array(obs_data_item_t *item);
OBS_DEPRECATED EXPORT const char *obs_data_item_get_autoselect_string(obs_data_item_t *item);
OBS_DEPRECATED EXPORT long long obs_data_item_get_autoselect_int(obs_data_item_t *item);
OBS_DEPRECATED EXPORT double obs_data_item_get_autoselect_double(obs_data_item_t *item);
OBS_DEPRECATED EXPORT bool obs_data_item_get_autoselect_bool(obs_data_item_t *item);
OBS_DEPRECATED EXPORT obs_data_t *obs_data_item_get_autoselect_obj(obs_data_item_t *item);
OBS_DEPRECATED EXPORT obs_data_array_t *obs_data_item_get_autoselect_array(obs_data_item_t *item);

/* ------------------------------------------------------------------------- */
/* Helper functions for certain structures */
Expand All @@ -243,10 +243,10 @@ EXPORT void obs_data_set_default_vec3(obs_data_t *data, const char *name, const
EXPORT void obs_data_set_default_vec4(obs_data_t *data, const char *name, const struct vec4 *val);
EXPORT void obs_data_set_default_quat(obs_data_t *data, const char *name, const struct quat *val);

EXPORT void obs_data_set_autoselect_vec2(obs_data_t *data, const char *name, const struct vec2 *val);
EXPORT void obs_data_set_autoselect_vec3(obs_data_t *data, const char *name, const struct vec3 *val);
EXPORT void obs_data_set_autoselect_vec4(obs_data_t *data, const char *name, const struct vec4 *val);
EXPORT void obs_data_set_autoselect_quat(obs_data_t *data, const char *name, const struct quat *val);
OBS_DEPRECATED EXPORT void obs_data_set_autoselect_vec2(obs_data_t *data, const char *name, const struct vec2 *val);
OBS_DEPRECATED EXPORT void obs_data_set_autoselect_vec3(obs_data_t *data, const char *name, const struct vec3 *val);
OBS_DEPRECATED EXPORT void obs_data_set_autoselect_vec4(obs_data_t *data, const char *name, const struct vec4 *val);
OBS_DEPRECATED EXPORT void obs_data_set_autoselect_quat(obs_data_t *data, const char *name, const struct quat *val);

EXPORT void obs_data_get_vec2(obs_data_t *data, const char *name, struct vec2 *val);
EXPORT void obs_data_get_vec3(obs_data_t *data, const char *name, struct vec3 *val);
Expand All @@ -258,19 +258,20 @@ EXPORT void obs_data_get_default_vec3(obs_data_t *data, const char *name, struct
EXPORT void obs_data_get_default_vec4(obs_data_t *data, const char *name, struct vec4 *val);
EXPORT void obs_data_get_default_quat(obs_data_t *data, const char *name, struct quat *val);

EXPORT void obs_data_get_autoselect_vec2(obs_data_t *data, const char *name, struct vec2 *val);
EXPORT void obs_data_get_autoselect_vec3(obs_data_t *data, const char *name, struct vec3 *val);
EXPORT void obs_data_get_autoselect_vec4(obs_data_t *data, const char *name, struct vec4 *val);
EXPORT void obs_data_get_autoselect_quat(obs_data_t *data, const char *name, struct quat *val);
OBS_DEPRECATED EXPORT void obs_data_get_autoselect_vec2(obs_data_t *data, const char *name, struct vec2 *val);
OBS_DEPRECATED EXPORT void obs_data_get_autoselect_vec3(obs_data_t *data, const char *name, struct vec3 *val);
OBS_DEPRECATED EXPORT void obs_data_get_autoselect_vec4(obs_data_t *data, const char *name, struct vec4 *val);
OBS_DEPRECATED EXPORT void obs_data_get_autoselect_quat(obs_data_t *data, const char *name, struct quat *val);

/* ------------------------------------------------------------------------- */
/* Helper functions for media_frames_per_second/OBS_PROPERTY_FRAME_RATE */
EXPORT void obs_data_set_frames_per_second(obs_data_t *data, const char *name, struct media_frames_per_second fps,
const char *option);
EXPORT void obs_data_set_default_frames_per_second(obs_data_t *data, const char *name,
struct media_frames_per_second fps, const char *option);
EXPORT void obs_data_set_autoselect_frames_per_second(obs_data_t *data, const char *name,
struct media_frames_per_second fps, const char *option);
OBS_DEPRECATED EXPORT void obs_data_set_autoselect_frames_per_second(obs_data_t *data, const char *name,
struct media_frames_per_second fps,
const char *option);

EXPORT bool obs_data_get_frames_per_second(obs_data_t *data, const char *name, struct media_frames_per_second *fps,
const char **option);
Expand All @@ -283,15 +284,17 @@ EXPORT void obs_data_item_set_frames_per_second(obs_data_item_t **item, struct m
const char *option);
EXPORT void obs_data_item_set_default_frames_per_second(obs_data_item_t **item, struct media_frames_per_second fps,
const char *option);
EXPORT void obs_data_item_set_autoselect_frames_per_second(obs_data_item_t **item, struct media_frames_per_second fps,
const char *option);
OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_frames_per_second(obs_data_item_t **item,
struct media_frames_per_second fps,
const char *option);

EXPORT bool obs_data_item_get_frames_per_second(obs_data_item_t *item, struct media_frames_per_second *fps,
const char **option);
EXPORT bool obs_data_item_get_default_frames_per_second(obs_data_item_t *item, struct media_frames_per_second *fps,
const char **option);
EXPORT bool obs_data_item_get_autoselect_frames_per_second(obs_data_item_t *item, struct media_frames_per_second *fps,
const char **option);
OBS_DEPRECATED EXPORT bool obs_data_item_get_autoselect_frames_per_second(obs_data_item_t *item,
struct media_frames_per_second *fps,
const char **option);

/* ------------------------------------------------------------------------- */
/* OBS-specific functions */
Expand Down
4 changes: 4 additions & 0 deletions libobs/util/c99defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,18 +55,22 @@
#define PRAGMA_WARN_PUSH _Pragma("warning(push)")
#define PRAGMA_WARN_POP _Pragma("warning(pop)")
#define PRAGMA_WARN_DEPRECATION _Pragma("warning(disable: 4996)")
#define PRAGMA_DISABLE_DEPRECATION _Pragma("warning(disable: 4996)")
#elif defined(__clang__)
#define PRAGMA_WARN_PUSH _Pragma("clang diagnostic push")
#define PRAGMA_WARN_POP _Pragma("clang diagnostic pop")
#define PRAGMA_WARN_DEPRECATION _Pragma("clang diagnostic warning \"-Wdeprecated-declarations\"")
#define PRAGMA_DISABLE_DEPRECATION _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
#elif defined(__GNUC__)
#define PRAGMA_WARN_PUSH _Pragma("GCC diagnostic push")
#define PRAGMA_WARN_POP _Pragma("GCC diagnostic pop")
#define PRAGMA_WARN_DEPRECATION _Pragma("GCC diagnostic warning \"-Wdeprecated-declarations\"")
#define PRAGMA_DISABLE_DEPRECATION _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
#else
#define PRAGMA_WARN_PUSH
#define PRAGMA_WARN_POP
#define PRAGMA_WARN_DEPRECATION
#define PRAGMA_DISABLE_DEPRECATION
#endif

#include <stddef.h>
Expand Down
63 changes: 5 additions & 58 deletions plugins/mac-avcapture/legacy/av-capture.mm
Original file line number Diff line number Diff line change
Expand Up @@ -1012,21 +1012,6 @@ static bool init_manual(av_capture *capture, AVCaptureDevice *dev, obs_data_t *s
auto input_format = obs_data_get_int(settings, "input_format");
FourCharCode actual_format = static_cast<FourCharCode>(input_format);

SCOPE_EXIT
{
bool refresh = false;
if (input_format != actual_format) {
refresh = obs_data_get_autoselect_int(settings, "input_format") != actual_format;
obs_data_set_autoselect_int(settings, "input_format", actual_format);
} else {
refresh = obs_data_has_autoselect_value(settings, "input_format");
obs_data_unset_autoselect_value(settings, "input_format");
}

if (refresh)
obs_source_update_properties(capture->source);
};

capture->requested_colorspace = static_cast<int>(obs_data_get_int(settings, "color_space"));
if (!color_space_valid(capture->requested_colorspace)) {
AVLOG(LOG_WARNING, "Unsupported color space: %d", capture->requested_colorspace);
Expand Down Expand Up @@ -1421,27 +1406,6 @@ static bool check_preset(AVCaptureDevice *dev, obs_property_t *list, obs_data_t
return true;
}

static bool autoselect_preset(AVCaptureDevice *dev, obs_data_t *settings)
{
NSString *preset = get_string(settings, "preset");
if (!dev || [dev supportsAVCaptureSessionPreset:preset]) {
if (obs_data_has_autoselect_value(settings, "preset")) {
obs_data_unset_autoselect_value(settings, "preset");
return true;
}

} else {
preset = select_preset(dev, preset);
const char *autoselect = obs_data_get_autoselect_string(settings, "preset");
if (![preset isEqualToString:@(autoselect)]) {
obs_data_set_autoselect_string(settings, "preset", preset.UTF8String);
return true;
}
}

return false;
}

static CMVideoDimensions get_dimensions(AVCaptureDeviceFormat *format)
{
auto desc = format.formatDescription;
Expand Down Expand Up @@ -1796,9 +1760,9 @@ static bool update_int_list_property(obs_property_t *p, const int *val, const si
}

template<typename Func>
static bool update_int_list_property(const char *prop_name, const char *localization_name, size_t count, int auto_val,
static bool update_int_list_property(const char *prop_name, const char *localization_name, size_t count, int,
bool (*valid_func)(int), obs_properties_t *props, const config_helper &conf,
obs_property_t *p, Func get_val)
obs_property_t *p, Func)
{
auto ref = get_ref(props);
if (!p)
Expand All @@ -1813,7 +1777,6 @@ static bool update_int_list_property(const char *prop_name, const char *localiza
bool params_valid = vi.video_params_valid;
bool enabled = obs_property_enabled(p);
bool should_enable = false;
bool has_autoselect = obs_data_has_autoselect_value(conf.settings, prop_name);

if ((params_valid && format_is_yuv(ref->frame.format)) || !valid_func(val))
should_enable = true;
Expand All @@ -1824,21 +1787,7 @@ static bool update_int_list_property(const char *prop_name, const char *localiza
updated = update_int_list_property(p, valid_func(val) ? nullptr : &val, count, localization_name) || updated;

if (!should_enable) {
if (has_autoselect)
obs_data_unset_autoselect_value(conf.settings, prop_name);
return updated || has_autoselect;
}

bool use_autoselect = ref && val == auto_val;
if (!use_autoselect) {
if (has_autoselect)
obs_data_unset_autoselect_value(conf.settings, prop_name);
return updated || has_autoselect;
}

if (params_valid && get_val(vi) != obs_data_get_autoselect_int(conf.settings, prop_name)) {
obs_data_set_autoselect_int(conf.settings, prop_name, get_val(vi));
return true;
return updated;
}

return updated;
Expand Down Expand Up @@ -1870,14 +1819,13 @@ static bool properties_device_changed(obs_properties_t *props, obs_property_t *p

p = obs_properties_get(props, "preset");
bool preset_list_changed = check_preset(dev, p, settings);
bool autoselect_changed = autoselect_preset(dev, settings);

config_helper conf {settings};
bool res_changed = update_resolution_property(props, conf);
bool fps_changed = update_frame_rate_property(props, conf);
bool if_changed = update_input_format_property(props, conf);

return preset_list_changed || autoselect_changed || dev_list_updated || res_changed || fps_changed || if_changed;
return preset_list_changed || dev_list_updated || res_changed || fps_changed || if_changed;
}

static bool properties_use_preset_changed(obs_properties_t *props, obs_property_t *, obs_data_t *settings)
Expand Down Expand Up @@ -1917,9 +1865,8 @@ static bool properties_preset_changed(obs_properties_t *, obs_property_t *p, obs
AVCaptureDevice *dev = [AVCaptureDevice deviceWithUniqueID:uid];

bool preset_list_changed = check_preset(dev, p, settings);
bool autoselect_changed = autoselect_preset(dev, settings);

return preset_list_changed || autoselect_changed;
return preset_list_changed;
}

static bool properties_resolution_changed(obs_properties_t *props, obs_property_t *p, obs_data_t *settings)
Expand Down
Loading
Loading