mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-05 13:30:02 -05:00
jack: update to new pod api
This commit is contained in:
parent
1687453636
commit
c1da362a24
1 changed files with 49 additions and 50 deletions
|
|
@ -981,21 +981,19 @@ static int param_enum_format(struct client *c, struct port *p,
|
||||||
{
|
{
|
||||||
switch (p->object->port.type_id) {
|
switch (p->object->port.type_id) {
|
||||||
case 0:
|
case 0:
|
||||||
*param = spa_pod_builder_object(b,
|
*param = spa_pod_builder_add_object(b,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
SPA_FORMAT_mediaType, &SPA_POD_Id(SPA_MEDIA_TYPE_audio),
|
SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_audio),
|
||||||
SPA_FORMAT_mediaSubtype, &SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
|
SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
|
||||||
SPA_FORMAT_AUDIO_format, &SPA_POD_Id(SPA_AUDIO_FORMAT_F32P),
|
SPA_FORMAT_AUDIO_format, SPA_POD_Id(SPA_AUDIO_FORMAT_F32P),
|
||||||
SPA_FORMAT_AUDIO_rate, &SPA_POD_CHOICE_RANGE_Int(DEFAULT_SAMPLE_RATE, 1, INT32_MAX),
|
SPA_FORMAT_AUDIO_rate, SPA_POD_CHOICE_RANGE_Int(DEFAULT_SAMPLE_RATE, 1, INT32_MAX),
|
||||||
SPA_FORMAT_AUDIO_channels, &SPA_POD_Int(1),
|
SPA_FORMAT_AUDIO_channels, SPA_POD_Int(1));
|
||||||
0);
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
*param = spa_pod_builder_object(b,
|
*param = spa_pod_builder_add_object(b,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
SPA_FORMAT_mediaType, &SPA_POD_Id(SPA_MEDIA_TYPE_stream),
|
SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_stream),
|
||||||
SPA_FORMAT_mediaSubtype, &SPA_POD_Id(SPA_MEDIA_SUBTYPE_midi),
|
SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_midi));
|
||||||
0);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
@ -1006,27 +1004,33 @@ static int param_enum_format(struct client *c, struct port *p,
|
||||||
static int param_format(struct client *c, struct port *p,
|
static int param_format(struct client *c, struct port *p,
|
||||||
struct spa_pod **param, struct spa_pod_builder *b)
|
struct spa_pod **param, struct spa_pod_builder *b)
|
||||||
{
|
{
|
||||||
|
uint32_t channels[] = { SPA_AUDIO_CHANNEL_MONO };
|
||||||
switch (p->object->port.type_id) {
|
switch (p->object->port.type_id) {
|
||||||
case 0:
|
case 0:
|
||||||
|
spa_pod_builder_add(b,
|
||||||
*param = spa_pod_builder_object(b,
|
"{",
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_Format,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_Format,
|
||||||
SPA_FORMAT_mediaType, &SPA_POD_Id(SPA_MEDIA_TYPE_audio),
|
SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_audio),
|
||||||
SPA_FORMAT_mediaSubtype, &SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
|
SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
|
||||||
SPA_FORMAT_AUDIO_format, &SPA_POD_Id(SPA_AUDIO_FORMAT_F32P),
|
SPA_FORMAT_AUDIO_format, SPA_POD_Id(SPA_AUDIO_FORMAT_F32P), NULL);
|
||||||
SPA_FORMAT_AUDIO_rate, p->have_format ?
|
if (p->have_format) {
|
||||||
(void*)&SPA_POD_Int(p->rate) :
|
spa_pod_builder_add(b,
|
||||||
(void*)&SPA_POD_CHOICE_RANGE_Int(DEFAULT_SAMPLE_RATE, 1, INT32_MAX),
|
SPA_FORMAT_AUDIO_rate, SPA_POD_Int(p->rate), NULL);
|
||||||
SPA_FORMAT_AUDIO_channels, &SPA_POD_Int(1),
|
} else {
|
||||||
SPA_FORMAT_AUDIO_position, &SPA_POD_Array(uint32_t, SPA_TYPE_Id, 1, SPA_AUDIO_CHANNEL_MONO),
|
spa_pod_builder_add(b,
|
||||||
0);
|
SPA_FORMAT_AUDIO_rate, SPA_POD_CHOICE_RANGE_Int(DEFAULT_SAMPLE_RATE,
|
||||||
|
1, INT32_MAX), NULL);
|
||||||
|
}
|
||||||
|
spa_pod_builder_add(b,
|
||||||
|
SPA_FORMAT_AUDIO_channels, SPA_POD_Int(1),
|
||||||
|
SPA_FORMAT_AUDIO_position, SPA_POD_Array(sizeof(uint32_t), SPA_TYPE_Id, 1, channels), NULL);
|
||||||
|
*param = spa_pod_builder_pop(b);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
*param = spa_pod_builder_object(b,
|
*param = spa_pod_builder_add_object(b,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_Format,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_Format,
|
||||||
SPA_FORMAT_mediaType, &SPA_POD_Id(SPA_MEDIA_TYPE_stream),
|
SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_stream),
|
||||||
SPA_FORMAT_mediaSubtype, &SPA_POD_Id(SPA_MEDIA_SUBTYPE_midi),
|
SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_midi));
|
||||||
0);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
@ -1037,14 +1041,13 @@ static int param_format(struct client *c, struct port *p,
|
||||||
static int param_buffers(struct client *c, struct port *p,
|
static int param_buffers(struct client *c, struct port *p,
|
||||||
struct spa_pod **param, struct spa_pod_builder *b)
|
struct spa_pod **param, struct spa_pod_builder *b)
|
||||||
{
|
{
|
||||||
*param = spa_pod_builder_object(b,
|
*param = spa_pod_builder_add_object(b,
|
||||||
SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
|
SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
|
||||||
SPA_PARAM_BUFFERS_buffers, &SPA_POD_CHOICE_RANGE_Int(1, 1, MAX_BUFFERS),
|
SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(1, 1, MAX_BUFFERS),
|
||||||
SPA_PARAM_BUFFERS_blocks, &SPA_POD_Int(1),
|
SPA_PARAM_BUFFERS_blocks, SPA_POD_Int(1),
|
||||||
SPA_PARAM_BUFFERS_size, &SPA_POD_CHOICE_STEP_Int(MAX_BUFFER_SIZE * sizeof(float), 4, INT32_MAX, 4),
|
SPA_PARAM_BUFFERS_size, SPA_POD_CHOICE_STEP_Int(MAX_BUFFER_SIZE * sizeof(float), 4, INT32_MAX, 4),
|
||||||
SPA_PARAM_BUFFERS_stride, &SPA_POD_Int(4),
|
SPA_PARAM_BUFFERS_stride, SPA_POD_Int(4),
|
||||||
SPA_PARAM_BUFFERS_align, &SPA_POD_Int(16),
|
SPA_PARAM_BUFFERS_align, SPA_POD_Int(16));
|
||||||
0);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1053,25 +1056,22 @@ static int param_io(struct client *c, struct port *p,
|
||||||
{
|
{
|
||||||
switch (p->object->port.type_id) {
|
switch (p->object->port.type_id) {
|
||||||
case 0:
|
case 0:
|
||||||
*param = spa_pod_builder_object(b,
|
*param = spa_pod_builder_add_object(b,
|
||||||
SPA_TYPE_OBJECT_ParamIO, SPA_PARAM_IO,
|
SPA_TYPE_OBJECT_ParamIO, SPA_PARAM_IO,
|
||||||
SPA_PARAM_IO_id, &SPA_POD_Id(SPA_IO_Buffers),
|
SPA_PARAM_IO_id, SPA_POD_Id(SPA_IO_Buffers),
|
||||||
SPA_PARAM_IO_size, &SPA_POD_Int(sizeof(struct spa_io_buffers)),
|
SPA_PARAM_IO_size, SPA_POD_Int(sizeof(struct spa_io_buffers)));
|
||||||
0);
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (p->direction == SPA_DIRECTION_OUTPUT) {
|
if (p->direction == SPA_DIRECTION_OUTPUT) {
|
||||||
*param = spa_pod_builder_object(b,
|
*param = spa_pod_builder_add_object(b,
|
||||||
SPA_TYPE_OBJECT_ParamIO, SPA_PARAM_IO,
|
SPA_TYPE_OBJECT_ParamIO, SPA_PARAM_IO,
|
||||||
SPA_PARAM_IO_id, &SPA_POD_Id(SPA_IO_Notify),
|
SPA_PARAM_IO_id, SPA_POD_Id(SPA_IO_Notify),
|
||||||
SPA_PARAM_IO_size, &SPA_POD_Int(BUFFER_SIZE_MAX),
|
SPA_PARAM_IO_size, SPA_POD_Int(BUFFER_SIZE_MAX));
|
||||||
0);
|
|
||||||
} else {
|
} else {
|
||||||
*param = spa_pod_builder_object(b,
|
*param = spa_pod_builder_add_object(b,
|
||||||
SPA_TYPE_OBJECT_ParamIO, SPA_PARAM_IO,
|
SPA_TYPE_OBJECT_ParamIO, SPA_PARAM_IO,
|
||||||
SPA_PARAM_IO_id, &SPA_POD_Id(SPA_IO_Control),
|
SPA_PARAM_IO_id, SPA_POD_Id(SPA_IO_Control),
|
||||||
SPA_PARAM_IO_size, &SPA_POD_Int(sizeof(struct spa_io_sequence)),
|
SPA_PARAM_IO_size, SPA_POD_Int(sizeof(struct spa_io_sequence)));
|
||||||
0);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -1093,9 +1093,7 @@ static int port_set_format(struct client *c, struct port *p,
|
||||||
else {
|
else {
|
||||||
struct spa_audio_info info = { 0 };
|
struct spa_audio_info info = { 0 };
|
||||||
|
|
||||||
spa_pod_object_parse(param,
|
spa_format_parse(param, &info.media_type, &info.media_subtype);
|
||||||
"I", &info.media_type,
|
|
||||||
"I", &info.media_subtype);
|
|
||||||
|
|
||||||
switch (info.media_type) {
|
switch (info.media_type) {
|
||||||
case SPA_MEDIA_TYPE_audio:
|
case SPA_MEDIA_TYPE_audio:
|
||||||
|
|
@ -1685,8 +1683,6 @@ jack_client_t * jack_client_open (const char *client_name,
|
||||||
while (busy) {
|
while (busy) {
|
||||||
const char *error = NULL;
|
const char *error = NULL;
|
||||||
|
|
||||||
pw_thread_loop_wait(client->context.loop);
|
|
||||||
|
|
||||||
switch (pw_remote_get_state(client->remote, &error)) {
|
switch (pw_remote_get_state(client->remote, &error)) {
|
||||||
case PW_REMOTE_STATE_ERROR:
|
case PW_REMOTE_STATE_ERROR:
|
||||||
goto server_failed;
|
goto server_failed;
|
||||||
|
|
@ -1698,6 +1694,9 @@ jack_client_t * jack_client_open (const char *client_name,
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (busy)
|
||||||
|
pw_thread_loop_wait(client->context.loop);
|
||||||
|
|
||||||
}
|
}
|
||||||
client->core_proxy = pw_remote_get_core_proxy(client->remote);
|
client->core_proxy = pw_remote_get_core_proxy(client->remote);
|
||||||
pw_core_proxy_add_listener(client->core_proxy,
|
pw_core_proxy_add_listener(client->core_proxy,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue