mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-15 07:00:05 -05:00
Remove direction
Direction is tied to the port id. Handle nodes with fixed ports.
This commit is contained in:
parent
7d8e2d53f7
commit
9485bd77e7
25 changed files with 246 additions and 165 deletions
|
|
@ -31,7 +31,6 @@
|
|||
typedef struct {
|
||||
PinosGstSink *sink;
|
||||
|
||||
guint id;
|
||||
PinosPort *port;
|
||||
|
||||
GstElement *src;
|
||||
|
|
@ -384,7 +383,6 @@ free_sink_port_data (SinkPortData *data)
|
|||
|
||||
static PinosPort *
|
||||
add_port (PinosNode *node,
|
||||
PinosDirection direction,
|
||||
guint id,
|
||||
GError **error)
|
||||
{
|
||||
|
|
@ -394,9 +392,8 @@ add_port (PinosNode *node,
|
|||
|
||||
data = g_slice_new0 (SinkPortData);
|
||||
data->sink = sink;
|
||||
data->id = id;
|
||||
data->port = PINOS_NODE_CLASS (pinos_gst_sink_parent_class)
|
||||
->add_port (node, direction, id, error);
|
||||
->add_port (node, id, error);
|
||||
|
||||
g_debug ("connecting signals");
|
||||
g_signal_connect (data->port, "activate", (GCallback) on_activate, data);
|
||||
|
|
@ -422,7 +419,7 @@ add_port (PinosNode *node,
|
|||
|
||||
static gboolean
|
||||
remove_port (PinosNode *node,
|
||||
guint id)
|
||||
PinosPort *port)
|
||||
{
|
||||
PinosGstSink *sink = PINOS_GST_SINK (node);
|
||||
PinosGstSinkPrivate *priv = sink->priv;
|
||||
|
|
@ -431,7 +428,7 @@ remove_port (PinosNode *node,
|
|||
for (walk = priv->ports; walk; walk = g_list_next (walk)) {
|
||||
SinkPortData *data = walk->data;
|
||||
|
||||
if (data->id == id) {
|
||||
if (data->port == port) {
|
||||
free_sink_port_data (data);
|
||||
priv->ports = g_list_delete_link (priv->ports, walk);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -433,7 +433,7 @@ free_source_port_data (SourcePortData *data)
|
|||
|
||||
static gboolean
|
||||
remove_port (PinosNode *node,
|
||||
guint id)
|
||||
PinosPort *port)
|
||||
{
|
||||
PinosGstSource *source = PINOS_GST_SOURCE (node);
|
||||
PinosGstSourcePrivate *priv = source->priv;
|
||||
|
|
@ -442,7 +442,7 @@ remove_port (PinosNode *node,
|
|||
for (walk = priv->ports; walk; walk = g_list_next (walk)) {
|
||||
SourcePortData *data = walk->data;
|
||||
|
||||
if (data->id == id) {
|
||||
if (data->port == port) {
|
||||
free_source_port_data (data);
|
||||
priv->ports = g_list_delete_link (priv->ports, walk);
|
||||
break;
|
||||
|
|
@ -552,7 +552,6 @@ create_best_element (GstCaps *caps)
|
|||
|
||||
static PinosPort *
|
||||
add_port (PinosNode *node,
|
||||
PinosDirection direction,
|
||||
guint id,
|
||||
GError **error)
|
||||
{
|
||||
|
|
@ -577,9 +576,8 @@ add_port (PinosNode *node,
|
|||
|
||||
data = g_slice_new0 (SourcePortData);
|
||||
data->source = source;
|
||||
data->id = id;
|
||||
data->port = PINOS_NODE_CLASS (pinos_gst_source_parent_class)
|
||||
->add_port (node, direction, id, error);
|
||||
->add_port (node, id, error);
|
||||
|
||||
g_debug ("connecting signals");
|
||||
g_signal_connect (data->port, "activate", (GCallback) on_activate, data);
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@
|
|||
typedef struct {
|
||||
PinosSpaAlsaSink *sink;
|
||||
|
||||
guint id;
|
||||
PinosPort *port;
|
||||
} SinkPortData;
|
||||
|
||||
|
|
@ -166,6 +165,7 @@ on_sink_event (SpaNode *node, SpaEvent *event, void *user_data)
|
|||
PinosRingbufferArea areas[2];
|
||||
uint8_t *data;
|
||||
size_t size, towrite, total;
|
||||
SpaEventNeedInput *ni = event->data;
|
||||
|
||||
size = 0;
|
||||
data = NULL;
|
||||
|
|
@ -186,7 +186,7 @@ on_sink_event (SpaNode *node, SpaEvent *event, void *user_data)
|
|||
|
||||
pinos_ringbuffer_read_advance (priv->ringbuffer, total);
|
||||
|
||||
iinfo.port_id = event->port_id;
|
||||
iinfo.port_id = ni->port_id;
|
||||
iinfo.flags = SPA_INPUT_FLAG_NONE;
|
||||
iinfo.buffer_id = 0;
|
||||
|
||||
|
|
@ -417,7 +417,6 @@ on_received_event (PinosPort *port,
|
|||
|
||||
static PinosPort *
|
||||
add_port (PinosNode *node,
|
||||
PinosDirection direction,
|
||||
guint id,
|
||||
GError **error)
|
||||
{
|
||||
|
|
@ -427,9 +426,8 @@ add_port (PinosNode *node,
|
|||
|
||||
data = g_slice_new0 (SinkPortData);
|
||||
data->sink = sink;
|
||||
data->id = id;
|
||||
data->port = PINOS_NODE_CLASS (pinos_spa_alsa_sink_parent_class)
|
||||
->add_port (node, direction, id, error);
|
||||
->add_port (node, id, error);
|
||||
|
||||
pinos_port_set_received_cb (data->port, on_received_buffer, on_received_event, sink, NULL);
|
||||
|
||||
|
|
@ -444,7 +442,7 @@ add_port (PinosNode *node,
|
|||
|
||||
static gboolean
|
||||
remove_port (PinosNode *node,
|
||||
guint id)
|
||||
PinosPort *port)
|
||||
{
|
||||
PinosSpaAlsaSink *sink = PINOS_SPA_ALSA_SINK (node);
|
||||
PinosSpaAlsaSinkPrivate *priv = sink->priv;
|
||||
|
|
@ -453,7 +451,7 @@ remove_port (PinosNode *node,
|
|||
for (walk = priv->ports; walk; walk = g_list_next (walk)) {
|
||||
SinkPortData *data = walk->data;
|
||||
|
||||
if (data->id == id) {
|
||||
if (data->port == port) {
|
||||
free_sink_port_data (data);
|
||||
priv->ports = g_list_delete_link (priv->ports, walk);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -332,10 +332,10 @@ on_deactivate (PinosPort *port, gpointer user_data)
|
|||
|
||||
static gboolean
|
||||
remove_port (PinosNode *node,
|
||||
guint id)
|
||||
PinosPort *port)
|
||||
{
|
||||
return PINOS_NODE_CLASS (pinos_spa_v4l2_source_parent_class)
|
||||
->remove_port (node, id);
|
||||
->remove_port (node, port);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -377,7 +377,7 @@ on_received_event (PinosPort *port, SpaEvent *event, GError **error, gpointer us
|
|||
SpaEventReuseBuffer *rb = event->data;
|
||||
|
||||
if ((res = spa_node_port_reuse_buffer (node->node,
|
||||
event->port_id,
|
||||
rb->port_id,
|
||||
rb->buffer_id)) < 0)
|
||||
g_warning ("client-node %p: error reuse buffer: %d", node, res);
|
||||
break;
|
||||
|
|
@ -393,7 +393,6 @@ on_received_event (PinosPort *port, SpaEvent *event, GError **error, gpointer us
|
|||
|
||||
static PinosPort *
|
||||
add_port (PinosNode *node,
|
||||
PinosDirection direction,
|
||||
guint id,
|
||||
GError **error)
|
||||
{
|
||||
|
|
@ -401,7 +400,7 @@ add_port (PinosNode *node,
|
|||
PinosPort *port;
|
||||
|
||||
port = PINOS_NODE_CLASS (pinos_spa_v4l2_source_parent_class)
|
||||
->add_port (node, direction, id, error);
|
||||
->add_port (node, id, error);
|
||||
|
||||
pinos_port_set_received_cb (port, on_received_buffer, on_received_event, node, NULL);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue