|
@@ -282,8 +282,11 @@ void obs_encoder_set_name(obs_encoder_t *encoder, const char *name)
|
|
static inline obs_data_t *get_defaults(const struct obs_encoder_info *info)
|
|
static inline obs_data_t *get_defaults(const struct obs_encoder_info *info)
|
|
{
|
|
{
|
|
obs_data_t *settings = obs_data_create();
|
|
obs_data_t *settings = obs_data_create();
|
|
- if (info->get_defaults)
|
|
|
|
|
|
+ if (info->get_defaults2) {
|
|
|
|
+ info->get_defaults2(settings, info->type_data);
|
|
|
|
+ } else if (info->get_defaults) {
|
|
info->get_defaults(settings);
|
|
info->get_defaults(settings);
|
|
|
|
+ }
|
|
return settings;
|
|
return settings;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -304,11 +307,16 @@ obs_data_t *obs_encoder_get_defaults(const obs_encoder_t *encoder)
|
|
obs_properties_t *obs_get_encoder_properties(const char *id)
|
|
obs_properties_t *obs_get_encoder_properties(const char *id)
|
|
{
|
|
{
|
|
const struct obs_encoder_info *ei = find_encoder(id);
|
|
const struct obs_encoder_info *ei = find_encoder(id);
|
|
- if (ei && ei->get_properties) {
|
|
|
|
|
|
+ if (ei && (ei->get_properties || ei->get_properties2)) {
|
|
obs_data_t *defaults = get_defaults(ei);
|
|
obs_data_t *defaults = get_defaults(ei);
|
|
obs_properties_t *properties;
|
|
obs_properties_t *properties;
|
|
|
|
|
|
- properties = ei->get_properties(NULL);
|
|
|
|
|
|
+ if (ei->get_properties2) {
|
|
|
|
+ properties = ei->get_properties2(NULL, ei->type_data);
|
|
|
|
+ } else if (ei->get_properties) {
|
|
|
|
+ properties = ei->get_properties(NULL);
|
|
|
|
+ }
|
|
|
|
+
|
|
obs_properties_apply_settings(properties, defaults);
|
|
obs_properties_apply_settings(properties, defaults);
|
|
obs_data_release(defaults);
|
|
obs_data_release(defaults);
|
|
return properties;
|
|
return properties;
|
|
@@ -321,12 +329,20 @@ obs_properties_t *obs_encoder_properties(const obs_encoder_t *encoder)
|
|
if (!obs_encoder_valid(encoder, "obs_encoder_properties"))
|
|
if (!obs_encoder_valid(encoder, "obs_encoder_properties"))
|
|
return NULL;
|
|
return NULL;
|
|
|
|
|
|
- if (encoder->info.get_properties) {
|
|
|
|
|
|
+ if (encoder->info.get_properties2) {
|
|
|
|
+ obs_properties_t *props;
|
|
|
|
+ props = encoder->info.get_properties2(encoder->context.data,
|
|
|
|
+ encoder->info.type_data);
|
|
|
|
+ obs_properties_apply_settings(props, encoder->context.settings);
|
|
|
|
+ return props;
|
|
|
|
+
|
|
|
|
+ } else if (encoder->info.get_properties) {
|
|
obs_properties_t *props;
|
|
obs_properties_t *props;
|
|
props = encoder->info.get_properties(encoder->context.data);
|
|
props = encoder->info.get_properties(encoder->context.data);
|
|
obs_properties_apply_settings(props, encoder->context.settings);
|
|
obs_properties_apply_settings(props, encoder->context.settings);
|
|
return props;
|
|
return props;
|
|
}
|
|
}
|
|
|
|
+
|
|
return NULL;
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
|