This information is already printed by GStreamer via GST_MESSAGE_ERROR.
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/winegstreamer/gst_cbs.c | 12 ------------ dlls/winegstreamer/gst_cbs.h | 8 -------- dlls/winegstreamer/gstdemux.c | 14 -------------- 3 files changed, 34 deletions(-)
diff --git a/dlls/winegstreamer/gst_cbs.c b/dlls/winegstreamer/gst_cbs.c index 51aaefa911d..e6b9a30d466 100644 --- a/dlls/winegstreamer/gst_cbs.c +++ b/dlls/winegstreamer/gst_cbs.c @@ -279,18 +279,6 @@ GstAutoplugSelectResult autoplug_blacklist_wrapper(GstElement *bin, GstPad *pad, return cbdata.u.autoplug_blacklist_data.ret; }
-void unknown_type_wrapper(GstElement *bin, GstPad *pad, GstCaps *caps, gpointer user) -{ - struct cb_data cbdata = { UNKNOWN_TYPE }; - - cbdata.u.unknown_type_data.bin = bin; - cbdata.u.unknown_type_data.pad = pad; - cbdata.u.unknown_type_data.caps = caps; - cbdata.u.unknown_type_data.user = user; - - call_cb(&cbdata); -} - gboolean query_sink_wrapper(GstPad *pad, GstObject *parent, GstQuery *query) { struct cb_data cbdata = { QUERY_SINK }; diff --git a/dlls/winegstreamer/gst_cbs.h b/dlls/winegstreamer/gst_cbs.h index a48999bbf71..546443bb4c6 100644 --- a/dlls/winegstreamer/gst_cbs.h +++ b/dlls/winegstreamer/gst_cbs.h @@ -41,7 +41,6 @@ enum CB_TYPE { GOT_DATA_SINK, REMOVED_DECODED_PAD, AUTOPLUG_BLACKLIST, - UNKNOWN_TYPE, QUERY_SINK, GSTDEMUX_MAX, BYTESTREAM_WRAPPER_PULL, @@ -125,12 +124,6 @@ struct cb_data { gpointer user; GstAutoplugSelectResult ret; } autoplug_blacklist_data; - struct unknown_type_data { - GstElement *bin; - GstPad *pad; - GstCaps *caps; - gpointer user; - } unknown_type_data; struct query_sink_data { GstPad *pad; GstObject *parent; @@ -161,7 +154,6 @@ GstFlowReturn got_data_sink_wrapper(GstPad *pad, GstObject *parent, GstBuffer *b GstFlowReturn got_data_wrapper(GstPad *pad, GstObject *parent, GstBuffer *buf) DECLSPEC_HIDDEN; void removed_decoded_pad_wrapper(GstElement *bin, GstPad *pad, gpointer user) DECLSPEC_HIDDEN; GstAutoplugSelectResult autoplug_blacklist_wrapper(GstElement *bin, GstPad *pad, GstCaps *caps, GstElementFactory *fact, gpointer user) DECLSPEC_HIDDEN; -void unknown_type_wrapper(GstElement *bin, GstPad *pad, GstCaps *caps, gpointer user) DECLSPEC_HIDDEN; void Gstreamer_transform_pad_added_wrapper(GstElement *filter, GstPad *pad, gpointer user) DECLSPEC_HIDDEN; gboolean query_sink_wrapper(GstPad *pad, GstObject *parent, GstQuery *query) DECLSPEC_HIDDEN; GstFlowReturn bytestream_wrapper_pull_wrapper(GstPad *pad, GstObject *parent, guint64 ofs, guint len, GstBuffer **buf) DECLSPEC_HIDDEN; diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c index 1e91c9f8e7e..992cdf01755 100644 --- a/dlls/winegstreamer/gstdemux.c +++ b/dlls/winegstreamer/gstdemux.c @@ -1352,13 +1352,6 @@ static GstBusSyncReply watch_bus(GstBus *bus, GstMessage *msg, gpointer data) return GST_BUS_DROP; }
-static void unknown_type(GstElement *bin, GstPad *pad, GstCaps *caps, gpointer user) -{ - gchar *strcaps = gst_caps_to_string(caps); - ERR("Could not find a filter for caps: %s\n", debugstr_a(strcaps)); - g_free(strcaps); -} - static HRESULT GST_Connect(struct gstdemux *This, IPin *pConnectPin) { LONGLONG avail; @@ -1691,7 +1684,6 @@ static BOOL gstdecoder_init_gst(struct gstdemux *filter) g_signal_connect(element, "pad-added", G_CALLBACK(existing_new_pad_wrapper), filter); g_signal_connect(element, "pad-removed", G_CALLBACK(removed_decoded_pad_wrapper), filter); g_signal_connect(element, "autoplug-select", G_CALLBACK(autoplug_blacklist_wrapper), filter); - g_signal_connect(element, "unknown-type", G_CALLBACK(unknown_type_wrapper), filter); g_signal_connect(element, "no-more-pads", G_CALLBACK(no_more_pads_wrapper), filter);
filter->their_sink = gst_element_get_static_pad(element, "sink"); @@ -2339,12 +2331,6 @@ void perform_cb_gstdemux(struct cb_data *cbdata) data->pad, data->caps, data->fact, data->user); break; } - case UNKNOWN_TYPE: - { - struct unknown_type_data *data = &cbdata->u.unknown_type_data; - unknown_type(data->bin, data->pad, data->caps, data->user); - break; - } case QUERY_SINK: { struct query_sink_data *data = &cbdata->u.query_sink_data;
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/winegstreamer/gstdemux.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-)
diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c index 992cdf01755..06fc630e47a 100644 --- a/dlls/winegstreamer/gstdemux.c +++ b/dlls/winegstreamer/gstdemux.c @@ -41,6 +41,9 @@
WINE_DEFAULT_DEBUG_CHANNEL(gstreamer);
+GST_DEBUG_CATEGORY_STATIC(wine); +#define GST_CAT_DEFAULT wine + static const GUID MEDIASUBTYPE_CVID = {mmioFOURCC('c','v','i','d'), 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
struct gstdemux @@ -1305,15 +1308,18 @@ static GstAutoplugSelectResult autoplug_blacklist(GstElement *bin, GstPad *pad, { const char *name = gst_element_factory_get_longname(fact);
- if (strstr(name, "Player protection")) { - WARN("Blacklisted a/52 decoder because it only works in Totem\n"); + GST_TRACE("Using "%s".", name); + + if (strstr(name, "Player protection")) + { + GST_WARNING("Blacklisted a/52 decoder because it only works in Totem."); return GST_AUTOPLUG_SELECT_SKIP; } - if (!strcmp(name, "Fluendo Hardware Accelerated Video Decoder")) { - WARN("Disabled video acceleration since it breaks in wine\n"); + if (!strcmp(name, "Fluendo Hardware Accelerated Video Decoder")) + { + GST_WARNING("Disabled video acceleration since it breaks in wine."); return GST_AUTOPLUG_SELECT_SKIP; } - TRACE("using "%s"\n", name); return GST_AUTOPLUG_SELECT_TRY; }
@@ -1812,11 +1818,19 @@ static HRESULT gstdecoder_source_get_media_type(struct gstdemux_source *pin, return VFW_S_NO_MORE_ITEMS; }
+static BOOL parser_init_gstreamer(void) +{ + if (!init_gstreamer()) + return FALSE; + GST_DEBUG_CATEGORY_INIT(wine, "WINE", GST_DEBUG_FG_RED, "Wine GStreamer support"); + return TRUE; +} + HRESULT gstdemux_create(IUnknown *outer, IUnknown **out) { struct gstdemux *object;
- if (!init_gstreamer()) + if (!parser_init_gstreamer()) return E_FAIL;
mark_wine_thread(); @@ -2466,7 +2480,7 @@ HRESULT wave_parser_create(IUnknown *outer, IUnknown **out) static const WCHAR sink_name[] = {'i','n','p','u','t',' ','p','i','n',0}; struct gstdemux *object;
- if (!init_gstreamer()) + if (!parser_init_gstreamer()) return E_FAIL;
mark_wine_thread(); @@ -2585,7 +2599,7 @@ HRESULT avi_splitter_create(IUnknown *outer, IUnknown **out) static const WCHAR sink_name[] = {'i','n','p','u','t',' ','p','i','n',0}; struct gstdemux *object;
- if (!init_gstreamer()) + if (!parser_init_gstreamer()) return E_FAIL;
mark_wine_thread(); @@ -2744,7 +2758,7 @@ HRESULT mpeg_splitter_create(IUnknown *outer, IUnknown **out) static const WCHAR sink_name[] = {'I','n','p','u','t',0}; struct gstdemux *object;
- if (!init_gstreamer()) + if (!parser_init_gstreamer()) return E_FAIL;
mark_wine_thread();
Signed-off-by: Zebediah Figura z.figura12@gmail.com ---
This is arguably beneficial by itself, but the main motivation here is to ease PE conversion by avoiding Unix -> PE callbacks.
dlls/winegstreamer/gst_cbs.c | 16 ---------------- dlls/winegstreamer/gst_cbs.h | 10 ---------- dlls/winegstreamer/gstdemux.c | 9 +-------- 3 files changed, 1 insertion(+), 34 deletions(-)
diff --git a/dlls/winegstreamer/gst_cbs.c b/dlls/winegstreamer/gst_cbs.c index e6b9a30d466..cb07cafb7bc 100644 --- a/dlls/winegstreamer/gst_cbs.c +++ b/dlls/winegstreamer/gst_cbs.c @@ -263,22 +263,6 @@ void removed_decoded_pad_wrapper(GstElement *bin, GstPad *pad, gpointer user) call_cb(&cbdata); }
-GstAutoplugSelectResult autoplug_blacklist_wrapper(GstElement *bin, GstPad *pad, - GstCaps *caps, GstElementFactory *fact, gpointer user) -{ - struct cb_data cbdata = { AUTOPLUG_BLACKLIST }; - - cbdata.u.autoplug_blacklist_data.bin = bin; - cbdata.u.autoplug_blacklist_data.pad = pad; - cbdata.u.autoplug_blacklist_data.caps = caps; - cbdata.u.autoplug_blacklist_data.fact = fact; - cbdata.u.autoplug_blacklist_data.user = user; - - call_cb(&cbdata); - - return cbdata.u.autoplug_blacklist_data.ret; -} - gboolean query_sink_wrapper(GstPad *pad, GstObject *parent, GstQuery *query) { struct cb_data cbdata = { QUERY_SINK }; diff --git a/dlls/winegstreamer/gst_cbs.h b/dlls/winegstreamer/gst_cbs.h index 546443bb4c6..9bb3572c5db 100644 --- a/dlls/winegstreamer/gst_cbs.h +++ b/dlls/winegstreamer/gst_cbs.h @@ -40,7 +40,6 @@ enum CB_TYPE { EVENT_SINK, GOT_DATA_SINK, REMOVED_DECODED_PAD, - AUTOPLUG_BLACKLIST, QUERY_SINK, GSTDEMUX_MAX, BYTESTREAM_WRAPPER_PULL, @@ -116,14 +115,6 @@ struct cb_data { GstPad *pad; gpointer user; } pad_removed_data; - struct autoplug_blacklist_data { - GstElement *bin; - GstPad *pad; - GstCaps *caps; - GstElementFactory *fact; - gpointer user; - GstAutoplugSelectResult ret; - } autoplug_blacklist_data; struct query_sink_data { GstPad *pad; GstObject *parent; @@ -153,7 +144,6 @@ gboolean event_sink_wrapper(GstPad *pad, GstObject *parent, GstEvent *event) DEC GstFlowReturn got_data_sink_wrapper(GstPad *pad, GstObject *parent, GstBuffer *buf) DECLSPEC_HIDDEN; GstFlowReturn got_data_wrapper(GstPad *pad, GstObject *parent, GstBuffer *buf) DECLSPEC_HIDDEN; void removed_decoded_pad_wrapper(GstElement *bin, GstPad *pad, gpointer user) DECLSPEC_HIDDEN; -GstAutoplugSelectResult autoplug_blacklist_wrapper(GstElement *bin, GstPad *pad, GstCaps *caps, GstElementFactory *fact, gpointer user) DECLSPEC_HIDDEN; void Gstreamer_transform_pad_added_wrapper(GstElement *filter, GstPad *pad, gpointer user) DECLSPEC_HIDDEN; gboolean query_sink_wrapper(GstPad *pad, GstObject *parent, GstQuery *query) DECLSPEC_HIDDEN; GstFlowReturn bytestream_wrapper_pull_wrapper(GstPad *pad, GstObject *parent, guint64 ofs, guint len, GstBuffer **buf) DECLSPEC_HIDDEN; diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c index 06fc630e47a..97c25db89a7 100644 --- a/dlls/winegstreamer/gstdemux.c +++ b/dlls/winegstreamer/gstdemux.c @@ -1689,7 +1689,7 @@ static BOOL gstdecoder_init_gst(struct gstdemux *filter)
g_signal_connect(element, "pad-added", G_CALLBACK(existing_new_pad_wrapper), filter); g_signal_connect(element, "pad-removed", G_CALLBACK(removed_decoded_pad_wrapper), filter); - g_signal_connect(element, "autoplug-select", G_CALLBACK(autoplug_blacklist_wrapper), filter); + g_signal_connect(element, "autoplug-select", G_CALLBACK(autoplug_blacklist), filter); g_signal_connect(element, "no-more-pads", G_CALLBACK(no_more_pads_wrapper), filter);
filter->their_sink = gst_element_get_static_pad(element, "sink"); @@ -2338,13 +2338,6 @@ void perform_cb_gstdemux(struct cb_data *cbdata) removed_decoded_pad(data->element, data->pad, data->user); break; } - case AUTOPLUG_BLACKLIST: - { - struct autoplug_blacklist_data *data = &cbdata->u.autoplug_blacklist_data; - cbdata->u.autoplug_blacklist_data.ret = autoplug_blacklist(data->bin, - data->pad, data->caps, data->fact, data->user); - break; - } case QUERY_SINK: { struct query_sink_data *data = &cbdata->u.query_sink_data;
It's entirely unnecessary; only renderers and live sources care about this.
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/winegstreamer/gstdemux.c | 40 ----------------------------------- 1 file changed, 40 deletions(-)
diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c index 97c25db89a7..0243f8e20c1 100644 --- a/dlls/winegstreamer/gstdemux.c +++ b/dlls/winegstreamer/gstdemux.c @@ -1525,42 +1525,6 @@ static HRESULT gstdemux_init_stream(struct strmbase_filter *iface) return S_OK; }
-static HRESULT gstdemux_start_stream(struct strmbase_filter *iface, REFERENCE_TIME time) -{ - struct gstdemux *filter = impl_from_strmbase_filter(iface); - GstStateChangeReturn ret; - - if (!filter->container) - return S_OK; - - if ((ret = gst_element_set_state(filter->container, GST_STATE_PLAYING)) == GST_STATE_CHANGE_FAILURE) - { - ERR("Failed to play stream.\n"); - return E_FAIL; - } - else if (ret == GST_STATE_CHANGE_ASYNC) - return S_FALSE; - return S_OK; -} - -static HRESULT gstdemux_stop_stream(struct strmbase_filter *iface) -{ - struct gstdemux *filter = impl_from_strmbase_filter(iface); - GstStateChangeReturn ret; - - if (!filter->container) - return S_OK; - - if ((ret = gst_element_set_state(filter->container, GST_STATE_PAUSED)) == GST_STATE_CHANGE_FAILURE) - { - ERR("Failed to pause stream.\n"); - return E_FAIL; - } - else if (ret == GST_STATE_CHANGE_ASYNC) - return S_FALSE; - return S_OK; -} - static HRESULT gstdemux_cleanup_stream(struct strmbase_filter *iface) { struct gstdemux *filter = impl_from_strmbase_filter(iface); @@ -1613,8 +1577,6 @@ static const struct strmbase_filter_ops filter_ops = .filter_get_pin = gstdemux_get_pin, .filter_destroy = gstdemux_destroy, .filter_init_stream = gstdemux_init_stream, - .filter_start_stream = gstdemux_start_stream, - .filter_stop_stream = gstdemux_stop_stream, .filter_cleanup_stream = gstdemux_cleanup_stream, .filter_wait_state = gstdemux_wait_state, }; @@ -2740,8 +2702,6 @@ static const struct strmbase_filter_ops mpeg_splitter_ops = .filter_get_pin = gstdemux_get_pin, .filter_destroy = gstdemux_destroy, .filter_init_stream = gstdemux_init_stream, - .filter_start_stream = gstdemux_start_stream, - .filter_stop_stream = gstdemux_stop_stream, .filter_cleanup_stream = gstdemux_cleanup_stream, .filter_wait_state = gstdemux_wait_state, };