From: Luiz Augusto von Dentz <luiz.dentz-von@xxxxxxxxx> --- sbc/sbc.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/sbc/sbc.c b/sbc/sbc.c index a6391ae..b3a7a09 100644 --- a/sbc/sbc.c +++ b/sbc/sbc.c @@ -965,7 +965,8 @@ ssize_t sbc_decode(sbc_t *sbc, const void *input, size_t input_len, framelen = sbc_unpack_frame(input, &priv->frame, input_len); - if (!priv->init) { + /* init if no previous frame was encode or bitpool has changed */ + if (!priv->init || priv->frame.bitpool != sbc->bitpool) { sbc_decoder_init(&priv->dec_state, &priv->frame); priv->init = 1; @@ -1035,7 +1036,8 @@ ssize_t sbc_encode(sbc_t *sbc, const void *input, size_t input_len, if (written) *written = 0; - if (!priv->init) { + /* init if no previous frame was encode or bitpool has changed */ + if (!priv->init || priv->frame.bitpool != sbc->bitpool) { priv->frame.frequency = sbc->frequency; priv->frame.mode = sbc->mode; priv->frame.channels = sbc->mode == SBC_MODE_MONO ? 1 : 2; @@ -1120,7 +1122,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; -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html