diff options
Diffstat (limited to 'src/modules/bluetooth/module-bluetooth-device.c')
-rw-r--r-- | src/modules/bluetooth/module-bluetooth-device.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c index 4df2ca4d..1b61a6fc 100644 --- a/src/modules/bluetooth/module-bluetooth-device.c +++ b/src/modules/bluetooth/module-bluetooth-device.c @@ -57,9 +57,6 @@ #define MAX_BITPOOL 64 #define MIN_BITPOOL 2U -#define SOL_SCO 17 -#define SCO_TXBUFS 0x03 -#define SCO_RXBUFS 0x04 PA_MODULE_AUTHOR("Joao Paulo Rechi Vita"); PA_MODULE_DESCRIPTION("Bluetooth audio sink and source"); @@ -78,6 +75,10 @@ PA_MODULE_USAGE( "sco_sink=<SCO over PCM sink name> " "sco_source=<SCO over PCM source name>"); +/* TODO: not close fd when entering suspend mode in a2dp */ + +/* TODO: BT_PCM_FLAG_NREC */ + static const char* const valid_modargs[] = { "name", "card_name", @@ -691,9 +692,6 @@ static int start_stream_fd(struct userdata *u) { return -1; } -/* setsockopt(u->stream_fd, SOL_SCO, SCO_TXBUFS, &period_count, sizeof(period_count)); */ -/* setsockopt(u->stream_fd, SOL_SCO, SCO_SNDBUF, &period_count, sizeof(period_count)); */ - pa_make_fd_nonblock(u->stream_fd); pa_make_socket_low_delay(u->stream_fd); @@ -953,7 +951,7 @@ static int a2dp_process_render(struct userdata *u) { void *d; const void *p; unsigned frame_count; - int written; + size_t written; uint64_t writing_at; pa_assert(u); @@ -979,14 +977,14 @@ static int a2dp_process_render(struct userdata *u) { writing_at = u->write_index; do { - int encoded; + ssize_t encoded; if (!u->write_memchunk.memblock) pa_sink_render_full(u->sink, u->block_size, &u->write_memchunk); p = (const uint8_t*) pa_memblock_acquire(u->write_memchunk.memblock) + u->write_memchunk.index; encoded = sbc_encode(&a2dp->sbc, - (void*) p, u->write_memchunk.length, + p, u->write_memchunk.length, d, left, &written); @@ -1001,10 +999,11 @@ static int a2dp_process_render(struct userdata *u) { return -1; } - pa_assert(written >= 0); - pa_assert((size_t) encoded <= u->write_memchunk.length); + pa_assert((size_t) encoded == sbc_get_codesize(&a2dp->sbc)); + pa_assert((size_t) written <= left); + pa_assert((size_t) written == sbc_get_frame_length(&a2dp->sbc)); /* pa_log_debug("SBC: encoded: %d; written: %d", encoded, written); */ @@ -1023,7 +1022,7 @@ static int a2dp_process_render(struct userdata *u) { frame_count++; - } while ((uint8_t*) d - (uint8_t*) a2dp->buffer + written < (ptrdiff_t) u->link_mtu); + } while (((uint8_t*) d - ((uint8_t*) a2dp->buffer + sbc_get_frame_length(&a2dp->sbc))) < (ptrdiff_t) u->link_mtu); /* write it to the fifo */ memset(a2dp->buffer, 0, sizeof(*header) + sizeof(*payload)); |