[PATCH 3/5] winegstreamer: Move the "my_src" and "their_sink" fields to struct wg_parser.

Zebediah Figura z.figura12 at gmail.com
Fri Jan 29 23:58:05 CST 2021


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/winegstreamer/gstdemux.c | 54 ++++++++++++++++++-----------------
 1 file changed, 28 insertions(+), 26 deletions(-)

diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c
index 2bd6622b889..377f548d806 100644
--- a/dlls/winegstreamer/gstdemux.c
+++ b/dlls/winegstreamer/gstdemux.c
@@ -50,6 +50,7 @@ struct wg_parser
 {
     GstElement *container;
     GstBus *bus;
+    GstPad *my_src, *their_sink;
 };
 
 struct parser
@@ -73,7 +74,6 @@ struct parser
      * separate lock. */
     bool streaming, flushing, sink_connected;
 
-    GstPad *my_src, *their_sink;
     guint64 start, nextofs, nextpullofs, stop;
 
     pthread_mutex_t mutex;
@@ -623,6 +623,7 @@ static gboolean query_sink(GstPad *pad, GstObject *parent, GstQuery *query)
 
 static gboolean gst_base_src_perform_seek(struct parser *This, GstEvent *event)
 {
+    struct wg_parser *parser = This->wg_parser;
     gboolean res = TRUE;
     gdouble rate;
     GstFormat seek_format;
@@ -650,9 +651,9 @@ static gboolean gst_base_src_perform_seek(struct parser *This, GstEvent *event)
     if (flush) {
         tevent = gst_event_new_flush_start();
         gst_event_set_seqnum(tevent, seqnum);
-        gst_pad_push_event(This->my_src, tevent);
+        gst_pad_push_event(parser->my_src, tevent);
         if (thread)
-            gst_pad_set_active(This->my_src, 1);
+            gst_pad_set_active(parser->my_src, 1);
     }
 
     This->nextofs = This->start = cur;
@@ -661,9 +662,9 @@ static gboolean gst_base_src_perform_seek(struct parser *This, GstEvent *event)
     if (flush) {
         tevent = gst_event_new_flush_stop(TRUE);
         gst_event_set_seqnum(tevent, seqnum);
-        gst_pad_push_event(This->my_src, tevent);
+        gst_pad_push_event(parser->my_src, tevent);
         if (thread)
-            gst_pad_set_active(This->my_src, 1);
+            gst_pad_set_active(parser->my_src, 1);
     }
 
     return res;
@@ -832,6 +833,7 @@ static GstFlowReturn request_buffer_src(GstPad *pad, GstObject *parent, guint64
 static void *push_data(void *iface)
 {
     struct parser *This = iface;
+    struct wg_parser *parser = This->wg_parser;
     GstBuffer *buffer;
     LONGLONG maxlen;
 
@@ -853,7 +855,7 @@ static void *push_data(void *iface)
             break;
         len = min(16384, maxlen - This->nextofs);
 
-        if ((ret = request_buffer_src(This->my_src, NULL, This->nextofs, len, &buffer)) < 0)
+        if ((ret = request_buffer_src(parser->my_src, NULL, This->nextofs, len, &buffer)) < 0)
         {
             GST_ERROR("Failed to read data, ret %s.", gst_flow_get_name(ret));
             break;
@@ -862,7 +864,7 @@ static void *push_data(void *iface)
         This->nextofs += len;
 
         buffer->duration = buffer->pts = -1;
-        if ((ret = gst_pad_push(This->my_src, buffer)) < 0)
+        if ((ret = gst_pad_push(parser->my_src, buffer)) < 0)
         {
             GST_ERROR("Failed to push data, ret %s.", gst_flow_get_name(ret));
             break;
@@ -871,7 +873,7 @@ static void *push_data(void *iface)
 
     gst_buffer_unref(buffer);
 
-    gst_pad_push_event(This->my_src, gst_event_new_eos());
+    gst_pad_push_event(parser->my_src, gst_event_new_eos());
 
     GST_DEBUG("Stopping push thread.");
 
@@ -1587,12 +1589,12 @@ static HRESULT GST_Connect(struct parser *This, IPin *pConnectPin)
     parser->container = gst_bin_new(NULL);
     gst_element_set_bus(parser->container, parser->bus);
 
-    This->my_src = gst_pad_new_from_static_template(&src_template, "quartz-src");
-    gst_pad_set_getrange_function(This->my_src, request_buffer_src);
-    gst_pad_set_query_function(This->my_src, query_function);
-    gst_pad_set_activatemode_function(This->my_src, activate_mode);
-    gst_pad_set_event_function(This->my_src, event_src);
-    gst_pad_set_element_private (This->my_src, This);
+    parser->my_src = gst_pad_new_from_static_template(&src_template, "quartz-src");
+    gst_pad_set_getrange_function(parser->my_src, request_buffer_src);
+    gst_pad_set_query_function(parser->my_src, query_function);
+    gst_pad_set_activatemode_function(parser->my_src, activate_mode);
+    gst_pad_set_event_function(parser->my_src, event_src);
+    gst_pad_set_element_private (parser->my_src, This);
 
     This->start = This->nextofs = This->nextpullofs = This->stop = 0;
 
@@ -1854,13 +1856,13 @@ static BOOL decodebin_parser_init_gst(struct parser *filter)
     g_signal_connect(element, "autoplug-select", G_CALLBACK(autoplug_blacklist), filter);
     g_signal_connect(element, "no-more-pads", G_CALLBACK(no_more_pads), filter);
 
-    filter->their_sink = gst_element_get_static_pad(element, "sink");
+    parser->their_sink = gst_element_get_static_pad(element, "sink");
 
     pthread_mutex_lock(&filter->mutex);
     filter->no_more_pads = filter->error = false;
     pthread_mutex_unlock(&filter->mutex);
 
-    if ((ret = gst_pad_link(filter->my_src, filter->their_sink)) < 0)
+    if ((ret = gst_pad_link(parser->my_src, parser->their_sink)) < 0)
     {
         ERR("Failed to link pads, error %d.\n", ret);
         return FALSE;
@@ -2511,10 +2513,10 @@ static HRESULT GST_RemoveOutputPins(struct parser *This)
     pthread_mutex_unlock(&This->mutex);
 
     gst_element_set_state(parser->container, GST_STATE_NULL);
-    gst_pad_unlink(This->my_src, This->their_sink);
-    gst_object_unref(This->my_src);
-    gst_object_unref(This->their_sink);
-    This->my_src = This->their_sink = NULL;
+    gst_pad_unlink(parser->my_src, parser->their_sink);
+    gst_object_unref(parser->my_src);
+    gst_object_unref(parser->their_sink);
+    parser->my_src = parser->their_sink = NULL;
 
     /* read_thread() needs to stay alive to service any read requests GStreamer
      * sends, so we can only shut it down after GStreamer stops. */
@@ -2606,8 +2608,8 @@ static BOOL wave_parser_init_gst(struct parser *filter)
 
     gst_bin_add(GST_BIN(parser->container), element);
 
-    filter->their_sink = gst_element_get_static_pad(element, "sink");
-    if ((ret = gst_pad_link(filter->my_src, filter->their_sink)) < 0)
+    parser->their_sink = gst_element_get_static_pad(element, "sink");
+    if ((ret = gst_pad_link(parser->my_src, parser->their_sink)) < 0)
     {
         ERR("Failed to link sink pads, error %d.\n", ret);
         return FALSE;
@@ -2723,13 +2725,13 @@ static BOOL avi_splitter_init_gst(struct parser *filter)
     g_signal_connect(element, "pad-removed", G_CALLBACK(removed_decoded_pad), filter);
     g_signal_connect(element, "no-more-pads", G_CALLBACK(no_more_pads), filter);
 
-    filter->their_sink = gst_element_get_static_pad(element, "sink");
+    parser->their_sink = gst_element_get_static_pad(element, "sink");
 
     pthread_mutex_lock(&filter->mutex);
     filter->no_more_pads = filter->error = false;
     pthread_mutex_unlock(&filter->mutex);
 
-    if ((ret = gst_pad_link(filter->my_src, filter->their_sink)) < 0)
+    if ((ret = gst_pad_link(parser->my_src, parser->their_sink)) < 0)
     {
         ERR("Failed to link pads, error %d.\n", ret);
         return FALSE;
@@ -2846,8 +2848,8 @@ static BOOL mpeg_splitter_init_gst(struct parser *filter)
 
     gst_bin_add(GST_BIN(parser->container), element);
 
-    filter->their_sink = gst_element_get_static_pad(element, "sink");
-    if ((ret = gst_pad_link(filter->my_src, filter->their_sink)) < 0)
+    parser->their_sink = gst_element_get_static_pad(element, "sink");
+    if ((ret = gst_pad_link(parser->my_src, parser->their_sink)) < 0)
     {
         ERR("Failed to link sink pads, error %d.\n", ret);
         return FALSE;
-- 
2.30.0




More information about the wine-devel mailing list