mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	link: fix param enumeration
When the input port param enumeration has no result, use the NULL filter to still enumerate the output port parameters instead of returning nothing. Fix the offset in the gst element.
This commit is contained in:
		
							parent
							
								
									263a017c4b
								
							
						
					
					
						commit
						e2c49199f6
					
				
					 2 changed files with 13 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -467,6 +467,7 @@ on_new_buffer (void *_data,
 | 
			
		|||
    GstMemory *mem = gst_buffer_peek_memory (buf, i);
 | 
			
		||||
    mem->offset = SPA_MIN(d->chunk->offset, d->maxsize);
 | 
			
		||||
    mem->size = SPA_MIN(d->chunk->size, d->maxsize - mem->offset);
 | 
			
		||||
    mem->offset += data->offset;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (pwsrc->always_copy)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -464,15 +464,22 @@ param_filter(struct pw_link *this,
 | 
			
		|||
        struct spa_pod_builder ib = { 0 };
 | 
			
		||||
	struct spa_pod *oparam, *iparam;
 | 
			
		||||
	uint32_t iidx, oidx, num = 0;
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	for (iidx = 0;;) {
 | 
			
		||||
	        spa_pod_builder_init(&ib, ibuf, sizeof(ibuf));
 | 
			
		||||
		pw_log_debug("iparam %d", iidx);
 | 
			
		||||
		if (spa_node_port_enum_params(in_port->node->node, in_port->direction, in_port->port_id,
 | 
			
		||||
					      id, &iidx, NULL, &iparam, &ib) <= 0)
 | 
			
		||||
		if ((res = spa_node_port_enum_params(in_port->node->node,
 | 
			
		||||
						     in_port->direction, in_port->port_id,
 | 
			
		||||
						     id, &iidx, NULL, &iparam, &ib)) < 0)
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		if (pw_log_level_enabled(SPA_LOG_LEVEL_DEBUG))
 | 
			
		||||
		if (res == 0 && num > 0)
 | 
			
		||||
			break;
 | 
			
		||||
		else
 | 
			
		||||
			iparam = NULL;
 | 
			
		||||
 | 
			
		||||
		if (pw_log_level_enabled(SPA_LOG_LEVEL_DEBUG) && iparam != NULL)
 | 
			
		||||
			spa_debug_pod(iparam, 0);
 | 
			
		||||
 | 
			
		||||
		for (oidx = 0;;) {
 | 
			
		||||
| 
						 | 
				
			
			@ -488,6 +495,8 @@ param_filter(struct pw_link *this,
 | 
			
		|||
 | 
			
		||||
			num++;
 | 
			
		||||
		}
 | 
			
		||||
		if (iparam == NULL && num == 0)
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	return num;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue