diff --git a/plugins/linux-pipewire/pipewire.c b/plugins/linux-pipewire/pipewire.c index 922fa68e2..c7c3f3344 100644 --- a/plugins/linux-pipewire/pipewire.c +++ b/plugins/linux-pipewire/pipewire.c @@ -52,7 +52,7 @@ struct format_info { DARRAY(uint64_t) modifiers; }; -struct _obs_pipewire_data { +struct _obs_pipewire { int pipewire_fd; gs_texture_t *texture; @@ -112,7 +112,7 @@ static bool check_pw_version(const struct obs_pw_version *pw_version, int major, return pw_version->micro >= micro; } -static void update_pw_versions(obs_pipewire_data *obs_pw, const char *version) +static void update_pw_versions(obs_pipewire *obs_pw, const char *version) { blog(LOG_INFO, "[pipewire] Server version: %s", version); blog(LOG_INFO, "[pipewire] Library version: %s", @@ -124,7 +124,7 @@ static void update_pw_versions(obs_pipewire_data *obs_pw, const char *version) blog(LOG_WARNING, "[pipewire] failed to parse server version"); } -static void teardown_pipewire(obs_pipewire_data *obs_pw) +static void teardown_pipewire(obs_pipewire *obs_pw) { if (obs_pw->thread_loop) { pw_thread_loop_wait(obs_pw->thread_loop); @@ -145,7 +145,7 @@ static void teardown_pipewire(obs_pipewire_data *obs_pw) obs_pw->negotiated = false; } -static void destroy_session(obs_pipewire_data *obs_pw) +static void destroy_session(obs_pipewire *obs_pw) { obs_enter_graphics(); g_clear_pointer(&obs_pw->cursor.texture, gs_texture_destroy); @@ -153,7 +153,7 @@ static void destroy_session(obs_pipewire_data *obs_pw) obs_leave_graphics(); } -static inline bool has_effective_crop(obs_pipewire_data *obs_pw) +static inline bool has_effective_crop(obs_pipewire *obs_pw) { return obs_pw->crop.valid && (obs_pw->crop.x != 0 || obs_pw->crop.y != 0 || @@ -289,7 +289,7 @@ static inline struct spa_pod *build_format(struct spa_pod_builder *b, return spa_pod_builder_pop(b, &format_frame); } -static bool build_format_params(obs_pipewire_data *obs_pw, +static bool build_format_params(obs_pipewire *obs_pw, struct spa_pod_builder *pod_builder, const struct spa_pod ***param_list, uint32_t *n_params) @@ -342,7 +342,7 @@ static bool drm_format_available(uint32_t drm_format, uint32_t *drm_formats, return false; } -static void init_format_info(obs_pipewire_data *obs_pw) +static void init_format_info(obs_pipewire *obs_pw) { da_init(obs_pw->format_info); @@ -389,7 +389,7 @@ static void init_format_info(obs_pipewire_data *obs_pw) bfree(drm_formats); } -static void clear_format_info(obs_pipewire_data *obs_pw) +static void clear_format_info(obs_pipewire *obs_pw) { for (size_t i = 0; i < obs_pw->format_info.num; i++) { da_free(obs_pw->format_info.array[i].modifiers); @@ -397,7 +397,7 @@ static void clear_format_info(obs_pipewire_data *obs_pw) da_free(obs_pw->format_info); } -static void remove_modifier_from_format(obs_pipewire_data *obs_pw, +static void remove_modifier_from_format(obs_pipewire *obs_pw, uint32_t spa_format, uint64_t modifier) { for (size_t i = 0; i < obs_pw->format_info.num; i++) { @@ -424,7 +424,7 @@ static void remove_modifier_from_format(obs_pipewire_data *obs_pw, static void renegotiate_format(void *data, uint64_t expirations) { UNUSED_PARAMETER(expirations); - obs_pipewire_data *obs_pw = (obs_pipewire_data *)data; + obs_pipewire *obs_pw = (obs_pipewire *)data; const struct spa_pod **params = NULL; blog(LOG_INFO, "[pipewire] Renegotiating stream"); @@ -450,7 +450,7 @@ static void renegotiate_format(void *data, uint64_t expirations) static void on_process_cb(void *user_data) { - obs_pipewire_data *obs_pw = user_data; + obs_pipewire *obs_pw = user_data; struct spa_meta_cursor *cursor; uint32_t drm_format; struct spa_meta_header *header; @@ -655,7 +655,7 @@ read_metadata: static void on_param_changed_cb(void *user_data, uint32_t id, const struct spa_pod *param) { - obs_pipewire_data *obs_pw = user_data; + obs_pipewire *obs_pw = user_data; struct spa_pod_builder pod_builder; const struct spa_pod *params[4]; uint32_t buffer_types; @@ -743,7 +743,7 @@ static void on_state_changed_cb(void *user_data, enum pw_stream_state old, { UNUSED_PARAMETER(old); - obs_pipewire_data *obs_pw = user_data; + obs_pipewire *obs_pw = user_data; blog(LOG_INFO, "[pipewire] Stream %p state: \"%s\" (error: %s)", obs_pw->stream, pw_stream_state_as_string(state), @@ -759,7 +759,7 @@ static const struct pw_stream_events stream_events = { static void on_core_info_cb(void *user_data, const struct pw_core_info *info) { - obs_pipewire_data *obs_pw = user_data; + obs_pipewire *obs_pw = user_data; update_pw_versions(obs_pw, info->version); } @@ -767,7 +767,7 @@ static void on_core_info_cb(void *user_data, const struct pw_core_info *info) static void on_core_error_cb(void *user_data, uint32_t id, int seq, int res, const char *message) { - obs_pipewire_data *obs_pw = user_data; + obs_pipewire *obs_pw = user_data; blog(LOG_ERROR, "[pipewire] Error id:%u seq:%d res:%d (%s): %s", id, seq, res, g_strerror(res), message); @@ -777,7 +777,7 @@ static void on_core_error_cb(void *user_data, uint32_t id, int seq, int res, static void on_core_done_cb(void *user_data, uint32_t id, int seq) { - obs_pipewire_data *obs_pw = user_data; + obs_pipewire *obs_pw = user_data; if (id == PW_ID_CORE && obs_pw->server_version_sync == seq) pw_thread_loop_signal(obs_pw->thread_loop, FALSE); @@ -792,11 +792,11 @@ static const struct pw_core_events core_events = { /* obs_source_info methods */ -obs_pipewire_data *obs_pipewire_create(int pipewire_fd) +obs_pipewire *obs_pipewire_create(int pipewire_fd) { - obs_pipewire_data *obs_pw; + obs_pipewire *obs_pw; - obs_pw = bzalloc(sizeof(obs_pipewire_data)); + obs_pw = bzalloc(sizeof(obs_pipewire)); obs_pw->pipewire_fd = pipewire_fd; init_format_info(obs_pw); @@ -836,7 +836,7 @@ obs_pipewire_data *obs_pipewire_create(int pipewire_fd) return obs_pw; } -void obs_pipewire_connect_stream(obs_pipewire_data *obs_pw, int pipewire_node, +void obs_pipewire_connect_stream(obs_pipewire *obs_pw, int pipewire_node, const char *stream_name, struct pw_properties *stream_properties) { @@ -882,7 +882,7 @@ void obs_pipewire_connect_stream(obs_pipewire_data *obs_pw, int pipewire_node, bfree(params); } -void obs_pipewire_destroy(obs_pipewire_data *obs_pw) +void obs_pipewire_destroy(obs_pipewire *obs_pw) { if (!obs_pw) return; @@ -895,19 +895,19 @@ void obs_pipewire_destroy(obs_pipewire_data *obs_pw) bfree(obs_pw); } -void obs_pipewire_show(obs_pipewire_data *obs_pw) +void obs_pipewire_show(obs_pipewire *obs_pw) { if (obs_pw->stream) pw_stream_set_active(obs_pw->stream, true); } -void obs_pipewire_hide(obs_pipewire_data *obs_pw) +void obs_pipewire_hide(obs_pipewire *obs_pw) { if (obs_pw->stream) pw_stream_set_active(obs_pw->stream, false); } -uint32_t obs_pipewire_get_width(obs_pipewire_data *obs_pw) +uint32_t obs_pipewire_get_width(obs_pipewire *obs_pw) { if (!obs_pw->negotiated) return 0; @@ -918,7 +918,7 @@ uint32_t obs_pipewire_get_width(obs_pipewire_data *obs_pw) return obs_pw->format.info.raw.size.width; } -uint32_t obs_pipewire_get_height(obs_pipewire_data *obs_pw) +uint32_t obs_pipewire_get_height(obs_pipewire *obs_pw) { if (!obs_pw->negotiated) return 0; @@ -929,7 +929,7 @@ uint32_t obs_pipewire_get_height(obs_pipewire_data *obs_pw) return obs_pw->format.info.raw.size.height; } -void obs_pipewire_video_render(obs_pipewire_data *obs_pw, gs_effect_t *effect) +void obs_pipewire_video_render(obs_pipewire *obs_pw, gs_effect_t *effect) { gs_eparam_t *image; @@ -963,8 +963,7 @@ void obs_pipewire_video_render(obs_pipewire_data *obs_pw, gs_effect_t *effect) } } -void obs_pipewire_set_cursor_visible(obs_pipewire_data *obs_pw, - bool cursor_visible) +void obs_pipewire_set_cursor_visible(obs_pipewire *obs_pw, bool cursor_visible) { obs_pw->cursor.visible = cursor_visible; } diff --git a/plugins/linux-pipewire/pipewire.h b/plugins/linux-pipewire/pipewire.h index 4df410d04..03867dbfa 100644 --- a/plugins/linux-pipewire/pipewire.h +++ b/plugins/linux-pipewire/pipewire.h @@ -25,19 +25,18 @@ #include #include -typedef struct _obs_pipewire_data obs_pipewire_data; +typedef struct _obs_pipewire obs_pipewire; -obs_pipewire_data *obs_pipewire_create(int pipewire_fd); -void obs_pipewire_connect_stream(obs_pipewire_data *obs_pw, int pipewire_node, +obs_pipewire *obs_pipewire_create(int pipewire_fd); +void obs_pipewire_connect_stream(obs_pipewire *obs_pw, int pipewire_node, const char *stream_name, struct pw_properties *stream_properties); -void obs_pipewire_destroy(obs_pipewire_data *obs_pw); +void obs_pipewire_destroy(obs_pipewire *obs_pw); -void obs_pipewire_show(obs_pipewire_data *obs_pw); -void obs_pipewire_hide(obs_pipewire_data *obs_pw); -uint32_t obs_pipewire_get_width(obs_pipewire_data *obs_pw); -uint32_t obs_pipewire_get_height(obs_pipewire_data *obs_pw); -void obs_pipewire_video_render(obs_pipewire_data *obs_pw, gs_effect_t *effect); +void obs_pipewire_show(obs_pipewire *obs_pw); +void obs_pipewire_hide(obs_pipewire *obs_pw); +uint32_t obs_pipewire_get_width(obs_pipewire *obs_pw); +uint32_t obs_pipewire_get_height(obs_pipewire *obs_pw); +void obs_pipewire_video_render(obs_pipewire *obs_pw, gs_effect_t *effect); -void obs_pipewire_set_cursor_visible(obs_pipewire_data *obs_pw, - bool cursor_visible); +void obs_pipewire_set_cursor_visible(obs_pipewire *obs_pw, bool cursor_visible); diff --git a/plugins/linux-pipewire/screencast-portal.c b/plugins/linux-pipewire/screencast-portal.c index 543d281ec..c3fdbb0da 100644 --- a/plugins/linux-pipewire/screencast-portal.c +++ b/plugins/linux-pipewire/screencast-portal.c @@ -49,7 +49,7 @@ struct screencast_portal_capture { uint32_t pipewire_node; bool cursor_visible; - obs_pipewire_data *obs_pw; + obs_pipewire *obs_pw; }; /* ------------------------------------------------- */