From 751dbdad10907f1b0911a79796b3bdcb65f42d17 Mon Sep 17 00:00:00 2001 From: tt2468 Date: Tue, 7 May 2024 20:49:23 -0700 Subject: [PATCH] libobs: Update video encoder group struct member names Updates the struct member names of the video encoder group to be more like what is commonly seen in OBS elsewhere. --- libobs/obs-encoder.c | 39 ++++++++++++++++++----------------- libobs/obs-internal.h | 8 +++---- libobs/obs-output.c | 2 +- libobs/obs-video-gpu-encode.c | 2 +- libobs/obs-video.c | 6 ++++-- 5 files changed, 30 insertions(+), 27 deletions(-) diff --git a/libobs/obs-encoder.c b/libobs/obs-encoder.c index 4ad69def4..7499e0dd0 100644 --- a/libobs/obs-encoder.c +++ b/libobs/obs-encoder.c @@ -325,11 +325,10 @@ static void add_connection(struct obs_encoder *encoder) } if (encoder->encoder_group) { - bool ready = false; pthread_mutex_lock(&encoder->encoder_group->mutex); - encoder->encoder_group->encoders_started += 1; - ready = encoder->encoder_group->encoders_started == - encoder->encoder_group->encoders_added; + encoder->encoder_group->num_encoders_started += 1; + bool ready = encoder->encoder_group->num_encoders_started == + encoder->encoder_group->num_encoders; pthread_mutex_unlock(&encoder->encoder_group->mutex); if (ready) add_ready_encoder_group(encoder); @@ -353,8 +352,8 @@ static void remove_connection(struct obs_encoder *encoder, bool shutdown) if (encoder->encoder_group) { pthread_mutex_lock(&encoder->encoder_group->mutex); - encoder->encoder_group->encoders_started -= 1; - if (encoder->encoder_group->encoders_started == 0) + encoder->encoder_group->num_encoders_started -= 1; + if (encoder->encoder_group->num_encoders_started == 0) encoder->encoder_group->start_timestamp = 0; pthread_mutex_unlock(&encoder->encoder_group->mutex); @@ -396,14 +395,15 @@ static void obs_encoder_actually_destroy(obs_encoder_t *encoder) encoder->context.name); if (encoder->encoder_group) { - struct encoder_group *group = encoder->encoder_group; + struct obs_encoder_group *group = + encoder->encoder_group; bool release = false; encoder->encoder_group = NULL; pthread_mutex_lock(&group->mutex); - group->encoders_added -= 1; - release = group->encoders_added == 0; + group->num_encoders -= 1; + release = group->num_encoders == 0; pthread_mutex_unlock(&group->mutex); if (release) { @@ -1461,7 +1461,7 @@ static void receive_video(void *param, struct video_data *frame) struct encoder_frame enc_frame; if (encoder->encoder_group && !encoder->start_ts) { - struct encoder_group *group = encoder->encoder_group; + struct obs_encoder_group *group = encoder->encoder_group; bool ready = false; pthread_mutex_lock(&group->mutex); ready = group->start_timestamp == frame->timestamp; @@ -2093,7 +2093,8 @@ bool obs_encoder_group_keyframe_aligned_encoders( bool unlock = false; if (!encoder->encoder_group) { - encoder->encoder_group = bzalloc(sizeof(struct encoder_group)); + encoder->encoder_group = + bzalloc(sizeof(struct obs_encoder_group)); if (pthread_mutex_init(&encoder->encoder_group->mutex, NULL) < 0) { bfree(encoder->encoder_group); @@ -2101,11 +2102,11 @@ bool obs_encoder_group_keyframe_aligned_encoders( return false; } - encoder->encoder_group->encoders_added = 1; + encoder->encoder_group->num_encoders = 1; } else { pthread_mutex_lock(&encoder->encoder_group->mutex); unlock = true; - if (encoder->encoder_group->encoders_started != 0) { + if (encoder->encoder_group->num_encoders_started != 0) { blog(LOG_ERROR, "obs_encoder_group_keyframe_aligned_encoders: " "Can't add encoder '%s' to active group " @@ -2117,7 +2118,7 @@ bool obs_encoder_group_keyframe_aligned_encoders( } } - encoder->encoder_group->encoders_added += 1; + encoder->encoder_group->num_encoders += 1; encoder_to_be_grouped->encoder_group = encoder->encoder_group; if (unlock) @@ -2156,12 +2157,12 @@ bool obs_encoder_group_remove_keyframe_aligned_encoder( return false; } - struct encoder_group *current_group = encoder->encoder_group; - struct encoder_group *free_group = NULL; + struct obs_encoder_group *current_group = encoder->encoder_group; + struct obs_encoder_group *free_group = NULL; pthread_mutex_lock(¤t_group->mutex); - if (current_group->encoders_started != 0) { + if (current_group->num_encoders_started != 0) { blog(LOG_ERROR, "obs_encoder_group_remove_keyframe_aligned_encoder: " "could not ungroup encoder '%s' from '%s' while " @@ -2172,9 +2173,9 @@ bool obs_encoder_group_remove_keyframe_aligned_encoder( return false; } - current_group->encoders_added -= 1; + current_group->num_encoders -= 1; encoder_to_be_ungrouped->encoder_group = NULL; - if (current_group->encoders_added == 1) { + if (current_group->num_encoders == 1) { free_group = current_group; encoder->encoder_group = NULL; } diff --git a/libobs/obs-internal.h b/libobs/obs-internal.h index 25108083b..c96b2ec2e 100644 --- a/libobs/obs-internal.h +++ b/libobs/obs-internal.h @@ -1242,10 +1242,10 @@ struct encoder_callback { void *param; }; -struct encoder_group { +struct obs_encoder_group { pthread_mutex_t mutex; - uint32_t encoders_added; - uint32_t encoders_started; + uint32_t num_encoders; + uint32_t num_encoders_started; uint64_t start_timestamp; }; @@ -1314,7 +1314,7 @@ struct obs_encoder { uint64_t start_ts; /* track encoders that are part of a gop-aligned multi track group */ - struct encoder_group *encoder_group; + struct obs_encoder_group *encoder_group; pthread_mutex_t outputs_mutex; DARRAY(obs_output_t *) outputs; diff --git a/libobs/obs-output.c b/libobs/obs-output.c index 14413c204..6394d7c1a 100644 --- a/libobs/obs-output.c +++ b/libobs/obs-output.c @@ -2226,7 +2226,7 @@ check_encoder_group_keyframe_alignment(obs_output_t *output, pthread_mutex_lock(&packet->encoder->encoder_group->mutex); insert_data.required_tracks = - packet->encoder->encoder_group->encoders_started; + packet->encoder->encoder_group->num_encoders_started; pthread_mutex_unlock(&packet->encoder->encoder_group->mutex); da_insert(output->keyframe_group_tracking, idx, &insert_data); diff --git a/libobs/obs-video-gpu-encode.c b/libobs/obs-video-gpu-encode.c index d9f5dc49a..96bd081ad 100644 --- a/libobs/obs-video-gpu-encode.c +++ b/libobs/obs-video-gpu-encode.c @@ -92,7 +92,7 @@ static void *gpu_encode_thread(void *data) pkt.encoder = encoder; if (encoder->encoder_group && !encoder->start_ts) { - struct encoder_group *group = + struct obs_encoder_group *group = encoder->encoder_group; bool ready = false; pthread_mutex_lock(&group->mutex); diff --git a/libobs/obs-video.c b/libobs/obs-video.c index fe34d4b44..3618f2b69 100644 --- a/libobs/obs-video.c +++ b/libobs/obs-video.c @@ -932,9 +932,11 @@ static inline void video_sleep(struct obs_core_video *video, uint64_t *p_time, continue; if (encoder->encoder_group) { - struct encoder_group *group = encoder->encoder_group; + struct obs_encoder_group *group = + encoder->encoder_group; pthread_mutex_lock(&group->mutex); - if (group->encoders_added == group->encoders_started && + if (group->num_encoders == + group->num_encoders_started && !group->start_timestamp) { group->start_timestamp = *p_time; }