diff --git a/libobs/obs-service.c b/libobs/obs-service.c index 3feb85475..e27bef6c5 100644 --- a/libobs/obs-service.c +++ b/libobs/obs-service.c @@ -235,3 +235,19 @@ bool obs_service_initialize(struct obs_service *service, return service->info.initialize(service->context.data, output); return true; } + +void obs_service_apply_encoder_settings(obs_service_t *service, + obs_encoder_t *video_encoder, obs_encoder_t *audio_encoder) +{ + if (!service || !service->info.apply_encoder_settings) + return; + + if (video_encoder && video_encoder->info.type != OBS_ENCODER_VIDEO) + video_encoder = NULL; + if (audio_encoder && audio_encoder->info.type != OBS_ENCODER_AUDIO) + audio_encoder = NULL; + + if (video_encoder || audio_encoder) + service->info.apply_encoder_settings(service->context.data, + video_encoder, audio_encoder); +} diff --git a/libobs/obs-service.h b/libobs/obs-service.h index 976575f79..e220cdc4a 100644 --- a/libobs/obs-service.h +++ b/libobs/obs-service.h @@ -64,6 +64,10 @@ struct obs_service_info { const char *(*get_password)(void *data); bool (*supports_multitrack)(void *data); + + void (*apply_encoder_settings)(void *data, obs_encoder_t *video_encoder, + obs_encoder_t *audio_encoder); + /* TODO: more stuff later */ }; diff --git a/libobs/obs.h b/libobs/obs.h index 7e698aca3..e89af11c0 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -1315,6 +1315,15 @@ EXPORT const char *obs_service_get_username(const obs_service_t *service); /** Returns the password (if any) for this service context */ EXPORT const char *obs_service_get_password(const obs_service_t *service); +/** + * Applies service-specific video encoder settings. + * + * @param video_encoder Video encoder to apply settings to. Optional. + * @param audio_encoder Audio encoder to apply settings to. Optional. + */ +EXPORT void obs_service_apply_encoder_settings(obs_service_t *service, + obs_encoder_t *video_encoder, obs_encoder_t *audio_encoder); + /* ------------------------------------------------------------------------- */ /* Source frame allocation functions */