summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2007-08-29 21:35:39 +0000
committerLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2007-08-29 21:35:39 +0000
commit41b71b230e0aa4b495c091e7d17c6b939ddbce79 (patch)
tree171620f6b798d846824be31bbfcfedaba8efb87b
parent87bb7258bdf221195d010b0e03cda7cd7c0195b9 (diff)
Fix the need to have all parameters.
-rw-r--r--audio/a2dp.c6
-rw-r--r--audio/pcm_bluetooth.c27
-rw-r--r--audio/unix.c35
3 files changed, 25 insertions, 43 deletions
diff --git a/audio/a2dp.c b/audio/a2dp.c
index 5ecd8159..43b32ada 100644
--- a/audio/a2dp.c
+++ b/audio/a2dp.c
@@ -252,20 +252,20 @@ static gboolean a2dp_select_capabilities(struct avdtp_remote_sep *rsep,
GSList **caps)
{
struct avdtp_service_capability *media_transport, *media_codec;
- struct sbc_codec_cap sbc_cap;
+ struct sbc_codec_cap sbc_cap, *acp_sbc;
if (!setup)
return FALSE;
if (setup->media_codec)
- memcpy(&sbc_cap, setup->media_codec->data, sizeof(sbc_cap));
+ memcpy(&sbc_cap, setup->media_codec->data, sizeof(*acp_sbc));
else {
media_codec = avdtp_get_codec(rsep);
if (!media_codec)
return FALSE;
select_sbc_params(&sbc_cap,
- (struct sbc_codec_cap *) media_codec->data);
+ (struct sbc_codec_cap *) media_codec->data);
}
media_transport = avdtp_service_cap_new(AVDTP_MEDIA_TRANSPORT,
diff --git a/audio/pcm_bluetooth.c b/audio/pcm_bluetooth.c
index c6dc0931..8ba18464 100644
--- a/audio/pcm_bluetooth.c
+++ b/audio/pcm_bluetooth.c
@@ -898,8 +898,10 @@ static int bluetooth_cfg_init(struct ipc_packet *pkt, snd_config_t *conf)
struct ipc_data_cfg *cfg = (void *) pkt->data;
struct ipc_codec_sbc *sbc = (void *) cfg->data;
snd_config_iterator_t i, next;
- const char *addr, *pref, *mode, *allocation, *rate, *channels,
- *subbands, *blocks, *bitpool;
+ const char *addr, *pref, *mode, *allocation, *rate, *subbands,
+ *blocks, *bitpool;
+
+ cfg->channels = 2;
snd_config_for_each(i, next, conf) {
snd_config_t *n = snd_config_iterator_entry(i);
@@ -930,8 +932,10 @@ static int bluetooth_cfg_init(struct ipc_packet *pkt, snd_config_t *conf)
if (strcmp(pref, "auto") == 0)
pkt->role = PKT_ROLE_AUTO;
else if (strcmp(pref, "voice") == 0 ||
- strcmp(pref, "hfp") == 0)
+ strcmp(pref, "hfp") == 0) {
pkt->role = PKT_ROLE_VOICE;
+ cfg->channels = 1;
+ }
else if (strcmp(pref, "hifi") == 0 ||
strcmp(pref, "a2dp") == 0)
pkt->role = PKT_ROLE_HIFI;
@@ -948,30 +952,23 @@ static int bluetooth_cfg_init(struct ipc_packet *pkt, snd_config_t *conf)
continue;
}
- if (strcmp(id, "channels") == 0) {
- if (snd_config_get_string(n, &channels) < 0) {
- SNDERR("Invalid type for %s", id);
- return -EINVAL;
- }
-
- cfg->channels = strtod(channels, NULL);
- continue;
- }
-
- if (strcmp(id, "channel_mode") == 0) {
+ if (strcmp(id, "mode") == 0) {
if (snd_config_get_string(n, &mode) < 0) {
SNDERR("Invalid type for %s", id);
return -EINVAL;
}
- if (strcmp(pref, "mono") == 0)
+ if (strcmp(pref, "mono") == 0) {
+ cfg->channels = 1;
cfg->channel_mode = CFG_CHANNEL_MODE_MONO;
+ }
else if (strcmp(pref, "dual") == 0)
cfg->channel_mode = CFG_CHANNEL_MODE_DUAL_CHANNEL;
else if (strcmp(pref, "stereo") == 0)
cfg->channel_mode = CFG_CHANNEL_MODE_STEREO;
else if (strcmp(pref, "joint") == 0)
cfg->channel_mode = CFG_CHANNEL_MODE_JOINT_STEREO;
+
continue;
}
diff --git a/audio/unix.c b/audio/unix.c
index ef8d6673..6239c203 100644
--- a/audio/unix.c
+++ b/audio/unix.c
@@ -469,12 +469,8 @@ static int cfg_to_caps(struct ipc_data_cfg *cfg, struct sbc_codec_cap *sbc_cap)
default:
return -EINVAL;
}
- } else {
- sbc_cap->frequency = ( A2DP_SAMPLING_FREQ_48000 |
- A2DP_SAMPLING_FREQ_44100 |
- A2DP_SAMPLING_FREQ_32000 |
- A2DP_SAMPLING_FREQ_16000 );
- }
+ } else
+ sbc_cap->frequency = A2DP_SAMPLING_FREQ_44100;
if (cfg->channel_mode > 0) {
switch (cfg->channel_mode) {
@@ -487,12 +483,8 @@ static int cfg_to_caps(struct ipc_data_cfg *cfg, struct sbc_codec_cap *sbc_cap)
default:
return -EINVAL;
}
- } else {
- sbc_cap->channel_mode = ( A2DP_CHANNEL_MODE_JOINT_STEREO |
- A2DP_CHANNEL_MODE_STEREO |
- A2DP_CHANNEL_MODE_DUAL_CHANNEL |
- A2DP_CHANNEL_MODE_MONO );
- }
+ } else
+ sbc_cap->channel_mode = A2DP_CHANNEL_MODE_JOINT_STEREO;
if (sbc->allocation > 0) {
switch (sbc->allocation) {
@@ -504,8 +496,7 @@ static int cfg_to_caps(struct ipc_data_cfg *cfg, struct sbc_codec_cap *sbc_cap)
return -EINVAL;
}
} else
- sbc_cap->allocation_method = ( A2DP_ALLOCATION_LOUDNESS |
- A2DP_ALLOCATION_SNR );
+ sbc_cap->allocation_method = A2DP_ALLOCATION_LOUDNESS;
if (sbc->subbands > 0) {
switch (sbc->subbands) {
@@ -519,7 +510,7 @@ static int cfg_to_caps(struct ipc_data_cfg *cfg, struct sbc_codec_cap *sbc_cap)
return -EINVAL;
}
} else
- sbc_cap->subbands = ( A2DP_SUBBANDS_8 | A2DP_SUBBANDS_4 );
+ sbc_cap->subbands = A2DP_SUBBANDS_8;
if (sbc->blocks > 0) {
switch (sbc->blocks) {
@@ -538,21 +529,15 @@ static int cfg_to_caps(struct ipc_data_cfg *cfg, struct sbc_codec_cap *sbc_cap)
default:
return -EINVAL;
}
- } else {
- sbc_cap->block_length = ( A2DP_BLOCK_LENGTH_16 |
- A2DP_BLOCK_LENGTH_12 |
- A2DP_BLOCK_LENGTH_8 |
- A2DP_BLOCK_LENGTH_4 );
- }
+ } else
+ sbc_cap->block_length = A2DP_BLOCK_LENGTH_16;
if (sbc->bitpool > 250)
return -EINVAL;
else if (sbc->bitpool > 0)
sbc_cap->min_bitpool = sbc_cap->max_bitpool = sbc->bitpool;
- else {
- sbc_cap->min_bitpool = 2;
- sbc_cap->max_bitpool = 250;
- }
+ else
+ sbc_cap->min_bitpool = 53;
return 0;
}