Browse Source

linux-pipewire: Store source when creating streams

We'll need to peek information about the source to determine how
to process frames, so store it for later usage.
Georges Basile Stavracas Neto 3 năm trước cách đây
mục cha
commit
c7e355e89c

+ 4 - 2
plugins/linux-pipewire/pipewire.c

@@ -92,6 +92,7 @@ struct _obs_pipewire {
 
 struct _obs_pipewire_stream {
 	obs_pipewire *obs_pw;
+	obs_source_t *source;
 
 	gs_texture_t *texture;
 
@@ -1023,8 +1024,8 @@ void obs_pipewire_destroy(obs_pipewire *obs_pw)
 }
 
 obs_pipewire_stream *
-obs_pipewire_connect_stream(obs_pipewire *obs_pw, int pipewire_node,
-			    const char *stream_name,
+obs_pipewire_connect_stream(obs_pipewire *obs_pw, obs_source_t *source,
+			    int pipewire_node, const char *stream_name,
 			    struct pw_properties *stream_properties)
 {
 	struct spa_pod_builder pod_builder;
@@ -1035,6 +1036,7 @@ obs_pipewire_connect_stream(obs_pipewire *obs_pw, int pipewire_node,
 
 	obs_pw_stream = bzalloc(sizeof(obs_pipewire_stream));
 	obs_pw_stream->obs_pw = obs_pw;
+	obs_pw_stream->source = source;
 
 	init_format_info(obs_pw_stream);
 

+ 2 - 2
plugins/linux-pipewire/pipewire.h

@@ -32,8 +32,8 @@ obs_pipewire *obs_pipewire_create(int pipewire_fd);
 void obs_pipewire_destroy(obs_pipewire *obs_pw);
 
 obs_pipewire_stream *
-obs_pipewire_connect_stream(obs_pipewire *obs_pw, int pipewire_node,
-			    const char *stream_name,
+obs_pipewire_connect_stream(obs_pipewire *obs_pw, obs_source_t *source,
+			    int pipewire_node, const char *stream_name,
 			    struct pw_properties *stream_properties);
 
 void obs_pipewire_stream_show(obs_pipewire_stream *obs_pw);

+ 2 - 1
plugins/linux-pipewire/screencast-portal.c

@@ -252,7 +252,8 @@ static void on_pipewire_remote_opened_cb(GObject *source, GAsyncResult *res,
 		return;
 
 	capture->obs_pw_stream = obs_pipewire_connect_stream(
-		capture->obs_pw, capture->pipewire_node, "OBS Studio",
+		capture->obs_pw, capture->source, capture->pipewire_node,
+		"OBS Studio",
 		pw_properties_new(PW_KEY_MEDIA_TYPE, "Video",
 				  PW_KEY_MEDIA_CATEGORY, "Capture",
 				  PW_KEY_MEDIA_ROLE, "Screen", NULL));