mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
pod: use dynamic pod builder in some places
This commit is contained in:
parent
d3a1b9fe31
commit
07a410e715
5 changed files with 53 additions and 39 deletions
|
|
@ -35,6 +35,7 @@
|
|||
#include <spa/utils/ringbuffer.h>
|
||||
#include <spa/utils/string.h>
|
||||
#include <spa/pod/filter.h>
|
||||
#include <spa/pod/dynamic.h>
|
||||
#include <spa/debug/format.h>
|
||||
#include <spa/debug/types.h>
|
||||
#include <spa/debug/pod.h>
|
||||
|
|
@ -398,7 +399,7 @@ static int enum_params(struct filter *d, struct spa_list *param_list, int seq,
|
|||
{
|
||||
struct spa_result_node_params result;
|
||||
uint8_t buffer[1024];
|
||||
struct spa_pod_builder b = { 0 };
|
||||
struct spa_pod_dynamic_builder b;
|
||||
uint32_t count = 0;
|
||||
struct param *p;
|
||||
bool found = false;
|
||||
|
|
@ -425,13 +426,14 @@ static int enum_params(struct filter *d, struct spa_list *param_list, int seq,
|
|||
|
||||
found = true;
|
||||
|
||||
spa_pod_builder_init(&b, buffer, sizeof(buffer));
|
||||
if (spa_pod_filter(&b, &result.param, param, filter) != 0)
|
||||
continue;
|
||||
spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096);
|
||||
if (spa_pod_filter(&b.b, &result.param, param, filter) == 0) {
|
||||
spa_node_emit_result(&d->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
count++;
|
||||
}
|
||||
spa_pod_dynamic_builder_clean(&b);
|
||||
|
||||
spa_node_emit_result(&d->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
|
||||
if (++count == num)
|
||||
if (count == num)
|
||||
break;
|
||||
}
|
||||
return found ? 0 : -ENOENT;
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#include <spa/debug/types.h>
|
||||
#include <spa/monitor/utils.h>
|
||||
#include <spa/pod/filter.h>
|
||||
#include <spa/pod/dynamic.h>
|
||||
#include <spa/utils/string.h>
|
||||
|
||||
#include "pipewire/impl.h"
|
||||
|
|
@ -324,7 +325,7 @@ int pw_impl_device_for_each_param(struct pw_impl_device *device,
|
|||
if (pi->user == 1) {
|
||||
struct pw_param *p;
|
||||
uint8_t buffer[4096];
|
||||
struct spa_pod_builder b = { 0 };
|
||||
struct spa_pod_dynamic_builder b;
|
||||
struct spa_result_device_params result;
|
||||
uint32_t count = 0;
|
||||
|
||||
|
|
@ -339,14 +340,15 @@ int pw_impl_device_for_each_param(struct pw_impl_device *device,
|
|||
if (result.index < index)
|
||||
continue;
|
||||
|
||||
spa_pod_builder_init(&b, buffer, sizeof(buffer));
|
||||
if (spa_pod_filter(&b, &result.param, p->param, filter) != 0)
|
||||
continue;
|
||||
spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096);
|
||||
if (spa_pod_filter(&b.b, &result.param, p->param, filter) == 0) {
|
||||
pw_log_debug("%p: %d param %u", device, seq, result.index);
|
||||
result_device_params(&user_data, seq, 0, SPA_RESULT_TYPE_DEVICE_PARAMS, &result);
|
||||
count++;
|
||||
}
|
||||
spa_pod_dynamic_builder_clean(&b);
|
||||
|
||||
pw_log_debug("%p: %d param %u", device, seq, result.index);
|
||||
result_device_params(&user_data, seq, 0, SPA_RESULT_TYPE_DEVICE_PARAMS, &result);
|
||||
|
||||
if (++count == max)
|
||||
if (count == max)
|
||||
break;
|
||||
}
|
||||
res = 0;
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
#include <spa/support/system.h>
|
||||
#include <spa/pod/parser.h>
|
||||
#include <spa/pod/filter.h>
|
||||
#include <spa/pod/dynamic.h>
|
||||
#include <spa/node/utils.h>
|
||||
#include <spa/debug/types.h>
|
||||
#include <spa/utils/string.h>
|
||||
|
|
@ -1967,7 +1968,7 @@ int pw_impl_node_for_each_param(struct pw_impl_node *node,
|
|||
if (pi->user == 1) {
|
||||
struct pw_param *p;
|
||||
uint8_t buffer[4096];
|
||||
struct spa_pod_builder b = { 0 };
|
||||
struct spa_pod_dynamic_builder b;
|
||||
struct spa_result_node_params result;
|
||||
uint32_t count = 0;
|
||||
|
||||
|
|
@ -1982,14 +1983,16 @@ int pw_impl_node_for_each_param(struct pw_impl_node *node,
|
|||
if (result.index < index)
|
||||
continue;
|
||||
|
||||
spa_pod_builder_init(&b, buffer, sizeof(buffer));
|
||||
if (spa_pod_filter(&b, &result.param, p->param, filter) != 0)
|
||||
continue;
|
||||
spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096);
|
||||
|
||||
pw_log_debug("%p: %d param %u", node, seq, result.index);
|
||||
result_node_params(&user_data, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
if (spa_pod_filter(&b.b, &result.param, p->param, filter) == 0) {
|
||||
pw_log_debug("%p: %d param %u", node, seq, result.index);
|
||||
result_node_params(&user_data, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
count++;
|
||||
}
|
||||
spa_pod_dynamic_builder_clean(&b);
|
||||
|
||||
if (++count == max)
|
||||
if (count == max)
|
||||
break;
|
||||
}
|
||||
res = 0;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#include <spa/utils/string.h>
|
||||
#include <spa/debug/types.h>
|
||||
#include <spa/pod/filter.h>
|
||||
#include <spa/pod/dynamic.h>
|
||||
|
||||
#include "pipewire/impl.h"
|
||||
#include "pipewire/private.h"
|
||||
|
|
@ -229,17 +230,19 @@ int pw_impl_port_init_mix(struct pw_impl_port *port, struct pw_impl_port_mix *mi
|
|||
{
|
||||
uint32_t idx = 0;
|
||||
uint8_t buffer[1024];
|
||||
struct spa_pod_builder b;
|
||||
struct spa_pod_dynamic_builder b;
|
||||
struct spa_pod *param;
|
||||
|
||||
spa_pod_builder_init(&b, buffer, sizeof(buffer));
|
||||
spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096);
|
||||
|
||||
if (spa_node_port_enum_params_sync(port->mix,
|
||||
pw_direction_reverse(port->direction), 0,
|
||||
SPA_PARAM_Format, &idx, NULL, ¶m, &b) == 1) {
|
||||
SPA_PARAM_Format, &idx, NULL, ¶m, &b.b) == 1) {
|
||||
spa_node_port_set_param(port->mix,
|
||||
port->direction, port_id,
|
||||
SPA_PARAM_Format, 0, param);
|
||||
}
|
||||
spa_pod_dynamic_builder_clean(&b);
|
||||
}
|
||||
|
||||
spa_list_append(&port->mix_list, &mix->link);
|
||||
|
|
@ -1216,7 +1219,7 @@ int pw_impl_port_for_each_param(struct pw_impl_port *port,
|
|||
if (pi->user == 1) {
|
||||
struct pw_param *p;
|
||||
uint8_t buffer[1024];
|
||||
struct spa_pod_builder b = { 0 };
|
||||
struct spa_pod_dynamic_builder b;
|
||||
struct spa_result_node_params result;
|
||||
uint32_t count = 0;
|
||||
|
||||
|
|
@ -1231,14 +1234,16 @@ int pw_impl_port_for_each_param(struct pw_impl_port *port,
|
|||
if (result.index < index)
|
||||
continue;
|
||||
|
||||
spa_pod_builder_init(&b, buffer, sizeof(buffer));
|
||||
if (spa_pod_filter(&b, &result.param, p->param, filter) != 0)
|
||||
continue;
|
||||
spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096);
|
||||
|
||||
pw_log_debug("%p: %d param %u", port, seq, result.index);
|
||||
result_port_params(&user_data, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
if (spa_pod_filter(&b.b, &result.param, p->param, filter) >= 0) {
|
||||
pw_log_debug("%p: %d param %u", port, seq, result.index);
|
||||
result_port_params(&user_data, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
count++;
|
||||
}
|
||||
spa_pod_dynamic_builder_clean(&b);
|
||||
|
||||
if (++count == max)
|
||||
if (count == max)
|
||||
break;
|
||||
}
|
||||
res = 0;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#include <spa/node/utils.h>
|
||||
#include <spa/utils/ringbuffer.h>
|
||||
#include <spa/pod/filter.h>
|
||||
#include <spa/pod/dynamic.h>
|
||||
#include <spa/debug/format.h>
|
||||
#include <spa/debug/types.h>
|
||||
#include <spa/debug/pod.h>
|
||||
|
|
@ -483,7 +484,7 @@ static int enum_params(void *object, bool is_port, int seq, uint32_t id, uint32_
|
|||
struct stream *d = object;
|
||||
struct spa_result_node_params result;
|
||||
uint8_t buffer[1024];
|
||||
struct spa_pod_builder b = { 0 };
|
||||
struct spa_pod_dynamic_builder b;
|
||||
uint32_t count = 0;
|
||||
struct param *p;
|
||||
bool found = false;
|
||||
|
|
@ -510,13 +511,14 @@ static int enum_params(void *object, bool is_port, int seq, uint32_t id, uint32_
|
|||
|
||||
found = true;
|
||||
|
||||
spa_pod_builder_init(&b, buffer, sizeof(buffer));
|
||||
if (spa_pod_filter(&b, &result.param, param, filter) != 0)
|
||||
continue;
|
||||
spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096);
|
||||
if (spa_pod_filter(&b.b, &result.param, param, filter) == 0) {
|
||||
spa_node_emit_result(&d->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
count++;
|
||||
}
|
||||
spa_pod_dynamic_builder_clean(&b);
|
||||
|
||||
spa_node_emit_result(&d->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
|
||||
if (++count == num)
|
||||
if (count == num)
|
||||
break;
|
||||
}
|
||||
return found ? 0 : -ENOENT;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue