MCPcopy Create free account
hub / github.com/DistroAV/DistroAV / ndi_source_getproperties

Function ndi_source_getproperties

src/ndi-source.cpp:214–329  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

212}
213
214obs_properties_t *ndi_source_getproperties(void *data)
215{
216 auto s = (ndi_source_t *)data;
217 obs_log(LOG_DEBUG, "+ndi_source_getproperties(…)");
218
219 obs_properties_t *props = obs_properties_create();
220
221 obs_property_t *source_list = obs_properties_add_list(props, PROP_SOURCE,
222 obs_module_text("NDIPlugin.SourceProps.SourceName"),
223 OBS_COMBO_TYPE_EDITABLE, OBS_COMBO_FORMAT_STRING);
224 NDIFinder finder;
225 // Create a callback that is called when the NDI source list is complete
226 auto finder_callback = [source_list, s](void *ndi_names) {
227 auto ndi_sources = (std::vector<std::string> *)ndi_names;
228 for (auto &source : *ndi_sources) {
229 obs_property_list_add_string(source_list, source.c_str(), source.c_str());
230 }
231 obs_source_update_properties(s->obs_source);
232 };
233 auto ndi_sources = finder.getNDISourceList(finder_callback);
234 for (auto &source : ndi_sources) {
235 obs_property_list_add_string(source_list, source.c_str(), source.c_str());
236 }
237
238 obs_property_t *behavior_list = obs_properties_add_list(props, PROP_BEHAVIOR,
239 obs_module_text("NDIPlugin.SourceProps.Behavior"),
240 OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
241 obs_property_list_add_int(behavior_list, obs_module_text("NDIPlugin.SourceProps.Behavior.KeepActive"),
242 PROP_BEHAVIOR_KEEP_ACTIVE);
243 obs_property_list_add_int(behavior_list, obs_module_text("NDIPlugin.SourceProps.Behavior.StopResumeBlank"),
244 PROP_BEHAVIOR_STOP_RESUME_BLANK);
245 obs_property_list_add_int(behavior_list, obs_module_text("NDIPlugin.SourceProps.Behavior.StopResumeLastFrame"),
246 PROP_BEHAVIOR_STOP_RESUME_LAST_FRAME);
247
248 obs_property_t *timeout_list = obs_properties_add_list(props, PROP_TIMEOUT,
249 obs_module_text("NDIPlugin.SourceProps.Timeout"),
250 OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
251 obs_property_list_add_int(timeout_list, obs_module_text("NDIPlugin.SourceProps.Timeout.KeepContent"),
252 PROP_TIMEOUT_KEEP_CONTENT);
253 obs_property_list_add_int(timeout_list, obs_module_text("NDIPlugin.SourceProps.Timeout.ClearContent"),
254 PROP_TIMEOUT_CLEAR_CONTENT);
255
256 obs_property_t *bw_modes = obs_properties_add_list(props, PROP_BANDWIDTH,
257 obs_module_text("NDIPlugin.SourceProps.Bandwidth"),
258 OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
259 obs_property_list_add_int(bw_modes, obs_module_text("NDIPlugin.BWMode.Highest"), PROP_BW_HIGHEST);
260 obs_property_list_add_int(bw_modes, obs_module_text("NDIPlugin.BWMode.Lowest"), PROP_BW_LOWEST);
261 obs_property_list_add_int(bw_modes, obs_module_text("NDIPlugin.BWMode.AudioOnly"), PROP_BW_AUDIO_ONLY);
262 obs_property_set_modified_callback(bw_modes, [](obs_properties_t *props_, obs_property_t *,
263 obs_data_t *settings_) {
264 bool is_audio_only = (obs_data_get_int(settings_, PROP_BANDWIDTH) == PROP_BW_AUDIO_ONLY);
265
266 obs_property_t *yuv_range = obs_properties_get(props_, PROP_YUV_RANGE);
267 obs_property_t *yuv_colorspace = obs_properties_get(props_, PROP_YUV_COLORSPACE);
268
269 obs_property_set_visible(yuv_range, !is_audio_only);
270 obs_property_set_visible(yuv_colorspace, !is_audio_only);
271

Callers

nothing calls this directly

Calls 1

getNDISourceListMethod · 0.80

Tested by

no test coverage detected