[pulseaudio-discuss] [PATCH] bluetooth: Fix rendering a2dp data
Maarten Lankhorst
m.b.lankhorst at gmail.com
Fri Dec 10 15:05:53 PST 2010
makes my android phone slightly happier
---
src/modules/bluetooth/module-bluetooth-device.c | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 6d31c1e..8664001 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1387,7 +1387,7 @@ static int a2dp_process_push(struct userdata *u) {
pa_assert(u->source);
pa_assert(u->read_smoother);
- memchunk.memblock = pa_memblock_new(u->core->mempool, u->block_size);
+ memchunk.memblock = pa_memblock_new(u->core->mempool, u->block_size * 2);
memchunk.index = memchunk.length = 0;
for (;;) {
@@ -1442,7 +1442,8 @@ static int a2dp_process_push(struct userdata *u) {
to_decode = l - sizeof(*header) - sizeof(*payload);
d = pa_memblock_acquire(memchunk.memblock);
- to_write = memchunk.length = pa_memblock_get_length(memchunk.memblock);
+ to_write = pa_memblock_get_length(memchunk.memblock);
+ memchunk.length = 0;
while (PA_LIKELY(to_decode > 0 && to_write > 0)) {
size_t written;
@@ -1464,7 +1465,7 @@ static int a2dp_process_push(struct userdata *u) {
/* pa_log_debug("SBC: frame_length: %lu; codesize: %lu", (unsigned long) a2dp->frame_length, (unsigned long) a2dp->codesize); */
pa_assert_fp((size_t) decoded <= to_decode);
- pa_assert_fp((size_t) decoded == a2dp->frame_length);
+ pa_assert_fp((size_t) decoded <= a2dp->frame_length);
pa_assert_fp((size_t) written <= to_write);
pa_assert_fp((size_t) written == a2dp->codesize);
@@ -1474,10 +1475,14 @@ static int a2dp_process_push(struct userdata *u) {
d = (uint8_t*) d + written;
to_write -= written;
+ memchunk.length += written;
frame_count++;
}
+ if (to_decode)
+ pa_log_error("SBC: %lu bytes not decoded\n", to_decode);
+
pa_memblock_release(memchunk.memblock);
pa_source_post(u->source, &memchunk);
--
1.7.1
More information about the pulseaudio-discuss
mailing list