mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	ldac: fix sample rates
Fix selection of sample rates. Higer samplerates are not supported by the library so disable them. See #449
This commit is contained in:
		
							parent
							
								
									c6663b6a18
								
							
						
					
					
						commit
						4797018e4f
					
				
					 1 changed files with 4 additions and 28 deletions
				
			
		| 
						 | 
					@ -61,9 +61,7 @@ static int codec_fill_caps(const struct a2dp_codec *codec, uint32_t flags, uint8
 | 
				
			||||||
		.frequency = LDACBT_SAMPLING_FREQ_044100 |
 | 
							.frequency = LDACBT_SAMPLING_FREQ_044100 |
 | 
				
			||||||
			LDACBT_SAMPLING_FREQ_048000 |
 | 
								LDACBT_SAMPLING_FREQ_048000 |
 | 
				
			||||||
			LDACBT_SAMPLING_FREQ_088200 |
 | 
								LDACBT_SAMPLING_FREQ_088200 |
 | 
				
			||||||
			LDACBT_SAMPLING_FREQ_096000 |
 | 
								LDACBT_SAMPLING_FREQ_096000,
 | 
				
			||||||
			LDACBT_SAMPLING_FREQ_176400 |
 | 
					 | 
				
			||||||
			LDACBT_SAMPLING_FREQ_192000,
 | 
					 | 
				
			||||||
		.channel_mode = LDACBT_CHANNEL_MODE_MONO |
 | 
							.channel_mode = LDACBT_CHANNEL_MODE_MONO |
 | 
				
			||||||
			LDACBT_CHANNEL_MODE_DUAL_CHANNEL |
 | 
								LDACBT_CHANNEL_MODE_DUAL_CHANNEL |
 | 
				
			||||||
			LDACBT_CHANNEL_MODE_STEREO,
 | 
								LDACBT_CHANNEL_MODE_STEREO,
 | 
				
			||||||
| 
						 | 
					@ -87,16 +85,12 @@ static int codec_select_config(const struct a2dp_codec *codec, uint32_t flags,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (conf.frequency & LDACBT_SAMPLING_FREQ_044100)
 | 
						if (conf.frequency & LDACBT_SAMPLING_FREQ_044100)
 | 
				
			||||||
		conf.frequency = LDACBT_SAMPLING_FREQ_044100;
 | 
							conf.frequency = LDACBT_SAMPLING_FREQ_044100;
 | 
				
			||||||
	if (conf.frequency & LDACBT_SAMPLING_FREQ_048000)
 | 
						else if (conf.frequency & LDACBT_SAMPLING_FREQ_048000)
 | 
				
			||||||
		conf.frequency = LDACBT_SAMPLING_FREQ_048000;
 | 
							conf.frequency = LDACBT_SAMPLING_FREQ_048000;
 | 
				
			||||||
	if (conf.frequency & LDACBT_SAMPLING_FREQ_088200)
 | 
						else if (conf.frequency & LDACBT_SAMPLING_FREQ_088200)
 | 
				
			||||||
		conf.frequency = LDACBT_SAMPLING_FREQ_088200;
 | 
							conf.frequency = LDACBT_SAMPLING_FREQ_088200;
 | 
				
			||||||
	if (conf.frequency & LDACBT_SAMPLING_FREQ_096000)
 | 
						else if (conf.frequency & LDACBT_SAMPLING_FREQ_096000)
 | 
				
			||||||
		conf.frequency = LDACBT_SAMPLING_FREQ_096000;
 | 
							conf.frequency = LDACBT_SAMPLING_FREQ_096000;
 | 
				
			||||||
	if (conf.frequency & LDACBT_SAMPLING_FREQ_176400)
 | 
					 | 
				
			||||||
		conf.frequency = LDACBT_SAMPLING_FREQ_176400;
 | 
					 | 
				
			||||||
	if (conf.frequency & LDACBT_SAMPLING_FREQ_192000)
 | 
					 | 
				
			||||||
		conf.frequency = LDACBT_SAMPLING_FREQ_192000;
 | 
					 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		return -ENOTSUP;
 | 
							return -ENOTSUP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,16 +156,6 @@ static int codec_enum_config(const struct a2dp_codec *codec,
 | 
				
			||||||
			spa_pod_builder_int(b, 96000);
 | 
								spa_pod_builder_int(b, 96000);
 | 
				
			||||||
		spa_pod_builder_int(b, 96000);
 | 
							spa_pod_builder_int(b, 96000);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (conf.frequency & LDACBT_SAMPLING_FREQ_176400) {
 | 
					 | 
				
			||||||
		if (i++ == 0)
 | 
					 | 
				
			||||||
			spa_pod_builder_int(b, 176400);
 | 
					 | 
				
			||||||
		spa_pod_builder_int(b, 176400);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if (conf.frequency & LDACBT_SAMPLING_FREQ_192000) {
 | 
					 | 
				
			||||||
		if (i++ == 0)
 | 
					 | 
				
			||||||
			spa_pod_builder_int(b, 192000);
 | 
					 | 
				
			||||||
		spa_pod_builder_int(b, 192000);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if (i > 1)
 | 
						if (i > 1)
 | 
				
			||||||
		choice->body.type = SPA_CHOICE_Enum;
 | 
							choice->body.type = SPA_CHOICE_Enum;
 | 
				
			||||||
	spa_pod_builder_pop(b, &f[1]);
 | 
						spa_pod_builder_pop(b, &f[1]);
 | 
				
			||||||
| 
						 | 
					@ -266,14 +250,6 @@ static void *codec_init(const struct a2dp_codec *codec, uint32_t flags,
 | 
				
			||||||
		info->info.raw.rate = 96000;
 | 
							info->info.raw.rate = 96000;
 | 
				
			||||||
		this->lsu = 256;
 | 
							this->lsu = 256;
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case LDACBT_SAMPLING_FREQ_176400:
 | 
					 | 
				
			||||||
		info->info.raw.rate = 176400;
 | 
					 | 
				
			||||||
		this->lsu = 512;
 | 
					 | 
				
			||||||
		break;
 | 
					 | 
				
			||||||
	case LDACBT_SAMPLING_FREQ_192000:
 | 
					 | 
				
			||||||
		info->info.raw.rate = 192000;
 | 
					 | 
				
			||||||
		this->lsu = 512;
 | 
					 | 
				
			||||||
		break;
 | 
					 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		res = -EINVAL;
 | 
							res = -EINVAL;
 | 
				
			||||||
		goto error;
 | 
							goto error;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue