From dea57ccd5fa3959b10068fcfc5ee6f4f0ceae2e8 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Thu, 10 Dec 2020 14:17:40 +1100 Subject: [PATCH] Revert "Updated mfplat-streaming-support patchset" This update cause regressions with UE4 based games. This reverts commit 3511fe03eee9cbc6bc85c90f8780954f2fe4104f. --- ...format-type-setting-functions-to-pre.patch | 221 ------------------ ...lement-Process-Input-Output-for-aud.patch} | 148 +++++------- ...lement-Get-Input-Output-StreamInfo-.patch} | 17 +- ...lement-Get-Attributes-functions-for.patch} | 16 +- ...ntroduce-color-conversion-transform.patch} | 43 ++-- ...ister-the-color-conversion-transfor.patch} | 10 +- ...lement-GetInputAvailableType-for-co.patch} | 2 +- ...lement-SetInputType-for-color-conve.patch} | 80 +++---- ...lement-GetOutputAvailableType-for-c.patch} | 23 +- ...lement-SetOutputType-for-color-conv.patch} | 78 +++---- ...lement-Process-Input-Output-for-col.patch} | 136 +++++------ ...lement-ProcessMessage-for-color-con.patch} | 6 +- ...lement-Get-Input-Output-StreamInfo-.patch} | 17 +- ...lement-Get-Attributes-functions-for.patch} | 16 +- ...lement-Get-Input-Output-CurrentType.patch} | 6 +- ...eamer-Implement-IMFMediaSource-Stop.patch} | 2 +- ...negstreamer-Report-streams-backwards.patch | 26 --- ...-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch} | 6 +- ...-mf-Add-invalid-connect-method-test.patch} | 2 +- ... => 0021-Allow-for-compressed-types.patch} | 10 +- ...ditionally-deliver-NULL-EOS-samples.patch} | 2 +- ...t-more-samples-when-a-transform-nee.patch} | 2 +- ...K-Flush-decoder-when-changing-times.patch} | 2 +- ...-IMFSeekInfo-GetNearestKeyFrames-st.patch} | 6 +- ...up-raw-audio-caps-to-be-compatible-.patch} | 8 +- ...-MF_PD_MIME_TYPE-on-source-s-presen.patch} | 10 +- ...ert-parser-into-pipeline-to-rectify.patch} | 6 +- ...-Translate-H.264-caps-to-attributes.patch} | 12 +- ...er-Translate-WMV-caps-to-attributes.patch} | 8 +- ...er-Translate-AAC-caps-to-attributes.patch} | 8 +- ...nslate-MPEG-4-Section-2-caps-to-att.patch} | 6 +- ...er-Translate-WMA-caps-to-attributes.patch} | 6 +- ...-Translate-H.264-attributes-to-caps.patch} | 8 +- ...er-Translate-WMV-attributes-to-caps.patch} | 8 +- ...er-Translate-AAC-attributes-to-caps.patch} | 6 +- ...nslate-MPEG-4-Section-2-attributes-.patch} | 6 +- ...er-Translate-WMA-attributes-to-caps.patch} | 6 +- ...ort-for-multiple-parent-directories.patch} | 8 +- ...=> 0040-mf-Introduce-handler-helper.patch} | 16 +- ...-Implement-decoder-MFT-on-gstreamer.patch} | 18 +- ...t-all-streams-when-creating-a-sourc.patch} | 2 +- ...laneous.patch => 0043-Miscellaneous.patch} | 4 +- .../{0045-WMV.patch => 0044-WMV.patch} | 14 +- ...pose-PCM-output-type-on-AAC-decoder.patch} | 2 +- ...e-tests.patch => 0046-Improve-tests.patch} | 2 +- ....patch => 0047-Revert-Improve-tests.patch} | 2 +- ...ckwards-and-only-select-one-of-each.patch} | 27 ++- ...troduce-MPEG-4-Section-2-video-decod.patch | 12 +- ...streamer-Introduce-WMA-audio-decoder.patch | 12 +- ...egstreamer-Implement-MF_SD_LANGUAGE.patch} | 8 +- patches/patchinstall.sh | 96 ++++---- 51 files changed, 439 insertions(+), 759 deletions(-) delete mode 100644 patches/mfplat-streaming-support/0001-winegstreamer-Reformat-type-setting-functions-to-pre.patch rename patches/mfplat-streaming-support/{0002-winegstreamer-Implement-Process-Input-Output-for-aud.patch => 0003-winegstreamer-Implement-Process-Input-Output-for-aud.patch} (73%) rename patches/mfplat-streaming-support/{0003-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch => 0004-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch} (73%) rename patches/mfplat-streaming-support/{0004-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch => 0005-winegstreamer-Implement-Get-Attributes-functions-for.patch} (86%) rename patches/mfplat-streaming-support/{0005-winegstreamer-Introduce-color-conversion-transform.patch => 0007-winegstreamer-Introduce-color-conversion-transform.patch} (92%) rename patches/mfplat-streaming-support/{0006-winegstreamer-Register-the-color-conversion-transfor.patch => 0008-winegstreamer-Register-the-color-conversion-transfor.patch} (88%) rename patches/mfplat-streaming-support/{0007-winegstreamer-Implement-GetInputAvailableType-for-co.patch => 0009-winegstreamer-Implement-GetInputAvailableType-for-co.patch} (97%) rename patches/mfplat-streaming-support/{0008-winegstreamer-Implement-SetInputType-for-color-conve.patch => 0010-winegstreamer-Implement-SetInputType-for-color-conve.patch} (61%) rename patches/mfplat-streaming-support/{0009-winegstreamer-Implement-GetOutputAvailableType-for-c.patch => 0011-winegstreamer-Implement-GetOutputAvailableType-for-c.patch} (73%) rename patches/mfplat-streaming-support/{0010-winegstreamer-Implement-SetOutputType-for-color-conv.patch => 0012-winegstreamer-Implement-SetOutputType-for-color-conv.patch} (54%) rename patches/mfplat-streaming-support/{0011-winegstreamer-Implement-Process-Input-Output-for-col.patch => 0013-winegstreamer-Implement-Process-Input-Output-for-col.patch} (67%) rename patches/mfplat-streaming-support/{0012-winegstreamer-Implement-ProcessMessage-for-color-con.patch => 0014-winegstreamer-Implement-ProcessMessage-for-color-con.patch} (87%) rename patches/mfplat-streaming-support/{0013-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch => 0015-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch} (73%) rename patches/mfplat-streaming-support/{0014-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch => 0016-winegstreamer-Implement-Get-Attributes-functions-for.patch} (86%) rename patches/mfplat-streaming-support/{0015-winegstreamer-Implement-Get-Input-Output-CurrentType.patch => 0017-winegstreamer-Implement-Get-Input-Output-CurrentType.patch} (93%) rename patches/mfplat-streaming-support/{0016-winegstreamer-Implement-IMFMediaSource-Stop.patch => 0018-winegstreamer-Implement-IMFMediaSource-Stop.patch} (97%) delete mode 100644 patches/mfplat-streaming-support/0019-winegstreamer-Report-streams-backwards.patch rename patches/mfplat-streaming-support/{0017-winegstreamer-Set-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch => 0019-winegstreamer-Set-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch} (82%) rename patches/mfplat-streaming-support/{0021-mf-Add-invalid-connect-method-test.patch => 0020-mf-Add-invalid-connect-method-test.patch} (96%) rename patches/mfplat-streaming-support/{0022-Allow-for-compressed-types.patch => 0021-Allow-for-compressed-types.patch} (89%) rename patches/mfplat-streaming-support/{0023-mf-session-Unconditionally-deliver-NULL-EOS-samples.patch => 0022-mf-session-Unconditionally-deliver-NULL-EOS-samples.patch} (95%) rename patches/mfplat-streaming-support/{0024-mf-session-Request-more-samples-when-a-transform-nee.patch => 0023-mf-session-Request-more-samples-when-a-transform-nee.patch} (96%) rename patches/mfplat-streaming-support/{0025-HACK-Flush-decoder-when-changing-times.patch => 0024-HACK-Flush-decoder-when-changing-times.patch} (93%) rename patches/mfplat-streaming-support/{0026-winegstreamer-Add-IMFSeekInfo-GetNearestKeyFrames-st.patch => 0025-winegstreamer-Add-IMFSeekInfo-GetNearestKeyFrames-st.patch} (97%) rename patches/mfplat-streaming-support/{0027-winegstreamer-Fixup-raw-audio-caps-to-be-compatible-.patch => 0026-winegstreamer-Fixup-raw-audio-caps-to-be-compatible-.patch} (95%) rename patches/mfplat-streaming-support/{0028-winegstreamer-Set-MF_PD_MIME_TYPE-on-source-s-presen.patch => 0027-winegstreamer-Set-MF_PD_MIME_TYPE-on-source-s-presen.patch} (82%) rename patches/mfplat-streaming-support/{0029-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch => 0028-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch} (97%) rename patches/mfplat-streaming-support/{0030-winegstreamer-Translate-H.264-caps-to-attributes.patch => 0029-winegstreamer-Translate-H.264-caps-to-attributes.patch} (93%) rename patches/mfplat-streaming-support/{0031-winegstreamer-Translate-WMV-caps-to-attributes.patch => 0030-winegstreamer-Translate-WMV-caps-to-attributes.patch} (92%) rename patches/mfplat-streaming-support/{0032-winegstreamer-Translate-AAC-caps-to-attributes.patch => 0031-winegstreamer-Translate-AAC-caps-to-attributes.patch} (96%) rename patches/mfplat-streaming-support/{0033-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch => 0032-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch} (88%) rename patches/mfplat-streaming-support/{0034-winegstreamer-Translate-WMA-caps-to-attributes.patch => 0033-winegstreamer-Translate-WMA-caps-to-attributes.patch} (90%) rename patches/mfplat-streaming-support/{0035-winegstreamer-Translate-H.264-attributes-to-caps.patch => 0034-winegstreamer-Translate-H.264-attributes-to-caps.patch} (95%) rename patches/mfplat-streaming-support/{0036-winegstreamer-Translate-WMV-attributes-to-caps.patch => 0035-winegstreamer-Translate-WMV-attributes-to-caps.patch} (92%) rename patches/mfplat-streaming-support/{0037-winegstreamer-Translate-AAC-attributes-to-caps.patch => 0036-winegstreamer-Translate-AAC-attributes-to-caps.patch} (95%) rename patches/mfplat-streaming-support/{0038-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch => 0037-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch} (85%) rename patches/mfplat-streaming-support/{0039-winegstreamer-Translate-WMA-attributes-to-caps.patch => 0038-winegstreamer-Translate-WMA-attributes-to-caps.patch} (88%) rename patches/mfplat-streaming-support/{0040-tools-Add-support-for-multiple-parent-directories.patch => 0039-tools-Add-support-for-multiple-parent-directories.patch} (96%) rename patches/mfplat-streaming-support/{0041-mf-Introduce-handler-helper.patch => 0040-mf-Introduce-handler-helper.patch} (98%) rename patches/mfplat-streaming-support/{0042-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch => 0041-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch} (98%) rename patches/mfplat-streaming-support/{0043-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch => 0042-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch} (92%) rename patches/mfplat-streaming-support/{0044-Miscellaneous.patch => 0043-Miscellaneous.patch} (98%) rename patches/mfplat-streaming-support/{0045-WMV.patch => 0044-WMV.patch} (93%) rename patches/mfplat-streaming-support/{0046-Expose-PCM-output-type-on-AAC-decoder.patch => 0045-Expose-PCM-output-type-on-AAC-decoder.patch} (94%) rename patches/mfplat-streaming-support/{0047-Improve-tests.patch => 0046-Improve-tests.patch} (99%) rename patches/mfplat-streaming-support/{0048-Revert-Improve-tests.patch => 0047-Revert-Improve-tests.patch} (99%) rename patches/mfplat-streaming-support/{0020-winegstreamer-In-the-default-configuration-select-on.patch => 0048-Report-streams-backwards-and-only-select-one-of-each.patch} (64%) rename patches/mfplat-streaming-support/{0018-winegstreamer-Implement-MF_SD_LANGUAGE.patch => 0051-winegstreamer-Implement-MF_SD_LANGUAGE.patch} (91%) diff --git a/patches/mfplat-streaming-support/0001-winegstreamer-Reformat-type-setting-functions-to-pre.patch b/patches/mfplat-streaming-support/0001-winegstreamer-Reformat-type-setting-functions-to-pre.patch deleted file mode 100644 index 1681eebd..00000000 --- a/patches/mfplat-streaming-support/0001-winegstreamer-Reformat-type-setting-functions-to-pre.patch +++ /dev/null @@ -1,221 +0,0 @@ -From 8664796fc9bf4f77ac821f3673901a9a843b92e7 Mon Sep 17 00:00:00 2001 -From: Derek Lesho -Date: Fri, 4 Dec 2020 15:51:00 -0500 -Subject: [PATCH] winegstreamer: Reformat type-setting functions to prevent the - need for a conditionally initialized variable. - -Signed-off-by: Derek Lesho ---- - dlls/winegstreamer/audioconvert.c | 153 ++++++++++++++++-------------- - 1 file changed, 82 insertions(+), 71 deletions(-) - -diff --git a/dlls/winegstreamer/audioconvert.c b/dlls/winegstreamer/audioconvert.c -index c5762bfdc60..95f71f111e2 100644 ---- a/dlls/winegstreamer/audioconvert.c -+++ b/dlls/winegstreamer/audioconvert.c -@@ -276,7 +276,9 @@ fail: - - static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id, IMFMediaType *type, DWORD flags) - { -+ GUID major_type, subtype; - GstCaps *input_caps; -+ DWORD unused; - HRESULT hr; - - struct audio_converter *converter = impl_audio_converter_from_IMFTransform(iface); -@@ -286,34 +288,46 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id - if (id != 0) - return MF_E_INVALIDSTREAMNUMBER; - -- if (type) -+ if (!type) - { -- GUID major_type, subtype; -- DWORD unused; -- -- if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major_type))) -- return MF_E_INVALIDTYPE; -- if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) -- return MF_E_INVALIDTYPE; -- if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_SAMPLES_PER_SECOND, &unused))) -- return MF_E_INVALIDTYPE; -- if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_NUM_CHANNELS, &unused))) -- return MF_E_INVALIDTYPE; -- if (IsEqualGUID(&subtype, &MFAudioFormat_PCM) && FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_BITS_PER_SAMPLE, &unused))) -- return MF_E_INVALIDTYPE; -- -- if (!(IsEqualGUID(&major_type, &MFMediaType_Audio))) -- return MF_E_INVALIDTYPE; -- -- if (!IsEqualGUID(&subtype, &MFAudioFormat_PCM) && !IsEqualGUID(&subtype, &MFAudioFormat_Float)) -- return MF_E_INVALIDTYPE; -- -- if (!(input_caps = caps_from_mf_media_type(type))) -- return MF_E_INVALIDTYPE; -- -- gst_caps_unref(input_caps); -+ if (flags & MFT_SET_TYPE_TEST_ONLY) -+ return S_OK; -+ -+ EnterCriticalSection(&converter->cs); -+ -+ if (converter->input_type) -+ { -+ IMFMediaType_Release(converter->input_type); -+ converter->input_type = NULL; -+ } -+ -+ LeaveCriticalSection(&converter->cs); -+ -+ return S_OK; - } - -+ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major_type))) -+ return MF_E_INVALIDTYPE; -+ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) -+ return MF_E_INVALIDTYPE; -+ if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_SAMPLES_PER_SECOND, &unused))) -+ return MF_E_INVALIDTYPE; -+ if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_NUM_CHANNELS, &unused))) -+ return MF_E_INVALIDTYPE; -+ if (IsEqualGUID(&subtype, &MFAudioFormat_PCM) && FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_BITS_PER_SAMPLE, &unused))) -+ return MF_E_INVALIDTYPE; -+ -+ if (!(IsEqualGUID(&major_type, &MFMediaType_Audio))) -+ return MF_E_INVALIDTYPE; -+ -+ if (!IsEqualGUID(&subtype, &MFAudioFormat_PCM) && !IsEqualGUID(&subtype, &MFAudioFormat_Float)) -+ return MF_E_INVALIDTYPE; -+ -+ if (!(input_caps = caps_from_mf_media_type(type))) -+ return MF_E_INVALIDTYPE; -+ -+ gst_caps_unref(input_caps); -+ - if (flags & MFT_SET_TYPE_TEST_ONLY) - return S_OK; - -@@ -321,21 +335,13 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id - - hr = S_OK; - -- if (type) -- { -- if (!converter->input_type) -- hr = MFCreateMediaType(&converter->input_type); -+ if (!converter->input_type) -+ hr = MFCreateMediaType(&converter->input_type); - -- if (SUCCEEDED(hr)) -- hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->input_type); -+ if (SUCCEEDED(hr)) -+ hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->input_type); - -- if (FAILED(hr)) -- { -- IMFMediaType_Release(converter->input_type); -- converter->input_type = NULL; -- } -- } -- else if (converter->input_type) -+ if (FAILED(hr)) - { - IMFMediaType_Release(converter->input_type); - converter->input_type = NULL; -@@ -362,33 +368,46 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i - if (!converter->input_type) - return MF_E_TRANSFORM_TYPE_NOT_SET; - -- if (type) -+ if (!type) - { -- /* validate the type */ -- -- if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major_type))) -- return MF_E_INVALIDTYPE; -- if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) -- return MF_E_INVALIDTYPE; -- if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_NUM_CHANNELS, &unused))) -- return MF_E_INVALIDTYPE; -- if (IsEqualGUID(&subtype, &MFAudioFormat_PCM) && FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_BITS_PER_SAMPLE, &unused))) -- return MF_E_INVALIDTYPE; -- if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_SAMPLES_PER_SECOND, &unused))) -- return MF_E_INVALIDTYPE; -+ if (flags & MFT_SET_TYPE_TEST_ONLY) -+ return S_OK; - -- if (!(IsEqualGUID(&major_type, &MFMediaType_Audio))) -- return MF_E_INVALIDTYPE; -+ EnterCriticalSection(&converter->cs); - -- if (!IsEqualGUID(&subtype, &MFAudioFormat_PCM) && !IsEqualGUID(&subtype, &MFAudioFormat_Float)) -- return MF_E_INVALIDTYPE; -+ if (converter->output_type) -+ { -+ IMFMediaType_Release(converter->output_type); -+ converter->output_type = NULL; -+ } - -- if (!(output_caps = caps_from_mf_media_type(type))) -- return MF_E_INVALIDTYPE; -+ LeaveCriticalSection(&converter->cs); - -- gst_caps_unref(output_caps); -+ return S_OK; - } - -+ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major_type))) -+ return MF_E_INVALIDTYPE; -+ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) -+ return MF_E_INVALIDTYPE; -+ if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_NUM_CHANNELS, &unused))) -+ return MF_E_INVALIDTYPE; -+ if (IsEqualGUID(&subtype, &MFAudioFormat_PCM) && FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_BITS_PER_SAMPLE, &unused))) -+ return MF_E_INVALIDTYPE; -+ if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_SAMPLES_PER_SECOND, &unused))) -+ return MF_E_INVALIDTYPE; -+ -+ if (!(IsEqualGUID(&major_type, &MFMediaType_Audio))) -+ return MF_E_INVALIDTYPE; -+ -+ if (!IsEqualGUID(&subtype, &MFAudioFormat_PCM) && !IsEqualGUID(&subtype, &MFAudioFormat_Float)) -+ return MF_E_INVALIDTYPE; -+ -+ if (!(output_caps = caps_from_mf_media_type(type))) -+ return MF_E_INVALIDTYPE; -+ -+ gst_caps_unref(output_caps); -+ - if (flags & MFT_SET_TYPE_TEST_ONLY) - return S_OK; - -@@ -396,21 +415,13 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i - - hr = S_OK; - -- if (type) -- { -- if (!converter->output_type) -- hr = MFCreateMediaType(&converter->output_type); -+ if (!converter->output_type) -+ hr = MFCreateMediaType(&converter->output_type); - -- if (SUCCEEDED(hr)) -- hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->output_type); -+ if (SUCCEEDED(hr)) -+ hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->output_type); - -- if (FAILED(hr)) -- { -- IMFMediaType_Release(converter->output_type); -- converter->output_type = NULL; -- } -- } -- else if (converter->output_type) -+ if (FAILED(hr)) - { - IMFMediaType_Release(converter->output_type); - converter->output_type = NULL; --- -2.29.2 - diff --git a/patches/mfplat-streaming-support/0002-winegstreamer-Implement-Process-Input-Output-for-aud.patch b/patches/mfplat-streaming-support/0003-winegstreamer-Implement-Process-Input-Output-for-aud.patch similarity index 73% rename from patches/mfplat-streaming-support/0002-winegstreamer-Implement-Process-Input-Output-for-aud.patch rename to patches/mfplat-streaming-support/0003-winegstreamer-Implement-Process-Input-Output-for-aud.patch index 608c8ef8..087cabca 100644 --- a/patches/mfplat-streaming-support/0002-winegstreamer-Implement-Process-Input-Output-for-aud.patch +++ b/patches/mfplat-streaming-support/0003-winegstreamer-Implement-Process-Input-Output-for-aud.patch @@ -1,4 +1,4 @@ -From 8dcc37c19ff36dffb220c0e6cd25aad3ce2be361 Mon Sep 17 00:00:00 2001 +From 0c493f7590ba2d7b90cf44c389378aacae8f6fe0 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 18 Nov 2020 14:31:00 -0600 Subject: [PATCH] winegstreamer: Implement ::Process(Input/Output) for audio @@ -6,13 +6,13 @@ Subject: [PATCH] winegstreamer: Implement ::Process(Input/Output) for audio Signed-off-by: Derek Lesho --- - dlls/winegstreamer/audioconvert.c | 188 ++++++++++++++++++++++++++++-- + dlls/winegstreamer/audioconvert.c | 175 +++++++++++++++++++++++++++++- dlls/winegstreamer/gst_private.h | 1 + - dlls/winegstreamer/mfplat.c | 69 +++++++++++ - 3 files changed, 250 insertions(+), 8 deletions(-) + dlls/winegstreamer/mfplat.c | 69 ++++++++++++ + 3 files changed, 239 insertions(+), 6 deletions(-) diff --git a/dlls/winegstreamer/audioconvert.c b/dlls/winegstreamer/audioconvert.c -index 95f71f111e2..0b2eb545d61 100644 +index 7fb0dee99f6..631c57d6d55 100644 --- a/dlls/winegstreamer/audioconvert.c +++ b/dlls/winegstreamer/audioconvert.c @@ -40,6 +40,8 @@ struct audio_converter @@ -20,7 +20,7 @@ index 95f71f111e2..0b2eb545d61 100644 IMFMediaType *output_type; CRITICAL_SECTION cs; + BOOL inflight; -+ GstElement *container, *appsrc, *appsink; ++ GstElement *container, *appsrc, *audioconvert, *resampler, *appsink; }; static struct audio_converter *impl_audio_converter_from_IMFTransform(IMFTransform *iface) @@ -32,46 +32,35 @@ index 95f71f111e2..0b2eb545d61 100644 heap_free(transform); } -@@ -295,6 +298,9 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id +@@ -311,7 +314,8 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id + if (!(input_caps = caps_from_mf_media_type(type))) + return MF_E_INVALIDTYPE; - EnterCriticalSection(&converter->cs); +- gst_caps_unref(input_caps); ++ if (flags & MFT_SET_TYPE_TEST_ONLY) ++ gst_caps_unref(input_caps); + } -+ converter->inflight = FALSE; -+ gst_element_set_state(converter->container, GST_STATE_READY); -+ - if (converter->input_type) - { - IMFMediaType_Release(converter->input_type); -@@ -326,14 +332,17 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id - if (!(input_caps = caps_from_mf_media_type(type))) - return MF_E_INVALIDTYPE; - -- gst_caps_unref(input_caps); -- if (flags & MFT_SET_TYPE_TEST_ONLY) -+ { -+ gst_caps_unref(input_caps); - return S_OK; -+ } - +@@ -320,6 +324,7 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id EnterCriticalSection(&converter->cs); hr = S_OK; -+ converter->inflight = FALSE; + gst_element_set_state(converter->container, GST_STATE_READY); - if (!converter->input_type) - hr = MFCreateMediaType(&converter->input_type); -@@ -341,12 +350,18 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id - if (SUCCEEDED(hr)) - hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->input_type); - -+ g_object_set(converter->appsrc, "caps", input_caps, NULL); -+ gst_caps_unref(input_caps); -+ - if (FAILED(hr)) + if (type) { - IMFMediaType_Release(converter->input_type); +@@ -329,6 +334,9 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id + if (SUCCEEDED(hr)) + hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->input_type); + ++ g_object_set(converter->appsrc, "caps", input_caps, NULL); ++ gst_caps_unref(input_caps); ++ + if (FAILED(hr)) + { + IMFMediaType_Release(converter->input_type); +@@ -341,6 +349,9 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id converter->input_type = NULL; } @@ -81,46 +70,35 @@ index 95f71f111e2..0b2eb545d61 100644 LeaveCriticalSection(&converter->cs); return hr; -@@ -375,6 +390,9 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i +@@ -386,7 +397,8 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i + if (!(output_caps = caps_from_mf_media_type(type))) + return MF_E_INVALIDTYPE; - EnterCriticalSection(&converter->cs); +- gst_caps_unref(output_caps); ++ if (flags & MFT_SET_TYPE_TEST_ONLY) ++ gst_caps_unref(output_caps); + } -+ converter->inflight = FALSE; -+ gst_element_set_state(converter->container, GST_STATE_READY); -+ - if (converter->output_type) - { - IMFMediaType_Release(converter->output_type); -@@ -406,14 +424,17 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i - if (!(output_caps = caps_from_mf_media_type(type))) - return MF_E_INVALIDTYPE; - -- gst_caps_unref(output_caps); -- if (flags & MFT_SET_TYPE_TEST_ONLY) -+ { -+ gst_caps_unref(output_caps); - return S_OK; -+ } - +@@ -395,6 +407,7 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i EnterCriticalSection(&converter->cs); hr = S_OK; -+ converter->inflight = FALSE; + gst_element_set_state(converter->container, GST_STATE_READY); - if (!converter->output_type) - hr = MFCreateMediaType(&converter->output_type); -@@ -421,12 +442,18 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i - if (SUCCEEDED(hr)) - hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->output_type); - -+ g_object_set(converter->appsink, "caps", output_caps, NULL); -+ gst_caps_unref(output_caps); -+ - if (FAILED(hr)) + if (type) { - IMFMediaType_Release(converter->output_type); +@@ -404,6 +417,9 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i + if (SUCCEEDED(hr)) + hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->output_type); + ++ g_object_set(converter->appsink, "caps", output_caps, NULL); ++ gst_caps_unref(output_caps); ++ + if (FAILED(hr)) + { + IMFMediaType_Release(converter->output_type); +@@ -416,6 +432,9 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i converter->output_type = NULL; } @@ -130,7 +108,7 @@ index 95f71f111e2..0b2eb545d61 100644 LeaveCriticalSection(&converter->cs); return hr; -@@ -538,17 +565,102 @@ static HRESULT WINAPI audio_converter_ProcessMessage(IMFTransform *iface, MFT_ME +@@ -479,17 +498,102 @@ static HRESULT WINAPI audio_converter_ProcessMessage(IMFTransform *iface, MFT_ME static HRESULT WINAPI audio_converter_ProcessInput(IMFTransform *iface, DWORD id, IMFSample *sample, DWORD flags) { @@ -173,7 +151,7 @@ index 95f71f111e2..0b2eb545d61 100644 + gst_buffer_unref(gst_buffer); + if (ret != GST_FLOW_OK) + { -+ ERR("Couldn't push buffer ret, (%s)\n", gst_flow_get_name(ret)); ++ ERR("Couldn't push buffer ret = %d (%s)\n", ret, gst_flow_get_name(ret)); + LeaveCriticalSection(&converter->cs); + return E_FAIL; + } @@ -237,15 +215,7 @@ index 95f71f111e2..0b2eb545d61 100644 } static const IMFTransformVtbl audio_converter_vtbl = -@@ -583,6 +695,7 @@ static const IMFTransformVtbl audio_converter_vtbl = - - HRESULT audio_converter_create(REFIID riid, void **ret) - { -+ GstElement *audioconvert, *resampler; - struct audio_converter *object; - - TRACE("%s %p\n", debugstr_guid(riid), ret); -@@ -596,6 +709,65 @@ HRESULT audio_converter_create(REFIID riid, void **ret) +@@ -537,6 +641,65 @@ HRESULT audio_converter_create(REFIID riid, void **ret) InitializeCriticalSection(&object->cs); object->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": audio_converter_lock"); @@ -260,23 +230,23 @@ index 95f71f111e2..0b2eb545d61 100644 + } + gst_bin_add(GST_BIN(object->container), object->appsrc); + -+ if (!(audioconvert = gst_element_factory_make("audioconvert", NULL))) ++ if (!(object->audioconvert = gst_element_factory_make("audioconvert", NULL))) + { + ERR("Failed to create audioconvert, are %u-bit Gstreamer \"base\" plugins installed?\n", + 8 * (int)sizeof(void *)); + IMFTransform_Release(&object->IMFTransform_iface); + return E_FAIL; + } -+ gst_bin_add(GST_BIN(object->container), audioconvert); ++ gst_bin_add(GST_BIN(object->container), object->audioconvert); + -+ if (!(resampler = gst_element_factory_make("audioresample", NULL))) ++ if (!(object->resampler = gst_element_factory_make("audioresample", NULL))) + { + ERR("Failed to create audioresample, are %u-bit Gstreamer \"base\" plugins installed?\n", + 8 * (int)sizeof(void *)); + IMFTransform_Release(&object->IMFTransform_iface); + return E_FAIL; + } -+ gst_bin_add(GST_BIN(object->container), resampler); ++ gst_bin_add(GST_BIN(object->container), object->resampler); + + if (!(object->appsink = gst_element_factory_make("appsink", NULL))) + { @@ -287,21 +257,21 @@ index 95f71f111e2..0b2eb545d61 100644 + } + gst_bin_add(GST_BIN(object->container), object->appsink); + -+ if (!gst_element_link(object->appsrc, audioconvert)) ++ if (!gst_element_link(object->appsrc, object->audioconvert)) + { + ERR("Failed to link appsrc to audioconvert\n"); + IMFTransform_Release(&object->IMFTransform_iface); + return E_FAIL; + } + -+ if (!gst_element_link(audioconvert, resampler)) ++ if (!gst_element_link(object->audioconvert, object->resampler)) + { + ERR("Failed to link audioconvert to resampler\n"); + IMFTransform_Release(&object->IMFTransform_iface); + return E_FAIL; + } + -+ if (!gst_element_link(resampler, object->appsink)) ++ if (!gst_element_link(object->resampler, object->appsink)) + { + ERR("Failed to link resampler to appsink\n"); + IMFTransform_Release(&object->IMFTransform_iface); @@ -324,7 +294,7 @@ index 9518f721504..14b6a011ac2 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 f300988fc5c..b2b5b247dac 100644 +index f300988fc5c..883084b2d89 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c @@ -865,3 +865,72 @@ done: @@ -332,7 +302,7 @@ index f300988fc5c..b2b5b247dac 100644 return out; } + -+GstBuffer *gst_buffer_from_mf_sample(IMFSample *mf_sample) ++GstBuffer* gst_buffer_from_mf_sample(IMFSample *mf_sample) +{ + GstBuffer *out = gst_buffer_new(); + IMFMediaBuffer *mf_buffer = NULL; @@ -369,7 +339,7 @@ index f300988fc5c..b2b5b247dac 100644 + memory = gst_allocator_alloc(NULL, buffer_size, NULL); + gst_memory_resize(memory, 0, buffer_size); + -+ if (!gst_memory_map(memory, &map_info, GST_MAP_WRITE)) ++ if (!(gst_memory_map(memory, &map_info, GST_MAP_WRITE))) + { + hr = E_FAIL; + goto fail; diff --git a/patches/mfplat-streaming-support/0003-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch b/patches/mfplat-streaming-support/0004-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch similarity index 73% rename from patches/mfplat-streaming-support/0003-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch rename to patches/mfplat-streaming-support/0004-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch index 6ce6c4bb..82449920 100644 --- a/patches/mfplat-streaming-support/0003-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch +++ b/patches/mfplat-streaming-support/0004-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch @@ -1,4 +1,4 @@ -From c017782d687a78b21959cef3860d18d4f742acb3 Mon Sep 17 00:00:00 2001 +From 13e0d5671caaeae69bde747e547a5bd4524dd2ff Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 18 Nov 2020 14:32:27 -0600 Subject: [PATCH] winegstreamer: Implement ::Get(Input/Output)StreamInfo for @@ -6,14 +6,14 @@ Subject: [PATCH] winegstreamer: Implement ::Get(Input/Output)StreamInfo for Signed-off-by: Derek Lesho --- - dlls/winegstreamer/audioconvert.c | 26 ++++++++++++++++++++++---- - 1 file changed, 22 insertions(+), 4 deletions(-) + dlls/winegstreamer/audioconvert.c | 23 +++++++++++++++++++---- + 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/dlls/winegstreamer/audioconvert.c b/dlls/winegstreamer/audioconvert.c -index 0b2eb545d61..d77bbe5c472 100644 +index 631c57d6d55..d204d9582ba 100644 --- a/dlls/winegstreamer/audioconvert.c +++ b/dlls/winegstreamer/audioconvert.c -@@ -123,16 +123,34 @@ static HRESULT WINAPI audio_converter_GetStreamIDs(IMFTransform *iface, DWORD in +@@ -123,16 +123,31 @@ static HRESULT WINAPI audio_converter_GetStreamIDs(IMFTransform *iface, DWORD in static HRESULT WINAPI audio_converter_GetInputStreamInfo(IMFTransform *iface, DWORD id, MFT_INPUT_STREAM_INFO *info) { @@ -28,8 +28,6 @@ index 0b2eb545d61..d77bbe5c472 100644 + info->cbMaxLookahead = 0; + info->cbAlignment = 0; + info->hnsMaxLatency = 0; -+ /* TODO: this can be calculated using MFCalculateImageSize */ -+ info->cbSize = 0; + + return S_OK; } @@ -43,10 +41,9 @@ index 0b2eb545d61..d77bbe5c472 100644 + if (id != 0) + return MF_E_INVALIDSTREAMNUMBER; + -+ info->dwFlags = MFT_OUTPUT_STREAM_PROVIDES_SAMPLES | MFT_OUTPUT_STREAM_WHOLE_SAMPLES; -+ info->cbAlignment = 0; -+ /* TODO: this can be calculated using MFCalculateImageSize */ ++ info->dwFlags = MFT_OUTPUT_STREAM_PROVIDES_SAMPLES; + info->cbSize = 0; ++ info->cbAlignment = 0; + + return S_OK; } diff --git a/patches/mfplat-streaming-support/0004-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch b/patches/mfplat-streaming-support/0005-winegstreamer-Implement-Get-Attributes-functions-for.patch similarity index 86% rename from patches/mfplat-streaming-support/0004-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch rename to patches/mfplat-streaming-support/0005-winegstreamer-Implement-Get-Attributes-functions-for.patch index 07195ab8..8942d826 100644 --- a/patches/mfplat-streaming-support/0004-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch +++ b/patches/mfplat-streaming-support/0005-winegstreamer-Implement-Get-Attributes-functions-for.patch @@ -1,7 +1,7 @@ -From 40b3168e34fc106cca561c44ad117cfcf0604c81 Mon Sep 17 00:00:00 2001 +From 91a772eb1cb4ec9e86b4ab007743a99a8bd75265 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 18 Nov 2020 14:34:56 -0600 -Subject: [PATCH] winegstreamer: Semi-stub Get*Attributes functions for audio +Subject: [PATCH] winegstreamer: Implement Get*Attributes functions for audio converter transform. Signed-off-by: Derek Lesho @@ -10,7 +10,7 @@ Signed-off-by: Derek Lesho 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/dlls/winegstreamer/audioconvert.c b/dlls/winegstreamer/audioconvert.c -index d77bbe5c472..f22bcfe67e4 100644 +index d204d9582ba..556aba44fc9 100644 --- a/dlls/winegstreamer/audioconvert.c +++ b/dlls/winegstreamer/audioconvert.c @@ -37,6 +37,8 @@ struct audio_converter @@ -33,7 +33,7 @@ index d77bbe5c472..f22bcfe67e4 100644 gst_object_unref(transform->container); heap_free(transform); } -@@ -155,9 +161,14 @@ static HRESULT WINAPI audio_converter_GetOutputStreamInfo(IMFTransform *iface, D +@@ -152,9 +158,14 @@ static HRESULT WINAPI audio_converter_GetOutputStreamInfo(IMFTransform *iface, D static HRESULT WINAPI audio_converter_GetAttributes(IMFTransform *iface, IMFAttributes **attributes) { @@ -50,7 +50,7 @@ index d77bbe5c472..f22bcfe67e4 100644 } static HRESULT WINAPI audio_converter_GetInputStreamAttributes(IMFTransform *iface, DWORD id, -@@ -171,9 +182,14 @@ static HRESULT WINAPI audio_converter_GetInputStreamAttributes(IMFTransform *ifa +@@ -168,9 +179,14 @@ static HRESULT WINAPI audio_converter_GetInputStreamAttributes(IMFTransform *ifa static HRESULT WINAPI audio_converter_GetOutputStreamAttributes(IMFTransform *iface, DWORD id, IMFAttributes **attributes) { @@ -67,15 +67,15 @@ index d77bbe5c472..f22bcfe67e4 100644 } static HRESULT WINAPI audio_converter_DeleteInputStream(IMFTransform *iface, DWORD id) -@@ -715,6 +731,7 @@ HRESULT audio_converter_create(REFIID riid, void **ret) +@@ -644,6 +660,7 @@ static const IMFTransformVtbl audio_converter_vtbl = + HRESULT audio_converter_create(REFIID riid, void **ret) { - GstElement *audioconvert, *resampler; struct audio_converter *object; + HRESULT hr; TRACE("%s %p\n", debugstr_guid(riid), ret); -@@ -727,6 +744,18 @@ HRESULT audio_converter_create(REFIID riid, void **ret) +@@ -656,6 +673,18 @@ HRESULT audio_converter_create(REFIID riid, void **ret) InitializeCriticalSection(&object->cs); object->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": audio_converter_lock"); diff --git a/patches/mfplat-streaming-support/0005-winegstreamer-Introduce-color-conversion-transform.patch b/patches/mfplat-streaming-support/0007-winegstreamer-Introduce-color-conversion-transform.patch similarity index 92% rename from patches/mfplat-streaming-support/0005-winegstreamer-Introduce-color-conversion-transform.patch rename to patches/mfplat-streaming-support/0007-winegstreamer-Introduce-color-conversion-transform.patch index 2838fe28..4faf6ba3 100644 --- a/patches/mfplat-streaming-support/0005-winegstreamer-Introduce-color-conversion-transform.patch +++ b/patches/mfplat-streaming-support/0007-winegstreamer-Introduce-color-conversion-transform.patch @@ -1,19 +1,18 @@ -From a13777a202571c4961f4ce6d6a1eeed107b583d8 Mon Sep 17 00:00:00 2001 +From b5316e74275511a63372473cb6bb10b8f2f8d2e1 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Tue, 1 Dec 2020 13:16:27 -0500 Subject: [PATCH] winegstreamer: Introduce color conversion transform. -Serves as a wrapper of videoconvert, and exposes the CColorConverterDMO MFT interface. +Serves as a wrapper of videoconvert, and roughly fills the roll of Windows' CColorConverterDMO. Signed-off-by: Derek Lesho --- dlls/winegstreamer/Makefile.in | 1 + dlls/winegstreamer/colorconvert.c | 302 +++++++++++++++++++ dlls/winegstreamer/gst_private.h | 1 + - dlls/winegstreamer/mfplat.c | 2 + + dlls/winegstreamer/mfplat.c | 3 + dlls/winegstreamer/winegstreamer_classes.idl | 6 + - include/wmcodecdsp.idl | 5 + - 6 files changed, 317 insertions(+) + 5 files changed, 313 insertions(+) create mode 100644 dlls/winegstreamer/colorconvert.c diff --git a/dlls/winegstreamer/Makefile.in b/dlls/winegstreamer/Makefile.in @@ -348,22 +347,23 @@ index 14b6a011ac2..075e0ce1f0f 100644 #endif /* __GST_PRIVATE_INCLUDED__ */ diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index b2b5b247dac..5ec408eea34 100644 +index 883084b2d89..288b79997cd 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -26,6 +26,7 @@ - #include "gst_private.h" - #include "mfapi.h" - #include "mfidl.h" -+#include "wmcodecdsp.h" +@@ -407,6 +407,8 @@ static const GUID CLSID_GStreamerByteStreamHandler = {0x317df618, 0x5e5a, 0x468a - #include "wine/debug.h" - #include "wine/heap.h" -@@ -417,6 +418,7 @@ class_objects[] = + static const GUID CLSID_WINEAudioConverter = {0x6a170414,0xaad9,0x4693,{0xb8,0x06,0x3a,0x0c,0x47,0xc5,0x70,0xd6}}; + ++static GUID CLSID_WINEColorConverter = {0x2be8b27f,0xcd60,0x4b8a,{0x95,0xae,0xd1,0x74,0xcc,0x5c,0xba,0xa7}}; ++ + static const struct class_object + { + const GUID *clsid; +@@ -417,6 +419,7 @@ class_objects[] = { &CLSID_VideoProcessorMFT, &video_processor_create }, { &CLSID_GStreamerByteStreamHandler, &winegstreamer_stream_handler_create }, { &CLSID_WINEAudioConverter, &audio_converter_create }, -+ { &CLSID_CColorConvertDMO, &color_converter_create }, ++ { &CLSID_WINEColorConverter, &color_converter_create }, }; HRESULT mfplat_get_class_object(REFCLSID rclsid, REFIID riid, void **obj) @@ -381,19 +381,6 @@ index cf1fc69f38a..47c10a09cf0 100644 + uuid(2be8b27f-cd60-4b8a-95ae-d174cc5cbaa7) +] +coclass WINEColorConverter { } -diff --git a/include/wmcodecdsp.idl b/include/wmcodecdsp.idl -index 61381bee6d4..87305422332 100644 ---- a/include/wmcodecdsp.idl -+++ b/include/wmcodecdsp.idl -@@ -30,3 +30,8 @@ coclass CMP3DecMediaObject {} - uuid(f447b69e-1884-4a7e-8055-346f74d6edb3) - ] - coclass CResamplerMediaObject {} -+ -+[ -+ uuid(98230571-0087-4204-b020-3282538e57d3) -+] -+coclass CColorConvertDMO {} -- 2.29.2 diff --git a/patches/mfplat-streaming-support/0006-winegstreamer-Register-the-color-conversion-transfor.patch b/patches/mfplat-streaming-support/0008-winegstreamer-Register-the-color-conversion-transfor.patch similarity index 88% rename from patches/mfplat-streaming-support/0006-winegstreamer-Register-the-color-conversion-transfor.patch rename to patches/mfplat-streaming-support/0008-winegstreamer-Register-the-color-conversion-transfor.patch index b52b6d39..4b485b2a 100644 --- a/patches/mfplat-streaming-support/0006-winegstreamer-Register-the-color-conversion-transfor.patch +++ b/patches/mfplat-streaming-support/0008-winegstreamer-Register-the-color-conversion-transfor.patch @@ -1,4 +1,4 @@ -From 81e415af7a13bc05ef7339176956cc90c878ec78 Mon Sep 17 00:00:00 2001 +From 18799e737ff065a62ea1c92c9a684940053d9dfb Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 3 Dec 2020 12:45:48 -0500 Subject: [PATCH] winegstreamer: Register the color conversion transform. @@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 5ec408eea34..bab2ccce64c 100644 +index 288b79997cd..1b19c43d991 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -454,6 +454,26 @@ static const GUID *audio_converter_supported_types[] = +@@ -455,6 +455,26 @@ static const GUID *audio_converter_supported_types[] = &MFAudioFormat_Float, }; @@ -39,12 +39,12 @@ index 5ec408eea34..bab2ccce64c 100644 static const struct mft { const GUID *clsid; -@@ -481,13 +501,25 @@ mfts[] = +@@ -482,13 +502,25 @@ mfts[] = audio_converter_supported_types, NULL }, + { -+ &CLSID_CColorConvertDMO, ++ &CLSID_WINEColorConverter, + &MFT_CATEGORY_VIDEO_EFFECT, + color_converterW, + MFT_ENUM_FLAG_SYNCMFT, diff --git a/patches/mfplat-streaming-support/0007-winegstreamer-Implement-GetInputAvailableType-for-co.patch b/patches/mfplat-streaming-support/0009-winegstreamer-Implement-GetInputAvailableType-for-co.patch similarity index 97% rename from patches/mfplat-streaming-support/0007-winegstreamer-Implement-GetInputAvailableType-for-co.patch rename to patches/mfplat-streaming-support/0009-winegstreamer-Implement-GetInputAvailableType-for-co.patch index 01a16801..672cdc62 100644 --- a/patches/mfplat-streaming-support/0007-winegstreamer-Implement-GetInputAvailableType-for-co.patch +++ b/patches/mfplat-streaming-support/0009-winegstreamer-Implement-GetInputAvailableType-for-co.patch @@ -1,4 +1,4 @@ -From b99bb180abcd59244f057536c9b7ffe5cdb4a6c6 Mon Sep 17 00:00:00 2001 +From 15b54cf08d296483e6d4c211eeae50db62f70804 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 3 Dec 2020 12:55:14 -0500 Subject: [PATCH] winegstreamer: Implement ::GetInputAvailableType for color diff --git a/patches/mfplat-streaming-support/0008-winegstreamer-Implement-SetInputType-for-color-conve.patch b/patches/mfplat-streaming-support/0010-winegstreamer-Implement-SetInputType-for-color-conve.patch similarity index 61% rename from patches/mfplat-streaming-support/0008-winegstreamer-Implement-SetInputType-for-color-conve.patch rename to patches/mfplat-streaming-support/0010-winegstreamer-Implement-SetInputType-for-color-conve.patch index 0fe93f03..cdcde8a6 100644 --- a/patches/mfplat-streaming-support/0008-winegstreamer-Implement-SetInputType-for-color-conve.patch +++ b/patches/mfplat-streaming-support/0010-winegstreamer-Implement-SetInputType-for-color-conve.patch @@ -1,4 +1,4 @@ -From c8724b92c31e0f9aa2bfe6e6c76b10f1b92929ee Mon Sep 17 00:00:00 2001 +From 096a5070ac3ce917e6c8ae010e8e80c8ffbde3c4 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 3 Dec 2020 14:34:07 -0500 Subject: [PATCH] winegstreamer: Implement ::SetInputType for color conversion @@ -6,11 +6,11 @@ Subject: [PATCH] winegstreamer: Implement ::SetInputType for color conversion Signed-off-by: Derek Lesho --- - dlls/winegstreamer/colorconvert.c | 82 ++++++++++++++++++++++++++++++- - 1 file changed, 80 insertions(+), 2 deletions(-) + dlls/winegstreamer/colorconvert.c | 76 ++++++++++++++++++++++++++++++- + 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/dlls/winegstreamer/colorconvert.c b/dlls/winegstreamer/colorconvert.c -index 9a1d2880234..a7660453766 100644 +index 9a1d2880234..5dd48188147 100644 --- a/dlls/winegstreamer/colorconvert.c +++ b/dlls/winegstreamer/colorconvert.c @@ -52,6 +52,8 @@ struct color_converter @@ -31,12 +31,11 @@ index 9a1d2880234..a7660453766 100644 heap_free(transform); } -@@ -223,9 +227,80 @@ static HRESULT WINAPI color_converter_GetOutputAvailableType(IMFTransform *iface +@@ -223,9 +227,74 @@ static HRESULT WINAPI color_converter_GetOutputAvailableType(IMFTransform *iface static HRESULT WINAPI color_converter_SetInputType(IMFTransform *iface, DWORD id, IMFMediaType *type, DWORD flags) { - FIXME("%p, %u, %p, %#x.\n", iface, id, type, flags); -+ GUID major_type, subtype; + GstCaps *input_caps; + unsigned int i; + HRESULT hr; @@ -49,46 +48,33 @@ index 9a1d2880234..a7660453766 100644 + if (id != 0) + return MF_E_INVALIDSTREAMNUMBER; + -+ if (!type) ++ if (type) + { -+ if (flags & MFT_SET_TYPE_TEST_ONLY) -+ return S_OK; ++ GUID major_type, subtype; + -+ EnterCriticalSection(&converter->cs); ++ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major_type))) ++ return MF_E_INVALIDTYPE; ++ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) ++ return MF_E_INVALIDTYPE; + -+ if (converter->input_type) ++ if (!(IsEqualGUID(&major_type, &MFMediaType_Video))) ++ return MF_E_INVALIDTYPE; ++ ++ for (i = 0; i < ARRAY_SIZE(raw_types); i++) + { -+ IMFMediaType_Release(converter->input_type); -+ converter->input_type = NULL; ++ if (IsEqualGUID(&subtype, raw_types[i])) ++ break; + } + -+ LeaveCriticalSection(&converter->cs); ++ if (i == ARRAY_SIZE(raw_types)) ++ return MF_E_INVALIDTYPE; + -+ return S_OK; ++ if (!(input_caps = caps_from_mf_media_type(type))) ++ return MF_E_INVALIDTYPE; ++ ++ gst_caps_unref(input_caps); + } + -+ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major_type))) -+ return MF_E_INVALIDTYPE; -+ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) -+ return MF_E_INVALIDTYPE; -+ -+ if (!(IsEqualGUID(&major_type, &MFMediaType_Video))) -+ return MF_E_INVALIDTYPE; -+ -+ for (i = 0; i < ARRAY_SIZE(raw_types); i++) -+ { -+ if (IsEqualGUID(&subtype, raw_types[i])) -+ break; -+ } -+ -+ if (i == ARRAY_SIZE(raw_types)) -+ return MF_E_INVALIDTYPE; -+ -+ if (!(input_caps = caps_from_mf_media_type(type))) -+ return MF_E_INVALIDTYPE; -+ -+ gst_caps_unref(input_caps); -+ + if (flags & MFT_SET_TYPE_TEST_ONLY) + return S_OK; + @@ -96,13 +82,21 @@ index 9a1d2880234..a7660453766 100644 + + hr = S_OK; + -+ if (!converter->input_type) -+ hr = MFCreateMediaType(&converter->input_type); ++ if (type) ++ { ++ if (!converter->input_type) ++ hr = MFCreateMediaType(&converter->input_type); + -+ if (SUCCEEDED(hr)) -+ hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->input_type); ++ if (SUCCEEDED(hr)) ++ hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->input_type); + -+ if (FAILED(hr)) ++ if (FAILED(hr)) ++ { ++ IMFMediaType_Release(converter->input_type); ++ converter->input_type = NULL; ++ } ++ } ++ else + { + IMFMediaType_Release(converter->input_type); + converter->input_type = NULL; @@ -114,7 +108,7 @@ index 9a1d2880234..a7660453766 100644 } static HRESULT WINAPI color_converter_SetOutputType(IMFTransform *iface, DWORD id, IMFMediaType *type, DWORD flags) -@@ -341,6 +416,9 @@ HRESULT color_converter_create(REFIID riid, void **ret) +@@ -341,6 +410,9 @@ HRESULT color_converter_create(REFIID riid, void **ret) object->IMFTransform_iface.lpVtbl = &color_converter_vtbl; object->refcount = 1; diff --git a/patches/mfplat-streaming-support/0009-winegstreamer-Implement-GetOutputAvailableType-for-c.patch b/patches/mfplat-streaming-support/0011-winegstreamer-Implement-GetOutputAvailableType-for-c.patch similarity index 73% rename from patches/mfplat-streaming-support/0009-winegstreamer-Implement-GetOutputAvailableType-for-c.patch rename to patches/mfplat-streaming-support/0011-winegstreamer-Implement-GetOutputAvailableType-for-c.patch index f132328b..83326c06 100644 --- a/patches/mfplat-streaming-support/0009-winegstreamer-Implement-GetOutputAvailableType-for-c.patch +++ b/patches/mfplat-streaming-support/0011-winegstreamer-Implement-GetOutputAvailableType-for-c.patch @@ -1,4 +1,4 @@ -From 6bb485eed245fa1cb30cfc0b35855e088f683436 Mon Sep 17 00:00:00 2001 +From 64cfb2a80d7ebc22b12d8b6c1e41cf7a74e15d88 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 3 Dec 2020 14:45:32 -0500 Subject: [PATCH] winegstreamer: Implement ::GetOutputAvailableType for color @@ -6,14 +6,27 @@ Subject: [PATCH] winegstreamer: Implement ::GetOutputAvailableType for color Signed-off-by: Derek Lesho --- - dlls/winegstreamer/colorconvert.c | 38 +++++++++++++++++++++++++++++-- - 1 file changed, 36 insertions(+), 2 deletions(-) + dlls/winegstreamer/colorconvert.c | 48 +++++++++++++++++++++++++++++-- + 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/dlls/winegstreamer/colorconvert.c b/dlls/winegstreamer/colorconvert.c -index a7660453766..a7206408603 100644 +index 5dd48188147..b80232e195b 100644 --- a/dlls/winegstreamer/colorconvert.c +++ b/dlls/winegstreamer/colorconvert.c -@@ -220,9 +220,43 @@ static HRESULT WINAPI color_converter_GetInputAvailableType(IMFTransform *iface, +@@ -217,12 +217,56 @@ static HRESULT WINAPI color_converter_GetInputAvailableType(IMFTransform *iface, + return S_OK; + } + ++static void copy_attr(IMFMediaType *target, IMFMediaType *source, const GUID *key) ++{ ++ PROPVARIANT val; ++ ++ if (SUCCEEDED(IMFAttributes_GetItem((IMFAttributes *)source, key, &val))) ++ { ++ IMFAttributes_SetItem((IMFAttributes* )target, key, &val); ++ } ++} ++ static HRESULT WINAPI color_converter_GetOutputAvailableType(IMFTransform *iface, DWORD id, DWORD index, IMFMediaType **type) { diff --git a/patches/mfplat-streaming-support/0010-winegstreamer-Implement-SetOutputType-for-color-conv.patch b/patches/mfplat-streaming-support/0012-winegstreamer-Implement-SetOutputType-for-color-conv.patch similarity index 54% rename from patches/mfplat-streaming-support/0010-winegstreamer-Implement-SetOutputType-for-color-conv.patch rename to patches/mfplat-streaming-support/0012-winegstreamer-Implement-SetOutputType-for-color-conv.patch index d9a40cb8..cbf09d6c 100644 --- a/patches/mfplat-streaming-support/0010-winegstreamer-Implement-SetOutputType-for-color-conv.patch +++ b/patches/mfplat-streaming-support/0012-winegstreamer-Implement-SetOutputType-for-color-conv.patch @@ -1,4 +1,4 @@ -From 97b1ad242262b3199cb9a0ac6bf42d64a8db955d Mon Sep 17 00:00:00 2001 +From f1714a949175290e9f01bd32fde1dacecfed7946 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 3 Dec 2020 14:55:41 -0500 Subject: [PATCH] winegstreamer: Implement ::SetOutputType for color conversion @@ -6,11 +6,11 @@ Subject: [PATCH] winegstreamer: Implement ::SetOutputType for color conversion Signed-off-by: Derek Lesho --- - dlls/winegstreamer/colorconvert.c | 76 ++++++++++++++++++++++++++++++- - 1 file changed, 74 insertions(+), 2 deletions(-) + dlls/winegstreamer/colorconvert.c | 70 ++++++++++++++++++++++++++++++- + 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/dlls/winegstreamer/colorconvert.c b/dlls/winegstreamer/colorconvert.c -index a7206408603..c2665cbdacb 100644 +index b80232e195b..e7e84690738 100644 --- a/dlls/winegstreamer/colorconvert.c +++ b/dlls/winegstreamer/colorconvert.c @@ -53,6 +53,7 @@ struct color_converter @@ -21,12 +21,11 @@ index a7206408603..c2665cbdacb 100644 CRITICAL_SECTION cs; }; -@@ -339,9 +340,80 @@ static HRESULT WINAPI color_converter_SetInputType(IMFTransform *iface, DWORD id +@@ -343,9 +344,74 @@ static HRESULT WINAPI color_converter_SetInputType(IMFTransform *iface, DWORD id static HRESULT WINAPI color_converter_SetOutputType(IMFTransform *iface, DWORD id, IMFMediaType *type, DWORD flags) { - FIXME("%p, %u, %p, %#x.\n", iface, id, type, flags); -+ GUID major_type, subtype; + GstCaps *output_caps; + unsigned int i; + HRESULT hr; @@ -39,46 +38,33 @@ index a7206408603..c2665cbdacb 100644 + if (id != 0) + return MF_E_INVALIDSTREAMNUMBER; + -+ if (!type) ++ if (type) + { -+ if (flags & MFT_SET_TYPE_TEST_ONLY) -+ return S_OK; ++ GUID major_type, subtype; + -+ EnterCriticalSection(&converter->cs); ++ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major_type))) ++ return MF_E_INVALIDTYPE; ++ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) ++ return MF_E_INVALIDTYPE; + -+ if (converter->output_type) ++ if (!(IsEqualGUID(&major_type, &MFMediaType_Video))) ++ return MF_E_INVALIDTYPE; ++ ++ for (i = 0; i < ARRAY_SIZE(raw_types); i++) + { -+ IMFMediaType_Release(converter->output_type); -+ converter->output_type = NULL; ++ if (IsEqualGUID(&subtype, raw_types[i])) ++ break; + } + -+ LeaveCriticalSection(&converter->cs); ++ if (i == ARRAY_SIZE(raw_types)) ++ return MF_E_INVALIDTYPE; + -+ return S_OK; ++ if (!(output_caps = caps_from_mf_media_type(type))) ++ return MF_E_INVALIDTYPE; ++ ++ gst_caps_unref(output_caps); + } + -+ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major_type))) -+ return MF_E_INVALIDTYPE; -+ if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) -+ return MF_E_INVALIDTYPE; -+ -+ if (!(IsEqualGUID(&major_type, &MFMediaType_Video))) -+ return MF_E_INVALIDTYPE; -+ -+ for (i = 0; i < ARRAY_SIZE(raw_types); i++) -+ { -+ if (IsEqualGUID(&subtype, raw_types[i])) -+ break; -+ } -+ -+ if (i == ARRAY_SIZE(raw_types)) -+ return MF_E_INVALIDTYPE; -+ -+ if (!(output_caps = caps_from_mf_media_type(type))) -+ return MF_E_INVALIDTYPE; -+ -+ gst_caps_unref(output_caps); -+ + if (flags & MFT_SET_TYPE_TEST_ONLY) + return S_OK; + @@ -86,13 +72,21 @@ index a7206408603..c2665cbdacb 100644 + + hr = S_OK; + -+ if (!converter->output_type) -+ hr = MFCreateMediaType(&converter->output_type); ++ if (type) ++ { ++ if (!converter->output_type) ++ hr = MFCreateMediaType(&converter->output_type); + -+ if (SUCCEEDED(hr)) -+ hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->output_type); ++ if (SUCCEEDED(hr)) ++ hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->output_type); + -+ if (FAILED(hr)) ++ if (FAILED(hr)) ++ { ++ IMFMediaType_Release(converter->output_type); ++ converter->output_type = NULL; ++ } ++ } ++ else + { + IMFMediaType_Release(converter->output_type); + converter->output_type = NULL; diff --git a/patches/mfplat-streaming-support/0011-winegstreamer-Implement-Process-Input-Output-for-col.patch b/patches/mfplat-streaming-support/0013-winegstreamer-Implement-Process-Input-Output-for-col.patch similarity index 67% rename from patches/mfplat-streaming-support/0011-winegstreamer-Implement-Process-Input-Output-for-col.patch rename to patches/mfplat-streaming-support/0013-winegstreamer-Implement-Process-Input-Output-for-col.patch index 9e799db2..53a010ee 100644 --- a/patches/mfplat-streaming-support/0011-winegstreamer-Implement-Process-Input-Output-for-col.patch +++ b/patches/mfplat-streaming-support/0013-winegstreamer-Implement-Process-Input-Output-for-col.patch @@ -1,4 +1,4 @@ -From ac9285225cfce302600419a2349efc5df2830b42 Mon Sep 17 00:00:00 2001 +From c94cfbf0ec1c10452c2cf1496f32eeefe5794cea Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 3 Dec 2020 15:22:20 -0500 Subject: [PATCH] winegstreamer: Implement ::Process(Input/Output) for color @@ -6,11 +6,11 @@ Subject: [PATCH] winegstreamer: Implement ::Process(Input/Output) for color Signed-off-by: Derek Lesho --- - dlls/winegstreamer/colorconvert.c | 172 ++++++++++++++++++++++++++++-- - 1 file changed, 165 insertions(+), 7 deletions(-) + dlls/winegstreamer/colorconvert.c | 159 +++++++++++++++++++++++++++++- + 1 file changed, 154 insertions(+), 5 deletions(-) diff --git a/dlls/winegstreamer/colorconvert.c b/dlls/winegstreamer/colorconvert.c -index c2665cbdacb..4aa563ab0d9 100644 +index e7e84690738..b77f3358c52 100644 --- a/dlls/winegstreamer/colorconvert.c +++ b/dlls/winegstreamer/colorconvert.c @@ -55,6 +55,8 @@ struct color_converter @@ -18,7 +18,7 @@ index c2665cbdacb..4aa563ab0d9 100644 IMFMediaType *output_type; CRITICAL_SECTION cs; + BOOL inflight; -+ GstElement *container, *appsrc, *appsink; ++ GstElement *container, *appsrc, *videoconvert, *appsink; }; static struct color_converter *impl_color_converter_from_IMFTransform(IMFTransform *iface) @@ -30,46 +30,35 @@ index c2665cbdacb..4aa563ab0d9 100644 heap_free(transform); } -@@ -281,6 +284,9 @@ static HRESULT WINAPI color_converter_SetInputType(IMFTransform *iface, DWORD id +@@ -307,7 +310,8 @@ static HRESULT WINAPI color_converter_SetInputType(IMFTransform *iface, DWORD id + if (!(input_caps = caps_from_mf_media_type(type))) + return MF_E_INVALIDTYPE; - EnterCriticalSection(&converter->cs); +- gst_caps_unref(input_caps); ++ if (flags & MFT_SET_TYPE_TEST_ONLY) ++ gst_caps_unref(input_caps); + } -+ converter->inflight = FALSE; -+ gst_element_set_state(converter->container, GST_STATE_READY); -+ - if (converter->input_type) - { - IMFMediaType_Release(converter->input_type); -@@ -312,14 +318,17 @@ static HRESULT WINAPI color_converter_SetInputType(IMFTransform *iface, DWORD id - if (!(input_caps = caps_from_mf_media_type(type))) - return MF_E_INVALIDTYPE; - -- gst_caps_unref(input_caps); -- if (flags & MFT_SET_TYPE_TEST_ONLY) -+ { -+ gst_caps_unref(input_caps); - return S_OK; -+ } - +@@ -316,6 +320,7 @@ static HRESULT WINAPI color_converter_SetInputType(IMFTransform *iface, DWORD id EnterCriticalSection(&converter->cs); hr = S_OK; -+ converter->inflight = FALSE; + gst_element_set_state(converter->container, GST_STATE_READY); - if (!converter->input_type) - hr = MFCreateMediaType(&converter->input_type); -@@ -327,12 +336,18 @@ static HRESULT WINAPI color_converter_SetInputType(IMFTransform *iface, DWORD id - if (SUCCEEDED(hr)) - hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->input_type); - -+ g_object_set(converter->appsrc, "caps", input_caps, NULL); -+ gst_caps_unref(input_caps); -+ - if (FAILED(hr)) + if (type) { - IMFMediaType_Release(converter->input_type); +@@ -325,6 +330,9 @@ static HRESULT WINAPI color_converter_SetInputType(IMFTransform *iface, DWORD id + if (SUCCEEDED(hr)) + hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->input_type); + ++ g_object_set(converter->appsrc, "caps", input_caps, NULL); ++ gst_caps_unref(input_caps); ++ + if (FAILED(hr)) + { + IMFMediaType_Release(converter->input_type); +@@ -337,6 +345,9 @@ static HRESULT WINAPI color_converter_SetInputType(IMFTransform *iface, DWORD id converter->input_type = NULL; } @@ -79,46 +68,35 @@ index c2665cbdacb..4aa563ab0d9 100644 LeaveCriticalSection(&converter->cs); return hr; -@@ -359,6 +374,9 @@ static HRESULT WINAPI color_converter_SetOutputType(IMFTransform *iface, DWORD i +@@ -379,7 +390,8 @@ static HRESULT WINAPI color_converter_SetOutputType(IMFTransform *iface, DWORD i + if (!(output_caps = caps_from_mf_media_type(type))) + return MF_E_INVALIDTYPE; - EnterCriticalSection(&converter->cs); +- gst_caps_unref(output_caps); ++ if (flags & MFT_SET_TYPE_TEST_ONLY) ++ gst_caps_unref(output_caps); + } -+ converter->inflight = FALSE; -+ gst_element_set_state(converter->container, GST_STATE_READY); -+ - if (converter->output_type) - { - IMFMediaType_Release(converter->output_type); -@@ -390,14 +408,17 @@ static HRESULT WINAPI color_converter_SetOutputType(IMFTransform *iface, DWORD i - if (!(output_caps = caps_from_mf_media_type(type))) - return MF_E_INVALIDTYPE; - -- gst_caps_unref(output_caps); -- if (flags & MFT_SET_TYPE_TEST_ONLY) -+ { -+ gst_caps_unref(output_caps); - return S_OK; -+ } - +@@ -388,6 +400,7 @@ static HRESULT WINAPI color_converter_SetOutputType(IMFTransform *iface, DWORD i EnterCriticalSection(&converter->cs); hr = S_OK; -+ converter->inflight = FALSE; + gst_element_set_state(converter->container, GST_STATE_READY); - if (!converter->output_type) - hr = MFCreateMediaType(&converter->output_type); -@@ -405,12 +426,18 @@ static HRESULT WINAPI color_converter_SetOutputType(IMFTransform *iface, DWORD i - if (SUCCEEDED(hr)) - hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->output_type); - -+ g_object_set(converter->appsink, "caps", output_caps, NULL); -+ gst_caps_unref(output_caps); -+ - if (FAILED(hr)) + if (type) { - IMFMediaType_Release(converter->output_type); +@@ -397,6 +410,9 @@ static HRESULT WINAPI color_converter_SetOutputType(IMFTransform *iface, DWORD i + if (SUCCEEDED(hr)) + hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->output_type); + ++ g_object_set(converter->appsink, "caps", output_caps, NULL); ++ gst_caps_unref(output_caps); ++ + if (FAILED(hr)) + { + IMFMediaType_Release(converter->output_type); +@@ -409,6 +425,9 @@ static HRESULT WINAPI color_converter_SetOutputType(IMFTransform *iface, DWORD i converter->output_type = NULL; } @@ -128,7 +106,7 @@ index c2665cbdacb..4aa563ab0d9 100644 LeaveCriticalSection(&converter->cs); return hr; -@@ -467,15 +494,102 @@ static HRESULT WINAPI color_converter_ProcessMessage(IMFTransform *iface, MFT_ME +@@ -465,15 +484,102 @@ static HRESULT WINAPI color_converter_ProcessMessage(IMFTransform *iface, MFT_ME static HRESULT WINAPI color_converter_ProcessInput(IMFTransform *iface, DWORD id, IMFSample *sample, DWORD flags) { @@ -171,7 +149,7 @@ index c2665cbdacb..4aa563ab0d9 100644 + gst_buffer_unref(gst_buffer); + if (ret != GST_FLOW_OK) + { -+ ERR("Couldn't push buffer, (%s)\n", gst_flow_get_name(ret)); ++ ERR("Couldn't push buffer ret = %d (%s)\n", ret, gst_flow_get_name(ret)); + LeaveCriticalSection(&converter->cs); + return E_FAIL; + } @@ -220,7 +198,7 @@ index c2665cbdacb..4aa563ab0d9 100644 + + g_signal_emit_by_name(converter->appsink, "pull-sample", &sample); + -+ converter->inflight = FALSE; ++ converter->inflight = FALSE; + + samples[0].pSample = mf_sample_from_gst_buffer(gst_sample_get_buffer(sample)); + gst_sample_unref(sample); @@ -234,15 +212,7 @@ index c2665cbdacb..4aa563ab0d9 100644 return E_NOTIMPL; } -@@ -513,6 +627,7 @@ static const IMFTransformVtbl color_converter_vtbl = - HRESULT color_converter_create(REFIID riid, void **ret) - { - struct color_converter *object; -+ GstElement *videoconvert; - - TRACE("%s %p\n", debugstr_guid(riid), ret); - -@@ -525,6 +640,49 @@ HRESULT color_converter_create(REFIID riid, void **ret) +@@ -523,6 +629,49 @@ HRESULT color_converter_create(REFIID riid, void **ret) InitializeCriticalSection(&object->cs); object->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": color_converter_lock"); @@ -257,14 +227,14 @@ index c2665cbdacb..4aa563ab0d9 100644 + } + gst_bin_add(GST_BIN(object->container), object->appsrc); + -+ if (!(videoconvert = gst_element_factory_make("videoconvert", NULL))) ++ if (!(object->videoconvert = gst_element_factory_make("videoconvert", NULL))) + { + ERR("Failed to create videoconvert, are %u-bit Gstreamer \"base\" plugins installed?\n", + 8 * (int)sizeof(void *)); + IMFTransform_Release(&object->IMFTransform_iface); + return E_FAIL; + } -+ gst_bin_add(GST_BIN(object->container), videoconvert); ++ gst_bin_add(GST_BIN(object->container), object->videoconvert); + + if (!(object->appsink = gst_element_factory_make("appsink", NULL))) + { @@ -275,14 +245,14 @@ index c2665cbdacb..4aa563ab0d9 100644 + } + gst_bin_add(GST_BIN(object->container), object->appsink); + -+ if (!gst_element_link(object->appsrc, videoconvert)) ++ if (!gst_element_link(object->appsrc, object->videoconvert)) + { + ERR("Failed to link appsrc to videoconvert\n"); + IMFTransform_Release(&object->IMFTransform_iface); + return E_FAIL; + } + -+ if (!gst_element_link(videoconvert, object->appsink)) ++ if (!gst_element_link(object->videoconvert, object->appsink)) + { + ERR("Failed to link videoconvert to appsink\n"); + IMFTransform_Release(&object->IMFTransform_iface); diff --git a/patches/mfplat-streaming-support/0012-winegstreamer-Implement-ProcessMessage-for-color-con.patch b/patches/mfplat-streaming-support/0014-winegstreamer-Implement-ProcessMessage-for-color-con.patch similarity index 87% rename from patches/mfplat-streaming-support/0012-winegstreamer-Implement-ProcessMessage-for-color-con.patch rename to patches/mfplat-streaming-support/0014-winegstreamer-Implement-ProcessMessage-for-color-con.patch index b01c0ced..8ea4f294 100644 --- a/patches/mfplat-streaming-support/0012-winegstreamer-Implement-ProcessMessage-for-color-con.patch +++ b/patches/mfplat-streaming-support/0014-winegstreamer-Implement-ProcessMessage-for-color-con.patch @@ -1,4 +1,4 @@ -From ffc54142c8e490c89f52198b90bfd41d72f0a0a9 Mon Sep 17 00:00:00 2001 +From d68df1b4131caa500cea5c4241be3c55b2728d4c Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 3 Dec 2020 16:02:20 -0500 Subject: [PATCH] winegstreamer: Implement ::ProcessMessage for color @@ -10,10 +10,10 @@ Signed-off-by: Derek Lesho 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/dlls/winegstreamer/colorconvert.c b/dlls/winegstreamer/colorconvert.c -index 4aa563ab0d9..8272beaac83 100644 +index b77f3358c52..c07ef22acc3 100644 --- a/dlls/winegstreamer/colorconvert.c +++ b/dlls/winegstreamer/colorconvert.c -@@ -487,9 +487,16 @@ static HRESULT WINAPI color_converter_ProcessEvent(IMFTransform *iface, DWORD id +@@ -477,9 +477,16 @@ static HRESULT WINAPI color_converter_ProcessEvent(IMFTransform *iface, DWORD id static HRESULT WINAPI color_converter_ProcessMessage(IMFTransform *iface, MFT_MESSAGE_TYPE message, ULONG_PTR param) { diff --git a/patches/mfplat-streaming-support/0013-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch b/patches/mfplat-streaming-support/0015-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch similarity index 73% rename from patches/mfplat-streaming-support/0013-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch rename to patches/mfplat-streaming-support/0015-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch index 97e61840..34bafb06 100644 --- a/patches/mfplat-streaming-support/0013-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch +++ b/patches/mfplat-streaming-support/0015-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch @@ -1,4 +1,4 @@ -From f8f52683f7ccc8425850639dc604923f0ad24c08 Mon Sep 17 00:00:00 2001 +From e8eef3f90da399a077f5853e2a399c7e27a6418e Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 3 Dec 2020 15:28:42 -0500 Subject: [PATCH] winegstreamer: Implement ::Get(Input/Output)StreamInfo for @@ -6,14 +6,14 @@ Subject: [PATCH] winegstreamer: Implement ::Get(Input/Output)StreamInfo for Signed-off-by: Derek Lesho --- - dlls/winegstreamer/colorconvert.c | 26 ++++++++++++++++++++++---- - 1 file changed, 22 insertions(+), 4 deletions(-) + dlls/winegstreamer/colorconvert.c | 23 +++++++++++++++++++---- + 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/dlls/winegstreamer/colorconvert.c b/dlls/winegstreamer/colorconvert.c -index 8272beaac83..a53cb8a099c 100644 +index c07ef22acc3..43b8dddeee7 100644 --- a/dlls/winegstreamer/colorconvert.c +++ b/dlls/winegstreamer/colorconvert.c -@@ -138,16 +138,34 @@ static HRESULT WINAPI color_converter_GetStreamIDs(IMFTransform *iface, DWORD in +@@ -138,16 +138,31 @@ static HRESULT WINAPI color_converter_GetStreamIDs(IMFTransform *iface, DWORD in static HRESULT WINAPI color_converter_GetInputStreamInfo(IMFTransform *iface, DWORD id, MFT_INPUT_STREAM_INFO *info) { @@ -28,8 +28,6 @@ index 8272beaac83..a53cb8a099c 100644 + info->cbMaxLookahead = 0; + info->cbAlignment = 0; + info->hnsMaxLatency = 0; -+ /* TODO: this can be calculated using MFCalculateImageSize */ -+ info->cbSize = 0; + + return S_OK; } @@ -43,10 +41,9 @@ index 8272beaac83..a53cb8a099c 100644 + if (id != 0) + return MF_E_INVALIDSTREAMNUMBER; + -+ info->dwFlags = MFT_OUTPUT_STREAM_PROVIDES_SAMPLES | MFT_OUTPUT_STREAM_WHOLE_SAMPLES; -+ info->cbAlignment = 0; -+ /* TODO: this can be calculated using MFCalculateImageSize */ ++ info->dwFlags = MFT_OUTPUT_STREAM_PROVIDES_SAMPLES; + info->cbSize = 0; ++ info->cbAlignment = 0; + + return S_OK; } diff --git a/patches/mfplat-streaming-support/0014-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch b/patches/mfplat-streaming-support/0016-winegstreamer-Implement-Get-Attributes-functions-for.patch similarity index 86% rename from patches/mfplat-streaming-support/0014-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch rename to patches/mfplat-streaming-support/0016-winegstreamer-Implement-Get-Attributes-functions-for.patch index a519630c..136edb41 100644 --- a/patches/mfplat-streaming-support/0014-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch +++ b/patches/mfplat-streaming-support/0016-winegstreamer-Implement-Get-Attributes-functions-for.patch @@ -1,7 +1,7 @@ -From f870fb3f5a048eb76115dd412d4bb2ed66e92098 Mon Sep 17 00:00:00 2001 +From 7bc3f13dd779e7b998a877012c83a8ca9e7aba4f Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 3 Dec 2020 15:37:10 -0500 -Subject: [PATCH] winegstreamer: Semi-stub Get*Attributes functions for color +Subject: [PATCH] winegstreamer: Implement Get*Attributes functions for color converter transform. Signed-off-by: Derek Lesho @@ -10,7 +10,7 @@ Signed-off-by: Derek Lesho 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/dlls/winegstreamer/colorconvert.c b/dlls/winegstreamer/colorconvert.c -index a53cb8a099c..3ae646f1ae2 100644 +index 43b8dddeee7..9e6ece796f3 100644 --- a/dlls/winegstreamer/colorconvert.c +++ b/dlls/winegstreamer/colorconvert.c @@ -52,6 +52,8 @@ struct color_converter @@ -33,7 +33,7 @@ index a53cb8a099c..3ae646f1ae2 100644 gst_object_unref(transform->container); heap_free(transform); } -@@ -170,9 +176,14 @@ static HRESULT WINAPI color_converter_GetOutputStreamInfo(IMFTransform *iface, D +@@ -167,9 +173,14 @@ static HRESULT WINAPI color_converter_GetOutputStreamInfo(IMFTransform *iface, D static HRESULT WINAPI color_converter_GetAttributes(IMFTransform *iface, IMFAttributes **attributes) { @@ -50,7 +50,7 @@ index a53cb8a099c..3ae646f1ae2 100644 } static HRESULT WINAPI color_converter_GetInputStreamAttributes(IMFTransform *iface, DWORD id, -@@ -186,9 +197,14 @@ static HRESULT WINAPI color_converter_GetInputStreamAttributes(IMFTransform *ifa +@@ -183,9 +194,14 @@ static HRESULT WINAPI color_converter_GetInputStreamAttributes(IMFTransform *ifa static HRESULT WINAPI color_converter_GetOutputStreamAttributes(IMFTransform *iface, DWORD id, IMFAttributes **attributes) { @@ -67,15 +67,15 @@ index a53cb8a099c..3ae646f1ae2 100644 } static HRESULT WINAPI color_converter_DeleteInputStream(IMFTransform *iface, DWORD id) -@@ -653,6 +669,7 @@ HRESULT color_converter_create(REFIID riid, void **ret) +@@ -639,6 +655,7 @@ static const IMFTransformVtbl color_converter_vtbl = + HRESULT color_converter_create(REFIID riid, void **ret) { struct color_converter *object; - GstElement *videoconvert; + HRESULT hr; TRACE("%s %p\n", debugstr_guid(riid), ret); -@@ -665,6 +682,18 @@ HRESULT color_converter_create(REFIID riid, void **ret) +@@ -651,6 +668,18 @@ HRESULT color_converter_create(REFIID riid, void **ret) InitializeCriticalSection(&object->cs); object->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": color_converter_lock"); diff --git a/patches/mfplat-streaming-support/0015-winegstreamer-Implement-Get-Input-Output-CurrentType.patch b/patches/mfplat-streaming-support/0017-winegstreamer-Implement-Get-Input-Output-CurrentType.patch similarity index 93% rename from patches/mfplat-streaming-support/0015-winegstreamer-Implement-Get-Input-Output-CurrentType.patch rename to patches/mfplat-streaming-support/0017-winegstreamer-Implement-Get-Input-Output-CurrentType.patch index 987161b6..bd74691c 100644 --- a/patches/mfplat-streaming-support/0015-winegstreamer-Implement-Get-Input-Output-CurrentType.patch +++ b/patches/mfplat-streaming-support/0017-winegstreamer-Implement-Get-Input-Output-CurrentType.patch @@ -1,4 +1,4 @@ -From 461339ecaaa3a575e458575881a9e53bda1b7149 Mon Sep 17 00:00:00 2001 +From 54919766d0ad2cf17e8cc6a8783794312964677c Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 3 Dec 2020 15:43:21 -0500 Subject: [PATCH] winegstreamer: Implement Get(Input/Output)CurrentType @@ -10,10 +10,10 @@ Signed-off-by: Derek Lesho 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/dlls/winegstreamer/colorconvert.c b/dlls/winegstreamer/colorconvert.c -index 3ae646f1ae2..9c845b270d2 100644 +index 9e6ece796f3..c7b1fae393f 100644 --- a/dlls/winegstreamer/colorconvert.c +++ b/dlls/winegstreamer/colorconvert.c -@@ -479,16 +479,66 @@ static HRESULT WINAPI color_converter_SetOutputType(IMFTransform *iface, DWORD i +@@ -466,16 +466,66 @@ static HRESULT WINAPI color_converter_SetOutputType(IMFTransform *iface, DWORD i static HRESULT WINAPI color_converter_GetInputCurrentType(IMFTransform *iface, DWORD id, IMFMediaType **type) { diff --git a/patches/mfplat-streaming-support/0016-winegstreamer-Implement-IMFMediaSource-Stop.patch b/patches/mfplat-streaming-support/0018-winegstreamer-Implement-IMFMediaSource-Stop.patch similarity index 97% rename from patches/mfplat-streaming-support/0016-winegstreamer-Implement-IMFMediaSource-Stop.patch rename to patches/mfplat-streaming-support/0018-winegstreamer-Implement-IMFMediaSource-Stop.patch index f4c5d734..a03adf39 100644 --- a/patches/mfplat-streaming-support/0016-winegstreamer-Implement-IMFMediaSource-Stop.patch +++ b/patches/mfplat-streaming-support/0018-winegstreamer-Implement-IMFMediaSource-Stop.patch @@ -1,4 +1,4 @@ -From 2185b8f7f64f588403942add254f8f6674ade329 Mon Sep 17 00:00:00 2001 +From 1472041682ce09e0e8bdda78ed0366fba6aa41a0 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 7 May 2020 13:09:47 -0500 Subject: [PATCH] winegstreamer: Implement IMFMediaSource::Stop. diff --git a/patches/mfplat-streaming-support/0019-winegstreamer-Report-streams-backwards.patch b/patches/mfplat-streaming-support/0019-winegstreamer-Report-streams-backwards.patch deleted file mode 100644 index 7c80008c..00000000 --- a/patches/mfplat-streaming-support/0019-winegstreamer-Report-streams-backwards.patch +++ /dev/null @@ -1,26 +0,0 @@ -From f4e0ff22ab7407c33a833125a3fb18fe97abfbd6 Mon Sep 17 00:00:00 2001 -From: Derek Lesho -Date: Fri, 4 Dec 2020 16:16:20 -0500 -Subject: [PATCH] winegstreamer: Report streams backwards. - -Signed-off-by: Derek Lesho ---- - dlls/winegstreamer/media_source.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c -index c7af077db8a..d03900aebdf 100644 ---- a/dlls/winegstreamer/media_source.c -+++ b/dlls/winegstreamer/media_source.c -@@ -1371,7 +1371,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ - descriptors = heap_alloc(object->stream_count * sizeof(IMFStreamDescriptor*)); - for (i = 0; i < object->stream_count; i++) - { -- IMFMediaStream_GetStreamDescriptor(&object->streams[i]->IMFMediaStream_iface, &descriptors[i]); -+ IMFMediaStream_GetStreamDescriptor(&object->streams[i]->IMFMediaStream_iface, &descriptors[object->stream_count - 1 - i]); - } - - if (FAILED(hr = MFCreatePresentationDescriptor(object->stream_count, descriptors, &object->pres_desc))) --- -2.29.2 - diff --git a/patches/mfplat-streaming-support/0017-winegstreamer-Set-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch b/patches/mfplat-streaming-support/0019-winegstreamer-Set-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch similarity index 82% rename from patches/mfplat-streaming-support/0017-winegstreamer-Set-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch rename to patches/mfplat-streaming-support/0019-winegstreamer-Set-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch index cd6560b9..89bcd342 100644 --- a/patches/mfplat-streaming-support/0017-winegstreamer-Set-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch +++ b/patches/mfplat-streaming-support/0019-winegstreamer-Set-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch @@ -1,4 +1,4 @@ -From 099b254fb7fa1e00664ca7ba0ac58490d738569a Mon Sep 17 00:00:00 2001 +From fbf25644246c31e0116b319a1876c89697c07bc5 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 25 Nov 2020 12:29:50 -0500 Subject: [PATCH] winegstreamer: Set MF_MT_ALL_SAMPLES_INDEPENDENT attribute on @@ -10,10 +10,10 @@ Signed-off-by: Derek Lesho 1 file changed, 1 insertion(+) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index bab2ccce64c..3a63c9ddc99 100644 +index 1b19c43d991..f4a0c5b00f0 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -603,6 +603,7 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) +@@ -604,6 +604,7 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) unsigned int i; IMFMediaType_SetUINT32(media_type, &MF_MT_COMPRESSED, FALSE); diff --git a/patches/mfplat-streaming-support/0021-mf-Add-invalid-connect-method-test.patch b/patches/mfplat-streaming-support/0020-mf-Add-invalid-connect-method-test.patch similarity index 96% rename from patches/mfplat-streaming-support/0021-mf-Add-invalid-connect-method-test.patch rename to patches/mfplat-streaming-support/0020-mf-Add-invalid-connect-method-test.patch index 51cf5868..856b79e6 100644 --- a/patches/mfplat-streaming-support/0021-mf-Add-invalid-connect-method-test.patch +++ b/patches/mfplat-streaming-support/0020-mf-Add-invalid-connect-method-test.patch @@ -1,4 +1,4 @@ -From d3cdbc0d03b8cc95688c9e6468d9c88fea19bb18 Mon Sep 17 00:00:00 2001 +From 539f0ad63d83dd1f60a9a54063f3cb108d71f794 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Mon, 30 Nov 2020 11:56:48 -0500 Subject: [PATCH] mf: Add invalid connect method test. diff --git a/patches/mfplat-streaming-support/0022-Allow-for-compressed-types.patch b/patches/mfplat-streaming-support/0021-Allow-for-compressed-types.patch similarity index 89% rename from patches/mfplat-streaming-support/0022-Allow-for-compressed-types.patch rename to patches/mfplat-streaming-support/0021-Allow-for-compressed-types.patch index 85058974..9825d30d 100644 --- a/patches/mfplat-streaming-support/0022-Allow-for-compressed-types.patch +++ b/patches/mfplat-streaming-support/0021-Allow-for-compressed-types.patch @@ -1,4 +1,4 @@ -From 8ee3ba837dc7dfa786f64ae6a4415c6ac3c3d842 Mon Sep 17 00:00:00 2001 +From dd7243f4ee9f7bee1019621c974f98737b760905 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 2 Dec 2020 17:12:22 -0500 Subject: [PATCH] Allow for compressed types. @@ -8,10 +8,10 @@ Subject: [PATCH] Allow for compressed types. 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 3a63c9ddc99..2ef734f3a22 100644 +index f4a0c5b00f0..8d2d8996f22 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -778,22 +778,20 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) +@@ -779,22 +779,20 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) { DWORD rate = -1, channels = -1, channel_mask = -1; @@ -42,7 +42,7 @@ index 3a63c9ddc99..2ef734f3a22 100644 gst_audio_info_set_format(&float_info, GST_AUDIO_FORMAT_F32LE, rate, channels, NULL); output = gst_audio_info_to_caps(&float_info); } -@@ -803,6 +801,12 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) +@@ -804,6 +802,12 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) GstAudioInfo pcm_info; DWORD bits_per_sample; @@ -55,7 +55,7 @@ index 3a63c9ddc99..2ef734f3a22 100644 if (SUCCEEDED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_BITS_PER_SAMPLE, &bits_per_sample))) { pcm_format = gst_audio_format_build_integer(bits_per_sample > 8, G_LITTLE_ENDIAN, bits_per_sample, bits_per_sample); -@@ -822,6 +826,10 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) +@@ -823,6 +827,10 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) return NULL; } diff --git a/patches/mfplat-streaming-support/0023-mf-session-Unconditionally-deliver-NULL-EOS-samples.patch b/patches/mfplat-streaming-support/0022-mf-session-Unconditionally-deliver-NULL-EOS-samples.patch similarity index 95% rename from patches/mfplat-streaming-support/0023-mf-session-Unconditionally-deliver-NULL-EOS-samples.patch rename to patches/mfplat-streaming-support/0022-mf-session-Unconditionally-deliver-NULL-EOS-samples.patch index e42c6727..0239d05c 100644 --- a/patches/mfplat-streaming-support/0023-mf-session-Unconditionally-deliver-NULL-EOS-samples.patch +++ b/patches/mfplat-streaming-support/0022-mf-session-Unconditionally-deliver-NULL-EOS-samples.patch @@ -1,4 +1,4 @@ -From e911bd35468c2257b0f8b09ba10e76b0f2823cb4 Mon Sep 17 00:00:00 2001 +From 3b4148fbc1338e6a202d852491eba1362c905bfc Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 14 Oct 2020 11:07:05 -0500 Subject: [PATCH] mf/session: Unconditionally deliver NULL (EOS) samples. diff --git a/patches/mfplat-streaming-support/0024-mf-session-Request-more-samples-when-a-transform-nee.patch b/patches/mfplat-streaming-support/0023-mf-session-Request-more-samples-when-a-transform-nee.patch similarity index 96% rename from patches/mfplat-streaming-support/0024-mf-session-Request-more-samples-when-a-transform-nee.patch rename to patches/mfplat-streaming-support/0023-mf-session-Request-more-samples-when-a-transform-nee.patch index a7d82115..acbff915 100644 --- a/patches/mfplat-streaming-support/0024-mf-session-Request-more-samples-when-a-transform-nee.patch +++ b/patches/mfplat-streaming-support/0023-mf-session-Request-more-samples-when-a-transform-nee.patch @@ -1,4 +1,4 @@ -From 573bbae19c32baca7ce7c403ff8c9fb45e46fbea Mon Sep 17 00:00:00 2001 +From e1c9fe73263c2220be53482d195264832842279e Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 2 Apr 2020 15:42:18 -0500 Subject: [PATCH] mf/session: Request more samples when a transform needs them. diff --git a/patches/mfplat-streaming-support/0025-HACK-Flush-decoder-when-changing-times.patch b/patches/mfplat-streaming-support/0024-HACK-Flush-decoder-when-changing-times.patch similarity index 93% rename from patches/mfplat-streaming-support/0025-HACK-Flush-decoder-when-changing-times.patch rename to patches/mfplat-streaming-support/0024-HACK-Flush-decoder-when-changing-times.patch index b6e0d21a..cb672e38 100644 --- a/patches/mfplat-streaming-support/0025-HACK-Flush-decoder-when-changing-times.patch +++ b/patches/mfplat-streaming-support/0024-HACK-Flush-decoder-when-changing-times.patch @@ -1,4 +1,4 @@ -From d502dbb41b0e13a04a9fe12d9dc40019fe1fb0f8 Mon Sep 17 00:00:00 2001 +From b25ab6a73f44bdab1a4ce782a27a8b3f1213cf64 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 15 Oct 2020 12:18:10 -0500 Subject: [PATCH] HACK: Flush decoder when changing times. diff --git a/patches/mfplat-streaming-support/0026-winegstreamer-Add-IMFSeekInfo-GetNearestKeyFrames-st.patch b/patches/mfplat-streaming-support/0025-winegstreamer-Add-IMFSeekInfo-GetNearestKeyFrames-st.patch similarity index 97% rename from patches/mfplat-streaming-support/0026-winegstreamer-Add-IMFSeekInfo-GetNearestKeyFrames-st.patch rename to patches/mfplat-streaming-support/0025-winegstreamer-Add-IMFSeekInfo-GetNearestKeyFrames-st.patch index 3e859cab..c5f33aa4 100644 --- a/patches/mfplat-streaming-support/0026-winegstreamer-Add-IMFSeekInfo-GetNearestKeyFrames-st.patch +++ b/patches/mfplat-streaming-support/0025-winegstreamer-Add-IMFSeekInfo-GetNearestKeyFrames-st.patch @@ -1,4 +1,4 @@ -From 81a85069b6924c9b4921c4ef35352a9466f2a5e2 Mon Sep 17 00:00:00 2001 +From 8b681e5bd589b330790a0e887f5dbcd380e84a05 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Mon, 2 Nov 2020 09:56:54 -0600 Subject: [PATCH] winegstreamer: Add IMFSeekInfo::GetNearestKeyFrames stub. @@ -9,7 +9,7 @@ Signed-off-by: Derek Lesho 1 file changed, 111 insertions(+) diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c -index dc15ec8d5ca..90c8da42b74 100644 +index 655e765fee7..a0bce3cfe9d 100644 --- a/dlls/winegstreamer/media_source.c +++ b/dlls/winegstreamer/media_source.c @@ -92,6 +92,8 @@ struct source_async_command @@ -149,7 +149,7 @@ index dc15ec8d5ca..90c8da42b74 100644 static void stream_added(GstElement *element, GstPad *pad, gpointer user) { struct media_source *source = user; -@@ -1284,6 +1393,8 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ +@@ -1283,6 +1392,8 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ return E_OUTOFMEMORY; object->IMFMediaSource_iface.lpVtbl = &IMFMediaSource_vtbl; diff --git a/patches/mfplat-streaming-support/0027-winegstreamer-Fixup-raw-audio-caps-to-be-compatible-.patch b/patches/mfplat-streaming-support/0026-winegstreamer-Fixup-raw-audio-caps-to-be-compatible-.patch similarity index 95% rename from patches/mfplat-streaming-support/0027-winegstreamer-Fixup-raw-audio-caps-to-be-compatible-.patch rename to patches/mfplat-streaming-support/0026-winegstreamer-Fixup-raw-audio-caps-to-be-compatible-.patch index ebb34d0a..344ea71e 100644 --- a/patches/mfplat-streaming-support/0027-winegstreamer-Fixup-raw-audio-caps-to-be-compatible-.patch +++ b/patches/mfplat-streaming-support/0026-winegstreamer-Fixup-raw-audio-caps-to-be-compatible-.patch @@ -1,4 +1,4 @@ -From b7ada1cd9d02d1d91309a57c9337d9df78c6f412 Mon Sep 17 00:00:00 2001 +From 18dea0ccadf90b4ac523dc1073c3870fdd6bcf6a Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Fri, 6 Nov 2020 10:06:23 -0600 Subject: [PATCH] winegstreamer: Fixup raw audio caps to be compatible with @@ -24,7 +24,7 @@ index 075e0ce1f0f..dcf76554b6d 100644 GstCaps *caps_from_mf_media_type(IMFMediaType *type) DECLSPEC_HIDDEN; IMFSample *mf_sample_from_gst_buffer(GstBuffer *in) DECLSPEC_HIDDEN; diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c -index 90c8da42b74..6280c65e920 100644 +index a0bce3cfe9d..5f3457e50b0 100644 --- a/dlls/winegstreamer/media_source.c +++ b/dlls/winegstreamer/media_source.c @@ -891,15 +891,20 @@ fail: @@ -50,10 +50,10 @@ index 90c8da42b74..6280c65e920 100644 if (!strcmp(major_type, "video/x-raw")) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 2ef734f3a22..8ed2c2b3904 100644 +index 8d2d8996f22..a2873907437 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -709,6 +709,63 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) +@@ -710,6 +710,63 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) return media_type; } diff --git a/patches/mfplat-streaming-support/0028-winegstreamer-Set-MF_PD_MIME_TYPE-on-source-s-presen.patch b/patches/mfplat-streaming-support/0027-winegstreamer-Set-MF_PD_MIME_TYPE-on-source-s-presen.patch similarity index 82% rename from patches/mfplat-streaming-support/0028-winegstreamer-Set-MF_PD_MIME_TYPE-on-source-s-presen.patch rename to patches/mfplat-streaming-support/0027-winegstreamer-Set-MF_PD_MIME_TYPE-on-source-s-presen.patch index c32861f3..f6292614 100644 --- a/patches/mfplat-streaming-support/0028-winegstreamer-Set-MF_PD_MIME_TYPE-on-source-s-presen.patch +++ b/patches/mfplat-streaming-support/0027-winegstreamer-Set-MF_PD_MIME_TYPE-on-source-s-presen.patch @@ -1,4 +1,4 @@ -From c795b079ded76e66065a70f9df8ce2e142c5e3d8 Mon Sep 17 00:00:00 2001 +From fe0175d8676cbd15ddeac07876e726ef76eef7b5 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Mon, 2 Nov 2020 10:18:27 -0600 Subject: [PATCH] winegstreamer: Set MF_PD_MIME_TYPE on source's presentation @@ -10,18 +10,18 @@ Signed-off-by: Derek Lesho 1 file changed, 13 insertions(+) diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c -index 6280c65e920..049b2b94268 100644 +index 5f3457e50b0..1bbbb2ffd81 100644 --- a/dlls/winegstreamer/media_source.c +++ b/dlls/winegstreamer/media_source.c -@@ -1378,6 +1378,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ +@@ -1377,6 +1377,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); - BOOL video_selected = FALSE, audio_selected = FALSE; IMFStreamDescriptor **descriptors = NULL; + IMFAttributes *byte_stream_attributes; struct media_source *object; gint64 total_pres_time = 0; DWORD bytestream_caps; -@@ -1566,6 +1567,18 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ +@@ -1520,6 +1521,18 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ if (object->stream_count) IMFPresentationDescriptor_SetUINT64(object->pres_desc, &MF_PD_DURATION, total_pres_time / 100); diff --git a/patches/mfplat-streaming-support/0029-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch b/patches/mfplat-streaming-support/0028-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch similarity index 97% rename from patches/mfplat-streaming-support/0029-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch rename to patches/mfplat-streaming-support/0028-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch index 9281394a..33b8eadd 100644 --- a/patches/mfplat-streaming-support/0029-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch +++ b/patches/mfplat-streaming-support/0028-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch @@ -1,4 +1,4 @@ -From fc7bdf1d06e105fd64462c290d2aec77148d979a Mon Sep 17 00:00:00 2001 +From 7bb33ab950fe2fdddcd5e7409827be982044f813 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Tue, 15 Sep 2020 14:25:26 -0500 Subject: [PATCH] winegstreamer: Insert parser into pipeline to rectify type @@ -10,7 +10,7 @@ Signed-off-by: Derek Lesho 1 file changed, 92 insertions(+), 3 deletions(-) diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c -index 049b2b94268..56c3bd5db70 100644 +index 1bbbb2ffd81..aecf4f27375 100644 --- a/dlls/winegstreamer/media_source.c +++ b/dlls/winegstreamer/media_source.c @@ -791,8 +791,17 @@ static const IMFMediaStreamVtbl media_stream_vtbl = @@ -127,7 +127,7 @@ index 049b2b94268..56c3bd5db70 100644 static void stream_added(GstElement *element, GstPad *pad, gpointer user) { struct media_source *source = user; -@@ -1446,6 +1533,8 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ +@@ -1445,6 +1532,8 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ gst_bin_add(GST_BIN(object->container), object->decodebin); diff --git a/patches/mfplat-streaming-support/0030-winegstreamer-Translate-H.264-caps-to-attributes.patch b/patches/mfplat-streaming-support/0029-winegstreamer-Translate-H.264-caps-to-attributes.patch similarity index 93% rename from patches/mfplat-streaming-support/0030-winegstreamer-Translate-H.264-caps-to-attributes.patch rename to patches/mfplat-streaming-support/0029-winegstreamer-Translate-H.264-caps-to-attributes.patch index 77dc6fe9..1841380b 100644 --- a/patches/mfplat-streaming-support/0030-winegstreamer-Translate-H.264-caps-to-attributes.patch +++ b/patches/mfplat-streaming-support/0029-winegstreamer-Translate-H.264-caps-to-attributes.patch @@ -1,4 +1,4 @@ -From 43fcff25e303d9f292720b5e8880c3c89e6caf48 Mon Sep 17 00:00:00 2001 +From d95e8d8349b884800066c9af1ea9a7c7492ca02c Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Tue, 24 Mar 2020 16:00:26 -0500 Subject: [PATCH] winegstreamer: Translate H.264 caps to attributes. @@ -9,18 +9,18 @@ Signed-off-by: Derek Lesho 1 file changed, 75 insertions(+) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 8ed2c2b3904..cbe325b2fe8 100644 +index a2873907437..afce3d9831a 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -27,6 +27,7 @@ +@@ -26,6 +26,7 @@ + #include "gst_private.h" #include "mfapi.h" #include "mfidl.h" - #include "wmcodecdsp.h" +#include "codecapi.h" #include "wine/debug.h" #include "wine/heap.h" -@@ -628,6 +629,74 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) +@@ -629,6 +630,74 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) } } } @@ -95,7 +95,7 @@ index 8ed2c2b3904..cbe325b2fe8 100644 else { FIXME("Unrecognized video format %s\n", mime_type); -@@ -753,6 +822,12 @@ GstCaps *make_mf_compatible_caps(GstCaps *caps) +@@ -754,6 +823,12 @@ GstCaps *make_mf_compatible_caps(GstCaps *caps) } } } diff --git a/patches/mfplat-streaming-support/0031-winegstreamer-Translate-WMV-caps-to-attributes.patch b/patches/mfplat-streaming-support/0030-winegstreamer-Translate-WMV-caps-to-attributes.patch similarity index 92% rename from patches/mfplat-streaming-support/0031-winegstreamer-Translate-WMV-caps-to-attributes.patch rename to patches/mfplat-streaming-support/0030-winegstreamer-Translate-WMV-caps-to-attributes.patch index 6eeb67a2..83cecf5e 100644 --- a/patches/mfplat-streaming-support/0031-winegstreamer-Translate-WMV-caps-to-attributes.patch +++ b/patches/mfplat-streaming-support/0030-winegstreamer-Translate-WMV-caps-to-attributes.patch @@ -1,4 +1,4 @@ -From c55df771228a693563dbde00a3abc31acb24ad6e Mon Sep 17 00:00:00 2001 +From 10dcfecc84651a4c2a270960c585c735ff09ec1c Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Tue, 24 Mar 2020 16:01:20 -0500 Subject: [PATCH] winegstreamer: Translate WMV caps to attributes. @@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho 1 file changed, 51 insertions(+) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index cbe325b2fe8..f2ca4bacd2b 100644 +index afce3d9831a..6906fd3faeb 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -563,6 +563,24 @@ uncompressed_video_formats[] = +@@ -564,6 +564,24 @@ uncompressed_video_formats[] = {&MFVideoFormat_RGB555, GST_VIDEO_FORMAT_BGR15}, }; @@ -37,7 +37,7 @@ index cbe325b2fe8..f2ca4bacd2b 100644 /* returns NULL if doesn't match exactly */ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) { -@@ -697,6 +715,39 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) +@@ -698,6 +716,39 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) } } } diff --git a/patches/mfplat-streaming-support/0032-winegstreamer-Translate-AAC-caps-to-attributes.patch b/patches/mfplat-streaming-support/0031-winegstreamer-Translate-AAC-caps-to-attributes.patch similarity index 96% rename from patches/mfplat-streaming-support/0032-winegstreamer-Translate-AAC-caps-to-attributes.patch rename to patches/mfplat-streaming-support/0031-winegstreamer-Translate-AAC-caps-to-attributes.patch index c6f3805f..9074f05a 100644 --- a/patches/mfplat-streaming-support/0032-winegstreamer-Translate-AAC-caps-to-attributes.patch +++ b/patches/mfplat-streaming-support/0031-winegstreamer-Translate-AAC-caps-to-attributes.patch @@ -1,4 +1,4 @@ -From fc6e2b7d81b31b8d2f2654e6ef6000cbfe7fdf52 Mon Sep 17 00:00:00 2001 +From 90d881fc889fdaedc7e44c0bee5e54634c0d065c Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Tue, 24 Mar 2020 16:02:27 -0500 Subject: [PATCH] winegstreamer: Translate AAC caps to attributes. @@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho 1 file changed, 108 insertions(+) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index f2ca4bacd2b..7d7ba2de0ea 100644 +index 6906fd3faeb..66048f359e5 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -563,6 +563,15 @@ uncompressed_video_formats[] = +@@ -564,6 +564,15 @@ uncompressed_video_formats[] = {&MFVideoFormat_RGB555, GST_VIDEO_FORMAT_BGR15}, }; @@ -28,7 +28,7 @@ index f2ca4bacd2b..7d7ba2de0ea 100644 static void codec_data_to_user_data(GstStructure *structure, IMFMediaType *type) { const GValue *codec_data; -@@ -813,6 +822,105 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) +@@ -814,6 +823,105 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) IMFMediaType_SetUINT32(media_type, &MF_MT_AUDIO_BITS_PER_SAMPLE, depth); } diff --git a/patches/mfplat-streaming-support/0033-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch b/patches/mfplat-streaming-support/0032-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch similarity index 88% rename from patches/mfplat-streaming-support/0033-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch rename to patches/mfplat-streaming-support/0032-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch index 378a71cd..c66c1a4a 100644 --- a/patches/mfplat-streaming-support/0033-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch +++ b/patches/mfplat-streaming-support/0032-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch @@ -1,4 +1,4 @@ -From 933315ce797f96057f1e3d5bf6b335c4c48abc52 Mon Sep 17 00:00:00 2001 +From c4955ec1798428fe9941cdbb9fed146f3d29dbe2 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 25 Mar 2020 13:36:19 -0500 Subject: [PATCH] winegstreamer: Translate MPEG-4 Section-2 caps to attributes. @@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho 1 file changed, 16 insertions(+) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 7d7ba2de0ea..8ab679e3a5f 100644 +index 66048f359e5..090952e7d2b 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -757,6 +757,22 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) +@@ -758,6 +758,22 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) codec_data_to_user_data(info, media_type); } diff --git a/patches/mfplat-streaming-support/0034-winegstreamer-Translate-WMA-caps-to-attributes.patch b/patches/mfplat-streaming-support/0033-winegstreamer-Translate-WMA-caps-to-attributes.patch similarity index 90% rename from patches/mfplat-streaming-support/0034-winegstreamer-Translate-WMA-caps-to-attributes.patch rename to patches/mfplat-streaming-support/0033-winegstreamer-Translate-WMA-caps-to-attributes.patch index 1e1f47fe..21b6a354 100644 --- a/patches/mfplat-streaming-support/0034-winegstreamer-Translate-WMA-caps-to-attributes.patch +++ b/patches/mfplat-streaming-support/0033-winegstreamer-Translate-WMA-caps-to-attributes.patch @@ -1,4 +1,4 @@ -From 9e8239e4769c290938aac5c7ce2ec5983ac198f8 Mon Sep 17 00:00:00 2001 +From 56ac324cb533bde61e25bc86a29440aec7111764 Mon Sep 17 00:00:00 2001 From: Derek Lesho 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 1 file changed, 24 insertions(+) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 8ab679e3a5f..8cc56873d76 100644 +index 090952e7d2b..b2f8f0b83c1 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -937,6 +937,30 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) +@@ -938,6 +938,30 @@ IMFMediaType *mf_media_type_from_caps(const GstCaps *caps) FIXME("Unhandled mpegversion %d\n", mpeg_version); } } diff --git a/patches/mfplat-streaming-support/0035-winegstreamer-Translate-H.264-attributes-to-caps.patch b/patches/mfplat-streaming-support/0034-winegstreamer-Translate-H.264-attributes-to-caps.patch similarity index 95% rename from patches/mfplat-streaming-support/0035-winegstreamer-Translate-H.264-attributes-to-caps.patch rename to patches/mfplat-streaming-support/0034-winegstreamer-Translate-H.264-attributes-to-caps.patch index dc96e2fa..3973bae1 100644 --- a/patches/mfplat-streaming-support/0035-winegstreamer-Translate-H.264-attributes-to-caps.patch +++ b/patches/mfplat-streaming-support/0034-winegstreamer-Translate-H.264-attributes-to-caps.patch @@ -1,4 +1,4 @@ -From aeada4cbbc0790bd62f61736578b7d7fc4c59dce Mon Sep 17 00:00:00 2001 +From 6ace23bd172cb48c7e326fd3013624a73cdf8c10 Mon Sep 17 00:00:00 2001 From: Derek Lesho 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 1 file changed, 71 insertions(+), 19 deletions(-) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 8cc56873d76..f097410da56 100644 +index b2f8f0b83c1..e02f0dfbc5c 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -1055,10 +1055,6 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) +@@ -1056,10 +1056,6 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) { UINT64 frame_rate = 0, frame_size = 0; DWORD width, height; @@ -23,7 +23,7 @@ index 8cc56873d76..f097410da56 100644 if (FAILED(IMFMediaType_GetUINT64(type, &MF_MT_FRAME_SIZE, &frame_size))) return NULL; -@@ -1067,28 +1063,84 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) +@@ -1068,28 +1064,84 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) output = gst_caps_new_empty_simple("video/x-raw"); diff --git a/patches/mfplat-streaming-support/0036-winegstreamer-Translate-WMV-attributes-to-caps.patch b/patches/mfplat-streaming-support/0035-winegstreamer-Translate-WMV-attributes-to-caps.patch similarity index 92% rename from patches/mfplat-streaming-support/0036-winegstreamer-Translate-WMV-attributes-to-caps.patch rename to patches/mfplat-streaming-support/0035-winegstreamer-Translate-WMV-attributes-to-caps.patch index 66478070..8c2975b6 100644 --- a/patches/mfplat-streaming-support/0036-winegstreamer-Translate-WMV-attributes-to-caps.patch +++ b/patches/mfplat-streaming-support/0035-winegstreamer-Translate-WMV-attributes-to-caps.patch @@ -1,4 +1,4 @@ -From 2cb03fb6bb720e77aec641715967adc4c05de542 Mon Sep 17 00:00:00 2001 +From 5f71506e9482e475bb636a4d3738734afe004443 Mon Sep 17 00:00:00 2001 From: Derek Lesho 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 1 file changed, 51 insertions(+) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index f097410da56..7ec0fd0efe5 100644 +index e02f0dfbc5c..2456d633c6c 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -1040,6 +1040,21 @@ GstCaps *make_mf_compatible_caps(GstCaps *caps) +@@ -1041,6 +1041,21 @@ GstCaps *make_mf_compatible_caps(GstCaps *caps) return ret; } @@ -34,7 +34,7 @@ index f097410da56..7ec0fd0efe5 100644 GstCaps *caps_from_mf_media_type(IMFMediaType *type) { GUID major_type; -@@ -1111,6 +1126,42 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) +@@ -1112,6 +1127,42 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) gst_caps_set_simple(output, "level", G_TYPE_STRING, level, NULL); } } diff --git a/patches/mfplat-streaming-support/0037-winegstreamer-Translate-AAC-attributes-to-caps.patch b/patches/mfplat-streaming-support/0036-winegstreamer-Translate-AAC-attributes-to-caps.patch similarity index 95% rename from patches/mfplat-streaming-support/0037-winegstreamer-Translate-AAC-attributes-to-caps.patch rename to patches/mfplat-streaming-support/0036-winegstreamer-Translate-AAC-attributes-to-caps.patch index 802d397b..1cba7371 100644 --- a/patches/mfplat-streaming-support/0037-winegstreamer-Translate-AAC-attributes-to-caps.patch +++ b/patches/mfplat-streaming-support/0036-winegstreamer-Translate-AAC-attributes-to-caps.patch @@ -1,4 +1,4 @@ -From 2dbef234284e6514809cb0e3ab8e07a11ba71b4d Mon Sep 17 00:00:00 2001 +From 09b135accfd48e079d6a2a3862e647b66b872b15 Mon Sep 17 00:00:00 2001 From: Derek Lesho 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 1 file changed, 66 insertions(+) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 7ec0fd0efe5..87cbc3c00c3 100644 +index 2456d633c6c..b1f83f4fa6c 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -1254,6 +1254,72 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) +@@ -1255,6 +1255,72 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) return NULL; } } diff --git a/patches/mfplat-streaming-support/0038-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch b/patches/mfplat-streaming-support/0037-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch similarity index 85% rename from patches/mfplat-streaming-support/0038-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch rename to patches/mfplat-streaming-support/0037-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch index dbb15f7f..a36690c9 100644 --- a/patches/mfplat-streaming-support/0038-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch +++ b/patches/mfplat-streaming-support/0037-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch @@ -1,4 +1,4 @@ -From 3af863c7d2f2da12dca8707b51e89c6cfad580ea Mon Sep 17 00:00:00 2001 +From 9638f311e7d31f5e4aa80e173c31396d774afb75 Mon Sep 17 00:00:00 2001 From: Derek Lesho 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 1 file changed, 8 insertions(+) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 87cbc3c00c3..53e4cea62e1 100644 +index b1f83f4fa6c..8906e472766 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -1162,6 +1162,14 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) +@@ -1163,6 +1163,14 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) user_data_to_codec_data(type, output); } diff --git a/patches/mfplat-streaming-support/0039-winegstreamer-Translate-WMA-attributes-to-caps.patch b/patches/mfplat-streaming-support/0038-winegstreamer-Translate-WMA-attributes-to-caps.patch similarity index 88% rename from patches/mfplat-streaming-support/0039-winegstreamer-Translate-WMA-attributes-to-caps.patch rename to patches/mfplat-streaming-support/0038-winegstreamer-Translate-WMA-attributes-to-caps.patch index fa5544c1..e0dac18c 100644 --- a/patches/mfplat-streaming-support/0039-winegstreamer-Translate-WMA-attributes-to-caps.patch +++ b/patches/mfplat-streaming-support/0038-winegstreamer-Translate-WMA-attributes-to-caps.patch @@ -1,4 +1,4 @@ -From 4f0f18c8b24f739b7f9d71926202e96cd437a648 Mon Sep 17 00:00:00 2001 +From e16c1d7b27467663a90eb23863d8110627ec3ad1 Mon Sep 17 00:00:00 2001 From: Derek Lesho 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 1 file changed, 15 insertions(+) diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 53e4cea62e1..0d3648048c4 100644 +index 8906e472766..bf3486d2be8 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -1328,6 +1328,21 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) +@@ -1329,6 +1329,21 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) CoTaskMemFree(user_data); } } diff --git a/patches/mfplat-streaming-support/0040-tools-Add-support-for-multiple-parent-directories.patch b/patches/mfplat-streaming-support/0039-tools-Add-support-for-multiple-parent-directories.patch similarity index 96% rename from patches/mfplat-streaming-support/0040-tools-Add-support-for-multiple-parent-directories.patch rename to patches/mfplat-streaming-support/0039-tools-Add-support-for-multiple-parent-directories.patch index 929355ef..7e62bd7a 100644 --- a/patches/mfplat-streaming-support/0040-tools-Add-support-for-multiple-parent-directories.patch +++ b/patches/mfplat-streaming-support/0039-tools-Add-support-for-multiple-parent-directories.patch @@ -1,4 +1,4 @@ -From 39cdc504c5c85bf7f4b2ee636b85f128a147e8d1 Mon Sep 17 00:00:00 2001 +From dd690ffa7c0a3b2a067f0f2fc1ec7f99cfc9d343 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 29 Jan 2020 15:37:39 -0600 Subject: [PATCH] tools: Add support for multiple parent directories. @@ -91,7 +91,7 @@ index 2d3c14cb2ec..cb4a808244d 100755 } diff --git a/tools/makedep.c b/tools/makedep.c -index b21362c6c9e..f0d611f1381 100644 +index d892b7e9541..688487ffd82 100644 --- a/tools/makedep.c +++ b/tools/makedep.c @@ -190,11 +190,11 @@ struct makefile @@ -133,7 +133,7 @@ index b21362c6c9e..f0d611f1381 100644 } if (ret) *filename = src_path; -@@ -4155,13 +4162,13 @@ static void load_sources( struct makefile *make ) +@@ -4158,13 +4165,13 @@ static void load_sources( struct makefile *make ) strarray_set_value( &make->vars, "top_srcdir", root_src_dir_path( "" )); strarray_set_value( &make->vars, "srcdir", src_dir_path( make, "" )); @@ -148,7 +148,7 @@ index b21362c6c9e..f0d611f1381 100644 make->programs = get_expanded_make_var_array( make, "PROGRAMS" ); make->scripts = get_expanded_make_var_array( make, "SCRIPTS" ); make->imports = get_expanded_make_var_array( make, "IMPORTS" ); -@@ -4206,8 +4213,11 @@ static void load_sources( struct makefile *make ) +@@ -4209,8 +4216,11 @@ static void load_sources( struct makefile *make ) strarray_add( &make->include_args, strmake( "-I%s", obj_dir_path( make, "" ))); if (make->src_dir) strarray_add( &make->include_args, strmake( "-I%s", make->src_dir )); diff --git a/patches/mfplat-streaming-support/0041-mf-Introduce-handler-helper.patch b/patches/mfplat-streaming-support/0040-mf-Introduce-handler-helper.patch similarity index 98% rename from patches/mfplat-streaming-support/0041-mf-Introduce-handler-helper.patch rename to patches/mfplat-streaming-support/0040-mf-Introduce-handler-helper.patch index 973d9bc6..a04ff9d2 100644 --- a/patches/mfplat-streaming-support/0041-mf-Introduce-handler-helper.patch +++ b/patches/mfplat-streaming-support/0040-mf-Introduce-handler-helper.patch @@ -1,4 +1,4 @@ -From 9d28565def734fceaa48aa0cd475090570eebf88 Mon Sep 17 00:00:00 2001 +From ef2efb4cb317917e4269ea42b322be7f48ac7682 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 29 Jan 2020 15:30:49 -0600 Subject: [PATCH] mf: Introduce handler helper. @@ -934,7 +934,7 @@ index 5395d6fd501..4f6b428f067 100644 media_source.c \ mediatype.c \ diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c -index 56c3bd5db70..4ff5ed3df02 100644 +index aecf4f27375..5f46f7d575a 100644 --- a/dlls/winegstreamer/media_source.c +++ b/dlls/winegstreamer/media_source.c @@ -23,6 +23,7 @@ @@ -945,7 +945,7 @@ index 56c3bd5db70..4ff5ed3df02 100644 #include #include -@@ -1681,21 +1682,11 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ +@@ -1635,21 +1636,11 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ return hr; } @@ -968,7 +968,7 @@ index 56c3bd5db70..4ff5ed3df02 100644 }; static struct winegstreamer_stream_handler *impl_from_IMFByteStreamHandler(IMFByteStreamHandler *iface) -@@ -1703,11 +1694,6 @@ static struct winegstreamer_stream_handler *impl_from_IMFByteStreamHandler(IMFBy +@@ -1657,11 +1648,6 @@ static struct winegstreamer_stream_handler *impl_from_IMFByteStreamHandler(IMFBy return CONTAINING_RECORD(iface, struct winegstreamer_stream_handler, IMFByteStreamHandler_iface); } @@ -980,7 +980,7 @@ index 56c3bd5db70..4ff5ed3df02 100644 static HRESULT WINAPI winegstreamer_stream_handler_QueryInterface(IMFByteStreamHandler *iface, REFIID riid, void **obj) { TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj); -@@ -1737,247 +1723,44 @@ static ULONG WINAPI winegstreamer_stream_handler_AddRef(IMFByteStreamHandler *if +@@ -1691,247 +1677,44 @@ static ULONG WINAPI winegstreamer_stream_handler_AddRef(IMFByteStreamHandler *if static ULONG WINAPI winegstreamer_stream_handler_Release(IMFByteStreamHandler *iface) { @@ -1235,7 +1235,7 @@ index 56c3bd5db70..4ff5ed3df02 100644 } static HRESULT WINAPI winegstreamer_stream_handler_GetMaxNumberOfBytesRequiredForResolution(IMFByteStreamHandler *iface, QWORD *bytes) -@@ -1997,47 +1780,16 @@ static const IMFByteStreamHandlerVtbl winegstreamer_stream_handler_vtbl = +@@ -1951,47 +1734,16 @@ static const IMFByteStreamHandlerVtbl winegstreamer_stream_handler_vtbl = winegstreamer_stream_handler_GetMaxNumberOfBytesRequiredForResolution, }; @@ -1286,7 +1286,7 @@ index 56c3bd5db70..4ff5ed3df02 100644 if (FAILED(hr = media_source_constructor(stream, &new_source))) return hr; -@@ -2056,64 +1808,6 @@ static HRESULT winegstreamer_stream_handler_create_object(struct winegstreamer_s +@@ -2010,64 +1762,6 @@ static HRESULT winegstreamer_stream_handler_create_object(struct winegstreamer_s } } @@ -1351,7 +1351,7 @@ index 56c3bd5db70..4ff5ed3df02 100644 HRESULT winegstreamer_stream_handler_create(REFIID riid, void **obj) { struct winegstreamer_stream_handler *this; -@@ -2125,11 +1819,9 @@ HRESULT winegstreamer_stream_handler_create(REFIID riid, void **obj) +@@ -2079,11 +1773,9 @@ HRESULT winegstreamer_stream_handler_create(REFIID riid, void **obj) if (!this) return E_OUTOFMEMORY; diff --git a/patches/mfplat-streaming-support/0042-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch b/patches/mfplat-streaming-support/0041-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch similarity index 98% rename from patches/mfplat-streaming-support/0042-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch rename to patches/mfplat-streaming-support/0041-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch index 31917d18..c5ecee7c 100644 --- a/patches/mfplat-streaming-support/0042-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch +++ b/patches/mfplat-streaming-support/0041-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch @@ -1,4 +1,4 @@ -From 84261d831bc9315c3fe722fa10b88ddb6763de53 Mon Sep 17 00:00:00 2001 +From f84c2f0717e5c90f837262e88dad4b1fdcbc64d2 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Mon, 16 Mar 2020 12:09:39 -0500 Subject: [PATCH] winegstreamer: Implement decoder MFT on gstreamer. @@ -1513,12 +1513,12 @@ index 00000000000..7055ffa54fc + } +} diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 0d3648048c4..e826428a437 100644 +index bf3486d2be8..b604f6df066 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -409,6 +409,16 @@ static const GUID CLSID_GStreamerByteStreamHandler = {0x317df618, 0x5e5a, 0x468a +@@ -410,6 +410,16 @@ static const GUID CLSID_WINEAudioConverter = {0x6a170414,0xaad9,0x4693,{0xb8,0x0 - static const GUID CLSID_WINEAudioConverter = {0x6a170414,0xaad9,0x4693,{0xb8,0x06,0x3a,0x0c,0x47,0xc5,0x70,0xd6}}; + static GUID CLSID_WINEColorConverter = {0x2be8b27f,0xcd60,0x4b8a,{0x95,0xae,0xd1,0x74,0xcc,0x5c,0xba,0xa7}}; +static HRESULT h264_decoder_create(REFIID riid, void **ret) +{ @@ -1533,16 +1533,16 @@ index 0d3648048c4..e826428a437 100644 static const struct class_object { const GUID *clsid; -@@ -420,6 +430,8 @@ class_objects[] = +@@ -421,6 +431,8 @@ class_objects[] = { &CLSID_GStreamerByteStreamHandler, &winegstreamer_stream_handler_create }, { &CLSID_WINEAudioConverter, &audio_converter_create }, - { &CLSID_CColorConvertDMO, &color_converter_create }, + { &CLSID_WINEColorConverter, &color_converter_create }, + { &CLSID_CMSH264DecoderMFT, &h264_decoder_create }, + { &CLSID_CMSAACDecMFT, &aac_decoder_create }, }; HRESULT mfplat_get_class_object(REFCLSID rclsid, REFIID riid, void **obj) -@@ -475,6 +487,32 @@ const GUID *color_converter_supported_types[] = +@@ -476,6 +488,32 @@ const GUID *color_converter_supported_types[] = &MFVideoFormat_YVYU, }; @@ -1575,7 +1575,7 @@ index 0d3648048c4..e826428a437 100644 static const struct mft { const GUID *clsid; -@@ -514,6 +552,30 @@ mfts[] = +@@ -515,6 +553,30 @@ mfts[] = color_converter_supported_types, NULL }, @@ -1606,7 +1606,7 @@ index 0d3648048c4..e826428a437 100644 }; HRESULT mfplat_DllRegisterServer(void) -@@ -567,7 +629,6 @@ struct aac_user_data +@@ -568,7 +630,6 @@ struct aac_user_data { WORD payload_type; WORD profile_level_indication; diff --git a/patches/mfplat-streaming-support/0043-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch b/patches/mfplat-streaming-support/0042-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch similarity index 92% rename from patches/mfplat-streaming-support/0043-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch rename to patches/mfplat-streaming-support/0042-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch index e022b3cc..43615c72 100644 --- a/patches/mfplat-streaming-support/0043-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch +++ b/patches/mfplat-streaming-support/0042-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch @@ -1,4 +1,4 @@ -From 63b9cb8a8e8dd11f8c71ba3a28617729574598c7 Mon Sep 17 00:00:00 2001 +From 7fa665fa4360cf8656c30683c84280c1751850c0 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Mon, 23 Mar 2020 11:55:41 -0500 Subject: [PATCH] mfreadwrite: Select all streams when creating a source diff --git a/patches/mfplat-streaming-support/0044-Miscellaneous.patch b/patches/mfplat-streaming-support/0043-Miscellaneous.patch similarity index 98% rename from patches/mfplat-streaming-support/0044-Miscellaneous.patch rename to patches/mfplat-streaming-support/0043-Miscellaneous.patch index f806869f..c335f168 100644 --- a/patches/mfplat-streaming-support/0044-Miscellaneous.patch +++ b/patches/mfplat-streaming-support/0043-Miscellaneous.patch @@ -1,4 +1,4 @@ -From c5d73af4b7828c1bdf7b95d8e8f7770ca2916ee6 Mon Sep 17 00:00:00 2001 +From 2cc1a2009879fec87340b1818111f3cea6fe2442 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Mon, 2 Nov 2020 09:58:09 -0600 Subject: [PATCH] Miscellaneous @@ -102,7 +102,7 @@ index 6659aedefa5..825b46d13bb 100644 #endif diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c -index 4ff5ed3df02..2c6b82c43b4 100644 +index 5f46f7d575a..2156e07a13c 100644 --- a/dlls/winegstreamer/media_source.c +++ b/dlls/winegstreamer/media_source.c @@ -554,6 +554,11 @@ static gboolean bytestream_query(GstPad *pad, GstObject *parent, GstQuery *query diff --git a/patches/mfplat-streaming-support/0045-WMV.patch b/patches/mfplat-streaming-support/0044-WMV.patch similarity index 93% rename from patches/mfplat-streaming-support/0045-WMV.patch rename to patches/mfplat-streaming-support/0044-WMV.patch index e74dacf2..77754183 100644 --- a/patches/mfplat-streaming-support/0045-WMV.patch +++ b/patches/mfplat-streaming-support/0044-WMV.patch @@ -1,4 +1,4 @@ -From 87f681bbe50ebc3b3f1c9c943c95b183b6751d86 Mon Sep 17 00:00:00 2001 +From c918862beea585aa413d3a629e5818a762d1568f Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 25 Mar 2020 19:07:11 -0500 Subject: [PATCH] WMV @@ -52,10 +52,10 @@ index 7055ffa54fc..3625382c573 100644 }; diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index e826428a437..d345704cf25 100644 +index b604f6df066..2fb730ff4c0 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -419,6 +419,10 @@ static HRESULT aac_decoder_create(REFIID riid, void **ret) +@@ -420,6 +420,10 @@ static HRESULT aac_decoder_create(REFIID riid, void **ret) return generic_decoder_construct(riid, ret, DECODER_TYPE_AAC); } @@ -66,15 +66,15 @@ index e826428a437..d345704cf25 100644 static const struct class_object { const GUID *clsid; -@@ -432,6 +436,7 @@ class_objects[] = - { &CLSID_CColorConvertDMO, &color_converter_create }, +@@ -433,6 +437,7 @@ class_objects[] = + { &CLSID_WINEColorConverter, &color_converter_create }, { &CLSID_CMSH264DecoderMFT, &h264_decoder_create }, { &CLSID_CMSAACDecMFT, &aac_decoder_create }, + { &CLSID_CWMVDecMediaObject, &wmv_decoder_create }, }; HRESULT mfplat_get_class_object(REFCLSID rclsid, REFIID riid, void **obj) -@@ -513,6 +518,29 @@ const GUID *aac_decoder_output_types[] = +@@ -514,6 +519,29 @@ const GUID *aac_decoder_output_types[] = &MFAudioFormat_PCM, }; @@ -104,7 +104,7 @@ index e826428a437..d345704cf25 100644 static const struct mft { const GUID *clsid; -@@ -576,6 +604,18 @@ mfts[] = +@@ -577,6 +605,18 @@ mfts[] = aac_decoder_output_types, NULL }, diff --git a/patches/mfplat-streaming-support/0046-Expose-PCM-output-type-on-AAC-decoder.patch b/patches/mfplat-streaming-support/0045-Expose-PCM-output-type-on-AAC-decoder.patch similarity index 94% rename from patches/mfplat-streaming-support/0046-Expose-PCM-output-type-on-AAC-decoder.patch rename to patches/mfplat-streaming-support/0045-Expose-PCM-output-type-on-AAC-decoder.patch index e2ffa2da..c2395a78 100644 --- a/patches/mfplat-streaming-support/0046-Expose-PCM-output-type-on-AAC-decoder.patch +++ b/patches/mfplat-streaming-support/0045-Expose-PCM-output-type-on-AAC-decoder.patch @@ -1,4 +1,4 @@ -From e7fb38c105a356ccc63746c10a423f279e166d70 Mon Sep 17 00:00:00 2001 +From 8b1429c51559a4cb5685cfcf11302f0b8a6e9f14 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Fri, 3 Apr 2020 11:12:33 -0500 Subject: [PATCH] Expose PCM output type on AAC decoder. diff --git a/patches/mfplat-streaming-support/0047-Improve-tests.patch b/patches/mfplat-streaming-support/0046-Improve-tests.patch similarity index 99% rename from patches/mfplat-streaming-support/0047-Improve-tests.patch rename to patches/mfplat-streaming-support/0046-Improve-tests.patch index a5d4d3c1..dc56a43c 100644 --- a/patches/mfplat-streaming-support/0047-Improve-tests.patch +++ b/patches/mfplat-streaming-support/0046-Improve-tests.patch @@ -1,4 +1,4 @@ -From e2d0dfbfa5d95af41596a179da821a5d847cff87 Mon Sep 17 00:00:00 2001 +From a5d03373274821c741f3974643750289c0b27a75 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Mon, 9 Mar 2020 11:59:17 -0500 Subject: [PATCH] Improve tests diff --git a/patches/mfplat-streaming-support/0048-Revert-Improve-tests.patch b/patches/mfplat-streaming-support/0047-Revert-Improve-tests.patch similarity index 99% rename from patches/mfplat-streaming-support/0048-Revert-Improve-tests.patch rename to patches/mfplat-streaming-support/0047-Revert-Improve-tests.patch index 3bd19aab..9549d06c 100644 --- a/patches/mfplat-streaming-support/0048-Revert-Improve-tests.patch +++ b/patches/mfplat-streaming-support/0047-Revert-Improve-tests.patch @@ -1,4 +1,4 @@ -From 5fc7eb2c5da1f633dadd833d1db4915bfc20b17a Mon Sep 17 00:00:00 2001 +From fc80acc18fc96ec5acc697ea6d4887374faf570d Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 25 Mar 2020 13:58:36 -0500 Subject: [PATCH] Revert "Improve tests" diff --git a/patches/mfplat-streaming-support/0020-winegstreamer-In-the-default-configuration-select-on.patch b/patches/mfplat-streaming-support/0048-Report-streams-backwards-and-only-select-one-of-each.patch similarity index 64% rename from patches/mfplat-streaming-support/0020-winegstreamer-In-the-default-configuration-select-on.patch rename to patches/mfplat-streaming-support/0048-Report-streams-backwards-and-only-select-one-of-each.patch index 8d404113..7c20f408 100644 --- a/patches/mfplat-streaming-support/0020-winegstreamer-In-the-default-configuration-select-on.patch +++ b/patches/mfplat-streaming-support/0048-Report-streams-backwards-and-only-select-one-of-each.patch @@ -1,26 +1,33 @@ -From e404b28e688545c90049bfcc8e9cad84d2f54062 Mon Sep 17 00:00:00 2001 +From cda7c0339af6bf5c4d903ef844844ca0d4332d73 Mon Sep 17 00:00:00 2001 From: Derek Lesho -Date: Fri, 4 Dec 2020 16:17:11 -0500 -Subject: [PATCH] winegstreamer: In the default configuration, select one - stream of each major type. +Date: Tue, 5 May 2020 15:35:16 -0500 +Subject: [PATCH] Report streams backwards and only select one of each stream + type. --- - dlls/winegstreamer/media_source.c | 22 +++++++++++++++++++++- - 1 file changed, 21 insertions(+), 1 deletion(-) + dlls/winegstreamer/media_source.c | 24 ++++++++++++++++++++++-- + 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c -index d03900aebdf..dc15ec8d5ca 100644 +index 2156e07a13c..fd7f1a7f55e 100644 --- a/dlls/winegstreamer/media_source.c +++ b/dlls/winegstreamer/media_source.c -@@ -1262,6 +1262,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ +@@ -1486,6 +1486,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE("mf_src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS_ANY); + BOOL video_selected = FALSE, audio_selected = FALSE; IMFStreamDescriptor **descriptors = NULL; + IMFAttributes *byte_stream_attributes; struct media_source *object; - gint64 total_pres_time = 0; -@@ -1377,9 +1378,28 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ +@@ -1600,15 +1601,34 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ + descriptors = heap_alloc(object->stream_count * sizeof(IMFStreamDescriptor*)); + for (i = 0; i < object->stream_count; i++) + { +- IMFMediaStream_GetStreamDescriptor(&object->streams[i]->IMFMediaStream_iface, &descriptors[i]); ++ IMFMediaStream_GetStreamDescriptor(&object->streams[i]->IMFMediaStream_iface, &descriptors[object->stream_count - 1 - i]); + } + if (FAILED(hr = MFCreatePresentationDescriptor(object->stream_count, descriptors, &object->pres_desc))) goto fail; diff --git a/patches/mfplat-streaming-support/0049-winegstreamer-Introduce-MPEG-4-Section-2-video-decod.patch b/patches/mfplat-streaming-support/0049-winegstreamer-Introduce-MPEG-4-Section-2-video-decod.patch index 2a71ab3f..b99ed4f8 100644 --- a/patches/mfplat-streaming-support/0049-winegstreamer-Introduce-MPEG-4-Section-2-video-decod.patch +++ b/patches/mfplat-streaming-support/0049-winegstreamer-Introduce-MPEG-4-Section-2-video-decod.patch @@ -1,4 +1,4 @@ -From 3ac5b052542d80c2f77aa1e2def02fb1b9d3f7a2 Mon Sep 17 00:00:00 2001 +From 32e2cc5815a0f2836ba22f42e2eb7930289a18db Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Mon, 11 May 2020 16:05:50 -0500 Subject: [PATCH] winegstreamer: Introduce MPEG-4 Section-2 video decoder. @@ -53,10 +53,10 @@ index c188d08c57f..b5220bc3332 100644 }; diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index d345704cf25..5b5d2a6b7de 100644 +index 2fb730ff4c0..e5227340fd2 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -423,6 +423,12 @@ static HRESULT wmv_decoder_create(REFIID riid, void **ret) +@@ -424,6 +424,12 @@ static HRESULT wmv_decoder_create(REFIID riid, void **ret) { return generic_decoder_construct(riid, ret, DECODER_TYPE_WMV); } @@ -69,7 +69,7 @@ index d345704cf25..5b5d2a6b7de 100644 static const struct class_object { const GUID *clsid; -@@ -437,6 +443,7 @@ class_objects[] = +@@ -438,6 +444,7 @@ class_objects[] = { &CLSID_CMSH264DecoderMFT, &h264_decoder_create }, { &CLSID_CMSAACDecMFT, &aac_decoder_create }, { &CLSID_CWMVDecMediaObject, &wmv_decoder_create }, @@ -77,7 +77,7 @@ index d345704cf25..5b5d2a6b7de 100644 }; HRESULT mfplat_get_class_object(REFCLSID rclsid, REFIID riid, void **obj) -@@ -541,6 +548,22 @@ const GUID *wmv_decoder_output_types[] = +@@ -542,6 +549,22 @@ const GUID *wmv_decoder_output_types[] = &MFVideoFormat_RGB8, }; @@ -100,7 +100,7 @@ index d345704cf25..5b5d2a6b7de 100644 static const struct mft { const GUID *clsid; -@@ -616,6 +639,18 @@ mfts[] = +@@ -617,6 +640,18 @@ mfts[] = wmv_decoder_output_types, NULL }, diff --git a/patches/mfplat-streaming-support/0050-winegstreamer-Introduce-WMA-audio-decoder.patch b/patches/mfplat-streaming-support/0050-winegstreamer-Introduce-WMA-audio-decoder.patch index 27ee2c1e..ac12a432 100644 --- a/patches/mfplat-streaming-support/0050-winegstreamer-Introduce-WMA-audio-decoder.patch +++ b/patches/mfplat-streaming-support/0050-winegstreamer-Introduce-WMA-audio-decoder.patch @@ -1,4 +1,4 @@ -From b577661bd9a8d132a06d58d07331af0a466d8eeb Mon Sep 17 00:00:00 2001 +From 1d5e925925e63fe244964b26cf6128ede0776a06 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Tue, 12 May 2020 16:50:41 -0500 Subject: [PATCH] winegstreamer: Introduce WMA audio decoder. @@ -53,10 +53,10 @@ index b5220bc3332..9b10cfd9e4a 100644 &MFMediaType_Video, m4s2_input_types, diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index 5b5d2a6b7de..f6b52a04cf9 100644 +index e5227340fd2..8f770f94bf8 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c -@@ -424,6 +424,11 @@ static HRESULT wmv_decoder_create(REFIID riid, void **ret) +@@ -425,6 +425,11 @@ static HRESULT wmv_decoder_create(REFIID riid, void **ret) return generic_decoder_construct(riid, ret, DECODER_TYPE_WMV); } @@ -68,7 +68,7 @@ index 5b5d2a6b7de..f6b52a04cf9 100644 static HRESULT m4s2_decoder_create(REFIID riid, void **ret) { return generic_decoder_construct(riid, ret, DECODER_TYPE_M4S2); -@@ -443,6 +448,7 @@ class_objects[] = +@@ -444,6 +449,7 @@ class_objects[] = { &CLSID_CMSH264DecoderMFT, &h264_decoder_create }, { &CLSID_CMSAACDecMFT, &aac_decoder_create }, { &CLSID_CWMVDecMediaObject, &wmv_decoder_create }, @@ -76,7 +76,7 @@ index 5b5d2a6b7de..f6b52a04cf9 100644 { &CLSID_CMpeg4sDecMFT, m4s2_decoder_create }, }; -@@ -548,6 +554,20 @@ const GUID *wmv_decoder_output_types[] = +@@ -549,6 +555,20 @@ const GUID *wmv_decoder_output_types[] = &MFVideoFormat_RGB8, }; @@ -97,7 +97,7 @@ index 5b5d2a6b7de..f6b52a04cf9 100644 static WCHAR m4s2decoderW[] = {'M','p','e','g','4','s',' ','D','e','c','o','d','e','r',' ','M','F','T',0}; const GUID *m4s2_decoder_input_types[] = -@@ -639,6 +659,18 @@ mfts[] = +@@ -640,6 +660,18 @@ mfts[] = wmv_decoder_output_types, NULL }, diff --git a/patches/mfplat-streaming-support/0018-winegstreamer-Implement-MF_SD_LANGUAGE.patch b/patches/mfplat-streaming-support/0051-winegstreamer-Implement-MF_SD_LANGUAGE.patch similarity index 91% rename from patches/mfplat-streaming-support/0018-winegstreamer-Implement-MF_SD_LANGUAGE.patch rename to patches/mfplat-streaming-support/0051-winegstreamer-Implement-MF_SD_LANGUAGE.patch index a445c4e9..9b8af7e8 100644 --- a/patches/mfplat-streaming-support/0018-winegstreamer-Implement-MF_SD_LANGUAGE.patch +++ b/patches/mfplat-streaming-support/0051-winegstreamer-Implement-MF_SD_LANGUAGE.patch @@ -1,4 +1,4 @@ -From 3ac6d23a3fb848ec1212ae2d7bccac8ee73120a4 Mon Sep 17 00:00:00 2001 +From f85db2dd85e074dcb3373d711a937c00c3a5bc73 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Tue, 11 Aug 2020 13:41:15 -0500 Subject: [PATCH] winegstreamer: Implement MF_SD_LANGUAGE. @@ -9,10 +9,10 @@ Signed-off-by: Derek Lesho 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c -index 655e765fee7..c7af077db8a 100644 +index fd7f1a7f55e..2c6b82c43b4 100644 --- a/dlls/winegstreamer/media_source.c +++ b/dlls/winegstreamer/media_source.c -@@ -1387,11 +1387,12 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ +@@ -1636,11 +1636,12 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ for (i = 0; i < object->stream_count; i++) { @@ -28,7 +28,7 @@ index 655e765fee7..c7af077db8a 100644 if (stream_pres_time > total_pres_time) total_pres_time = stream_pres_time; } -@@ -1399,6 +1400,31 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ +@@ -1648,6 +1649,31 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_ { WARN("Unable to get presentation time of stream %u\n", i); } diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 9a8e65e5..f408c7d9 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -2854,59 +2854,57 @@ fi # | dlls/winegstreamer/audioconvert.c, dlls/winegstreamer/colorconvert.c, dlls/winegstreamer/gst_cbs.c, # | dlls/winegstreamer/gst_cbs.h, dlls/winegstreamer/gst_private.h, dlls/winegstreamer/media_source.c, # | dlls/winegstreamer/mf_decode.c, dlls/winegstreamer/mfplat.c, dlls/winegstreamer/winegstreamer_classes.idl, -# | include/mfidl.idl, include/wmcodecdsp.idl, tools/make_makefiles, tools/makedep.c +# | include/mfidl.idl, tools/make_makefiles, tools/makedep.c # | if test "$enable_mfplat_streaming_support" -eq 1; then - patch_apply mfplat-streaming-support/0001-winegstreamer-Reformat-type-setting-functions-to-pre.patch - patch_apply mfplat-streaming-support/0002-winegstreamer-Implement-Process-Input-Output-for-aud.patch - patch_apply mfplat-streaming-support/0003-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch - patch_apply mfplat-streaming-support/0004-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch - patch_apply mfplat-streaming-support/0005-winegstreamer-Introduce-color-conversion-transform.patch - patch_apply mfplat-streaming-support/0006-winegstreamer-Register-the-color-conversion-transfor.patch - patch_apply mfplat-streaming-support/0007-winegstreamer-Implement-GetInputAvailableType-for-co.patch - patch_apply mfplat-streaming-support/0008-winegstreamer-Implement-SetInputType-for-color-conve.patch - patch_apply mfplat-streaming-support/0009-winegstreamer-Implement-GetOutputAvailableType-for-c.patch - patch_apply mfplat-streaming-support/0010-winegstreamer-Implement-SetOutputType-for-color-conv.patch - patch_apply mfplat-streaming-support/0011-winegstreamer-Implement-Process-Input-Output-for-col.patch - patch_apply mfplat-streaming-support/0012-winegstreamer-Implement-ProcessMessage-for-color-con.patch - patch_apply mfplat-streaming-support/0013-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch - patch_apply mfplat-streaming-support/0014-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch - patch_apply mfplat-streaming-support/0015-winegstreamer-Implement-Get-Input-Output-CurrentType.patch - patch_apply mfplat-streaming-support/0016-winegstreamer-Implement-IMFMediaSource-Stop.patch - patch_apply mfplat-streaming-support/0017-winegstreamer-Set-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch - patch_apply mfplat-streaming-support/0018-winegstreamer-Implement-MF_SD_LANGUAGE.patch - patch_apply mfplat-streaming-support/0019-winegstreamer-Report-streams-backwards.patch - patch_apply mfplat-streaming-support/0020-winegstreamer-In-the-default-configuration-select-on.patch - patch_apply mfplat-streaming-support/0021-mf-Add-invalid-connect-method-test.patch - patch_apply mfplat-streaming-support/0022-Allow-for-compressed-types.patch - patch_apply mfplat-streaming-support/0023-mf-session-Unconditionally-deliver-NULL-EOS-samples.patch - patch_apply mfplat-streaming-support/0024-mf-session-Request-more-samples-when-a-transform-nee.patch - patch_apply mfplat-streaming-support/0025-HACK-Flush-decoder-when-changing-times.patch - patch_apply mfplat-streaming-support/0026-winegstreamer-Add-IMFSeekInfo-GetNearestKeyFrames-st.patch - patch_apply mfplat-streaming-support/0027-winegstreamer-Fixup-raw-audio-caps-to-be-compatible-.patch - patch_apply mfplat-streaming-support/0028-winegstreamer-Set-MF_PD_MIME_TYPE-on-source-s-presen.patch - patch_apply mfplat-streaming-support/0029-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch - patch_apply mfplat-streaming-support/0030-winegstreamer-Translate-H.264-caps-to-attributes.patch - patch_apply mfplat-streaming-support/0031-winegstreamer-Translate-WMV-caps-to-attributes.patch - patch_apply mfplat-streaming-support/0032-winegstreamer-Translate-AAC-caps-to-attributes.patch - patch_apply mfplat-streaming-support/0033-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch - patch_apply mfplat-streaming-support/0034-winegstreamer-Translate-WMA-caps-to-attributes.patch - patch_apply mfplat-streaming-support/0035-winegstreamer-Translate-H.264-attributes-to-caps.patch - patch_apply mfplat-streaming-support/0036-winegstreamer-Translate-WMV-attributes-to-caps.patch - patch_apply mfplat-streaming-support/0037-winegstreamer-Translate-AAC-attributes-to-caps.patch - patch_apply mfplat-streaming-support/0038-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch - patch_apply mfplat-streaming-support/0039-winegstreamer-Translate-WMA-attributes-to-caps.patch - patch_apply mfplat-streaming-support/0040-tools-Add-support-for-multiple-parent-directories.patch - patch_apply mfplat-streaming-support/0041-mf-Introduce-handler-helper.patch - patch_apply mfplat-streaming-support/0042-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch - patch_apply mfplat-streaming-support/0043-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch - patch_apply mfplat-streaming-support/0044-Miscellaneous.patch - patch_apply mfplat-streaming-support/0045-WMV.patch - patch_apply mfplat-streaming-support/0046-Expose-PCM-output-type-on-AAC-decoder.patch - patch_apply mfplat-streaming-support/0047-Improve-tests.patch - patch_apply mfplat-streaming-support/0048-Revert-Improve-tests.patch + patch_apply mfplat-streaming-support/0003-winegstreamer-Implement-Process-Input-Output-for-aud.patch + patch_apply mfplat-streaming-support/0004-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch + patch_apply mfplat-streaming-support/0005-winegstreamer-Implement-Get-Attributes-functions-for.patch + patch_apply mfplat-streaming-support/0007-winegstreamer-Introduce-color-conversion-transform.patch + patch_apply mfplat-streaming-support/0008-winegstreamer-Register-the-color-conversion-transfor.patch + patch_apply mfplat-streaming-support/0009-winegstreamer-Implement-GetInputAvailableType-for-co.patch + patch_apply mfplat-streaming-support/0010-winegstreamer-Implement-SetInputType-for-color-conve.patch + patch_apply mfplat-streaming-support/0011-winegstreamer-Implement-GetOutputAvailableType-for-c.patch + patch_apply mfplat-streaming-support/0012-winegstreamer-Implement-SetOutputType-for-color-conv.patch + patch_apply mfplat-streaming-support/0013-winegstreamer-Implement-Process-Input-Output-for-col.patch + patch_apply mfplat-streaming-support/0014-winegstreamer-Implement-ProcessMessage-for-color-con.patch + patch_apply mfplat-streaming-support/0015-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch + patch_apply mfplat-streaming-support/0016-winegstreamer-Implement-Get-Attributes-functions-for.patch + patch_apply mfplat-streaming-support/0017-winegstreamer-Implement-Get-Input-Output-CurrentType.patch + patch_apply mfplat-streaming-support/0018-winegstreamer-Implement-IMFMediaSource-Stop.patch + patch_apply mfplat-streaming-support/0019-winegstreamer-Set-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch + patch_apply mfplat-streaming-support/0020-mf-Add-invalid-connect-method-test.patch + patch_apply mfplat-streaming-support/0021-Allow-for-compressed-types.patch + patch_apply mfplat-streaming-support/0022-mf-session-Unconditionally-deliver-NULL-EOS-samples.patch + patch_apply mfplat-streaming-support/0023-mf-session-Request-more-samples-when-a-transform-nee.patch + patch_apply mfplat-streaming-support/0024-HACK-Flush-decoder-when-changing-times.patch + patch_apply mfplat-streaming-support/0025-winegstreamer-Add-IMFSeekInfo-GetNearestKeyFrames-st.patch + patch_apply mfplat-streaming-support/0026-winegstreamer-Fixup-raw-audio-caps-to-be-compatible-.patch + patch_apply mfplat-streaming-support/0027-winegstreamer-Set-MF_PD_MIME_TYPE-on-source-s-presen.patch + patch_apply mfplat-streaming-support/0028-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch + patch_apply mfplat-streaming-support/0029-winegstreamer-Translate-H.264-caps-to-attributes.patch + patch_apply mfplat-streaming-support/0030-winegstreamer-Translate-WMV-caps-to-attributes.patch + patch_apply mfplat-streaming-support/0031-winegstreamer-Translate-AAC-caps-to-attributes.patch + patch_apply mfplat-streaming-support/0032-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch + patch_apply mfplat-streaming-support/0033-winegstreamer-Translate-WMA-caps-to-attributes.patch + patch_apply mfplat-streaming-support/0034-winegstreamer-Translate-H.264-attributes-to-caps.patch + patch_apply mfplat-streaming-support/0035-winegstreamer-Translate-WMV-attributes-to-caps.patch + patch_apply mfplat-streaming-support/0036-winegstreamer-Translate-AAC-attributes-to-caps.patch + patch_apply mfplat-streaming-support/0037-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch + patch_apply mfplat-streaming-support/0038-winegstreamer-Translate-WMA-attributes-to-caps.patch + patch_apply mfplat-streaming-support/0039-tools-Add-support-for-multiple-parent-directories.patch + patch_apply mfplat-streaming-support/0040-mf-Introduce-handler-helper.patch + patch_apply mfplat-streaming-support/0041-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch + patch_apply mfplat-streaming-support/0042-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch + patch_apply mfplat-streaming-support/0043-Miscellaneous.patch + patch_apply mfplat-streaming-support/0044-WMV.patch + patch_apply mfplat-streaming-support/0045-Expose-PCM-output-type-on-AAC-decoder.patch + patch_apply mfplat-streaming-support/0046-Improve-tests.patch + patch_apply mfplat-streaming-support/0047-Revert-Improve-tests.patch + patch_apply mfplat-streaming-support/0048-Report-streams-backwards-and-only-select-one-of-each.patch patch_apply mfplat-streaming-support/0049-winegstreamer-Introduce-MPEG-4-Section-2-video-decod.patch patch_apply mfplat-streaming-support/0050-winegstreamer-Introduce-WMA-audio-decoder.patch + patch_apply mfplat-streaming-support/0051-winegstreamer-Implement-MF_SD_LANGUAGE.patch patch_apply mfplat-streaming-support/0060-winegstreamer-Support-eAVEncH264VProfile_Constrained.patch fi