|
@@ -225,6 +225,7 @@ static void v4l2_defaults(obs_data_t *settings)
|
|
obs_data_set_default_int(settings, "dv_timing", -1);
|
|
obs_data_set_default_int(settings, "dv_timing", -1);
|
|
obs_data_set_default_int(settings, "resolution", -1);
|
|
obs_data_set_default_int(settings, "resolution", -1);
|
|
obs_data_set_default_int(settings, "framerate", -1);
|
|
obs_data_set_default_int(settings, "framerate", -1);
|
|
|
|
+ obs_data_set_default_bool(settings, "buffering", true);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -732,6 +733,9 @@ static obs_properties_t *v4l2_properties(void *vptr)
|
|
"framerate", obs_module_text("FrameRate"),
|
|
"framerate", obs_module_text("FrameRate"),
|
|
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
|
|
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
|
|
|
|
|
|
|
|
+ obs_properties_add_bool(props,
|
|
|
|
+ "buffering", obs_module_text("UseBuffering"));
|
|
|
|
+
|
|
obs_data_t *settings = obs_source_get_settings(data->source);
|
|
obs_data_t *settings = obs_source_get_settings(data->source);
|
|
v4l2_device_list(device_list, settings);
|
|
v4l2_device_list(device_list, settings);
|
|
obs_data_release(settings);
|
|
obs_data_release(settings);
|
|
@@ -873,6 +877,17 @@ fail:
|
|
v4l2_terminate(data);
|
|
v4l2_terminate(data);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/** Update source flags depending on the settings */
|
|
|
|
+static void v4l2_update_source_flags(struct v4l2_data *data,
|
|
|
|
+ obs_data_t *settings)
|
|
|
|
+{
|
|
|
|
+ uint32_t flags = obs_source_get_flags(data->source);
|
|
|
|
+ flags = (obs_data_get_bool(settings, "buffering"))
|
|
|
|
+ ? flags & ~OBS_SOURCE_FLAG_UNBUFFERED
|
|
|
|
+ : flags | OBS_SOURCE_FLAG_UNBUFFERED;
|
|
|
|
+ obs_source_set_flags(data->source, flags);
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Update the settings for the v4l2 source
|
|
* Update the settings for the v4l2 source
|
|
*
|
|
*
|
|
@@ -898,6 +913,8 @@ static void v4l2_update(void *vptr, obs_data_t *settings)
|
|
data->resolution = obs_data_get_int(settings, "resolution");
|
|
data->resolution = obs_data_get_int(settings, "resolution");
|
|
data->framerate = obs_data_get_int(settings, "framerate");
|
|
data->framerate = obs_data_get_int(settings, "framerate");
|
|
|
|
|
|
|
|
+ v4l2_update_source_flags(data, settings);
|
|
|
|
+
|
|
v4l2_init(data);
|
|
v4l2_init(data);
|
|
}
|
|
}
|
|
|
|
|