mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
bluez5: iso-io: get proper group id for broadcast
This commit is contained in:
parent
b2e58198cc
commit
17c583bbe7
1 changed files with 16 additions and 6 deletions
|
|
@ -37,7 +37,7 @@ struct group {
|
||||||
struct spa_source source;
|
struct spa_source source;
|
||||||
struct spa_list streams;
|
struct spa_list streams;
|
||||||
int timerfd;
|
int timerfd;
|
||||||
uint8_t cig;
|
uint8_t id;
|
||||||
uint64_t next;
|
uint64_t next;
|
||||||
uint64_t duration;
|
uint64_t duration;
|
||||||
uint32_t paused;
|
uint32_t paused;
|
||||||
|
|
@ -155,7 +155,7 @@ static void group_on_timeout(struct spa_source *source)
|
||||||
if ((res = spa_system_timerfd_read(group->data_system, group->timerfd, &exp)) < 0) {
|
if ((res = spa_system_timerfd_read(group->data_system, group->timerfd, &exp)) < 0) {
|
||||||
if (res != -EAGAIN)
|
if (res != -EAGAIN)
|
||||||
spa_log_warn(group->log, "%p: ISO group:%u error reading timerfd: %s",
|
spa_log_warn(group->log, "%p: ISO group:%u error reading timerfd: %s",
|
||||||
group, group->cig, spa_strerror(res));
|
group, group->id, spa_strerror(res));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -178,7 +178,7 @@ static void group_on_timeout(struct spa_source *source)
|
||||||
|
|
||||||
if (group->paused) {
|
if (group->paused) {
|
||||||
--group->paused;
|
--group->paused;
|
||||||
spa_log_debug(group->log, "%p: ISO group:%d paused:%u", group, group->cig, group->paused);
|
spa_log_debug(group->log, "%p: ISO group:%u paused:%u", group, group->id, group->paused);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Produce output */
|
/* Produce output */
|
||||||
|
|
@ -194,7 +194,7 @@ static void group_on_timeout(struct spa_source *source)
|
||||||
}
|
}
|
||||||
if (stream->this.size == 0) {
|
if (stream->this.size == 0) {
|
||||||
spa_log_debug(group->log, "%p: ISO group:%u miss fd:%d",
|
spa_log_debug(group->log, "%p: ISO group:%u miss fd:%d",
|
||||||
group, group->cig, stream->fd);
|
group, group->id, stream->fd);
|
||||||
if (stream_silence(stream) < 0) {
|
if (stream_silence(stream) < 0) {
|
||||||
fail = true;
|
fail = true;
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -208,7 +208,7 @@ static void group_on_timeout(struct spa_source *source)
|
||||||
}
|
}
|
||||||
|
|
||||||
spa_log_trace(group->log, "%p: ISO group:%u sent fd:%d size:%u ts:%u idle:%d res:%d",
|
spa_log_trace(group->log, "%p: ISO group:%u sent fd:%d size:%u ts:%u idle:%d res:%d",
|
||||||
group, group->cig, stream->fd, (unsigned)stream->this.size,
|
group, group->id, stream->fd, (unsigned)stream->this.size,
|
||||||
(unsigned)stream->this.timestamp, stream->idle, res);
|
(unsigned)stream->this.timestamp, stream->idle, res);
|
||||||
|
|
||||||
stream->this.size = 0;
|
stream->this.size = 0;
|
||||||
|
|
@ -243,19 +243,29 @@ static struct group *group_create(struct spa_bt_transport *t,
|
||||||
struct spa_log *log, struct spa_loop *data_loop, struct spa_system *data_system)
|
struct spa_log *log, struct spa_loop *data_loop, struct spa_system *data_system)
|
||||||
{
|
{
|
||||||
struct group *group;
|
struct group *group;
|
||||||
|
uint8_t id;
|
||||||
|
|
||||||
if (t->bap_interval <= 5000) {
|
if (t->bap_interval <= 5000) {
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (t->profile & (SPA_BT_PROFILE_BAP_SINK | SPA_BT_PROFILE_BAP_SOURCE)) {
|
||||||
|
id = t->bap_cig;
|
||||||
|
} else if (t->profile & (SPA_BT_PROFILE_BAP_BROADCAST_SINK | SPA_BT_PROFILE_BAP_BROADCAST_SOURCE)) {
|
||||||
|
id = t->bap_big;
|
||||||
|
} else {
|
||||||
|
errno = EINVAL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
group = calloc(1, sizeof(struct group));
|
group = calloc(1, sizeof(struct group));
|
||||||
if (group == NULL)
|
if (group == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
spa_log_topic_init(log, &log_topic);
|
spa_log_topic_init(log, &log_topic);
|
||||||
|
|
||||||
group->cig = t->bap_cig;
|
group->id = id;
|
||||||
group->log = log;
|
group->log = log;
|
||||||
group->data_loop = data_loop;
|
group->data_loop = data_loop;
|
||||||
group->data_system = data_system;
|
group->data_system = data_system;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue