Updated mfplat-streaming-support patchset

This commit is contained in:
Alistair Leslie-Hughes 2021-07-23 12:30:40 +10:00
parent 4e99d1b2a8
commit b57bf86ec0
40 changed files with 206 additions and 220 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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[] =

View File

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

View File

@ -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[] =

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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[] =

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,2 +1 @@
Fixes: [49692] Multiple applications need a Media Foundation media source implementation
Disabled: true

View File

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