Remove direction

Direction is tied to the port id.
Handle nodes with fixed ports.
This commit is contained in:
Wim Taymans 2016-08-29 18:31:53 +02:00
parent 7d8e2d53f7
commit 9485bd77e7
25 changed files with 246 additions and 165 deletions

View file

@ -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;

View file

@ -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);

View file

@ -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;

View file

@ -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);