mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	ifilter-chain: improve biquad debug
This commit is contained in:
		
							parent
							
								
									4c43ec7cef
								
							
						
					
					
						commit
						a589bfc277
					
				
					 1 changed files with 38 additions and 3 deletions
				
			
		| 
						 | 
					@ -245,6 +245,31 @@ static int bq_type_from_name(const char *name)
 | 
				
			||||||
	return BQ_NONE;
 | 
						return BQ_NONE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const char *bq_name_from_type(int type)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						switch (type) {
 | 
				
			||||||
 | 
						case BQ_LOWPASS:
 | 
				
			||||||
 | 
							return "lowpass";
 | 
				
			||||||
 | 
						case BQ_HIGHPASS:
 | 
				
			||||||
 | 
							return "highpass";
 | 
				
			||||||
 | 
						case BQ_BANDPASS:
 | 
				
			||||||
 | 
							return "bandpass";
 | 
				
			||||||
 | 
						case BQ_LOWSHELF:
 | 
				
			||||||
 | 
							return "lowshelf";
 | 
				
			||||||
 | 
						case BQ_HIGHSHELF:
 | 
				
			||||||
 | 
							return "highshelf";
 | 
				
			||||||
 | 
						case BQ_PEAKING:
 | 
				
			||||||
 | 
							return "peaking";
 | 
				
			||||||
 | 
						case BQ_NOTCH:
 | 
				
			||||||
 | 
							return "notch";
 | 
				
			||||||
 | 
						case BQ_ALLPASS:
 | 
				
			||||||
 | 
							return "allpass";
 | 
				
			||||||
 | 
						case BQ_NONE:
 | 
				
			||||||
 | 
							return "raw";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return "unknown";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void bq_raw_update(struct builtin *impl, float b0, float b1, float b2,
 | 
					static void bq_raw_update(struct builtin *impl, float b0, float b1, float b2,
 | 
				
			||||||
		float a0, float a1, float a2)
 | 
							float a0, float a1, float a2)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -1709,8 +1734,11 @@ static int load_eq_bands(const char *filename, int rate, struct biquad *bq, uint
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	nread = getline(&line, &linelen, f);
 | 
						nread = getline(&line, &linelen, f);
 | 
				
			||||||
	if (nread != -1 && sscanf(line, "%*s %6s %*s", gain) == 1) {
 | 
						if (nread != -1 && sscanf(line, "%*s %6s %*s", gain) == 1) {
 | 
				
			||||||
		if (spa_json_parse_float(gain, strlen(gain), &vg))
 | 
							if (spa_json_parse_float(gain, strlen(gain), &vg)) {
 | 
				
			||||||
 | 
								pw_log_info("%d %s freq:0 q:1.0 gain:%f", n,
 | 
				
			||||||
 | 
										bq_name_from_type(BQ_HIGHSHELF), vg);
 | 
				
			||||||
			biquad_set(&bq[n++], BQ_HIGHSHELF, 0.0f, 1.0f, vg);
 | 
								biquad_set(&bq[n++], BQ_HIGHSHELF, 0.0f, 1.0f, vg);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	/* Read the filter bands */
 | 
						/* Read the filter bands */
 | 
				
			||||||
	while ((nread = getline(&line, &linelen, f)) != -1) {
 | 
						while ((nread = getline(&line, &linelen, f)) != -1) {
 | 
				
			||||||
| 
						 | 
					@ -1744,8 +1772,11 @@ static int load_eq_bands(const char *filename, int rate, struct biquad *bq, uint
 | 
				
			||||||
					continue;
 | 
										continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if (spa_json_parse_float(gain, strlen(gain), &vg) &&
 | 
									if (spa_json_parse_float(gain, strlen(gain), &vg) &&
 | 
				
			||||||
				    spa_json_parse_float(q, strlen(q), &vq))
 | 
									    spa_json_parse_float(q, strlen(q), &vq)) {
 | 
				
			||||||
 | 
										pw_log_info("%d %s freq:%d q:%f gain:%f", n,
 | 
				
			||||||
 | 
												bq_name_from_type(type), freq, vq, vg);
 | 
				
			||||||
					biquad_set(&bq[n++], type, freq * 2.0f / rate, vq, vg);
 | 
										biquad_set(&bq[n++], type, freq * 2.0f / rate, vq, vg);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -1813,6 +1844,9 @@ static int parse_filters(struct spa_json *iter, int rate, struct biquad *bq, uin
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (n == max_bq)
 | 
							if (n == max_bq)
 | 
				
			||||||
			return -ENOSPC;
 | 
								return -ENOSPC;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pw_log_info("%d %s freq:%f q:%f gain:%f", n,
 | 
				
			||||||
 | 
										bq_name_from_type(type), freq, q, gain);
 | 
				
			||||||
		biquad_set(&bq[n++], type, freq * 2 / rate, q, gain);
 | 
							biquad_set(&bq[n++], type, freq * 2 / rate, q, gain);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	*n_bq = n;
 | 
						*n_bq = n;
 | 
				
			||||||
| 
						 | 
					@ -1870,6 +1904,7 @@ static void *param_eq_instantiate(const struct fc_descriptor * Descriptor,
 | 
				
			||||||
				pw_log_error("param_eq: failed to parse configuration from '%s'", filename);
 | 
									pw_log_error("param_eq: failed to parse configuration from '%s'", filename);
 | 
				
			||||||
				goto error;
 | 
									goto error;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								pw_log_info("loaded %d biquads for channel %d", impl->n_bq, idx);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else if (spa_strstartswith(key, "filters")) {
 | 
							else if (spa_strstartswith(key, "filters")) {
 | 
				
			||||||
			if (!spa_json_is_array(val, len)) {
 | 
								if (!spa_json_is_array(val, len)) {
 | 
				
			||||||
| 
						 | 
					@ -1886,6 +1921,7 @@ static void *param_eq_instantiate(const struct fc_descriptor * Descriptor,
 | 
				
			||||||
				pw_log_error("param_eq: failed to parse configuration");
 | 
									pw_log_error("param_eq: failed to parse configuration");
 | 
				
			||||||
				goto error;
 | 
									goto error;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								pw_log_info("parsed %d biquads for channel %d", impl->n_bq, idx);
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			pw_log_warn("param_eq: ignoring config key: '%s'", key);
 | 
								pw_log_warn("param_eq: ignoring config key: '%s'", key);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -1895,7 +1931,6 @@ static void *param_eq_instantiate(const struct fc_descriptor * Descriptor,
 | 
				
			||||||
						sizeof(struct biquad) * PARAM_EQ_MAX);
 | 
											sizeof(struct biquad) * PARAM_EQ_MAX);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	pw_log_info("loaded %d biquads", impl->n_bq);
 | 
					 | 
				
			||||||
	return impl;
 | 
						return impl;
 | 
				
			||||||
error:
 | 
					error:
 | 
				
			||||||
	free(impl);
 | 
						free(impl);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue