summaryrefslogtreecommitdiffstats
path: root/src/modules/bluetooth/sbc.c
diff options
context:
space:
mode:
authorColin Guthrie <cguthrie@mandriva.org>2011-01-17 22:19:10 +0000
committerColin Guthrie <cguthrie@mandriva.org>2011-01-17 22:19:10 +0000
commit8c0e3efbf8fcd500048b1c1b21d21a4ea8c09fd3 (patch)
treefb62e35903de001816bee596da147b10a01eeba6 /src/modules/bluetooth/sbc.c
parent26c64fb54e3376564a76c4bfbd9f56b110d58c30 (diff)
parente4979ab5cff84ef64c88bba3a1b6b4c5e02f7777 (diff)
Merge commit 'e4979ab5cff84ef64c88bba3a1b6b4c5e02f7777'
Diffstat (limited to 'src/modules/bluetooth/sbc.c')
-rw-r--r--src/modules/bluetooth/sbc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/modules/bluetooth/sbc.c b/src/modules/bluetooth/sbc.c
index 779be4bd..5157c70f 100644
--- a/src/modules/bluetooth/sbc.c
+++ b/src/modules/bluetooth/sbc.c
@@ -1005,7 +1005,8 @@ ssize_t sbc_decode(sbc_t *sbc, const void *input, size_t input_len,
priv->frame.codesize = sbc_get_codesize(sbc);
priv->frame.length = framelen;
- }
+ } else if (priv->frame.bitpool != sbc->bitpool)
+ sbc->bitpool = priv->frame.bitpool;
if (!output)
return framelen;
@@ -1076,6 +1077,9 @@ ssize_t sbc_encode(sbc_t *sbc, const void *input, size_t input_len,
sbc_encoder_init(&priv->enc_state, &priv->frame);
priv->init = 1;
+ } else if (priv->frame.bitpool != sbc->bitpool) {
+ priv->frame.length = sbc_get_frame_length(sbc);
+ priv->frame.bitpool = sbc->bitpool;
}
/* input must be large enough to encode a complete frame */
@@ -1140,7 +1144,7 @@ size_t sbc_get_frame_length(sbc_t *sbc)
struct sbc_priv *priv;
priv = sbc->priv;
- if (priv->init)
+ if (priv->init && priv->frame.bitpool == sbc->bitpool)
return priv->frame.length;
subbands = sbc->subbands ? 8 : 4;