OSDN Git Service

sbc: fix frame length calculation for DUAL_CHANNEL mode
authorAurélien Zanelli <aurelien.zanelli@parrot.com>
Thu, 23 Oct 2014 14:32:20 +0000 (16:32 +0200)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Fri, 24 Oct 2014 14:56:46 +0000 (17:56 +0300)
According to A2DP specification, section 12.9, for DUAL_CHANNEL mode, we
shall use the same formula as for MONO mode.

sbc/sbc.c

index 534027e..e830388 100644 (file)
--- a/sbc/sbc.c
+++ b/sbc/sbc.c
@@ -1402,7 +1402,7 @@ SBC_EXPORT size_t sbc_get_frame_length(sbc_t *sbc)
 
        ret = 4 + (4 * subbands * channels) / 8;
        /* This term is not always evenly divide so we round it up */
-       if (channels == 1)
+       if (channels == 1 || sbc->mode == SBC_MODE_DUAL_CHANNEL)
                ret += ((blocks * channels * bitpool) + 7) / 8;
        else
                ret += (((joint ? subbands : 0) + blocks * bitpool) + 7) / 8;