mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-10-29 05:40:27 -04:00 
			
		
		
		
	props: use macro for property alternatives
This commit is contained in:
		
							parent
							
								
									f039238288
								
							
						
					
					
						commit
						0e5a1b6327
					
				
					 15 changed files with 123 additions and 107 deletions
				
			
		|  | @ -595,6 +595,10 @@ static inline void *spa_pod_builder_add(struct spa_pod_builder *builder, const c | |||
| #define SPA_POD_PROP(key,spec,type,value,...)		\ | ||||
| 	":", key, spec, value, ##__VA_ARGS__ | ||||
| 
 | ||||
| #define SPA_POD_PROP_MIN_MAX(min,max)	2,(min),(max) | ||||
| #define SPA_POD_PROP_STEP(min,max,step)	3,(min),(max),(step) | ||||
| #define SPA_POD_PROP_ENUM(n_vals,...)	(n_vals),__VA_ARGS__ | ||||
| 
 | ||||
| #define spa_pod_builder_object(b,id,type,...)					\ | ||||
| 	spa_pod_builder_add(b, SPA_POD_OBJECT(id,type,##__VA_ARGS__), NULL) | ||||
| 
 | ||||
|  |  | |||
|  | @ -106,7 +106,7 @@ static int impl_node_enum_params(struct spa_node *node, | |||
| 				":", t->param.propId,   "I", t->prop_min_latency, | ||||
| 				":", t->param.propName, "s", "The minimum latency", | ||||
| 				":", t->param.propType, "ir", p->min_latency, | ||||
| 							2, 1, INT32_MAX); | ||||
| 					SPA_POD_PROP_MIN_MAX(1, INT32_MAX)); | ||||
| 			break; | ||||
| 		case 4: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
|  | @ -114,7 +114,7 @@ static int impl_node_enum_params(struct spa_node *node, | |||
| 				":", t->param.propId,   "I", t->prop_max_latency, | ||||
| 				":", t->param.propName, "s", "The maximum latency", | ||||
| 				":", t->param.propType, "ir", p->max_latency, | ||||
| 							2, 1, INT32_MAX); | ||||
| 					SPA_POD_PROP_MIN_MAX(1, INT32_MAX)); | ||||
| 			break; | ||||
| 		default: | ||||
| 			return 0; | ||||
|  | @ -350,12 +350,13 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 
 | ||||
| 		param = spa_pod_builder_object(&b, | ||||
| 			id, t->param_buffers.Buffers, | ||||
| 			":", t->param_buffers.size,    "iru", this->props.max_latency * this->frame_size, | ||||
| 							2, this->props.min_latency * this->frame_size, | ||||
| 							   INT32_MAX, | ||||
| 			":", t->param_buffers.size,    "iru", this->props.max_latency * | ||||
| 							      this->frame_size, | ||||
| 				SPA_POD_PROP_MIN_MAX(this->props.min_latency * this->frame_size, | ||||
| 						     INT32_MAX), | ||||
| 			":", t->param_buffers.stride,  "i", 0, | ||||
| 			":", t->param_buffers.buffers, "ir", 1, | ||||
| 								2, 1, MAX_BUFFERS, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS), | ||||
| 			":", t->param_buffers.align,   "i", 16); | ||||
| 	} | ||||
| 	else if (id == t->param.idMeta) { | ||||
|  |  | |||
|  | @ -106,7 +106,7 @@ static int impl_node_enum_params(struct spa_node *node, | |||
| 				":", t->param.propId, "I", t->prop_min_latency, | ||||
| 				":", t->param.propName, "s", "The minimum latency", | ||||
| 				":", t->param.propType, "ir", p->min_latency, | ||||
| 							2, 1, INT32_MAX); | ||||
| 					SPA_POD_PROP_MIN_MAX(1, INT32_MAX)); | ||||
| 			break; | ||||
| 		default: | ||||
| 			return 0; | ||||
|  | @ -369,7 +369,7 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 			":", t->param_buffers.size,    "i", this->props.min_latency * this->frame_size, | ||||
| 			":", t->param_buffers.stride,  "i", 0, | ||||
| 			":", t->param_buffers.buffers, "ir", 2, | ||||
| 								2, 1, 32, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS), | ||||
| 			":", t->param_buffers.align,   "i", 16); | ||||
| 	} | ||||
| 	else if (id == t->param.idMeta) { | ||||
|  |  | |||
|  | @ -384,12 +384,12 @@ static int port_enum_formats(struct spa_node *node, | |||
| 				"I", t->media_type.audio, | ||||
| 				"I", t->media_subtype.raw, | ||||
| 				":", t->format_audio.format,   "Ieu", t->audio_format.S16, | ||||
| 									2, t->audio_format.S16, | ||||
| 									   t->audio_format.F32, | ||||
| 					SPA_POD_PROP_ENUM(2, t->audio_format.S16, | ||||
| 							     t->audio_format.F32), | ||||
| 				":", t->format_audio.rate,     "iru", 44100, | ||||
| 									2, 1, INT32_MAX, | ||||
| 					SPA_POD_PROP_MIN_MAX(1, INT32_MAX), | ||||
| 				":", t->format_audio.channels, "iru", 2, | ||||
| 									2, 1, INT32_MAX); | ||||
| 					SPA_POD_PROP_MIN_MAX(1, INT32_MAX)); | ||||
| 		} | ||||
| 		break; | ||||
| 	default: | ||||
|  | @ -486,11 +486,10 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 		param = spa_pod_builder_object(&b, | ||||
| 			id, t->param_buffers.Buffers, | ||||
| 			":", t->param_buffers.size,    "iru", 1024 * this->bpf, | ||||
| 									2, 16 * this->bpf, | ||||
| 									   INT32_MAX / this->bpf, | ||||
| 				SPA_POD_PROP_MIN_MAX(16 * this->bpf, INT32_MAX / this->bpf), | ||||
| 			":", t->param_buffers.stride,  "i", 0, | ||||
| 			":", t->param_buffers.buffers, "iru", 1, | ||||
| 									2, 1, MAX_BUFFERS, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS), | ||||
| 			":", t->param_buffers.align,   "i", 16); | ||||
| 	} | ||||
| 	else if (id == t->param.idMeta) { | ||||
|  | @ -513,7 +512,7 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 		case 0: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param_io.Buffers, | ||||
| 				":", t->param_io.id, "I", t->io.Buffers, | ||||
| 				":", t->param_io.id,   "I", t->io.Buffers, | ||||
| 				":", t->param_io.size, "i", sizeof(struct spa_io_buffers)); | ||||
| 			break; | ||||
| 		default: | ||||
|  | @ -525,7 +524,7 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 		case 0: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param_io.Control, | ||||
| 				":", t->param_io.id, "I", t->io.ControlRange, | ||||
| 				":", t->param_io.id,   "I", t->io.ControlRange, | ||||
| 				":", t->param_io.size, "i", sizeof(struct spa_io_control_range)); | ||||
| 			break; | ||||
| 		default: | ||||
|  | @ -542,17 +541,18 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 		case 0: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param_io.Prop, | ||||
| 				":", t->param_io.id, "I", t->io_prop_volume, | ||||
| 				":", t->param_io.size, "i", sizeof(struct spa_pod_double), | ||||
| 				":", t->param.propId, "I", t->prop_volume, | ||||
| 				":", t->param.propType, "dru", p->volume, 2, 0.0, 10.0); | ||||
| 				":", t->param_io.id,    "I", t->io_prop_volume, | ||||
| 				":", t->param_io.size,  "i", sizeof(struct spa_pod_double), | ||||
| 				":", t->param.propId,   "I", t->prop_volume, | ||||
| 				":", t->param.propType, "dru", p->volume, | ||||
| 					SPA_POD_PROP_MIN_MAX(0.0, 10.0)); | ||||
| 			break; | ||||
| 		case 1: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param_io.Prop, | ||||
| 				":", t->param_io.id, "I", t->io_prop_mute, | ||||
| 				":", t->param_io.size, "i", sizeof(struct spa_pod_bool), | ||||
| 				":", t->param.propId, "I", t->prop_mute, | ||||
| 				":", t->param_io.id,    "I", t->io_prop_mute, | ||||
| 				":", t->param_io.size,  "i", sizeof(struct spa_pod_bool), | ||||
| 				":", t->param.propId,   "I", t->prop_mute, | ||||
| 				":", t->param.propType, "b", p->mute); | ||||
| 			break; | ||||
| 		default: | ||||
|  |  | |||
|  | @ -243,7 +243,7 @@ static int impl_node_enum_params(struct spa_node *node, | |||
| 				":", t->param.propId,   "I", t->prop_freq, | ||||
| 				":", t->param.propName, "s", "Select the frequency", | ||||
| 				":", t->param.propType, "dr", p->freq, | ||||
| 							2, 0.0, 50000000.0); | ||||
| 					SPA_POD_PROP_MIN_MAX(0.0, 50000000.0)); | ||||
| 			break; | ||||
| 		case 3: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
|  | @ -251,7 +251,7 @@ static int impl_node_enum_params(struct spa_node *node, | |||
| 				":", t->param.propId,   "I", t->prop_volume, | ||||
| 				":", t->param.propName, "s", "Select the volume", | ||||
| 				":", t->param.propType, "dr", p->volume, | ||||
| 							2, 0.0, 10.0); | ||||
| 					SPA_POD_PROP_MIN_MAX(0.0, 10.0)); | ||||
| 			break; | ||||
| 		default: | ||||
| 			return 0; | ||||
|  | @ -583,14 +583,14 @@ port_enum_formats(struct impl *this, | |||
| 			"I", t->media_type.audio, | ||||
| 			"I", t->media_subtype.raw, | ||||
| 			":", t->format_audio.format,   "Ieu", t->audio_format.S16, | ||||
| 								4, t->audio_format.S16, | ||||
| 								   t->audio_format.S32, | ||||
| 								   t->audio_format.F32, | ||||
| 								   t->audio_format.F64, | ||||
| 				SPA_POD_PROP_ENUM(4, t->audio_format.S16, | ||||
| 						     t->audio_format.S32, | ||||
| 						     t->audio_format.F32, | ||||
| 						     t->audio_format.F64), | ||||
| 			":", t->format_audio.rate,     "iru", 44100, | ||||
| 								2, 1, INT32_MAX, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, INT32_MAX), | ||||
| 			":", t->format_audio.channels, "iru", 2, | ||||
| 								2, 1, INT32_MAX); | ||||
| 				SPA_POD_PROP_MIN_MAX(1, INT32_MAX)); | ||||
| 		break; | ||||
| 	default: | ||||
| 		return 0; | ||||
|  | @ -683,11 +683,10 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 		param = spa_pod_builder_object(&b, | ||||
| 			id, t->param_buffers.Buffers, | ||||
| 			":", t->param_buffers.size,    "iru", 1024 * this->bpf, | ||||
| 									2, 16 * this->bpf, | ||||
| 									   INT32_MAX / this->bpf, | ||||
| 				SPA_POD_PROP_MIN_MAX(16 * this->bpf, INT32_MAX / this->bpf), | ||||
| 			":", t->param_buffers.stride,  "i",   0, | ||||
| 			":", t->param_buffers.buffers, "iru", 1, | ||||
| 									2, 1, 32, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS), | ||||
| 			":", t->param_buffers.align,   "i",   16); | ||||
| 	} | ||||
| 	else if (id == t->param.idMeta) { | ||||
|  | @ -710,7 +709,7 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 		case 0: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param_io.Buffers, | ||||
| 				":", t->param_io.id, "I", t->io.Buffers, | ||||
| 				":", t->param_io.id,   "I", t->io.Buffers, | ||||
| 				":", t->param_io.size, "i", sizeof(struct spa_io_buffers)); | ||||
| 			break; | ||||
| 		default: | ||||
|  | @ -722,7 +721,7 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 		case 0: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param_io.Control, | ||||
| 				":", t->param_io.id, "I", t->io.ControlRange, | ||||
| 				":", t->param_io.id,   "I", t->io.ControlRange, | ||||
| 				":", t->param_io.size, "i", sizeof(struct spa_io_control_range)); | ||||
| 			break; | ||||
| 		default: | ||||
|  | @ -736,29 +735,31 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 		case 0: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param_io.Prop, | ||||
| 				":", t->param_io.id, "I", t->io_prop_wave, | ||||
| 				":", t->param_io.size, "i", sizeof(struct spa_pod_id), | ||||
| 				":", t->param.propId, "I", t->prop_wave, | ||||
| 				":", t->param.propType, "i", p->wave, | ||||
| 				":", t->param_io.id,      "I", t->io_prop_wave, | ||||
| 				":", t->param_io.size,    "i", sizeof(struct spa_pod_id), | ||||
| 				":", t->param.propId,     "I", t->prop_wave, | ||||
| 				":", t->param.propType,   "i", p->wave, | ||||
| 				":", t->param.propLabels, "[-i", | ||||
| 					"i", WAVE_SINE, "s", "Sine wave", | ||||
| 					"i", WAVE_SINE,   "s", "Sine wave", | ||||
| 					"i", WAVE_SQUARE, "s", "Square wave", "]"); | ||||
| 			break; | ||||
| 		case 1: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param_io.Prop, | ||||
| 				":", t->param_io.id, "I", t->io_prop_freq, | ||||
| 				":", t->param_io.size, "i", sizeof(struct spa_pod_double), | ||||
| 				":", t->param.propId, "I", t->prop_freq, | ||||
| 				":", t->param.propType, "dr", p->freq, 2, 0.0, 50000000.0); | ||||
| 				":", t->param_io.id,    "I", t->io_prop_freq, | ||||
| 				":", t->param_io.size,  "i", sizeof(struct spa_pod_double), | ||||
| 				":", t->param.propId,   "I", t->prop_freq, | ||||
| 				":", t->param.propType, "dr", p->freq, | ||||
| 					SPA_POD_PROP_MIN_MAX(0.0, 50000000.0)); | ||||
| 			break; | ||||
| 		case 2: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param_io.Prop, | ||||
| 				":", t->param_io.id, "I", t->io_prop_volume, | ||||
| 				":", t->param_io.size, "i", sizeof(struct spa_pod_double), | ||||
| 				":", t->param.propId, "I", t->prop_volume, | ||||
| 				":", t->param.propType, "dr", p->volume, 2, 0.0, 10.0); | ||||
| 				":", t->param_io.id,    "I", t->io_prop_volume, | ||||
| 				":", t->param_io.size,  "i", sizeof(struct spa_pod_double), | ||||
| 				":", t->param.propId,   "I", t->prop_volume, | ||||
| 				":", t->param.propType, "dr", p->volume, | ||||
| 					SPA_POD_PROP_MIN_MAX(0.0, 10.0)); | ||||
| 			break; | ||||
| 		default: | ||||
| 			return 0; | ||||
|  |  | |||
|  | @ -233,7 +233,7 @@ static int impl_node_enum_params(struct spa_node *node, | |||
| 				":", t->param.propId,   "I", t->prop_min_latency, | ||||
| 				":", t->param.propName, "s", "The minimum latency", | ||||
| 				":", t->param.propType, "ir", p->min_latency, | ||||
| 							2, 1, INT32_MAX); | ||||
| 					SPA_POD_PROP_MIN_MAX(1, INT32_MAX)); | ||||
| 			break; | ||||
| 		case 1: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
|  | @ -241,7 +241,7 @@ static int impl_node_enum_params(struct spa_node *node, | |||
| 				":", t->param.propId,   "I", t->prop_max_latency, | ||||
| 				":", t->param.propName, "s", "The maximum latency", | ||||
| 				":", t->param.propType, "ir", p->max_latency, | ||||
| 							2, 1, INT32_MAX); | ||||
| 					SPA_POD_PROP_MIN_MAX(1, INT32_MAX)); | ||||
| 			break; | ||||
| 		default: | ||||
| 			return 0; | ||||
|  | @ -1042,12 +1042,13 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 
 | ||||
