mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	audioconvert2: format is optional for convert mode
This commit is contained in:
		
							parent
							
								
									e78a93d358
								
							
						
					
					
						commit
						d53311099f
					
				
					 1 changed files with 20 additions and 16 deletions
				
			
		| 
						 | 
				
			
			@ -325,8 +325,8 @@ static int init_port(struct impl *this, enum spa_direction direction, uint32_t p
 | 
			
		|||
	}
 | 
			
		||||
	spa_list_init(&port->queue);
 | 
			
		||||
 | 
			
		||||
	spa_log_info(this->log, "%p: add port %d:%d position:%s",
 | 
			
		||||
			this, direction, port_id, port->position);
 | 
			
		||||
	spa_log_info(this->log, "%p: add port %d:%d position:%s %d %d",
 | 
			
		||||
			this, direction, port_id, port->position, is_dsp, is_monitor);
 | 
			
		||||
	emit_port_info(this, port, true);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -806,7 +806,7 @@ static int reconfigure_mode(struct impl *this, enum spa_param_port_config_mode m
 | 
			
		|||
 | 
			
		||||
	dir = &this->dir[direction];
 | 
			
		||||
 | 
			
		||||
	if (dir->have_profile && this->monitor == monitor &&
 | 
			
		||||
	if (dir->have_profile && this->monitor == monitor && dir->mode == mode &&
 | 
			
		||||
	    (info == NULL || memcmp(&dir->format, info, sizeof(*info)) == 0))
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -876,8 +876,8 @@ static int impl_node_set_param(void *object, uint32_t id, uint32_t flags,
 | 
			
		|||
	switch (id) {
 | 
			
		||||
	case SPA_PARAM_PortConfig:
 | 
			
		||||
	{
 | 
			
		||||
		struct spa_audio_info info = { 0, };
 | 
			
		||||
		struct spa_pod *format;
 | 
			
		||||
		struct spa_audio_info info = { 0, }, *infop = NULL;
 | 
			
		||||
		struct spa_pod *format = NULL;
 | 
			
		||||
		enum spa_direction direction;
 | 
			
		||||
		enum spa_param_port_config_mode mode;
 | 
			
		||||
		bool monitor = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -888,23 +888,27 @@ static int impl_node_set_param(void *object, uint32_t id, uint32_t flags,
 | 
			
		|||
				SPA_PARAM_PORT_CONFIG_direction,	SPA_POD_Id(&direction),
 | 
			
		||||
				SPA_PARAM_PORT_CONFIG_mode,		SPA_POD_Id(&mode),
 | 
			
		||||
				SPA_PARAM_PORT_CONFIG_monitor,		SPA_POD_OPT_Bool(&monitor),
 | 
			
		||||
				SPA_PARAM_PORT_CONFIG_format,		SPA_POD_Pod(&format)) < 0)
 | 
			
		||||
				SPA_PARAM_PORT_CONFIG_format,		SPA_POD_OPT_Pod(&format)) < 0)
 | 
			
		||||
			return -EINVAL;
 | 
			
		||||
 | 
			
		||||
		if (!spa_pod_is_object_type(format, SPA_TYPE_OBJECT_Format))
 | 
			
		||||
			return -EINVAL;
 | 
			
		||||
		if (format) {
 | 
			
		||||
			if (!spa_pod_is_object_type(format, SPA_TYPE_OBJECT_Format))
 | 
			
		||||
				return -EINVAL;
 | 
			
		||||
 | 
			
		||||
		if ((res = spa_format_parse(format, &info.media_type, &info.media_subtype)) < 0)
 | 
			
		||||
			return res;
 | 
			
		||||
			if ((res = spa_format_parse(format, &info.media_type, &info.media_subtype)) < 0)
 | 
			
		||||
				return res;
 | 
			
		||||
 | 
			
		||||
		if (info.media_type != SPA_MEDIA_TYPE_audio ||
 | 
			
		||||
		    info.media_subtype != SPA_MEDIA_SUBTYPE_raw)
 | 
			
		||||
			return -EINVAL;
 | 
			
		||||
			if (info.media_type != SPA_MEDIA_TYPE_audio ||
 | 
			
		||||
			    info.media_subtype != SPA_MEDIA_SUBTYPE_raw)
 | 
			
		||||
				return -EINVAL;
 | 
			
		||||
 | 
			
		||||
		if (spa_format_audio_raw_parse(format, &info.info.raw) < 0)
 | 
			
		||||
			return -EINVAL;
 | 
			
		||||
			if (spa_format_audio_raw_parse(format, &info.info.raw) < 0)
 | 
			
		||||
				return -EINVAL;
 | 
			
		||||
 | 
			
		||||
		if ((res = reconfigure_mode(this, mode, direction, monitor, &info)) < 0)
 | 
			
		||||
			infop = &info;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if ((res = reconfigure_mode(this, mode, direction, monitor, infop)) < 0)
 | 
			
		||||
			return res;
 | 
			
		||||
 | 
			
		||||
		emit_node_info(this, false);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue