summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPali Rohár <pali.rohar@gmail.com>2019-01-29 18:12:07 +0100
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2019-01-31 12:42:07 +0200
commit61244c0c2f5694a344d76d5feb722e82327cd9cf (patch)
tree753d8d68ff68cdb22b4433a01dac0af34074519a
parent97801670b884f1b93d98e702c716eb6e7f3be47b (diff)
downloadbluez-61244c0c2f5694a344d76d5feb722e82327cd9cf.tar.gz
a2dp-codecs: Fix SBC_MAX_BITPOOL and add SBC quality modes
According to A2DP specification; section SBC; Codec Specific Information Elements; Minimum / Maximum Bitpool Value, range for Bitpool value is from 2 to 250. A2DP specification also defines bitpool values for two SBC modes: Middle Quality and High Quality. They depends on channel mode and frequency. So add definitions for them into a2dp-codecs file too. File android/hal-audio-sbc.c was updated to use High Quality mode for chosen frequency.
-rw-r--r--android/hal-audio-sbc.c6
-rw-r--r--profiles/audio/a2dp-codecs.h16
2 files changed, 18 insertions, 4 deletions
diff --git a/android/hal-audio-sbc.c b/android/hal-audio-sbc.c
index 80e271ed6..b06cafb7b 100644
--- a/android/hal-audio-sbc.c
+++ b/android/hal-audio-sbc.c
@@ -92,7 +92,7 @@ static const a2dp_sbc_t sbc_presets[] = {
.block_length = SBC_BLOCK_LENGTH_4 | SBC_BLOCK_LENGTH_8 |
SBC_BLOCK_LENGTH_12 | SBC_BLOCK_LENGTH_16,
.min_bitpool = SBC_MIN_BITPOOL,
- .max_bitpool = SBC_MAX_BITPOOL
+ .max_bitpool = SBC_BITPOOL_HQ_JOINT_STEREO_44100,
},
{
.frequency = SBC_SAMPLING_FREQ_44100,
@@ -101,7 +101,7 @@ static const a2dp_sbc_t sbc_presets[] = {
.allocation_method = SBC_ALLOCATION_LOUDNESS,
.block_length = SBC_BLOCK_LENGTH_16,
.min_bitpool = SBC_MIN_BITPOOL,
- .max_bitpool = SBC_MAX_BITPOOL
+ .max_bitpool = SBC_BITPOOL_HQ_JOINT_STEREO_44100,
},
{
.frequency = SBC_SAMPLING_FREQ_48000,
@@ -110,7 +110,7 @@ static const a2dp_sbc_t sbc_presets[] = {
.allocation_method = SBC_ALLOCATION_LOUDNESS,
.block_length = SBC_BLOCK_LENGTH_16,
.min_bitpool = SBC_MIN_BITPOOL,
- .max_bitpool = SBC_MAX_BITPOOL
+ .max_bitpool = SBC_BITPOOL_HQ_JOINT_STEREO_48000,
},
};
diff --git a/profiles/audio/a2dp-codecs.h b/profiles/audio/a2dp-codecs.h
index 16088dc26..93e9d3523 100644
--- a/profiles/audio/a2dp-codecs.h
+++ b/profiles/audio/a2dp-codecs.h
@@ -53,8 +53,22 @@
#define SBC_ALLOCATION_SNR (1 << 1)
#define SBC_ALLOCATION_LOUDNESS 1
-#define SBC_MAX_BITPOOL 64
#define SBC_MIN_BITPOOL 2
+#define SBC_MAX_BITPOOL 250
+
+/* Other settings:
+ * Block length = 16
+ * Allocation method = Loudness
+ * Subbands = 8
+ */
+#define SBC_BITPOOL_MQ_MONO_44100 19
+#define SBC_BITPOOL_MQ_MONO_48000 18
+#define SBC_BITPOOL_MQ_JOINT_STEREO_44100 35
+#define SBC_BITPOOL_MQ_JOINT_STEREO_48000 33
+#define SBC_BITPOOL_HQ_MONO_44100 31
+#define SBC_BITPOOL_HQ_MONO_48000 29
+#define SBC_BITPOOL_HQ_JOINT_STEREO_44100 53
+#define SBC_BITPOOL_HQ_JOINT_STEREO_48000 51
#define MPEG_CHANNEL_MODE_MONO (1 << 3)
#define MPEG_CHANNEL_MODE_DUAL_CHANNEL (1 << 2)