Add sync and async support in *testsrc

Make minumum alsa latency configurable.
This commit is contained in:
Wim Taymans 2017-04-03 16:54:44 +02:00
parent 01c13adab5
commit 5c32690cc8
13 changed files with 186 additions and 153 deletions

View file

@ -500,7 +500,6 @@ handle_rtnode_event (PinosStream *stream,
}
else if (SPA_EVENT_TYPE (event) == context->type.event_node.NeedInput) {
int i;
BufferId *bid;
for (i = 0; i < impl->trans->area->n_outputs; i++) {
SpaPortIO *output = &impl->trans->outputs[i];
@ -516,7 +515,6 @@ handle_rtnode_event (PinosStream *stream,
}
else if (SPA_EVENT_TYPE (event) == context->type.event_node.ReuseBuffer) {
SpaEventNodeReuseBuffer *p = (SpaEventNodeReuseBuffer *) event;
BufferId *bid;
if (p->body.port_id.value != impl->port_id)
return;

View file

@ -51,6 +51,8 @@ pinos_spa_node_load (PinosCore *core,
SpaEnumHandleFactoryFunc enum_func;
const SpaHandleFactory *factory;
void *iface;
SpaDictItem items[1];
SpaDict dict = SPA_DICT_INIT (1, items);
if ((hnd = dlopen (lib, RTLD_NOW)) == NULL) {
pinos_log_error ("can't load %s: %s", lib, dlerror());
@ -71,10 +73,13 @@ pinos_spa_node_load (PinosCore *core,
break;
}
items[0].key = "asynchronous";
items[0].value = "1";
handle = calloc (1, factory->size);
if ((res = spa_handle_factory_init (factory,
handle,
NULL,
&dict,
core->support,
core->n_support)) < 0) {
pinos_log_error ("can't make factory instance: %d", res);

View file

@ -798,14 +798,11 @@ static SpaResult
spa_proxy_node_process_output (SpaNode *node)
{
SpaProxy *this;
PinosNode *pnode;
int i;
if (node == NULL)
return SPA_RESULT_INVALID_ARGUMENTS;
this = SPA_CONTAINER_OF (node, SpaProxy, node);
pnode = this->pnode;
send_need_input (this);