mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-15 07:44:10 +00:00
libobs: Add API to apply service encoder settings
Instead of having services automatically apply encoder settings on initialization (whether the output wants to or not), instead make it something that must be explicitly called by the developer. There are cases where the developer may not wish to apply the service-specific settings, or may wish to override them for whatever reason.
This commit is contained in:
parent
fe849ec482
commit
4eacb5f3e9
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
};
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in a new issue