| 		param = spa_pod_builder_object(&b, | ||||
| 			id, t->param_buffers.Buffers, | ||||
| 			":", t->param_buffers.size,    "iru", this->props.min_latency * this->frame_size, | ||||
| 							2, this->props.min_latency * this->frame_size, | ||||
| 							   INT32_MAX, | ||||
| 			":", t->param_buffers.size,    "iru", this->props.min_latency * | ||||
| 							      this->frame_size, | ||||
| 				SPA_POD_PROP_MIN_MAX(this->props.min_latency * this->frame_size, | ||||
| 						     INT32_MAX), | ||||
| 			":", t->param_buffers.stride,  "i", 0, | ||||
| 			":", t->param_buffers.buffers, "ir", 2, | ||||
| 								2, 2, MAX_BUFFERS, | ||||
| 				SPA_POD_PROP_MIN_MAX(2, MAX_BUFFERS), | ||||
| 			":", t->param_buffers.align,   "i", 16); | ||||
| 	} | ||||
| 	else if (id == t->param.idMeta) { | ||||
|  |  | |||
|  | @ -249,21 +249,21 @@ static int impl_node_enum_params(struct spa_node *node, | |||
| 		case 0: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param.PropInfo, | ||||
| 				":", t->param.propId, "I", t->prop_device, | ||||
| 				":", t->param.propId,   "I", t->prop_device, | ||||
| 				":", t->param.propName, "s", "The V4L2 device", | ||||
| 				":", t->param.propType, "S", p->device, sizeof(p->device)); | ||||
| 			break; | ||||
| 		case 1: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param.PropInfo, | ||||
| 				":", t->param.propId, "I", t->prop_device_name, | ||||
| 				":", t->param.propId,   "I", t->prop_device_name, | ||||
| 				":", t->param.propName, "s", "The V4L2 device name", | ||||
| 				":", t->param.propType, "S-r", p->device_name, sizeof(p->device_name)); | ||||
| 			break; | ||||
| 		case 2: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
| 				id, t->param.PropInfo, | ||||
| 				":", t->param.propId, "I", t->prop_device_fd, | ||||
| 				":", t->param.propId,   "I", t->prop_device_fd, | ||||
| 				":", t->param.propName, "s", "The V4L2 fd", | ||||
| 				":", t->param.propType, "i-r", p->device_fd); | ||||
| 			break; | ||||
|  | @ -546,7 +546,7 @@ static int impl_node_port_enum_params(struct spa_node *node, | |||
| 			":", t->param_buffers.size,    "i", port->fmt.fmt.pix.sizeimage, | ||||
| 			":", t->param_buffers.stride,  "i", port->fmt.fmt.pix.bytesperline, | ||||
| 			":", t->param_buffers.buffers, "iru", MAX_BUFFERS, | ||||
| 									2, 2, MAX_BUFFERS, | ||||
| 				SPA_POD_PROP_MIN_MAX(2, MAX_BUFFERS), | ||||
| 			":", t->param_buffers.align,   "i", 16); | ||||
| 	} | ||||
| 	else if (id == t->param.idMeta) { | ||||
|  |  | |||
|  | @ -509,14 +509,14 @@ static int port_enum_formats(struct spa_node *node, | |||
| 			"I", t->media_type.video, | ||||
| 			"I", t->media_subtype.raw, | ||||
| 			":", t->format_video.format,    "Ieu", t->video_format.RGB, | ||||
| 								2, t->video_format.RGB, | ||||
| 								   t->video_format.UYVY, | ||||
| 				SPA_POD_PROP_ENUM(2, t->video_format.RGB, | ||||
| 						     t->video_format.UYVY), | ||||
| 			":", t->format_video.size,      "Rru", &SPA_RECTANGLE(320, 240), | ||||
| 								2, &SPA_RECTANGLE(1, 1), | ||||
| 								   &SPA_RECTANGLE(INT32_MAX, INT32_MAX), | ||||
| 				SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1, 1), | ||||
| 						     &SPA_RECTANGLE(INT32_MAX, INT32_MAX)), | ||||
| 			":", t->format_video.framerate, "Fru", &SPA_FRACTION(25,1), | ||||
| 								2, &SPA_FRACTION(0, 1), | ||||
| 								   &SPA_FRACTION(INT32_MAX, 1)); | ||||
| 				SPA_POD_PROP_MIN_MAX(&SPA_FRACTION(0, 1), | ||||
| 						     &SPA_FRACTION(INT32_MAX, 1))); | ||||
| 		break; | ||||
| 	default: | ||||
| 		return 0; | ||||
|  | @ -610,7 +610,7 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 			":", t->param_buffers.size,    "i", this->stride * raw_info->size.height, | ||||
| 			":", t->param_buffers.stride,  "i", this->stride, | ||||
| 			":", t->param_buffers.buffers, "ir", 2, | ||||
| 								2, 1, 32, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS), | ||||
| 			":", t->param_buffers.align,   "i", 16); | ||||
| 	} | ||||
| 	else if (id == t->param.idMeta) { | ||||
|  |  | |||
|  | @ -186,7 +186,8 @@ static int impl_node_enum_params(struct spa_node *node, | |||
| 				id, t->param.PropInfo, | ||||
| 				":", t->param.propId,   "I", t->prop_volume, | ||||
| 				":", t->param.propName, "s", "The volume", | ||||
| 				":", t->param.propType, "dr", p->volume, 2, 0.0, 10.0); | ||||
| 				":", t->param.propType, "dr", p->volume, | ||||
| 					SPA_POD_PROP_MIN_MAX(0.0, 10.0)); | ||||
| 			break; | ||||
| 		case 1: | ||||
| 			param = spa_pod_builder_object(&b, | ||||
|  | @ -375,10 +376,12 @@ static int port_enum_formats(struct spa_node *node, | |||
| 			"I", t->media_type.audio, | ||||
| 			"I", t->media_subtype.raw, | ||||
| 			":", t->format_audio.format,  "Ieu", t->audio_format.S16, | ||||
| 									2, t->audio_format.S16, | ||||
| 								           t->audio_format.S32, | ||||
| 			":", t->format_audio.rate,    "iru", 44100,	2, 1, INT32_MAX, | ||||
| 			":", t->format_audio.channels,"iru", 2,		2, 1, INT32_MAX); | ||||
| 				SPA_POD_PROP_ENUM(2, t->audio_format.S16, | ||||
| 						     t->audio_format.S32), | ||||
| 			":", t->format_audio.rate,    "iru", 44100, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, INT32_MAX), | ||||
| 			":", t->format_audio.channels,"iru", 2, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, INT32_MAX)); | ||||
| 		break; | ||||
| 	default: | ||||
| 		return 0; | ||||
|  | @ -476,11 +479,10 @@ impl_node_port_enum_params(struct spa_node *node, | |||
| 		param = spa_pod_builder_object(&b, | ||||
| 			id, t->param_buffers.Buffers, | ||||
| 			":", t->param_buffers.size,    "iru", 1024 * this->bpf, | ||||
| 									2, 16 * this->bpf, | ||||
| 									   INT32_MAX / this->bpf, | ||||
| 				SPA_POD_PROP_MIN_MAX(16 * this->bpf, INT32_MAX / this->bpf), | ||||
| 			":", t->param_buffers.stride,  "i", 0, | ||||
| 			":", t->param_buffers.buffers, "iru", 2, | ||||
| 									2, 1, MAX_BUFFERS, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS), | ||||
| 			":", t->param_buffers.align,   "i", 16); | ||||
| 	} | ||||
| 	else if (id == t->param.idMeta) { | ||||
|  |  | |||
|  | @ -314,12 +314,12 @@ static int port_enum_formats(struct spa_node *node, | |||
| 	spa_pod_builder_pop(builder); | ||||
| 	spa_pod_builder_add(builder, | ||||
| 		":", d->type.format_video.size,      "Rru", &SPA_RECTANGLE(WIDTH, HEIGHT), | ||||
| 								2, &SPA_RECTANGLE(1,1), | ||||
| 								   &SPA_RECTANGLE(info.max_texture_width, | ||||
| 										  info.max_texture_height), | ||||
| 			SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1,1), | ||||
| 					     &SPA_RECTANGLE(info.max_texture_width, | ||||
| 							    info.max_texture_height)), | ||||
| 		":", d->type.format_video.framerate, "Fru", &SPA_FRACTION(25,1), | ||||
| 								2, &SPA_FRACTION(0,1), | ||||
| 								   &SPA_FRACTION(30,1), | ||||
| 			SPA_POD_PROP_MIN_MAX(&SPA_FRACTION(0,1), | ||||
| 					     &SPA_FRACTION(30,1)), | ||||
| 		NULL); | ||||
| 	*result = spa_pod_builder_pop(builder); | ||||
| 
 | ||||
