From cdb83fa2251aa0260f1d67d5b16f5f89bb80e88c Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 19 Oct 2020 18:12:13 +0200 Subject: [PATCH] a2dp-sbc: implement decode --- spa/plugins/bluez5/a2dp-codec-sbc.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/spa/plugins/bluez5/a2dp-codec-sbc.c b/spa/plugins/bluez5/a2dp-codec-sbc.c index c268c2bcf..fa7d812ec 100644 --- a/spa/plugins/bluez5/a2dp-codec-sbc.c +++ b/spa/plugins/bluez5/a2dp-codec-sbc.c @@ -368,19 +368,34 @@ static int codec_start_encode (void *data, static int codec_encode(void *data, const void *src, size_t src_size, void *dst, size_t dst_size, - size_t *encoded) + size_t *dst_out) { struct impl *this = data; int res; res = sbc_encode(&this->sbc, src, src_size, - dst, dst_size, encoded); + dst, dst_size, dst_out); + if (res >= this->codesize) this->payload->frame_count += res / this->codesize; return res; } +static int codec_decode(void *data, + const void *src, size_t src_size, + void *dst, size_t dst_size, + size_t *dst_out) +{ + struct impl *this = data; + int res; + + res = sbc_decode(&this->sbc, src, src_size, + dst, dst_size, dst_out); + + return res; +} + struct a2dp_codec a2dp_codec_sbc = { .codec_id = A2DP_CODEC_SBC, .name = "sbc", @@ -393,6 +408,7 @@ struct a2dp_codec a2dp_codec_sbc = { .get_num_blocks = codec_get_num_blocks, .start_encode = codec_start_encode, .encode = codec_encode, + .decode = codec_decode, .reduce_bitpool = codec_reduce_bitpool, .increase_bitpool = codec_increase_bitpool, };