From 976fc1d099d1123e8084cbcf996214442178f5a6 Mon Sep 17 00:00:00 2001 From: "Igor V. Kovalenko" Date: Wed, 3 Mar 2021 23:13:52 +0300 Subject: [PATCH] bluetooth: mSBC: ignore empty encoded frame If input block size is shorter than SBC frame codesize, encoder will return 0. Log this and skip whole input block. Part-of: --- src/modules/bluetooth/bt-codec-msbc.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/modules/bluetooth/bt-codec-msbc.c b/src/modules/bluetooth/bt-codec-msbc.c index 107e0673f..c49a0f947 100644 --- a/src/modules/bluetooth/bt-codec-msbc.c +++ b/src/modules/bluetooth/bt-codec-msbc.c @@ -170,8 +170,16 @@ static size_t encode_buffer(void *codec_info, uint32_t timestamp, const uint8_t frame->padding = 0x00; if (PA_UNLIKELY(encoded <= 0)) { - pa_log_error("SBC encoding error (%li)", (long) encoded); - return -1; + pa_log_error("SBC encoding error (%li) for input size %lu, SBC codesize %lu", + (long) encoded, input_size, sbc_get_codesize(&sbc_info->sbc)); + + if (encoded < 0) { + *processed = 0; + return -1; + } else { + *processed = input_size; + return 0; + } } pa_assert_fp((size_t) encoded == sbc_info->codesize);