|  | @ -393,7 +393,7 @@ static int impl_port_enum_params(struct spa_node *node, | |||
| 			":", t->param_buffers.size,    "i", d->stride * d->format.size.height, | ||||
| 			":", t->param_buffers.stride,  "i", d->stride, | ||||
| 			":", t->param_buffers.buffers, "iru", 32, | ||||
| 									2, 2, 32, | ||||
| 				SPA_POD_PROP_MIN_MAX(2, 32), | ||||
| 			":", t->param_buffers.align,   "i", 16); | ||||
| 	} | ||||
| 	else if (id == t->param.idMeta) { | ||||
|  | @ -415,7 +415,8 @@ static int impl_port_enum_params(struct spa_node *node, | |||
| 				":", t->param_io.id, "I", d->type.io_prop_param, | ||||
| 				":", t->param_io.size, "i", sizeof(struct spa_pod_double), | ||||
| 				":", t->param.propId, "I", d->type.prop_param, | ||||
| 				":", t->param.propType, "dru", p->param, 2, 0.0, 10.0); | ||||
| 				":", t->param.propType, "dru", p->param, | ||||
| 					SPA_POD_PROP_MIN_MAX(0.0, 10.0)); | ||||
| 			break; | ||||
| 		default: | ||||
| 			return 0; | ||||
|  |  | |||
|  | @ -204,8 +204,10 @@ static int port_enum_formats(struct spa_node *node, | |||
| 		"I", d->type.media_type.audio, | ||||
| 		"I", d->type.media_subtype.raw, | ||||
| 		":", d->type.format_audio.format,   "I", d->type.audio_format.S16, | ||||
| 		":", d->type.format_audio.channels, "iru", 2, 2, 1, INT32_MAX, | ||||
| 		":", d->type.format_audio.rate,     "iru", 44100, 2, 1, INT32_MAX); | ||||
| 		":", d->type.format_audio.channels, "iru", 2, | ||||
| 			SPA_POD_PROP_MIN_MAX(1, INT32_MAX), | ||||
| 		":", d->type.format_audio.rate,     "iru", 44100, | ||||
| 			SPA_POD_PROP_MIN_MAX(1, INT32_MAX)); | ||||
| 
 | ||||
| 	(*index)++; | ||||
| 
 | ||||
|  | @ -279,10 +281,10 @@ static int impl_port_enum_params(struct spa_node *node, | |||
| 		param = spa_pod_builder_object(builder, | ||||
| 			id, t->param_buffers.Buffers, | ||||
| 			":", t->param_buffers.size,    "iru", 256, | ||||
| 										2, 32, 4096, | ||||
| 				SPA_POD_PROP_MIN_MAX(32, 4096), | ||||
| 			":", t->param_buffers.stride,  "i",   0, | ||||
| 			":", t->param_buffers.buffers, "iru", 1, | ||||
| 										2, 1, 32, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, 32), | ||||
| 			":", t->param_buffers.align,   "i",  16); | ||||
| 	} | ||||
| 	else if (id == t->param.idMeta) { | ||||
|  | @ -319,7 +321,8 @@ static int impl_port_enum_params(struct spa_node *node, | |||
| 				":", t->param_io.id, "I", d->type.io_prop_volume, | ||||
| 				":", t->param_io.size, "i", sizeof(struct spa_pod_double), | ||||
| 				":", t->param.propId, "I", d->type.prop_volume, | ||||
| 				":", t->param.propType, "dru", p->volume, 2, 0.0, 10.0); | ||||
| 				":", t->param.propType, "dru", p->volume, | ||||
| 					SPA_POD_PROP_MIN_MAX(0.0, 10.0)); | ||||
| 			break; | ||||
| 		default: | ||||
| 			return 0; | ||||
|  |  | |||
|  | @ -272,12 +272,12 @@ static int port_enum_formats(struct spa_node *node, | |||
| 
 | ||||
| 	spa_pod_builder_add(builder, | ||||
| 		":", d->type.format_video.size,      "Rru", &SPA_RECTANGLE(WIDTH, HEIGHT), | ||||
| 								2, &SPA_RECTANGLE(1,1), | ||||
| 								   &SPA_RECTANGLE(info.max_texture_width, | ||||
| 									          info.max_texture_height), | ||||
| 			SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1,1), | ||||
| 					     &SPA_RECTANGLE(info.max_texture_width, | ||||
| 							    info.max_texture_height)), | ||||
| 		":", d->type.format_video.framerate, "Fru", &SPA_FRACTION(25,1), | ||||
| 								2, &SPA_FRACTION(0,1), | ||||
| 								   &SPA_FRACTION(30,1), | ||||
| 			SPA_POD_PROP_MIN_MAX(&SPA_FRACTION(0,1), | ||||
| 					     &SPA_FRACTION(30,1)), | ||||
| 		NULL); | ||||
| 	*result = spa_pod_builder_pop(builder); | ||||
| 
 | ||||
|  | @ -308,7 +308,7 @@ static int impl_port_enum_params(struct spa_node *node, | |||
| 			":", t->param_buffers.size,    "i", d->stride * d->format.size.height, | ||||
| 			":", t->param_buffers.stride,  "i", d->stride, | ||||
| 			":", t->param_buffers.buffers, "iru", 2, | ||||
| 									2, 1, 32, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, 32), | ||||
| 			":", t->param_buffers.align,   "i", 16); | ||||
| 	} | ||||
| 	else if (id == t->param.idMeta) { | ||||
|  |  | |||
|  | @ -275,9 +275,9 @@ on_stream_format_changed(void *_data, struct spa_pod *format) | |||
| 		t->param.idBuffers, t->param_buffers.Buffers, | ||||
| 		":", t->param_buffers.size,    "i", data->stride * data->format.size.height, | ||||
| 		":", t->param_buffers.stride,  "i", data->stride, | ||||
| 		":", t->param_buffers.buffers, "iru", 32, | ||||
| 								2, 2, 32, | ||||
| 		":", t->param_buffers.align,    "i", 16); | ||||
| 		":", t->param_buffers.buffers, "iru", 8, | ||||
| 			SPA_POD_PROP_MIN_MAX(2, 32), | ||||
| 		":", t->param_buffers.align,   "i", 16); | ||||
| 
 | ||||
| 	params[1] = spa_pod_builder_object(&b, | ||||
| 		t->param.idMeta, t->param_meta.Meta, | ||||
|  | @ -346,12 +346,12 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo | |||
| 		spa_pod_builder_pop(&b); | ||||
| 		spa_pod_builder_add(&b, | ||||
| 			":", data->type.format_video.size,      "Rru", &SPA_RECTANGLE(WIDTH, HEIGHT), | ||||
| 									2, &SPA_RECTANGLE(1,1), | ||||
| 									   &SPA_RECTANGLE(info.max_texture_width, | ||||
| 										          info.max_texture_height), | ||||
| 				SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1,1), | ||||
| 						     &SPA_RECTANGLE(info.max_texture_width, | ||||
| 								    info.max_texture_height)), | ||||
| 			":", data->type.format_video.framerate, "Fru", &SPA_FRACTION(25,1), | ||||
| 									2, &SPA_RECTANGLE(0,1), | ||||
| 									   &SPA_RECTANGLE(30,1), | ||||
| 				SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(0,1), | ||||
| 						     &SPA_RECTANGLE(30,1)), | ||||
| 			NULL); | ||||
| 		params[0] = spa_pod_builder_pop(&b); | ||||
| 
 | ||||
|  |  | |||
|  | @ -180,7 +180,7 @@ on_stream_format_changed(void *_data, struct spa_pod *format) | |||
| 		":", t->param_buffers.size,    "i", data->stride * data->format.size.height, | ||||
| 		":", t->param_buffers.stride,  "i", data->stride, | ||||
| 		":", t->param_buffers.buffers, "iru", 2, | ||||
| 								2, 1, 32, | ||||
| 			SPA_POD_PROP_MIN_MAX(1, 32), | ||||
| 		":", t->param_buffers.align,   "i", 16); | ||||
| 
 | ||||
