mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Updated mfplat-streaming-support patchset
This commit is contained in:
parent
4e99d1b2a8
commit
b57bf86ec0
@ -1,8 +1,8 @@
|
||||
From d95656904e4d7d2c9a4006e90f123e28bbcdbb70 Mon Sep 17 00:00:00 2001
|
||||
From 1adbc46410773bdd75d844280738be677bb75906 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 9 Mar 2021 16:53:09 -0500
|
||||
Subject: [PATCH 01/39] winegstreamer: Activate source pad in push mode if it
|
||||
isn't activated in pull mode.
|
||||
Subject: [PATCH] winegstreamer: Activate source pad in push mode if it isn't
|
||||
activated in pull mode.
|
||||
|
||||
Since our source pad is not part of any element, gstreamer won't end up activating it
|
||||
directly through the state transition. Instead, if the downstream element doesn't
|
||||
@ -15,10 +15,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
|
||||
index 0d59297a026..00ff02ef462 100644
|
||||
index cd12a23d0c8..9b4c9c1c9ed 100644
|
||||
--- a/dlls/winegstreamer/wg_parser.c
|
||||
+++ b/dlls/winegstreamer/wg_parser.c
|
||||
@@ -58,7 +58,7 @@ struct wg_parser
|
||||
@@ -61,7 +61,7 @@ struct wg_parser
|
||||
pthread_mutex_t mutex;
|
||||
|
||||
pthread_cond_t init_cond;
|
||||
@ -27,7 +27,7 @@ index 0d59297a026..00ff02ef462 100644
|
||||
|
||||
pthread_cond_t read_cond, read_done_cond;
|
||||
struct
|
||||
@@ -1365,9 +1365,12 @@ static gboolean src_activate_mode_cb(GstPad *pad, GstObject *parent, GstPadMode
|
||||
@@ -1358,9 +1358,12 @@ static gboolean src_activate_mode_cb(GstPad *pad, GstObject *parent, GstPadMode
|
||||
GST_DEBUG("%s source pad for parser %p in %s mode.",
|
||||
activate ? "Activating" : "Deactivating", parser, gst_pad_mode_get_name(mode));
|
||||
|
||||
@ -40,7 +40,7 @@ index 0d59297a026..00ff02ef462 100644
|
||||
return TRUE;
|
||||
case GST_PAD_MODE_PUSH:
|
||||
return activate_push(pad, activate);
|
||||
@@ -1612,6 +1615,8 @@ static void CDECL wg_parser_disconnect(struct wg_parser *parser)
|
||||
@@ -1636,6 +1639,8 @@ static void CDECL wg_parser_disconnect(struct wg_parser *parser)
|
||||
pthread_mutex_unlock(&parser->mutex);
|
||||
|
||||
gst_element_set_state(parser->container, GST_STATE_NULL);
|
||||
@ -49,7 +49,7 @@ index 0d59297a026..00ff02ef462 100644
|
||||
gst_pad_unlink(parser->my_src, parser->their_sink);
|
||||
gst_object_unref(parser->my_src);
|
||||
gst_object_unref(parser->their_sink);
|
||||
@@ -1667,6 +1672,8 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser)
|
||||
@@ -1687,6 +1692,8 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser)
|
||||
}
|
||||
|
||||
gst_element_set_state(parser->container, GST_STATE_PAUSED);
|
||||
@ -58,7 +58,7 @@ index 0d59297a026..00ff02ef462 100644
|
||||
ret = gst_element_get_state(parser->container, NULL, NULL, -1);
|
||||
if (ret == GST_STATE_CHANGE_FAILURE)
|
||||
{
|
||||
@@ -1718,6 +1725,8 @@ static BOOL avi_parser_init_gst(struct wg_parser *parser)
|
||||
@@ -1734,6 +1741,8 @@ static BOOL avi_parser_init_gst(struct wg_parser *parser)
|
||||
}
|
||||
|
||||
gst_element_set_state(parser->container, GST_STATE_PAUSED);
|
||||
@ -67,7 +67,7 @@ index 0d59297a026..00ff02ef462 100644
|
||||
ret = gst_element_get_state(parser->container, NULL, NULL, -1);
|
||||
if (ret == GST_STATE_CHANGE_FAILURE)
|
||||
{
|
||||
@@ -1772,6 +1781,8 @@ static BOOL mpeg_audio_parser_init_gst(struct wg_parser *parser)
|
||||
@@ -1784,6 +1793,8 @@ static BOOL mpeg_audio_parser_init_gst(struct wg_parser *parser)
|
||||
|
||||
gst_pad_set_active(stream->my_sink, 1);
|
||||
gst_element_set_state(parser->container, GST_STATE_PAUSED);
|
||||
@ -76,7 +76,7 @@ index 0d59297a026..00ff02ef462 100644
|
||||
ret = gst_element_get_state(parser->container, NULL, NULL, -1);
|
||||
if (ret == GST_STATE_CHANGE_FAILURE)
|
||||
{
|
||||
@@ -1826,6 +1837,8 @@ static BOOL wave_parser_init_gst(struct wg_parser *parser)
|
||||
@@ -1825,6 +1836,8 @@ static BOOL wave_parser_init_gst(struct wg_parser *parser)
|
||||
|
||||
gst_pad_set_active(stream->my_sink, 1);
|
||||
gst_element_set_state(parser->container, GST_STATE_PAUSED);
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 9ec96ab12a41323abb477922cd2401446bd95457 Mon Sep 17 00:00:00 2001
|
||||
From 2740496b0c1f878593899e6dc88390413bf835f1 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 10 Mar 2021 10:43:03 -0500
|
||||
Subject: [PATCH 02/39] winegstreamer: Push stream-start and segment events in
|
||||
push mode.
|
||||
Subject: [PATCH] winegstreamer: Push stream-start and segment events in push
|
||||
mode.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@ -10,10 +10,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
|
||||
index 00ff02ef462..c83afe4e195 100644
|
||||
index 9b4c9c1c9ed..879aece63b7 100644
|
||||
--- a/dlls/winegstreamer/wg_parser.c
|
||||
+++ b/dlls/winegstreamer/wg_parser.c
|
||||
@@ -1286,6 +1286,7 @@ static void *push_data(void *arg)
|
||||
@@ -1279,6 +1279,7 @@ static void *push_data(void *arg)
|
||||
{
|
||||
struct wg_parser *parser = arg;
|
||||
GstBuffer *buffer;
|
||||
@ -21,7 +21,7 @@ index 00ff02ef462..c83afe4e195 100644
|
||||
guint max_size;
|
||||
|
||||
GST_DEBUG("Starting push thread.");
|
||||
@@ -1298,6 +1299,12 @@ static void *push_data(void *arg)
|
||||
@@ -1291,6 +1292,12 @@ static void *push_data(void *arg)
|
||||
|
||||
max_size = parser->stop_offset ? parser->stop_offset : parser->file_size;
|
||||
|
||||
@ -34,7 +34,7 @@ index 00ff02ef462..c83afe4e195 100644
|
||||
for (;;)
|
||||
{
|
||||
ULONG size;
|
||||
@@ -1432,6 +1439,7 @@ static gboolean src_perform_seek(struct wg_parser *parser, GstEvent *event)
|
||||
@@ -1425,6 +1432,7 @@ static gboolean src_perform_seek(struct wg_parser *parser, GstEvent *event)
|
||||
GstEvent *flush_event;
|
||||
GstSeekFlags flags;
|
||||
gint64 cur, stop;
|
||||
@ -42,7 +42,7 @@ index 00ff02ef462..c83afe4e195 100644
|
||||
guint32 seqnum;
|
||||
gdouble rate;
|
||||
|
||||
@@ -1465,7 +1473,12 @@ static gboolean src_perform_seek(struct wg_parser *parser, GstEvent *event)
|
||||
@@ -1458,7 +1466,12 @@ static gboolean src_perform_seek(struct wg_parser *parser, GstEvent *event)
|
||||
gst_event_set_seqnum(flush_event, seqnum);
|
||||
gst_pad_push_event(parser->my_src, flush_event);
|
||||
if (thread)
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 83a951e062135cb433d23b7af56c2541b504c1a5 Mon Sep 17 00:00:00 2001
|
||||
From 915e18d44c16f08f27ea4bf0e8bb46221b055ce0 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 10 Mar 2021 13:09:51 -0500
|
||||
Subject: [PATCH] winegstreamer: Introduce H.264 decoder transform.
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 17dab7f1ec1e00c313fa9f9bdcd64847de83b785 Mon Sep 17 00:00:00 2001
|
||||
From 42278cb728ff00fdd44e5ca04a68d3fd34c79f15 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 10 Mar 2021 14:14:21 -0500
|
||||
Subject: [PATCH 04/39] winegstreamer: Implement ::GetInputAvailableType for
|
||||
decode transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::GetInputAvailableType for decode
|
||||
transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@ -128,7 +128,7 @@ index cdf90d52025..2d2ebbda61f 100644
|
||||
|
||||
#endif /* __GST_PRIVATE_INCLUDED__ */
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index de679a62023..40bb7969fc3 100644
|
||||
index 4bff7ee9241..f8f83031b7e 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -402,6 +402,11 @@ static const GUID CLSID_GStreamerByteStreamHandler = {0x317df618, 0x5e5a, 0x468a
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 5842d8b762b85ff36de01d672e81d3e6eab9c554 Mon Sep 17 00:00:00 2001
|
||||
From 360b07b3ba1bc9fdb8225b64bc4a1ada43256087 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 10 Mar 2021 14:23:09 -0500
|
||||
Subject: [PATCH 05/39] winegstreamer: Implement ::GetOutputAvailableType for
|
||||
decode transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::GetOutputAvailableType for decode
|
||||
transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 6d41356d8849c741c93e6eaab81784a8be515aa5 Mon Sep 17 00:00:00 2001
|
||||
From 328f8b7e095596cb11d86484665062591aebcf55 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Thu, 11 Mar 2021 12:33:02 -0500
|
||||
Subject: [PATCH 06/39] winegstreamer: Implement ::SetInputType for decode
|
||||
transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::SetInputType for decode transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@ -151,7 +150,7 @@ index 2d2ebbda61f..215cf4577d4 100644
|
||||
struct
|
||||
{
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 40bb7969fc3..9a599358c61 100644
|
||||
index f8f83031b7e..9d1cbd87746 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -533,6 +533,7 @@ video_formats[] =
|
||||
@ -162,7 +161,7 @@ index 40bb7969fc3..9a599358c61 100644
|
||||
};
|
||||
|
||||
static const struct
|
||||
@@ -718,10 +719,22 @@ static void mf_media_type_to_wg_format_video(IMFMediaType *type, struct wg_forma
|
||||
@@ -719,10 +720,22 @@ static void mf_media_type_to_wg_format_video(IMFMediaType *type, struct wg_forma
|
||||
if (IsEqualGUID(&subtype, video_formats[i].subtype))
|
||||
{
|
||||
format->u.video.format = video_formats[i].format;
|
||||
@ -188,7 +187,7 @@ index 40bb7969fc3..9a599358c61 100644
|
||||
|
||||
void mf_media_type_to_wg_format(IMFMediaType *type, struct wg_format *format)
|
||||
diff --git a/dlls/winegstreamer/quartz_parser.c b/dlls/winegstreamer/quartz_parser.c
|
||||
index 5f9535659b4..4eceeae0757 100644
|
||||
index 09a916d7f5c..fc1b72cd958 100644
|
||||
--- a/dlls/winegstreamer/quartz_parser.c
|
||||
+++ b/dlls/winegstreamer/quartz_parser.c
|
||||
@@ -268,6 +268,7 @@ static unsigned int get_image_size(const struct wg_format *format)
|
||||
@ -200,10 +199,10 @@ index 5f9535659b4..4eceeae0757 100644
|
||||
}
|
||||
|
||||
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
|
||||
index c83afe4e195..e9689c01085 100644
|
||||
index 879aece63b7..1afe92f04ac 100644
|
||||
--- a/dlls/winegstreamer/wg_parser.c
|
||||
+++ b/dlls/winegstreamer/wg_parser.c
|
||||
@@ -384,6 +384,22 @@ static void wg_channel_mask_to_gst(GstAudioChannelPosition *positions, uint32_t
|
||||
@@ -387,6 +387,22 @@ static void wg_channel_mask_to_gst(GstAudioChannelPosition *positions, uint32_t
|
||||
}
|
||||
}
|
||||
|
||||
@ -226,7 +225,7 @@ index c83afe4e195..e9689c01085 100644
|
||||
static GstCaps *wg_format_to_caps_audio(const struct wg_format *format)
|
||||
{
|
||||
GstAudioChannelPosition positions[32];
|
||||
@@ -425,6 +441,65 @@ static GstCaps *wg_format_to_caps_video(const struct wg_format *format)
|
||||
@@ -428,6 +444,65 @@ static GstCaps *wg_format_to_caps_video(const struct wg_format *format)
|
||||
unsigned int i;
|
||||
GstCaps *caps;
|
||||
|
||||
@ -292,7 +291,7 @@ index c83afe4e195..e9689c01085 100644
|
||||
if ((video_format = wg_video_format_to_gst(format->u.video.format)) == GST_VIDEO_FORMAT_UNKNOWN)
|
||||
return NULL;
|
||||
|
||||
@@ -584,6 +659,7 @@ static void CDECL wg_parser_stream_enable(struct wg_parser_stream *stream, const
|
||||
@@ -587,6 +662,7 @@ static void CDECL wg_parser_stream_enable(struct wg_parser_stream *stream, const
|
||||
case WG_VIDEO_FORMAT_YVYU:
|
||||
case WG_VIDEO_FORMAT_UNKNOWN:
|
||||
case WG_VIDEO_FORMAT_CINEPAK:
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 8a60a8ea1f93394afae504330ad623e4e85170d6 Mon Sep 17 00:00:00 2001
|
||||
From b116bcc5c294697eb537255bb2ddffa1e7dad5c0 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Thu, 11 Mar 2021 12:58:32 -0500
|
||||
Subject: [PATCH 07/39] winegstreamer: Implement ::SetOutputType for decode
|
||||
Subject: [PATCH] winegstreamer: Implement ::SetOutputType for decode
|
||||
transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 7bb5efd92e23dfb1f734119000ec4866392f8d7c Mon Sep 17 00:00:00 2001
|
||||
From 359da83b2d725c927797bedc15095312453607ad Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Thu, 11 Mar 2021 14:40:32 -0500
|
||||
Subject: [PATCH 08/39] winegstreamer: Implement ::Get(Input/Output)StreamInfo
|
||||
for decode transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::Get(Input/Output)StreamInfo for
|
||||
decode transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 04332336184dfd88cde06e790c35e5fcff71e583 Mon Sep 17 00:00:00 2001
|
||||
From b8e243fcb8d17525a0688e8371bcfe490264baf1 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Fri, 19 Mar 2021 16:40:46 -0400
|
||||
Subject: [PATCH] winegstreamer: Add push-mode path for wg_parser.
|
||||
@ -130,7 +130,7 @@ index fc1b72cd958..4b0f2c215d1 100644
|
||||
/* We do need to drop any buffers that might have been sent with the old
|
||||
* caps, but this will be handled in parser_init_stream(). */
|
||||
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
|
||||
index 8f472e6650d..d01da49dbef 100644
|
||||
index 1afe92f04ac..d010b1e6eed 100644
|
||||
--- a/dlls/winegstreamer/wg_parser.c
|
||||
+++ b/dlls/winegstreamer/wg_parser.c
|
||||
@@ -47,7 +47,7 @@ struct wg_parser
|
||||
@ -756,8 +756,8 @@ index 8f472e6650d..d01da49dbef 100644
|
||||
pthread_join(parser->push_thread, NULL);
|
||||
parser->push_thread = 0;
|
||||
}
|
||||
@@ -1601,13 +1877,11 @@ static LONGLONG query_duration(GstPad *pad)
|
||||
return 0;
|
||||
@@ -1581,13 +1857,11 @@ static gboolean src_event_cb(GstPad *pad, GstObject *parent, GstEvent *event)
|
||||
return ret;
|
||||
}
|
||||
|
||||
-static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_size)
|
||||
@ -771,7 +771,7 @@ index 8f472e6650d..d01da49dbef 100644
|
||||
parser->sink_connected = true;
|
||||
|
||||
if (!parser->bus)
|
||||
@@ -1629,6 +1903,20 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s
|
||||
@@ -1609,6 +1883,20 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s
|
||||
parser->start_offset = parser->next_offset = parser->stop_offset = 0;
|
||||
parser->next_pull_offset = 0;
|
||||
|
||||
@ -792,7 +792,7 @@ index 8f472e6650d..d01da49dbef 100644
|
||||
if (!parser->init_gst(parser))
|
||||
return E_FAIL;
|
||||
|
||||
@@ -1659,6 +1947,43 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s
|
||||
@@ -1690,6 +1978,43 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
@ -836,7 +836,7 @@ index 8f472e6650d..d01da49dbef 100644
|
||||
static void free_stream(struct wg_parser_stream *stream)
|
||||
{
|
||||
if (stream->their_src)
|
||||
@@ -1729,6 +2054,9 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser)
|
||||
@@ -1760,6 +2085,9 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser)
|
||||
if (!(element = create_element("decodebin", "base")))
|
||||
return FALSE;
|
||||
|
||||
@ -846,7 +846,7 @@ index 8f472e6650d..d01da49dbef 100644
|
||||
gst_bin_add(GST_BIN(parser->container), element);
|
||||
parser->decodebin = element;
|
||||
|
||||
@@ -1993,6 +2321,7 @@ static const struct unix_funcs funcs =
|
||||
@@ -2015,6 +2343,7 @@ static const struct unix_funcs funcs =
|
||||
wg_parser_destroy,
|
||||
|
||||
wg_parser_connect,
|
||||
@ -854,7 +854,7 @@ index 8f472e6650d..d01da49dbef 100644
|
||||
wg_parser_disconnect,
|
||||
|
||||
wg_parser_begin_flush,
|
||||
@@ -2017,6 +2346,7 @@ static const struct unix_funcs funcs =
|
||||
@@ -2039,6 +2368,7 @@ static const struct unix_funcs funcs =
|
||||
|
||||
wg_parser_stream_get_duration,
|
||||
wg_parser_stream_seek,
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 316e739c324ef33e31987f0d5abd7b28db21e89a Mon Sep 17 00:00:00 2001
|
||||
From 7585c2809396ce0a506749b5c2435ced429f3b32 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Fri, 19 Mar 2021 16:53:02 -0400
|
||||
Subject: [PATCH 10/39] winegstreamer: Implement ::Process(Input/Output) for
|
||||
decoder transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::Process(Input/Output) for decoder
|
||||
transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 6da483d3feca1cd83a5fecdd5671fa8a0d10a2f8 Mon Sep 17 00:00:00 2001
|
||||
From 52a5aeb27602c0cccf12889dae5b9577d4af6cc8 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Fri, 19 Mar 2021 16:54:03 -0400
|
||||
Subject: [PATCH 11/39] winestreamer: Implement ::ProcessMessage for decoder
|
||||
Subject: [PATCH] winestreamer: Implement ::ProcessMessage for decoder
|
||||
transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 5c7b05aeb941b1fbd4a978894873438aa0e5b397 Mon Sep 17 00:00:00 2001
|
||||
From ea3b78cc1f9d9a8e52441878f3bb62bf5df845a1 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Fri, 19 Mar 2021 16:55:15 -0400
|
||||
Subject: [PATCH 12/39] winegstreamer: Semi-stub ::GetAttributes for decoder
|
||||
Subject: [PATCH] winegstreamer: Semi-stub ::GetAttributes for decoder
|
||||
transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 86f104e3b17755d2eecd6d46ea1c66875232e2bd Mon Sep 17 00:00:00 2001
|
||||
From cf4b63609020ce6009d01264b689ed18925a19df Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Fri, 19 Mar 2021 16:57:11 -0400
|
||||
Subject: [PATCH 13/39] winegstreamer: Register the H.264 decoder transform.
|
||||
Subject: [PATCH] winegstreamer: Register the H.264 decoder transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@ -9,7 +9,7 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 25 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 9a599358c61..f015ecc3f47 100644
|
||||
index 9d1cbd87746..35b2f2c3224 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -453,6 +453,20 @@ static const GUID *audio_converter_supported_types[] =
|
||||
|
@ -1,4 +1,4 @@
|
||||
From d340cda54c6b51c8ee9fcd687ab9877f0451844a Mon Sep 17 00:00:00 2001
|
||||
From 126e32c17f934f80dac678d20ecb6e297b354b73 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Fri, 19 Mar 2021 16:59:29 -0400
|
||||
Subject: [PATCH] winegstreamer: Introduce AAC decoder transform.
|
||||
@ -185,7 +185,7 @@ index 35b2f2c3224..9c95450bd99 100644
|
||||
{
|
||||
if (IsEqualGUID(&subtype, audio_formats[i].subtype) && depth == audio_formats[i].depth)
|
||||
diff --git a/dlls/winegstreamer/quartz_parser.c b/dlls/winegstreamer/quartz_parser.c
|
||||
index 1c68eba1872..b1e35521266 100644
|
||||
index 4b0f2c215d1..c192f4ec38b 100644
|
||||
--- a/dlls/winegstreamer/quartz_parser.c
|
||||
+++ b/dlls/winegstreamer/quartz_parser.c
|
||||
@@ -100,6 +100,7 @@ static bool amt_from_wg_format_audio(AM_MEDIA_TYPE *mt, const struct wg_format *
|
||||
@ -197,10 +197,10 @@ index 1c68eba1872..b1e35521266 100644
|
||||
|
||||
case WG_AUDIO_FORMAT_MPEG1_LAYER1:
|
||||
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
|
||||
index 6c8cf1f85b1..7f06fd886d6 100644
|
||||
index d010b1e6eed..e017be29ad1 100644
|
||||
--- a/dlls/winegstreamer/wg_parser.c
|
||||
+++ b/dlls/winegstreamer/wg_parser.c
|
||||
@@ -398,6 +398,13 @@ static void wg_set_caps_from_wg_format(GstCaps *caps, const struct wg_format *fo
|
||||
@@ -401,6 +401,13 @@ static void wg_set_caps_from_wg_format(GstCaps *caps, const struct wg_format *fo
|
||||
gst_caps_set_simple(caps, "framerate", GST_TYPE_FRACTION, format->u.video.fps_n, format->u.video.fps_d, NULL);
|
||||
break;
|
||||
}
|
||||
@ -214,7 +214,7 @@ index 6c8cf1f85b1..7f06fd886d6 100644
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -409,6 +416,61 @@ static GstCaps *wg_format_to_caps_audio(const struct wg_format *format)
|
||||
@@ -412,6 +419,61 @@ static GstCaps *wg_format_to_caps_audio(const struct wg_format *format)
|
||||
GstAudioFormat audio_format;
|
||||
GstAudioInfo info;
|
||||
|
||||
@ -291,10 +291,10 @@ index 064a6872c79..4c58d83403b 100644
|
||||
+]
|
||||
+coclass CMSAACDecMFT { }
|
||||
diff --git a/include/mfidl.idl b/include/mfidl.idl
|
||||
index 616271861aa..dee81338b2b 100644
|
||||
index f28a0669804..72d288daa3f 100644
|
||||
--- a/include/mfidl.idl
|
||||
+++ b/include/mfidl.idl
|
||||
@@ -1575,3 +1575,4 @@ cpp_quote("EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_FLAGS, 0xba491366, 0xb
|
||||
@@ -1580,3 +1580,4 @@ cpp_quote("EXTERN_GUID(MF_XVP_SAMPLE_LOCK_TIMEOUT, 0xaa4ddb29, 0x5134, 0x4363, 0
|
||||
|
||||
cpp_quote("EXTERN_GUID(CLSID_VideoProcessorMFT, 0x88753b26, 0x5b24, 0x49bd, 0xb2, 0xe7, 0xc, 0x44, 0x5c, 0x78, 0xc9, 0x82);")
|
||||
cpp_quote("EXTERN_GUID(CLSID_CMSH264DecoderMFT, 0x62ce7e72, 0x4c71, 0x4d20, 0xb1, 0x5d, 0x45, 0x28, 0x31, 0xa8, 0x7d, 0x9d);")
|
||||
|
@ -1,7 +1,7 @@
|
||||
From f1011219faa95c40cdcffda69c65dee5566b3b80 Mon Sep 17 00:00:00 2001
|
||||
From aa96c5c8ae43df1ce01e6db11a64c04a768dc231 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Fri, 19 Mar 2021 17:00:27 -0400
|
||||
Subject: [PATCH 15/39] winegstreamer: Register the AAC decoder transform.
|
||||
Subject: [PATCH] winegstreamer: Register the AAC decoder transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@ -9,7 +9,7 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index f3d9fb61a66..28b45893b1b 100644
|
||||
index 9c95450bd99..955afff20dc 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -473,6 +473,17 @@ static const GUID *h264_decoder_output_types[] =
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 86115ed0d28a1abb007b0eedf0442dbdf2e2127d Mon Sep 17 00:00:00 2001
|
||||
From c9062f7721878e9687969cc0908afb442955a367 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Fri, 19 Mar 2021 17:00:51 -0400
|
||||
Subject: [PATCH 16/39] winegstreamer: Rename GStreamer objects to be more
|
||||
generic.
|
||||
Subject: [PATCH] winegstreamer: Rename GStreamer objects to be more generic.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@ -10,10 +9,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
|
||||
index 2a982576ef5..44d0c9b71f3 100644
|
||||
index e017be29ad1..528e30098fb 100644
|
||||
--- a/dlls/winegstreamer/wg_parser.c
|
||||
+++ b/dlls/winegstreamer/wg_parser.c
|
||||
@@ -1242,7 +1242,7 @@ static struct wg_parser_stream *create_stream(struct wg_parser *parser)
|
||||
@@ -1255,7 +1255,7 @@ static struct wg_parser_stream *create_stream(struct wg_parser *parser)
|
||||
pthread_cond_init(&stream->event_cond, NULL);
|
||||
pthread_cond_init(&stream->event_empty_cond, NULL);
|
||||
|
||||
@ -22,7 +21,7 @@ index 2a982576ef5..44d0c9b71f3 100644
|
||||
stream->my_sink = gst_pad_new(pad_name, GST_PAD_SINK);
|
||||
gst_pad_set_element_private(stream->my_sink, stream);
|
||||
gst_pad_set_chain_function(stream->my_sink, sink_chain_cb);
|
||||
@@ -1948,7 +1948,7 @@ static LONGLONG query_duration(GstPad *pad)
|
||||
@@ -1921,7 +1921,7 @@ static gboolean src_event_cb(GstPad *pad, GstObject *parent, GstEvent *event)
|
||||
|
||||
static HRESULT wg_parser_connect_inner(struct wg_parser *parser)
|
||||
{
|
||||
@ -31,7 +30,7 @@ index 2a982576ef5..44d0c9b71f3 100644
|
||||
GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS_ANY);
|
||||
|
||||
parser->sink_connected = true;
|
||||
@@ -1962,7 +1962,7 @@ static HRESULT wg_parser_connect_inner(struct wg_parser *parser)
|
||||
@@ -1935,7 +1935,7 @@ static HRESULT wg_parser_connect_inner(struct wg_parser *parser)
|
||||
parser->container = gst_bin_new(NULL);
|
||||
gst_element_set_bus(parser->container, parser->bus);
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 2451bb53540b32568e404f8ed2399b8b2a58e64d Mon Sep 17 00:00:00 2001
|
||||
From c2c1f1422c2583bb04fc3ab2a47ebb5cc92f4163 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Fri, 19 Mar 2021 17:01:54 -0400
|
||||
Subject: [PATCH 17/39] winegstreamer: Report streams backwards in media
|
||||
source.
|
||||
Subject: [PATCH] winegstreamer: Report streams backwards in media source.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@ -10,7 +9,7 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
|
||||
index f658cc0a5fc..b0c4220cc00 100644
|
||||
index 054e87edb7b..e991d3ec2a7 100644
|
||||
--- a/dlls/winegstreamer/media_source.c
|
||||
+++ b/dlls/winegstreamer/media_source.c
|
||||
@@ -1363,7 +1363,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 6f1c7d5735bc793ccfc059c22071ee546db0133a Mon Sep 17 00:00:00 2001
|
||||
From de9678f6fad286785562c01548a9b724c7e27460 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 14:07:52 -0400
|
||||
Subject: [PATCH 18/39] winegstreamer: Implement ::Process(Input/Output) for
|
||||
audio conversion transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::Process(Input/Output) for audio
|
||||
conversion transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@ -406,10 +406,10 @@ index 6407aff484c..ee6d19e74b6 100644
|
||||
|
||||
HRESULT (CDECL *wg_parser_connect)(struct wg_parser *parser, uint64_t file_size);
|
||||
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
|
||||
index 44d0c9b71f3..6f4dd28082b 100644
|
||||
index 528e30098fb..23a170f6f74 100644
|
||||
--- a/dlls/winegstreamer/wg_parser.c
|
||||
+++ b/dlls/winegstreamer/wg_parser.c
|
||||
@@ -2328,6 +2328,89 @@ static BOOL wave_parser_init_gst(struct wg_parser *parser)
|
||||
@@ -2327,6 +2327,89 @@ static BOOL wave_parser_init_gst(struct wg_parser *parser)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -499,7 +499,7 @@ index 44d0c9b71f3..6f4dd28082b 100644
|
||||
static struct wg_parser *wg_parser_create(void)
|
||||
{
|
||||
struct wg_parser *parser;
|
||||
@@ -2381,6 +2464,15 @@ static struct wg_parser * CDECL wg_wave_parser_create(void)
|
||||
@@ -2380,6 +2463,15 @@ static struct wg_parser * CDECL wg_wave_parser_create(void)
|
||||
return parser;
|
||||
}
|
||||
|
||||
@ -515,7 +515,7 @@ index 44d0c9b71f3..6f4dd28082b 100644
|
||||
static void CDECL wg_parser_destroy(struct wg_parser *parser)
|
||||
{
|
||||
if (parser->bus)
|
||||
@@ -2403,6 +2495,7 @@ static const struct unix_funcs funcs =
|
||||
@@ -2402,6 +2494,7 @@ static const struct unix_funcs funcs =
|
||||
wg_avi_parser_create,
|
||||
wg_mpeg_audio_parser_create,
|
||||
wg_wave_parser_create,
|
||||
|
@ -1,8 +1,8 @@
|
||||
From b3906f3a8faa32710b99a80e374bca70087c5c19 Mon Sep 17 00:00:00 2001
|
||||
From 9a7c5f23fb352d424e7fc83262f5c49e5521dc69 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 15:12:20 -0400
|
||||
Subject: [PATCH 19/39] winegstreamer: Implement ::Get(Input/Output)StreamInfo
|
||||
for audio conversion transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::Get(Input/Output)StreamInfo for
|
||||
audio conversion transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,8 +1,8 @@
|
||||
From a7ae40f14dc926f02fca792b11b7374550dbd7ef Mon Sep 17 00:00:00 2001
|
||||
From 39cabd61d7f01a53ae22eb33103ea549b8687259 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 15:19:32 -0400
|
||||
Subject: [PATCH 20/39] winegstreamer: Semi-stub Get*Attributes functions for
|
||||
audio converter transform.
|
||||
Subject: [PATCH] winegstreamer: Semi-stub Get*Attributes functions for audio
|
||||
converter transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 08d022a3705763c3d1ab3ffc6700c702cc6aed7b Mon Sep 17 00:00:00 2001
|
||||
From 921e29cce50dd75b14e334ea21238d5312af8659 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 15:35:20 -0400
|
||||
Subject: [PATCH 21/39] winegstreamer: Introduce color conversion transform.
|
||||
Subject: [PATCH] winegstreamer: Introduce color conversion transform.
|
||||
|
||||
Serves as a wrapper of videoconvert, and exposes the CColorConverterDMO MFT interface.
|
||||
|
||||
@ -345,7 +345,7 @@ index ee6d19e74b6..0827f70112f 100644
|
||||
enum decoder_type
|
||||
{
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 28b45893b1b..60e594b5d6c 100644
|
||||
index 955afff20dc..3fc18be69d5 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -22,6 +22,7 @@
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 9ce58d1f3f2f7be32bc61ed29149ba32c154170a Mon Sep 17 00:00:00 2001
|
||||
From 3efa160ba459f7763a8df6e8f67621e34dcb1697 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 15:37:17 -0400
|
||||
Subject: [PATCH 22/39] winegstreamer: Register the color conversion transform.
|
||||
Subject: [PATCH] winegstreamer: Register the color conversion transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@ -9,7 +9,7 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 32 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 60e594b5d6c..251ab021073 100644
|
||||
index 3fc18be69d5..eb57c1e3459 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -461,6 +461,26 @@ static const GUID *audio_converter_supported_types[] =
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 03498a3854a6a8fbe055354c1cde8c03119208dc Mon Sep 17 00:00:00 2001
|
||||
From 58e51b924b35d5130410fe0424eaf2143bfaf7fe Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 15:41:33 -0400
|
||||
Subject: [PATCH 23/39] winegstreamer: Implement ::GetInputAvailableType for
|
||||
color conversion transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::GetInputAvailableType for color
|
||||
conversion transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 5c6e2cc11f047f728e8cb1100a7044398a1b5898 Mon Sep 17 00:00:00 2001
|
||||
From d2f19c1167d5c81366734fe8434871402cb0c766 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 16:01:18 -0400
|
||||
Subject: [PATCH 24/39] winegstreamer: Implement ::SetInputType for color
|
||||
conversion transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::SetInputType for color conversion
|
||||
transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 70de073ef2395952f425411ef794e7238730ab52 Mon Sep 17 00:00:00 2001
|
||||
From 152cabdaa23d053e4e0893fb0add8de728482b6d Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 16:04:31 -0400
|
||||
Subject: [PATCH 25/39] winegstreamer: Implement ::GetOutputAvailableType for
|
||||
color conversion transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::GetOutputAvailableType for color
|
||||
conversion transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,8 +1,8 @@
|
||||
From d044e2fb2a690340a0011a8527592e7a90db2faa Mon Sep 17 00:00:00 2001
|
||||
From 3e4845c62cd142d15115caa119c5e34ed58d247a Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 16:26:28 -0400
|
||||
Subject: [PATCH 26/39] winegstreamer: Implement ::SetOutputType for color
|
||||
conversion transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::SetOutputType for color conversion
|
||||
transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 93e4d5996b5abedef39d4667363f42cabaaa8705 Mon Sep 17 00:00:00 2001
|
||||
From 3cdb8459f2b63eb17885bdaba1aaa039913a3eb1 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 16:49:13 -0400
|
||||
Subject: [PATCH 27/39] winegstreamer: Implement ::Process(Input/Output) for
|
||||
color conversion transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::Process(Input/Output) for color
|
||||
conversion transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,7 +1,7 @@
|
||||
From ebb43b337b5733e4b3530b4b04fcda0afa517852 Mon Sep 17 00:00:00 2001
|
||||
From 8f8220184eccd249c8a0760def9ad39b08d1b4c6 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 16:50:47 -0400
|
||||
Subject: [PATCH 28/39] winegstreamer: Implement ::ProcessMessage for color
|
||||
Subject: [PATCH] winegstreamer: Implement ::ProcessMessage for color
|
||||
conversion MFT.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 5a5376981522aba2a5a6f7facb44373584488c7f Mon Sep 17 00:00:00 2001
|
||||
From b7ad7106bc49fbad2cbf611afda09cedf428d735 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 17 Mar 2021 17:01:11 -0400
|
||||
Subject: [PATCH 29/39] winegstreamer: Implement ::Get(Input/Output)StreamInfo
|
||||
for color conversion transform.
|
||||
Subject: [PATCH] winegstreamer: Implement ::Get(Input/Output)StreamInfo for
|
||||
color conversion transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,7 +1,7 @@
|
||||
From e602bc2817910624da0da383933889871e61c0f7 Mon Sep 17 00:00:00 2001
|
||||
From 00f584011dc50bff1cca0ec675091240a81f5547 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Thu, 18 Mar 2021 13:53:42 -0400
|
||||
Subject: [PATCH 30/39] mf/topology: Forward failure from ::SetOutputType when
|
||||
Subject: [PATCH] mf/topology: Forward failure from ::SetOutputType when
|
||||
resolving topology.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 2268b0ad8fbe8473f936b0fa0e09d9e072443853 Mon Sep 17 00:00:00 2001
|
||||
From c6ef447acb3f45e08a07e0a47beeb2d2d963658f Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Thu, 18 Mar 2021 14:53:49 -0400
|
||||
Subject: [PATCH 31/39] winegstreamer: Handle flush command in audio
|
||||
converstion transform.
|
||||
Subject: [PATCH] winegstreamer: Handle flush command in audio converstion
|
||||
transform.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
|
@ -1,7 +1,7 @@
|
||||
From baebd866b835a054f00121d577e45c08edcde25c Mon Sep 17 00:00:00 2001
|
||||
From f522876d3f350e23b7aa6e9a9ec8819d88031338 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Fri, 4 Dec 2020 16:17:11 -0500
|
||||
Subject: [PATCH 32/39] winegstreamer: In the default configuration, select one
|
||||
Subject: [PATCH] winegstreamer: In the default configuration, select one
|
||||
stream of each major type.
|
||||
|
||||
---
|
||||
@ -9,7 +9,7 @@ Subject: [PATCH 32/39] winegstreamer: In the default configuration, select one
|
||||
1 file changed, 21 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
|
||||
index b0c4220cc00..2d1a628cba0 100644
|
||||
index e991d3ec2a7..f9e3ab7506a 100644
|
||||
--- a/dlls/winegstreamer/media_source.c
|
||||
+++ b/dlls/winegstreamer/media_source.c
|
||||
@@ -1273,6 +1273,7 @@ static const IMFMediaSourceVtbl IMFMediaSource_vtbl =
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 2ba70d161799850a073a43c658707fb1682a042f Mon Sep 17 00:00:00 2001
|
||||
From 1ac609517c8822051e435eaa4452eeb60730602a Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Thu, 18 Mar 2021 15:25:17 -0400
|
||||
Subject: [PATCH 33/39] winegstreamer: Implement MF_SD_LANGUAGE.
|
||||
Subject: [PATCH] winegstreamer: Implement MF_SD_LANGUAGE.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@ -23,7 +23,7 @@ index 0827f70112f..f616b8a5d9d 100644
|
||||
bool (CDECL *wg_parser_stream_seek)(struct wg_parser_stream *stream, double rate,
|
||||
uint64_t start_pos, uint64_t stop_pos, DWORD start_flags, DWORD stop_flags);
|
||||
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
|
||||
index 2d1a628cba0..eaf4b9b6815 100644
|
||||
index f9e3ab7506a..e8266a442e0 100644
|
||||
--- a/dlls/winegstreamer/media_source.c
|
||||
+++ b/dlls/winegstreamer/media_source.c
|
||||
@@ -1364,7 +1364,25 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
@ -54,10 +54,10 @@ index 2d1a628cba0..eaf4b9b6815 100644
|
||||
|
||||
if (FAILED(hr = MFCreatePresentationDescriptor(object->stream_count, descriptors, &object->pres_desc)))
|
||||
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
|
||||
index 6f4dd28082b..534db931d8b 100644
|
||||
index 23a170f6f74..93bf85f719e 100644
|
||||
--- a/dlls/winegstreamer/wg_parser.c
|
||||
+++ b/dlls/winegstreamer/wg_parser.c
|
||||
@@ -93,6 +93,7 @@ struct wg_parser_stream
|
||||
@@ -96,6 +96,7 @@ struct wg_parser_stream
|
||||
bool flushing, eos, enabled, has_caps;
|
||||
|
||||
uint64_t duration;
|
||||
@ -65,7 +65,7 @@ index 6f4dd28082b..534db931d8b 100644
|
||||
};
|
||||
|
||||
static enum wg_audio_format wg_audio_format_from_gst(GstAudioFormat format)
|
||||
@@ -848,6 +849,11 @@ static uint64_t CDECL wg_parser_stream_get_duration(struct wg_parser_stream *str
|
||||
@@ -851,6 +852,11 @@ static uint64_t CDECL wg_parser_stream_get_duration(struct wg_parser_stream *str
|
||||
return stream->duration;
|
||||
}
|
||||
|
||||
@ -77,8 +77,8 @@ index 6f4dd28082b..534db931d8b 100644
|
||||
static bool CDECL wg_parser_stream_seek(struct wg_parser_stream *stream, double rate,
|
||||
uint64_t start_pos, uint64_t stop_pos, DWORD start_flags, DWORD stop_flags)
|
||||
{
|
||||
@@ -1946,6 +1952,22 @@ static LONGLONG query_duration(GstPad *pad)
|
||||
return 0;
|
||||
@@ -1919,6 +1925,22 @@ static gboolean src_event_cb(GstPad *pad, GstObject *parent, GstEvent *event)
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static gchar *query_language(GstPad *pad)
|
||||
@ -100,15 +100,15 @@ index 6f4dd28082b..534db931d8b 100644
|
||||
static HRESULT wg_parser_connect_inner(struct wg_parser *parser)
|
||||
{
|
||||
GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE("wine_src",
|
||||
@@ -1995,6 +2017,7 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s
|
||||
{
|
||||
@@ -1969,6 +1991,7 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s
|
||||
struct wg_parser_stream *stream = parser->streams[i];
|
||||
gint64 duration;
|
||||
|
||||
+ stream->language_code = query_language(stream->their_src);
|
||||
while (!stream->has_caps && !parser->error)
|
||||
pthread_cond_wait(&parser->init_cond, &parser->mutex);
|
||||
if (parser->error)
|
||||
@@ -2074,6 +2097,9 @@ static void free_stream(struct wg_parser_stream *stream)
|
||||
|
||||
@@ -2098,6 +2121,9 @@ static void free_stream(struct wg_parser_stream *stream)
|
||||
pthread_cond_destroy(&stream->event_cond);
|
||||
pthread_cond_destroy(&stream->event_empty_cond);
|
||||
|
||||
@ -118,7 +118,7 @@ index 6f4dd28082b..534db931d8b 100644
|
||||
free(stream);
|
||||
}
|
||||
|
||||
@@ -2523,6 +2549,7 @@ static const struct unix_funcs funcs =
|
||||
@@ -2522,6 +2548,7 @@ static const struct unix_funcs funcs =
|
||||
wg_parser_stream_notify_qos,
|
||||
|
||||
wg_parser_stream_get_duration,
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 7be3ecb31b7beb25a0a66d11d9f36a5192a9653c Mon Sep 17 00:00:00 2001
|
||||
From 3a45e662b131c1a9864969d934cdd78de2c7bb5d Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Thu, 18 Mar 2021 16:20:50 -0400
|
||||
Subject: [PATCH] winegstreamer: Only require videobox element for parser when
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 32 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
|
||||
index 863870f966d..1d659fcc8d0 100644
|
||||
index 93bf85f719e..691abe8c48d 100644
|
||||
--- a/dlls/winegstreamer/wg_parser.c
|
||||
+++ b/dlls/winegstreamer/wg_parser.c
|
||||
@@ -756,6 +756,15 @@ static void CDECL wg_parser_stream_enable(struct wg_parser_stream *stream, const
|
||||
|
@ -1,64 +0,0 @@
|
||||
From 1301b70733c9d5256b5f8352e9bbd6a3578ba590 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Thu, 18 Mar 2021 16:54:44 -0400
|
||||
Subject: [PATCH 35/39] mfplat: Stub out MFCreateDXGIDeviceManager, to avoid
|
||||
the d3d path.
|
||||
|
||||
---
|
||||
dlls/mfplat/main.c | 32 +++++++++++++++++++-------------
|
||||
1 file changed, 19 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/dlls/mfplat/main.c b/dlls/mfplat/main.c
|
||||
index 5406ceb5063..764d825a102 100644
|
||||
--- a/dlls/mfplat/main.c
|
||||
+++ b/dlls/mfplat/main.c
|
||||
@@ -8881,27 +8881,33 @@ static const IMFDXGIDeviceManagerVtbl dxgi_device_manager_vtbl =
|
||||
HRESULT WINAPI MFCreateDXGIDeviceManager(UINT *token, IMFDXGIDeviceManager **manager)
|
||||
{
|
||||
struct dxgi_device_manager *object;
|
||||
+ const char *sgi = getenv("SteamGameId");
|
||||
|
||||
TRACE("%p, %p.\n", token, manager);
|
||||
|
||||
- if (!token || !manager)
|
||||
- return E_POINTER;
|
||||
+ if (sgi && (!strcmp(sgi,"1113560")))
|
||||
+ {
|
||||
+ if (!token || !manager)
|
||||
+ return E_POINTER;
|
||||
|
||||
- if (!(object = calloc(1, sizeof(*object))))
|
||||
- return E_OUTOFMEMORY;
|
||||
+ if (!(object = calloc(1, sizeof(*object))))
|
||||
+ return E_OUTOFMEMORY;
|
||||
|
||||
- object->IMFDXGIDeviceManager_iface.lpVtbl = &dxgi_device_manager_vtbl;
|
||||
- object->refcount = 1;
|
||||
- object->token = GetTickCount();
|
||||
- InitializeCriticalSection(&object->cs);
|
||||
- InitializeConditionVariable(&object->lock);
|
||||
+ object->IMFDXGIDeviceManager_iface.lpVtbl = &dxgi_device_manager_vtbl;
|
||||
+ object->refcount = 1;
|
||||
+ object->token = GetTickCount();
|
||||
+ InitializeCriticalSection(&object->cs);
|
||||
+ InitializeConditionVariable(&object->lock);
|
||||
|
||||
- TRACE("Created device manager: %p, token: %u.\n", object, object->token);
|
||||
+ TRACE("Created device manager: %p, token: %u.\n", object, object->token);
|
||||
|
||||
- *token = object->token;
|
||||
- *manager = &object->IMFDXGIDeviceManager_iface;
|
||||
+ *token = object->token;
|
||||
+ *manager = &object->IMFDXGIDeviceManager_iface;
|
||||
|
||||
- return S_OK;
|
||||
+ return S_OK;
|
||||
+ } else {
|
||||
+ return E_NOTIMPL;
|
||||
+ }
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
--
|
||||
2.30.2
|
||||
|
@ -1,8 +1,7 @@
|
||||
From ac8e72e266b60cf5dcef5ecf256ee3c99d6c9f53 Mon Sep 17 00:00:00 2001
|
||||
From 2247c1fbc8e07a837bda763aa4e6317cb898cfd8 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Mon, 22 Mar 2021 15:50:29 -0400
|
||||
Subject: [PATCH 36/39] winegstreamer: Don't rely on max_size in unseekable
|
||||
parser.
|
||||
Subject: [PATCH] winegstreamer: Don't rely on max_size in unseekable parser.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@ -10,10 +9,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
|
||||
index afd69ea6891..8e98ea08611 100644
|
||||
index 691abe8c48d..b3113718208 100644
|
||||
--- a/dlls/winegstreamer/wg_parser.c
|
||||
+++ b/dlls/winegstreamer/wg_parser.c
|
||||
@@ -1677,9 +1677,9 @@ static void *push_data(void *arg)
|
||||
@@ -1670,9 +1670,9 @@ static void *push_data(void *arg)
|
||||
ULONG size;
|
||||
int ret;
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 3666bd0c7cd99b5ae00f8f6fca83f316a9df398c Mon Sep 17 00:00:00 2001
|
||||
From f826d9a7343317ecf12b2eccd9525ed74df85610 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Mon, 22 Mar 2021 15:50:51 -0400
|
||||
Subject: [PATCH 37/39] winegstreamer: Implement MFT_MESSAGE_COMMAND_FLUSH for
|
||||
media converters.
|
||||
Subject: [PATCH] winegstreamer: Implement MFT_MESSAGE_COMMAND_FLUSH for media
|
||||
converters.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
@ -1,4 +1,4 @@
|
||||
From 9113e5421fd865f783f2bb3101336491fc92404d Mon Sep 17 00:00:00 2001
|
||||
From 04b35311e8a0242c13b9c885f3b077ff38e3130c Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Sun, 20 Jun 2021 14:46:57 +1000
|
||||
Subject: [PATCH] winegstreamer: Default Frame size if one isn't available
|
||||
@ -9,10 +9,10 @@ Stop crash when loading steam
|
||||
1 file changed, 8 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 251ab021073..19fd2596a47 100644
|
||||
index eb57c1e3459..4aaa96fba95 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -837,18 +837,19 @@ static void mf_media_type_to_wg_format_video(IMFMediaType *type, struct wg_forma
|
||||
@@ -838,18 +838,19 @@ static void mf_media_type_to_wg_format_video(IMFMediaType *type, struct wg_forma
|
||||
FIXME("Subtype is not set.\n");
|
||||
return;
|
||||
}
|
@ -1,2 +1 @@
|
||||
Fixes: [49692] Multiple applications need a Media Foundation media source implementation
|
||||
Disabled: true
|
||||
|
@ -137,6 +137,7 @@ patch_enable_all ()
|
||||
enable_krnl386_exe16_Invalid_Console_Handles="$1"
|
||||
enable_libs_Unicode_Collation="$1"
|
||||
enable_loader_KeyboardLayouts="$1"
|
||||
enable_mfplat_streaming_support="$1"
|
||||
enable_mmsystem_dll16_MIDIHDR_Refcount="$1"
|
||||
enable_mountmgr_DosDevices="$1"
|
||||
enable_mscoree_CorValidateImage="$1"
|
||||
@ -452,6 +453,9 @@ patch_enable ()
|
||||
loader-KeyboardLayouts)
|
||||
enable_loader_KeyboardLayouts="$2"
|
||||
;;
|
||||
mfplat-streaming-support)
|
||||
enable_mfplat_streaming_support="$2"
|
||||
;;
|
||||
mmsystem.dll16-MIDIHDR_Refcount)
|
||||
enable_mmsystem_dll16_MIDIHDR_Refcount="$2"
|
||||
;;
|
||||
@ -2381,6 +2385,57 @@ if test "$enable_loader_KeyboardLayouts" -eq 1; then
|
||||
patch_apply loader-KeyboardLayouts/0002-user32-Improve-GetKeyboardLayoutList.patch
|
||||
fi
|
||||
|
||||
# Patchset mfplat-streaming-support
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#49692] Multiple applications need a Media Foundation media source implementation
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/mf/topology.c, dlls/winegstreamer/Makefile.in, dlls/winegstreamer/audioconvert.c,
|
||||
# | dlls/winegstreamer/colorconvert.c, dlls/winegstreamer/decode_transform.c, dlls/winegstreamer/gst_private.h,
|
||||
# | dlls/winegstreamer/media_source.c, dlls/winegstreamer/mfplat.c, dlls/winegstreamer/quartz_parser.c,
|
||||
# | dlls/winegstreamer/wg_parser.c, dlls/winegstreamer/winegstreamer_classes.idl, include/mfidl.idl, include/wmcodecdsp.idl
|
||||
# |
|
||||
if test "$enable_mfplat_streaming_support" -eq 1; then
|
||||
patch_apply mfplat-streaming-support/0001-winegstreamer-Activate-source-pad-in-push-mode-if-it.patch
|
||||
patch_apply mfplat-streaming-support/0002-winegstreamer-Push-stream-start-and-segment-events-i.patch
|
||||
patch_apply mfplat-streaming-support/0003-winegstreamer-Introduce-H.264-decoder-transform.patch
|
||||
patch_apply mfplat-streaming-support/0004-winegstreamer-Implement-GetInputAvailableType-for-de.patch
|
||||
patch_apply mfplat-streaming-support/0005-winegstreamer-Implement-GetOutputAvailableType-for-d.patch
|
||||
patch_apply mfplat-streaming-support/0006-winegstreamer-Implement-SetInputType-for-decode-tran.patch
|
||||
patch_apply mfplat-streaming-support/0007-winegstreamer-Implement-SetOutputType-for-decode-tra.patch
|
||||
patch_apply mfplat-streaming-support/0008-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch
|
||||
patch_apply mfplat-streaming-support/0009-winegstreamer-Add-push-mode-path-for-wg_parser.patch
|
||||
patch_apply mfplat-streaming-support/0010-winegstreamer-Implement-Process-Input-Output-for-dec.patch
|
||||
patch_apply mfplat-streaming-support/0011-winestreamer-Implement-ProcessMessage-for-decoder-tr.patch
|
||||
patch_apply mfplat-streaming-support/0012-winegstreamer-Semi-stub-GetAttributes-for-decoder-tr.patch
|
||||
patch_apply mfplat-streaming-support/0013-winegstreamer-Register-the-H.264-decoder-transform.patch
|
||||
patch_apply mfplat-streaming-support/0014-winegstreamer-Introduce-AAC-decoder-transform.patch
|
||||
patch_apply mfplat-streaming-support/0015-winegstreamer-Register-the-AAC-decoder-transform.patch
|
||||
patch_apply mfplat-streaming-support/0016-winegstreamer-Rename-GStreamer-objects-to-be-more-ge.patch
|
||||
patch_apply mfplat-streaming-support/0017-winegstreamer-Report-streams-backwards-in-media-sour.patch
|
||||
patch_apply mfplat-streaming-support/0018-winegstreamer-Implement-Process-Input-Output-for-aud.patch
|
||||
patch_apply mfplat-streaming-support/0019-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch
|
||||
patch_apply mfplat-streaming-support/0020-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch
|
||||
patch_apply mfplat-streaming-support/0021-winegstreamer-Introduce-color-conversion-transform.patch
|
||||
patch_apply mfplat-streaming-support/0022-winegstreamer-Register-the-color-conversion-transfor.patch
|
||||
patch_apply mfplat-streaming-support/0023-winegstreamer-Implement-GetInputAvailableType-for-co.patch
|
||||
patch_apply mfplat-streaming-support/0024-winegstreamer-Implement-SetInputType-for-color-conve.patch
|
||||
patch_apply mfplat-streaming-support/0025-winegstreamer-Implement-GetOutputAvailableType-for-c.patch
|
||||
patch_apply mfplat-streaming-support/0026-winegstreamer-Implement-SetOutputType-for-color-conv.patch
|
||||
patch_apply mfplat-streaming-support/0027-winegstreamer-Implement-Process-Input-Output-for-col.patch
|
||||
patch_apply mfplat-streaming-support/0028-winegstreamer-Implement-ProcessMessage-for-color-con.patch
|
||||
patch_apply mfplat-streaming-support/0029-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch
|
||||
patch_apply mfplat-streaming-support/0030-mf-topology-Forward-failure-from-SetOutputType-when-.patch
|
||||
patch_apply mfplat-streaming-support/0031-winegstreamer-Handle-flush-command-in-audio-converst.patch
|
||||
patch_apply mfplat-streaming-support/0032-winegstreamer-In-the-default-configuration-select-on.patch
|
||||
patch_apply mfplat-streaming-support/0033-winegstreamer-Implement-MF_SD_LANGUAGE.patch
|
||||
patch_apply mfplat-streaming-support/0034-winegstreamer-Only-require-videobox-element-for-pars.patch
|
||||
patch_apply mfplat-streaming-support/0035-winegstreamer-Don-t-rely-on-max_size-in-unseekable-p.patch
|
||||
patch_apply mfplat-streaming-support/0036-winegstreamer-Implement-MFT_MESSAGE_COMMAND_FLUSH-fo.patch
|
||||
patch_apply mfplat-streaming-support/0037-winegstreamer-Default-Frame-size-if-one-isn-t-availa.patch
|
||||
fi
|
||||
|
||||
# Patchset mmsystem.dll16-MIDIHDR_Refcount
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
Loading…
x
Reference in New Issue
Block a user