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
f82518af72
commit
aa7895faf6
@ -1,4 +1,4 @@
|
||||
From 6f8f29e9f93a2a2a2393bb009e5b16063c036409 Mon Sep 17 00:00:00 2001
|
||||
From 073dde743ea2fe54e93c50ea24bb83c59adaddd1 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 15 Sep 2020 14:25:26 -0500
|
||||
Subject: [PATCH] winegstreamer: Insert parser into pipeline to rectify type
|
||||
@ -24,10 +24,10 @@ index 60b38a48f5a..7ec71d40800 100644
|
||||
|
||||
HRESULT winegstreamer_stream_handler_create(REFIID riid, void **obj) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
|
||||
index 723f052c10d..075bba3d551 100644
|
||||
index 29947e1554f..92b4100f7bc 100644
|
||||
--- a/dlls/winegstreamer/media_source.c
|
||||
+++ b/dlls/winegstreamer/media_source.c
|
||||
@@ -405,6 +405,122 @@ static const IMFMediaStreamVtbl media_stream_vtbl =
|
||||
@@ -403,6 +403,122 @@ static const IMFMediaStreamVtbl media_stream_vtbl =
|
||||
media_stream_RequestSample
|
||||
};
|
||||
|
||||
@ -147,10 +147,10 @@ index 723f052c10d..075bba3d551 100644
|
||||
+}
|
||||
+
|
||||
+
|
||||
/* creates a stub stream */
|
||||
static HRESULT new_media_stream(struct media_source *source, GstPad *pad, DWORD stream_id, struct media_stream **out_stream)
|
||||
{
|
||||
@@ -436,8 +552,7 @@ static HRESULT new_media_stream(struct media_source *source, GstPad *pad, DWORD
|
||||
struct media_stream *object = heap_alloc_zero(sizeof(*object));
|
||||
@@ -433,8 +549,7 @@ static HRESULT new_media_stream(struct media_source *source, GstPad *pad, DWORD
|
||||
g_object_set(object->appsink, "sync", FALSE, NULL);
|
||||
g_object_set(object->appsink, "max-buffers", 5, NULL);
|
||||
|
||||
@ -160,9 +160,9 @@ index 723f052c10d..075bba3d551 100644
|
||||
|
||||
gst_element_sync_state_with_parent(object->appsink);
|
||||
|
||||
@@ -466,7 +581,16 @@ static HRESULT media_stream_init_desc(struct media_stream *stream)
|
||||
goto fail;
|
||||
}
|
||||
@@ -457,7 +572,16 @@ static HRESULT media_stream_init_desc(struct media_stream *stream)
|
||||
IMFMediaType *stream_type = NULL;
|
||||
HRESULT hr;
|
||||
|
||||
- stream_type = mf_media_type_from_caps(current_caps);
|
||||
+ if (strcmp(gst_structure_get_name(gst_caps_get_structure(current_caps, 0)), "video/x-raw") &&
|
||||
@ -177,8 +177,8 @@ index 723f052c10d..075bba3d551 100644
|
||||
+
|
||||
gst_caps_unref(current_caps);
|
||||
if (!stream_type)
|
||||
{
|
||||
@@ -702,6 +826,23 @@ static const IMFMediaSourceVtbl IMFMediaSource_vtbl =
|
||||
return E_FAIL;
|
||||
@@ -687,6 +811,23 @@ static const IMFMediaSourceVtbl IMFMediaSource_vtbl =
|
||||
media_source_Shutdown,
|
||||
};
|
||||
|
||||
@ -202,7 +202,7 @@ index 723f052c10d..075bba3d551 100644
|
||||
static void stream_added(GstElement *element, GstPad *pad, gpointer user)
|
||||
{
|
||||
struct media_source *source = user;
|
||||
@@ -799,6 +940,8 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
@@ -787,6 +928,8 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
|
||||
gst_bin_add(GST_BIN(object->container), object->decodebin);
|
||||
|
||||
@ -212,10 +212,10 @@ index 723f052c10d..075bba3d551 100644
|
||||
g_signal_connect(object->decodebin, "pad-removed", G_CALLBACK(mf_src_stream_removed_wrapper), object);
|
||||
g_signal_connect(object->decodebin, "no-more-pads", G_CALLBACK(mf_src_no_more_pads_wrapper), object);
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 2c2216f94b6..4d868c616f2 100644
|
||||
index 2e8b0978648..a67cdef72fe 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -602,3 +602,25 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps)
|
||||
@@ -601,3 +601,25 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps)
|
||||
|
||||
return media_type;
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
From d9ecc0265c676aa3eb954d8247b64bcccd12c34b Mon Sep 17 00:00:00 2001
|
||||
From 99b43be87b11803938b12b08298406391b77d510 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 25 Aug 2020 17:35:49 -0500
|
||||
Subject: [PATCH] winegstreamer: Insert videoconvert into decoded-video
|
||||
@ -6,14 +6,14 @@ Subject: [PATCH] winegstreamer: Insert videoconvert into decoded-video
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
dlls/winegstreamer/media_source.c | 99 +++++++++++++++++++++++++++----
|
||||
1 file changed, 86 insertions(+), 13 deletions(-)
|
||||
dlls/winegstreamer/media_source.c | 104 ++++++++++++++++++++++++------
|
||||
1 file changed, 85 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
|
||||
index 075bba3d551..a4ad51bb6f5 100644
|
||||
index 92b4100f7bc..a9aff0eb296 100644
|
||||
--- a/dlls/winegstreamer/media_source.c
|
||||
+++ b/dlls/winegstreamer/media_source.c
|
||||
@@ -432,8 +432,22 @@ static HRESULT media_stream_align_with_mf(struct media_stream *stream)
|
||||
@@ -430,8 +430,22 @@ static HRESULT media_stream_align_with_mf(struct media_stream *stream)
|
||||
g_free(source_caps_str);
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ index 075bba3d551..a4ad51bb6f5 100644
|
||||
{
|
||||
stream->my_sink = gst_element_get_static_pad(stream->appsink, "sink");
|
||||
g_object_set(stream->appsink, "caps", source_caps, NULL);
|
||||
@@ -572,7 +586,10 @@ static HRESULT media_stream_init_desc(struct media_stream *stream)
|
||||
@@ -569,37 +583,89 @@ static HRESULT media_stream_init_desc(struct media_stream *stream)
|
||||
{
|
||||
GstCaps *current_caps = gst_pad_get_current_caps(stream->their_src);
|
||||
IMFMediaTypeHandler *type_handler;
|
||||
@ -48,11 +48,6 @@ index 075bba3d551..a4ad51bb6f5 100644
|
||||
+ unsigned int i;
|
||||
HRESULT hr;
|
||||
|
||||
if (!current_caps)
|
||||
@@ -581,40 +598,96 @@ static HRESULT media_stream_init_desc(struct media_stream *stream)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
- if (strcmp(gst_structure_get_name(gst_caps_get_structure(current_caps, 0)), "video/x-raw") &&
|
||||
- strcmp(gst_structure_get_name(gst_caps_get_structure(current_caps, 0)), "audio/x-raw"))
|
||||
+ if (!strcmp(gst_structure_get_name(gst_caps_get_structure(current_caps, 0)), "video/x-raw"))
|
||||
@ -116,44 +111,37 @@ index 075bba3d551..a4ad51bb6f5 100644
|
||||
gst_caps_unref(current_caps);
|
||||
- if (!stream_type)
|
||||
+ if (!type_count)
|
||||
{
|
||||
+ {
|
||||
+ ERR("Failed to establish an IMFMediaType from any of the possible stream caps!\n");
|
||||
hr = E_FAIL;
|
||||
goto fail;
|
||||
}
|
||||
return E_FAIL;
|
||||
+ }
|
||||
|
||||
- if (FAILED(hr = MFCreateStreamDescriptor(stream->stream_id, 1, &stream_type, &stream->descriptor)))
|
||||
- hr = MFCreateStreamDescriptor(stream->stream_id, 1, &stream_type, &stream->descriptor);
|
||||
-
|
||||
- IMFMediaType_Release(stream_type);
|
||||
-
|
||||
- if (FAILED(hr))
|
||||
- return hr;
|
||||
+ if (FAILED(hr = MFCreateStreamDescriptor(stream->stream_id, type_count, stream_types, &stream->descriptor)))
|
||||
goto fail;
|
||||
+ goto done;
|
||||
|
||||
if (FAILED(hr = IMFStreamDescriptor_GetMediaTypeHandler(stream->descriptor, &type_handler)))
|
||||
goto fail;
|
||||
|
||||
- if (FAILED(hr = IMFMediaTypeHandler_SetCurrentMediaType(type_handler, stream_type)))
|
||||
+ if (FAILED(hr = IMFMediaTypeHandler_SetCurrentMediaType(type_handler, stream_types[0])))
|
||||
goto fail;
|
||||
- return hr;
|
||||
-
|
||||
- hr = IMFMediaTypeHandler_SetCurrentMediaType(type_handler, stream_type);
|
||||
+ goto done;
|
||||
|
||||
- IMFMediaTypeHandler_Release(type_handler);
|
||||
-
|
||||
stream->state = STREAM_INACTIVE;
|
||||
+ if (FAILED(hr = IMFMediaTypeHandler_SetCurrentMediaType(type_handler, stream_types[0])))
|
||||
+ goto done;
|
||||
|
||||
+ IMFMediaTypeHandler_Release(type_handler);
|
||||
+done:
|
||||
+ if (type_handler)
|
||||
+ IMFMediaTypeHandler_Release(type_handler);
|
||||
+ for (i = 0; i < type_count; i++)
|
||||
+ IMFMediaType_Release(stream_types[i]);
|
||||
+ if (stream_types != &stream_type)
|
||||
+ heap_free(stream_types);
|
||||
+
|
||||
return S_OK;
|
||||
fail:
|
||||
if (type_handler)
|
||||
IMFMediaTypeHandler_Release(type_handler);
|
||||
+ if (stream_types)
|
||||
+ {
|
||||
+ for (i = 0; i < type_count; i++)
|
||||
+ IMFMediaType_Release(stream_types[i]);
|
||||
+ if (stream_types != &stream_type)
|
||||
+ heap_free(stream_types);
|
||||
+ }
|
||||
return hr;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
From d2b77ee21bad4c0b3964ae828ade406f3b4e7a7c Mon Sep 17 00:00:00 2001
|
||||
From b5f1fc2793dce6165b509cc326163d71601d963c Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 25 Aug 2020 17:37:28 -0500
|
||||
Subject: [PATCH] winegstreamer: Insert audioconvert into decoded audio
|
||||
@ -10,10 +10,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 11 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
|
||||
index a4ad51bb6f5..c5d196c867c 100644
|
||||
index a9aff0eb296..6190ac57e0e 100644
|
||||
--- a/dlls/winegstreamer/media_source.c
|
||||
+++ b/dlls/winegstreamer/media_source.c
|
||||
@@ -449,9 +449,18 @@ static HRESULT media_stream_align_with_mf(struct media_stream *stream)
|
||||
@@ -447,9 +447,18 @@ static HRESULT media_stream_align_with_mf(struct media_stream *stream)
|
||||
}
|
||||
else if(!strcmp(gst_structure_get_name(gst_caps_get_structure(source_caps, 0)), "audio/x-raw"))
|
||||
{
|
@ -1,4 +1,4 @@
|
||||
From d5ea67443337ece97b9bd3243224afae2ca15df0 Mon Sep 17 00:00:00 2001
|
||||
From 3a0e2a85e06e2026a430fe548374f36b9be7a53b Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 24 Mar 2020 16:00:26 -0500
|
||||
Subject: [PATCH] winegstreamer: Translate H.264 caps to attributes.
|
||||
@ -9,7 +9,7 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 80 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 4d868c616f2..d1554c86a1d 100644
|
||||
index a67cdef72fe..97b02d85a5d 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -26,6 +26,7 @@
|
||||
@ -95,7 +95,7 @@ index 4d868c616f2..d1554c86a1d 100644
|
||||
else
|
||||
{
|
||||
FIXME("Unrecognized video format %s\n", mime_type);
|
||||
@@ -607,11 +676,22 @@ GstCaps *make_mf_compatible_caps(GstCaps *caps)
|
||||
@@ -606,11 +675,22 @@ GstCaps *make_mf_compatible_caps(GstCaps *caps)
|
||||
{
|
||||
GstCaps *ret;
|
||||
IMFMediaType *media_type;
|
@ -1,4 +1,4 @@
|
||||
From 7a95da0282a805ca1faabd34698b9a8d5ce5cc5d Mon Sep 17 00:00:00 2001
|
||||
From 3abc720777969b80c82c8e19215d765e4ddca913 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 24 Mar 2020 16:01:20 -0500
|
||||
Subject: [PATCH] winegstreamer: Translate WMV caps to attributes.
|
||||
@ -9,7 +9,7 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 51 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index d1554c86a1d..7c8632a0c5d 100644
|
||||
index 97b02d85a5d..1ef86a3cff5 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -457,6 +457,24 @@ uncompressed_video_formats[] =
|
@ -1,4 +1,4 @@
|
||||
From de8ae8395e20727d8f9a12903ab611b27f6a47cd Mon Sep 17 00:00:00 2001
|
||||
From 0a7b4fe24117d2c9e782b046819ffa7d3e646ae4 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 24 Mar 2020 16:02:27 -0500
|
||||
Subject: [PATCH] winegstreamer: Translate AAC caps to attributes.
|
||||
@ -9,7 +9,7 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 108 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 7c8632a0c5d..9a9e306be9a 100644
|
||||
index 1ef86a3cff5..9239cf9eff9 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -457,6 +457,15 @@ uncompressed_video_formats[] =
|
||||
@ -28,9 +28,9 @@ index 7c8632a0c5d..9a9e306be9a 100644
|
||||
static void codec_data_to_user_data(GstStructure *structure, IMFMediaType *type)
|
||||
{
|
||||
const GValue *codec_data;
|
||||
@@ -707,6 +716,105 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps)
|
||||
return NULL;
|
||||
}
|
||||
@@ -706,6 +715,105 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps)
|
||||
|
||||
IMFMediaType_SetUINT32(media_type, &MF_MT_AUDIO_BITS_PER_SAMPLE, depth);
|
||||
}
|
||||
+ else if (!(strcmp(mime_type, "audio/mpeg")))
|
||||
+ {
|
@ -1,4 +1,4 @@
|
||||
From 3468a6f2e9d5c5971794af548bf05d5aa01ae589 Mon Sep 17 00:00:00 2001
|
||||
From ae279be0b4841c998dfa916f61f5bd7507190938 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 25 Mar 2020 13:36:19 -0500
|
||||
Subject: [PATCH] winegstreamer: Translate MPEG-4 Section-2 caps to attributes.
|
||||
@ -9,7 +9,7 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 9a9e306be9a..c586e10058b 100644
|
||||
index 9239cf9eff9..4fde3a8a7fb 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -650,6 +650,22 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps)
|
@ -1,4 +1,4 @@
|
||||
From e8311eb10def9d4d81db18ed8ffb220b9cbdf382 Mon Sep 17 00:00:00 2001
|
||||
From 2010fec0d85988d7a0b7aaadd6438e1d5c727e4a Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 12 May 2020 17:05:41 -0500
|
||||
Subject: [PATCH] winegstreamer: Translate WMA caps to attributes.
|
||||
@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 24 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index c586e10058b..8318a66753b 100644
|
||||
index 4fde3a8a7fb..4aedfea45e0 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -831,6 +831,30 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps)
|
||||
@@ -830,6 +830,30 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps)
|
||||
FIXME("Unhandled mpegversion %d\n", mpeg_version);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
From 7eed41658ef481fce3dc463e7a863c37fa0f9e61 Mon Sep 17 00:00:00 2001
|
||||
From 2fe4bd639fe92f050ab4c0be2a5e586d4ae5852a Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 31 Mar 2020 11:21:21 -0500
|
||||
Subject: [PATCH] winegstreamer: Implement
|
||||
@ -50,10 +50,10 @@ index 309f7b669a4..72d06e31880 100644
|
||||
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||
|
||||
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
|
||||
index c5d196c867c..bbf784090f1 100644
|
||||
index 6190ac57e0e..5f203a946bc 100644
|
||||
--- a/dlls/winegstreamer/media_source.c
|
||||
+++ b/dlls/winegstreamer/media_source.c
|
||||
@@ -69,6 +69,7 @@ struct media_source
|
||||
@@ -67,6 +67,7 @@ struct media_source
|
||||
IMFByteStream *byte_stream;
|
||||
struct media_stream **streams;
|
||||
ULONG stream_count;
|
||||
@ -61,7 +61,7 @@ index c5d196c867c..bbf784090f1 100644
|
||||
GstBus *bus;
|
||||
GstElement *container;
|
||||
GstElement *decodebin;
|
||||
@@ -803,12 +804,19 @@ static HRESULT WINAPI media_source_CreatePresentationDescriptor(IMFMediaSource *
|
||||
@@ -781,12 +782,19 @@ static HRESULT WINAPI media_source_CreatePresentationDescriptor(IMFMediaSource *
|
||||
{
|
||||
struct media_source *source = impl_from_IMFMediaSource(iface);
|
||||
|
||||
@ -83,7 +83,7 @@ index c5d196c867c..bbf784090f1 100644
|
||||
}
|
||||
|
||||
static HRESULT WINAPI media_source_Start(IMFMediaSource *iface, IMFPresentationDescriptor *descriptor,
|
||||
@@ -871,6 +879,8 @@ static HRESULT WINAPI media_source_Shutdown(IMFMediaSource *iface)
|
||||
@@ -849,6 +857,8 @@ static HRESULT WINAPI media_source_Shutdown(IMFMediaSource *iface)
|
||||
if (source->their_sink)
|
||||
gst_object_unref(GST_OBJECT(source->their_sink));
|
||||
|
||||
@ -92,7 +92,7 @@ index c5d196c867c..bbf784090f1 100644
|
||||
if (source->event_queue)
|
||||
IMFMediaEventQueue_Shutdown(source->event_queue);
|
||||
if (source->byte_stream)
|
||||
@@ -977,6 +987,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
@@ -954,6 +964,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
GST_STATIC_PAD_TEMPLATE("mf_src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS_ANY);
|
||||
|
||||
struct media_source *object = heap_alloc_zero(sizeof(*object));
|
||||
@ -100,7 +100,7 @@ index c5d196c867c..bbf784090f1 100644
|
||||
unsigned int i;
|
||||
HRESULT hr;
|
||||
int ret;
|
||||
@@ -1063,6 +1074,25 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
@@ -1043,6 +1054,25 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
gst_sample_unref(preroll);
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ index c5d196c867c..bbf784090f1 100644
|
||||
object->state = SOURCE_STOPPED;
|
||||
|
||||
*out_media_source = object;
|
||||
@@ -1071,6 +1101,8 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
@@ -1051,6 +1081,8 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
fail:
|
||||
WARN("Failed to construct MFMediaSource, hr %#x.\n", hr);
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 246718182565c586c0968e0fc58aa5b16734916f Mon Sep 17 00:00:00 2001
|
||||
From 04d17547828174ec264284752eb65b1b1e1b942d Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 24 Mar 2020 16:15:35 -0500
|
||||
Subject: [PATCH] winegstreamer: Introduce IMFMediaType -> GstCaps converter.
|
||||
@ -22,10 +22,10 @@ index 7ec71d40800..00e28f1d092 100644
|
||||
HRESULT winegstreamer_stream_handler_create(REFIID riid, void **obj) DECLSPEC_HIDDEN;
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 8318a66753b..7e564b0c8f9 100644
|
||||
index 4aedfea45e0..f0b611e7ef5 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -903,3 +903,152 @@ GstCaps *make_mf_compatible_caps(GstCaps *caps)
|
||||
@@ -902,3 +902,152 @@ GstCaps *make_mf_compatible_caps(GstCaps *caps)
|
||||
|
||||
return ret;
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
From c3939ab363461ce89398cbba13812c676d1a1352 Mon Sep 17 00:00:00 2001
|
||||
From 3e0c22f47b91d130d1e136fa3282cbed1f275f0a Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 24 Mar 2020 16:18:40 -0500
|
||||
Subject: [PATCH] winegstreamer: Translate H.264 attributes to caps.
|
||||
@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 48 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 7e564b0c8f9..ebef33ed234 100644
|
||||
index f0b611e7ef5..7370ae26f4f 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -973,6 +973,54 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
@@ -972,6 +972,54 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
From 13f27bdf8e6a4b64413fb939dff9c788e9291729 Mon Sep 17 00:00:00 2001
|
||||
From dc5b390262d808615e4b49eb86286d2f6a6f41b1 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 24 Mar 2020 16:20:17 -0500
|
||||
Subject: [PATCH] winegstreamer: Translate WMV attributes to caps.
|
||||
@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 51 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index ebef33ed234..0016fc4347c 100644
|
||||
index 7370ae26f4f..5779f81ce39 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -904,6 +904,21 @@ GstCaps *make_mf_compatible_caps(GstCaps *caps)
|
||||
@@ -903,6 +903,21 @@ GstCaps *make_mf_compatible_caps(GstCaps *caps)
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@ index ebef33ed234..0016fc4347c 100644
|
||||
GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
{
|
||||
GUID major_type;
|
||||
@@ -1021,6 +1036,42 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
@@ -1020,6 +1035,42 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
gst_caps_set_simple(output, "level", G_TYPE_STRING, level, NULL);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
From 57f0b6bf1dac9c2269d8deefa204f6dd0e074f3a Mon Sep 17 00:00:00 2001
|
||||
From f710ed4264cc6fb8c9ad1ffe15345c24e2d72aef Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 21 Apr 2020 10:31:02 -0500
|
||||
Subject: [PATCH] winegstreamer: Translate AAC attributes to caps.
|
||||
@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 66 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 0016fc4347c..89eeda37994 100644
|
||||
index 5779f81ce39..58d23a9ac15 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -1121,6 +1121,72 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
@@ -1120,6 +1120,72 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
return NULL;
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
From 7b07befce18653b72e93cecbf0bba3e41fd2bf86 Mon Sep 17 00:00:00 2001
|
||||
From 7b3b63b25476f97aa1aad6636df47d6f540a52b3 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Mon, 11 May 2020 16:03:09 -0500
|
||||
Subject: [PATCH] winegstreamer: Translate MPEG-4 Section-2 attributes to caps.
|
||||
@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 89eeda37994..144b6281720 100644
|
||||
index 58d23a9ac15..a6230121cbf 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -1072,6 +1072,14 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
@@ -1071,6 +1071,14 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
|
||||
user_data_to_codec_data(type, output);
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
From 9c8ecccf7f94e897f1819076ec45b6a750785520 Mon Sep 17 00:00:00 2001
|
||||
From a8f54c1e644fcb185d3a6e3fc7b3e5e79a8b17d8 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 12 May 2020 17:05:59 -0500
|
||||
Subject: [PATCH] winegstreamer: Translate WMA attributes to caps.
|
||||
@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 15 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 144b6281720..015f23dd2dc 100644
|
||||
index a6230121cbf..4b7a9760688 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -1195,6 +1195,21 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
@@ -1194,6 +1194,21 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
CoTaskMemFree(user_data);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
From e6c2b857eb4715a114a1613f6b9324b68dd3ec1b Mon Sep 17 00:00:00 2001
|
||||
From 94891a5e484b97577df09a4e6ef3106c79d2391a Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 31 Mar 2020 15:10:03 -0500
|
||||
Subject: [PATCH] winegstreamer: Implement IMFMediaSource::Start.
|
||||
@ -52,16 +52,15 @@ index 72d06e31880..e6a1694a11f 100644
|
||||
IMFPresentationDescriptor_Release(descriptor);
|
||||
|
||||
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
|
||||
index bbf784090f1..b35c8bf48d2 100644
|
||||
index 5f203a946bc..d6ea8b52aca 100644
|
||||
--- a/dlls/winegstreamer/media_source.c
|
||||
+++ b/dlls/winegstreamer/media_source.c
|
||||
@@ -56,15 +56,40 @@ struct media_stream
|
||||
STREAM_STUB,
|
||||
@@ -55,14 +55,39 @@ struct media_stream
|
||||
{
|
||||
STREAM_INACTIVE,
|
||||
STREAM_SHUTDOWN,
|
||||
+ STREAM_RUNNING,
|
||||
} state;
|
||||
/* used when in STUB state: */
|
||||
DWORD stream_id;
|
||||
+ BOOL eos;
|
||||
+};
|
||||
@ -96,15 +95,15 @@ index bbf784090f1..b35c8bf48d2 100644
|
||||
IMFMediaEventQueue *event_queue;
|
||||
IMFByteStream *byte_stream;
|
||||
struct media_stream **streams;
|
||||
@@ -78,6 +103,7 @@ struct media_source
|
||||
@@ -76,6 +101,7 @@ struct media_source
|
||||
{
|
||||
SOURCE_OPENING,
|
||||
SOURCE_STOPPED,
|
||||
+ SOURCE_RUNNING,
|
||||
SOURCE_SHUTDOWN,
|
||||
} state;
|
||||
HANDLE all_streams_event;
|
||||
@@ -93,7 +119,265 @@ static inline struct media_source *impl_from_IMFMediaSource(IMFMediaSource *ifac
|
||||
HANDLE no_more_pads_event;
|
||||
@@ -91,7 +117,265 @@ static inline struct media_source *impl_from_IMFMediaSource(IMFMediaSource *ifac
|
||||
return CONTAINING_RECORD(iface, struct media_source, IMFMediaSource_iface);
|
||||
}
|
||||
|
||||
@ -371,7 +370,7 @@ index bbf784090f1..b35c8bf48d2 100644
|
||||
GstBuffer **buf)
|
||||
{
|
||||
struct media_source *source = gst_pad_get_element_private(pad);
|
||||
@@ -242,8 +526,8 @@ GstBusSyncReply bus_watch(GstBus *bus, GstMessage *message, gpointer user)
|
||||
@@ -240,8 +524,8 @@ GstBusSyncReply bus_watch(GstBus *bus, GstMessage *message, gpointer user)
|
||||
break;
|
||||
}
|
||||
|
||||
@ -382,7 +381,7 @@ index bbf784090f1..b35c8bf48d2 100644
|
||||
}
|
||||
|
||||
static HRESULT WINAPI media_stream_QueryInterface(IMFMediaStream *iface, REFIID riid, void **out)
|
||||
@@ -820,16 +1104,32 @@ static HRESULT WINAPI media_source_CreatePresentationDescriptor(IMFMediaSource *
|
||||
@@ -798,16 +1082,32 @@ static HRESULT WINAPI media_source_CreatePresentationDescriptor(IMFMediaSource *
|
||||
}
|
||||
|
||||
static HRESULT WINAPI media_source_Start(IMFMediaSource *iface, IMFPresentationDescriptor *descriptor,
|
||||
@ -418,9 +417,9 @@ index bbf784090f1..b35c8bf48d2 100644
|
||||
}
|
||||
|
||||
static HRESULT WINAPI media_source_Stop(IMFMediaSource *iface)
|
||||
@@ -898,6 +1198,9 @@ static HRESULT WINAPI media_source_Shutdown(IMFMediaSource *iface)
|
||||
if (source->all_streams_event)
|
||||
CloseHandle(source->all_streams_event);
|
||||
@@ -876,6 +1176,9 @@ static HRESULT WINAPI media_source_Shutdown(IMFMediaSource *iface)
|
||||
if (source->no_more_pads_event)
|
||||
CloseHandle(source->no_more_pads_event);
|
||||
|
||||
+ if (source->async_commands_queue)
|
||||
+ MFUnlockWorkQueue(source->async_commands_queue);
|
||||
@ -428,7 +427,7 @@ index bbf784090f1..b35c8bf48d2 100644
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
@@ -996,6 +1299,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
@@ -973,6 +1276,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
object->IMFMediaSource_iface.lpVtbl = &IMFMediaSource_vtbl;
|
||||
@ -436,7 +435,7 @@ index bbf784090f1..b35c8bf48d2 100644
|
||||
object->ref = 1;
|
||||
object->byte_stream = bytestream;
|
||||
IMFByteStream_AddRef(bytestream);
|
||||
@@ -1004,6 +1308,9 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
@@ -981,6 +1285,9 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
if (FAILED(hr = MFCreateEventQueue(&object->event_queue)))
|
||||
goto fail;
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b72b32c437bb27a46320d8a143b503a6cd7ee600 Mon Sep 17 00:00:00 2001
|
||||
From d6e46ad311f773daed7d065c5c46f55c430a544c Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 25 Mar 2020 10:43:03 -0500
|
||||
Subject: [PATCH] winegstreamer: Implement IMFMediaStream::RequestSample.
|
||||
@ -50,10 +50,10 @@ index 00e28f1d092..df1e643c3f6 100644
|
||||
HRESULT winegstreamer_stream_handler_create(REFIID riid, void **obj) DECLSPEC_HIDDEN;
|
||||
|
||||
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
|
||||
index b35c8bf48d2..90347f365cb 100644
|
||||
index d6ea8b52aca..31f90443ee4 100644
|
||||
--- a/dlls/winegstreamer/media_source.c
|
||||
+++ b/dlls/winegstreamer/media_source.c
|
||||
@@ -66,6 +66,7 @@ struct media_stream
|
||||
@@ -64,6 +64,7 @@ struct media_stream
|
||||
enum source_async_op
|
||||
{
|
||||
SOURCE_ASYNC_START,
|
||||
@ -61,7 +61,7 @@ index b35c8bf48d2..90347f365cb 100644
|
||||
};
|
||||
|
||||
struct source_async_command
|
||||
@@ -81,6 +82,11 @@ struct source_async_command
|
||||
@@ -79,6 +80,11 @@ struct source_async_command
|
||||
GUID format;
|
||||
PROPVARIANT position;
|
||||
} start;
|
||||
@ -73,7 +73,7 @@ index b35c8bf48d2..90347f365cb 100644
|
||||
} u;
|
||||
};
|
||||
|
||||
@@ -340,6 +346,78 @@ static HRESULT start_pipeline(struct media_source *source, struct source_async_c
|
||||
@@ -338,6 +344,78 @@ static HRESULT start_pipeline(struct media_source *source, struct source_async_c
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
@ -152,7 +152,7 @@ index b35c8bf48d2..90347f365cb 100644
|
||||
static HRESULT WINAPI source_async_commands_Invoke(IMFAsyncCallback *iface, IMFAsyncResult *result)
|
||||
{
|
||||
struct media_source *source = impl_from_async_commands_callback_IMFAsyncCallback(iface);
|
||||
@@ -359,6 +437,9 @@ static HRESULT WINAPI source_async_commands_Invoke(IMFAsyncCallback *iface, IMFA
|
||||
@@ -357,6 +435,9 @@ static HRESULT WINAPI source_async_commands_Invoke(IMFAsyncCallback *iface, IMFA
|
||||
case SOURCE_ASYNC_START:
|
||||
start_pipeline(source, command);
|
||||
break;
|
||||
@ -162,7 +162,7 @@ index b35c8bf48d2..90347f365cb 100644
|
||||
default:
|
||||
;
|
||||
}
|
||||
@@ -667,13 +748,37 @@ static HRESULT WINAPI media_stream_GetStreamDescriptor(IMFMediaStream* iface, IM
|
||||
@@ -665,13 +746,37 @@ static HRESULT WINAPI media_stream_GetStreamDescriptor(IMFMediaStream* iface, IM
|
||||
static HRESULT WINAPI media_stream_RequestSample(IMFMediaStream *iface, IUnknown *token)
|
||||
{
|
||||
struct media_stream *stream = impl_from_IMFMediaStream(iface);
|
||||
@ -201,19 +201,19 @@ index b35c8bf48d2..90347f365cb 100644
|
||||
}
|
||||
|
||||
static const IMFMediaStreamVtbl media_stream_vtbl =
|
||||
@@ -846,6 +951,7 @@ static HRESULT new_media_stream(struct media_source *source, GstPad *pad, DWORD
|
||||
@@ -843,6 +948,7 @@ static HRESULT new_media_stream(struct media_source *source, GstPad *pad, DWORD
|
||||
object->stream_id = stream_id;
|
||||
|
||||
object->state = STREAM_STUB;
|
||||
object->state = STREAM_INACTIVE;
|
||||
+ object->eos = FALSE;
|
||||
|
||||
if (FAILED(hr = MFCreateEventQueue(&object->event_queue)))
|
||||
goto fail;
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index 015f23dd2dc..6f88048cece 100644
|
||||
index 4b7a9760688..ce0c951ac0d 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -1240,3 +1240,93 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
@@ -1239,3 +1239,93 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type)
|
||||
FIXME("Unrecognized major type %s\n", debugstr_guid(&major_type));
|
||||
return NULL;
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
From ee4b5e9d3bef0c765aa3a3ff2523b7646b9335d5 Mon Sep 17 00:00:00 2001
|
||||
From d3687d998fc5cc3ef11d53554e42c591905ffae2 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 31 Mar 2020 15:15:07 -0500
|
||||
Subject: [PATCH] winegstreamer: Implement IMFMediaSource::GetCharacteristics.
|
||||
@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
|
||||
index 90347f365cb..c3c4e0b2e9a 100644
|
||||
index 31f90443ee4..536f0e5e140 100644
|
||||
--- a/dlls/winegstreamer/media_source.c
|
||||
+++ b/dlls/winegstreamer/media_source.c
|
||||
@@ -1182,12 +1182,14 @@ static HRESULT WINAPI media_source_GetCharacteristics(IMFMediaSource *iface, DWO
|
||||
@@ -1160,12 +1160,14 @@ static HRESULT WINAPI media_source_GetCharacteristics(IMFMediaSource *iface, DWO
|
||||
{
|
||||
struct media_source *source = impl_from_IMFMediaSource(iface);
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1ee7c9a0f127775e54956ed085b5412ffd151c1f Mon Sep 17 00:00:00 2001
|
||||
From 96232a45c5c32781ace6d14196e5c88603ad831f Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Tue, 31 Mar 2020 15:15:50 -0500
|
||||
Subject: [PATCH] winegstreamer: Calculate the MF_PD_DURATION of the media
|
||||
@ -10,10 +10,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 40 insertions(+)
|
||||
|
||||
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
|
||||
index c3c4e0b2e9a..86100d7ff2a 100644
|
||||
index 536f0e5e140..ff6b7c8eac9 100644
|
||||
--- a/dlls/winegstreamer/media_source.c
|
||||
+++ b/dlls/winegstreamer/media_source.c
|
||||
@@ -1508,6 +1508,46 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
@@ -1488,6 +1488,46 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
||||
heap_free(descriptors);
|
||||
descriptors = NULL;
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 0093ef3bc7c0a236b3450423529ecbf66746b6bc Mon Sep 17 00:00:00 2001
|
||||
From c19ab97e7f9261b231d34a37999174d670cfafd3 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 29 Jan 2020 15:37:39 -0600
|
||||
Subject: [PATCH] tools: Add support for multiple parent directories.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user