| 	params[1] = spa_pod_builder_object(&b, | ||||
|  | @ -225,8 +225,8 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo | |||
| 			"I", data->type.media_subtype.raw, | ||||
| 			":", data->type.format_video.format,    "I", data->type.video_format.RGB, | ||||
| 			":", data->type.format_video.size,      "Rru", &SPA_RECTANGLE(320, 240), | ||||
| 									2, &SPA_RECTANGLE(1, 1), | ||||
| 									   &SPA_RECTANGLE(4096, 4096), | ||||
| 				SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1, 1), | ||||
| 						     &SPA_RECTANGLE(4096, 4096)), | ||||
| 			":", data->type.format_video.framerate, "F", &SPA_FRACTION(25, 1)); | ||||
| 
 | ||||
| 		pw_stream_add_listener(data->stream, | ||||
|  |  | |||
|  | @ -38,9 +38,11 @@ | |||
| #include "pipewire/type.h" | ||||
| #include "pipewire/private.h" | ||||
| 
 | ||||
| #define MAX_PORTS 256 | ||||
| #define NAME "dsp" | ||||
| 
 | ||||
| #define MAX_PORTS	256 | ||||
| #define MAX_BUFFERS	8 | ||||
| 
 | ||||
| struct type { | ||||
| 	struct spa_type_media_type media_type; | ||||
|         struct spa_type_media_subtype media_subtype; | ||||
|  | @ -95,7 +97,7 @@ struct port { | |||
| 
 | ||||
| 	struct spa_io_buffers *io; | ||||
| 
 | ||||
| 	struct buffer buffers[64]; | ||||
| 	struct buffer buffers[MAX_BUFFERS]; | ||||
| 	uint32_t n_buffers; | ||||
|         struct spa_list queue; | ||||
| 
 | ||||
|  | @ -463,7 +465,8 @@ static int port_enum_params(struct spa_node *node, | |||
| 			id, t->param_buffers.Buffers, | ||||
| 			":", t->param_buffers.size,    "i", n->buffer_size * sizeof(float), | ||||
| 			":", t->param_buffers.stride,  "i", 0, | ||||
| 			":", t->param_buffers.buffers, "ir", 2, 2, 1, 2, | ||||
| 			":", t->param_buffers.buffers, "ir", 2, | ||||
| 				SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS), | ||||
| 			":", t->param_buffers.align,   "i", 16); | ||||
| 	} | ||||
| 	else | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Wim Taymans
						Wim Taymans