浏览代码

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 年之前
父节点
当前提交
c7e355e89c
共有 3 个文件被更改,包括 8 次插入5 次删除
  1. 4 2
      plugins/linux-pipewire/pipewire.c
  2. 2 2
      plugins/linux-pipewire/pipewire.h
  3. 2 1
      plugins/linux-pipewire/screencast-portal.c

+ 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));