diff --git a/src/utils/Obs.cpp b/src/utils/Obs.cpp index 78580a91..3744a774 100644 --- a/src/utils/Obs.cpp +++ b/src/utils/Obs.cpp @@ -231,6 +231,28 @@ std::vector Utils::Obs::ListHelper::GetTransitionList() return ret; } +std::vector Utils::Obs::ListHelper::GetInputKindList(bool unversioned) +{ + std::vector ret; + + size_t idx = 0; + const char *kind; + const char *unversioned_kind; + while (obs_enum_input_types2(idx++, &kind, &unversioned_kind)) { + uint32_t caps = obs_get_source_output_flags(kind); + + if ((caps & OBS_SOURCE_CAP_DISABLED) != 0) + continue; + + if (unversioned) + ret.push_back(unversioned_kind); + else + ret.push_back(kind); + } + + return ret; +} + obs_hotkey_t *Utils::Obs::SearchHelper::GetHotkeyByName(std::string name) { auto hotkeys = ListHelper::GetHotkeyList(); diff --git a/src/utils/Utils.h b/src/utils/Utils.h index fb7a1f7c..74b6d46e 100644 --- a/src/utils/Utils.h +++ b/src/utils/Utils.h @@ -48,6 +48,7 @@ namespace Utils { std::vector GetSceneList(); std::vector GetSceneItemList(obs_scene_t *scene, bool basic = false); std::vector GetTransitionList(); + std::vector GetInputKindList(bool unversioned = false); } namespace SearchHelper {