|
|
@@ -241,30 +241,16 @@ static void adjust_encoder_frame_rate_divisor(
|
|
|
obs_encoder_set_frame_rate_divisor(video_encoder, divisor);
|
|
|
}
|
|
|
|
|
|
-static const std::vector<const char *> &get_available_encoders()
|
|
|
-{
|
|
|
- // encoders are currently only registered during startup, so keeping
|
|
|
- // a static vector around shouldn't be a problem
|
|
|
- static std::vector<const char *> available_encoders = [] {
|
|
|
- std::vector<const char *> available_encoders;
|
|
|
- for (size_t i = 0;; i++) {
|
|
|
- const char *id = nullptr;
|
|
|
- if (!obs_enum_encoder_types(i, &id))
|
|
|
- break;
|
|
|
- available_encoders.push_back(id);
|
|
|
- }
|
|
|
- return available_encoders;
|
|
|
- }();
|
|
|
- return available_encoders;
|
|
|
-}
|
|
|
-
|
|
|
static bool encoder_available(const char *type)
|
|
|
{
|
|
|
- auto &encoders = get_available_encoders();
|
|
|
- return std::find_if(std::begin(encoders), std::end(encoders),
|
|
|
- [=](const char *encoder) {
|
|
|
- return strcmp(type, encoder) == 0;
|
|
|
- }) != std::end(encoders);
|
|
|
+ const char *id = nullptr;
|
|
|
+
|
|
|
+ for (size_t idx = 0; obs_enum_encoder_types(idx, &id); idx++) {
|
|
|
+ if (strcmp(id, type) == 0)
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
static OBSEncoderAutoRelease create_video_encoder(
|