mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	filter: add support for control ports
This commit is contained in:
		
							parent
							
								
									2982b9511e
								
							
						
					
					
						commit
						5498483337
					
				
					 1 changed files with 16 additions and 0 deletions
				
			
		| 
						 | 
					@ -1310,6 +1310,19 @@ static void add_video_dsp_port_params(struct filter *impl, struct port *port)
 | 
				
			||||||
			SPA_FORMAT_VIDEO_format,   SPA_POD_Id(SPA_VIDEO_FORMAT_DSP_F32)));
 | 
								SPA_FORMAT_VIDEO_format,   SPA_POD_Id(SPA_VIDEO_FORMAT_DSP_F32)));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void add_control_dsp_port_params(struct filter *impl, struct port *port)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						uint8_t buffer[4096];
 | 
				
			||||||
 | 
						struct spa_pod_builder b;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						spa_pod_builder_init(&b, buffer, sizeof(buffer));
 | 
				
			||||||
 | 
						add_param(impl, port, SPA_PARAM_EnumFormat,
 | 
				
			||||||
 | 
							spa_pod_builder_add_object(&b,
 | 
				
			||||||
 | 
								SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_application),
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaSubtype,   SPA_POD_Id(SPA_MEDIA_SUBTYPE_control)));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_EXPORT
 | 
					SPA_EXPORT
 | 
				
			||||||
void *pw_filter_add_port(struct pw_filter *filter,
 | 
					void *pw_filter_add_port(struct pw_filter *filter,
 | 
				
			||||||
		enum pw_direction direction,
 | 
							enum pw_direction direction,
 | 
				
			||||||
| 
						 | 
					@ -1341,6 +1354,9 @@ void *pw_filter_add_port(struct pw_filter *filter,
 | 
				
			||||||
			add_audio_dsp_port_params(impl, p);
 | 
								add_audio_dsp_port_params(impl, p);
 | 
				
			||||||
		else if (!strcmp(str, "32 bit float RGBA video"))
 | 
							else if (!strcmp(str, "32 bit float RGBA video"))
 | 
				
			||||||
			add_video_dsp_port_params(impl, p);
 | 
								add_video_dsp_port_params(impl, p);
 | 
				
			||||||
 | 
							else if (!strcmp(str, "8 bit raw midi") ||
 | 
				
			||||||
 | 
							    !strcmp(str, "8 bit raw control"))
 | 
				
			||||||
 | 
								add_control_dsp_port_params(impl, p);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	/* then override with user provided if any */
 | 
						/* then override with user provided if any */
 | 
				
			||||||
	if ((res = update_params(impl, p, SPA_ID_INVALID, params, n_params)) < 0)
 | 
						if ((res = update_params(impl, p, SPA_ID_INVALID, params, n_params)) < 0)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue