winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
May 2022
----- 2025 -----
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
907 discussions
Start a n
N
ew thread
Nikolay Sivov : dwrite/opentype: Correct flags field size for layout lookup structure.
by Alexandre Julliard
02 May '22
02 May '22
Module: wine Branch: master Commit: e71920d2f446fff60ccbb5ff1b5e220c6af791c1 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=e71920d2f446fff60ccbb5ff…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Mon May 2 09:22:16 2022 +0300 dwrite/opentype: Correct flags field size for layout lookup structure. Higher 16 bits are used for mark filtering set index. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dwrite/opentype.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/dwrite/opentype.c b/dlls/dwrite/opentype.c index 7df0d207bc6..7df153e681d 100644 --- a/dlls/dwrite/opentype.c +++ b/dlls/dwrite/opentype.c @@ -3619,10 +3619,10 @@ struct lookup { unsigned short index; unsigned short type; - unsigned short flags; unsigned short subtable_count; unsigned int mask; + unsigned int flags; unsigned int offset; unsigned int auto_zwnj : 1; unsigned int auto_zwj : 1; @@ -4542,9 +4542,9 @@ static int __cdecl lookups_sorting_compare(const void *a, const void *b) static BOOL opentype_layout_init_lookup(const struct ot_gsubgpos_table *table, unsigned short lookup_index, const struct shaping_feature *feature, struct lookup *lookup) { - unsigned short subtable_count, lookup_type, flags, mark_filtering_set; + unsigned short subtable_count, lookup_type, mark_filtering_set; const struct ot_lookup_table *lookup_table; - unsigned int offset; + unsigned int offset, flags; if (!(offset = table_read_be_word(&table->table, table->lookup_list + FIELD_OFFSET(struct ot_lookup_list, lookup[lookup_index]))))
1
0
0
0
Rémi Bernon : mf/tests: Expect identical major types for transform info.
by Alexandre Julliard
02 May '22
02 May '22
Module: wine Branch: master Commit: 1e3ae78a693f3ecb01012b19d06f76da16ee37d2 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=1e3ae78a693f3ecb01012b19…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Thu Apr 28 12:24:40 2022 +0200 mf/tests: Expect identical major types for transform info. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mf/tests/mf.c | 122 +++++++++++++++++------------------------------------ 1 file changed, 39 insertions(+), 83 deletions(-) diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c index b0632496743..75c873d5dc0 100644 --- a/dlls/mf/tests/mf.c +++ b/dlls/mf/tests/mf.c @@ -5621,9 +5621,8 @@ static void test_MFRequireProtectedEnvironment(void) } static BOOL create_transform(GUID category, MFT_REGISTER_TYPE_INFO *input_type, - MFT_REGISTER_TYPE_INFO *output_type, const WCHAR *expect_name, - const media_type_desc *expect_input, ULONG expect_input_count, - const media_type_desc *expect_output, ULONG expect_output_count, + MFT_REGISTER_TYPE_INFO *output_type, const WCHAR *expect_name, const GUID *expect_major_type, + const GUID *expect_input, ULONG expect_input_count, const GUID *expect_output, ULONG expect_output_count, IMFTransform **transform, GUID *class_id) { MFT_REGISTER_TYPE_INFO *input_types = NULL, *output_types = NULL; @@ -5658,17 +5657,17 @@ static BOOL create_transform(GUID category, MFT_REGISTER_TYPE_INFO *input_type, ok(input_count == expect_input_count, "got input_count %u\n", input_count); for (i = 0; i < input_count; ++i) { - ok(IsEqualGUID(&input_types[i].guidMajorType, expect_input[i][0].value.puuid), + ok(IsEqualGUID(&input_types[i].guidMajorType, expect_major_type), "got input[%u] major %s\n", i, debugstr_guid(&input_types[i].guidMajorType)); - ok(IsEqualGUID(&input_types[i].guidSubtype, expect_input[i][1].value.puuid), + ok(IsEqualGUID(&input_types[i].guidSubtype, expect_input + i), "got input[%u] subtype %s\n", i, debugstr_guid(&input_types[i].guidSubtype)); } ok(output_count == expect_output_count, "got output_count %u\n", output_count); for (i = 0; i < output_count; ++i) { - ok(IsEqualGUID(&output_types[i].guidMajorType, expect_output[i][0].value.puuid), + ok(IsEqualGUID(&output_types[i].guidMajorType, expect_major_type), "got output[%u] major %s\n", i, debugstr_guid(&output_types[i].guidMajorType)); - ok(IsEqualGUID(&output_types[i].guidSubtype, expect_output[i][1].value.puuid), + ok(IsEqualGUID(&output_types[i].guidSubtype, expect_output + i), "got output[%u] subtype %s\n", i, debugstr_guid(&output_types[i].guidSubtype)); } CoTaskMemFree(output_types); @@ -5777,31 +5776,16 @@ static const ULONG wmadec_block_size = 0x2000; static void test_wma_encoder(void) { - static const media_type_desc transform_inputs[] = + const GUID transform_inputs[] = { - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio), - ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_PCM), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio), - ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_Float), - }, + MFAudioFormat_PCM, + MFAudioFormat_Float, }; - static const media_type_desc transform_outputs[] = + const GUID transform_outputs[] = { - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio), - ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_WMAudioV8), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio), - ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_WMAudioV9), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio), - ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_WMAudio_Lossless), - }, + MFAudioFormat_WMAudioV8, + MFAudioFormat_WMAudioV9, + MFAudioFormat_WMAudio_Lossless, }; static const struct attribute_desc input_type_desc[] = @@ -5848,7 +5832,7 @@ static void test_wma_encoder(void) hr = CoInitialize(NULL); ok(hr == S_OK, "Failed to initialize, hr %#lx.\n", hr); - if (!create_transform(MFT_CATEGORY_AUDIO_ENCODER, &input_type, &output_type, L"WMAudio Encoder MFT", + if (!create_transform(MFT_CATEGORY_AUDIO_ENCODER, &input_type, &output_type, L"WMAudio Encoder MFT", &MFMediaType_Audio, transform_inputs, ARRAY_SIZE(transform_inputs), transform_outputs, ARRAY_SIZE(transform_outputs), &transform, &class_id)) goto failed; @@ -5968,35 +5952,17 @@ failed: static void test_wma_decoder(void) { - static const media_type_desc transform_inputs[] = + const GUID transform_inputs[] = { - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio), - ATTR_GUID(MF_MT_SUBTYPE, MEDIASUBTYPE_MSAUDIO1), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio), - ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_WMAudioV8), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio), - ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_WMAudioV9), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio), - ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_WMAudio_Lossless), - }, + MEDIASUBTYPE_MSAUDIO1, + MFAudioFormat_WMAudioV8, + MFAudioFormat_WMAudioV9, + MFAudioFormat_WMAudio_Lossless, }; - static const media_type_desc transform_outputs[] = + const GUID transform_outputs[] = { - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio), - ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_PCM), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio), - ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_Float), - }, + MFAudioFormat_PCM, + MFAudioFormat_Float, }; static const media_type_desc expect_available_inputs[] = @@ -6096,7 +6062,7 @@ static void test_wma_decoder(void) hr = CoInitialize(NULL); ok(hr == S_OK, "Failed to initialize, hr %#lx.\n", hr); - if (!create_transform(MFT_CATEGORY_AUDIO_DECODER, &input_type, &output_type, L"WMAudio Decoder MFT", + if (!create_transform(MFT_CATEGORY_AUDIO_DECODER, &input_type, &output_type, L"WMAudio Decoder MFT", &MFMediaType_Audio, transform_inputs, ARRAY_SIZE(transform_inputs), transform_outputs, ARRAY_SIZE(transform_outputs), &transform, &class_id)) goto failed; @@ -6463,38 +6429,28 @@ static IMFSample *next_h264_sample_(int line, const BYTE **h264_buf, ULONG *h264 static void test_h264_decoder(void) { - static const media_type_desc transform_inputs[] = + const GUID transform_inputs[] = { - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_H264), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_H264_ES), - }, + MFVideoFormat_H264, + MFVideoFormat_H264_ES, }; - static const media_type_desc transform_outputs[] = + const GUID transform_outputs[] = + { + MFVideoFormat_NV12, + MFVideoFormat_YV12, + MFVideoFormat_IYUV, + MFVideoFormat_I420, + MFVideoFormat_YUY2, + }; + static const media_type_desc default_inputs[] = { { ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_NV12), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_YV12), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_IYUV), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_I420), + ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_H264), }, { ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_YUY2), + ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_H264_ES), }, }; static const media_type_desc default_outputs[] = @@ -6760,7 +6716,7 @@ static void test_h264_decoder(void) hr = CoInitialize(NULL); ok(hr == S_OK, "Failed to initialize, hr %#lx.\n", hr); - if (!create_transform(MFT_CATEGORY_VIDEO_DECODER, &input_type, &output_type, L"Microsoft H264 Video Decoder MFT", + if (!create_transform(MFT_CATEGORY_VIDEO_DECODER, &input_type, &output_type, L"Microsoft H264 Video Decoder MFT", &MFMediaType_Video, transform_inputs, ARRAY_SIZE(transform_inputs), transform_outputs, ARRAY_SIZE(transform_outputs), &transform, &class_id)) goto failed; @@ -6819,7 +6775,7 @@ static void test_h264_decoder(void) { winetest_push_context("in %lu", i); ok(hr == S_OK, "GetInputAvailableType returned %#lx\n", hr); - check_media_type(media_type, transform_inputs[i], -1); + check_media_type(media_type, default_inputs[i], -1); ret = IMFMediaType_Release(media_type); ok(ret == 0, "Release returned %lu\n", ret); winetest_pop_context();
1
0
0
0
Rémi Bernon : mf/tests: Add tests changing the H264 decoder output video format.
by Alexandre Julliard
02 May '22
02 May '22
Module: wine Branch: master Commit: 29c67fb3ae026594b860c8a381dcca3127c8da24 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=29c67fb3ae026594b860c8a3…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Thu Apr 28 12:24:39 2022 +0200 mf/tests: Add tests changing the H264 decoder output video format. The h264data.bin source has been re-generated with a static pattern to avoid differences between the nv12 and i420 frames. The output format changes apparently drops some decoded frames in a way that's not really relevant and may make the GStreamer implementation harder: gst-launch-1.0 videotestsrc num-buffers=60 pattern=smpte100 ! \ video/x-raw,format=I420,width=82,height=84,framerate=30000/1001 ! \ videoconvert ! x264enc ! filesink location=dlls/mf/tests/h264data.bin Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mf/tests/h264data.bin | Bin 52276 -> 2330 bytes dlls/mf/tests/i420frame.bin | 1 + dlls/mf/tests/mf.c | 77 +++++++++++++++++++++++++++++++++++++++++--- dlls/mf/tests/nv12frame.bin | Bin 13824 -> 13824 bytes dlls/mf/tests/resource.rc | 3 ++ 5 files changed, 76 insertions(+), 5 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=29c67fb3ae026594b860…
1
0
0
0
Rémi Bernon : mf/tests: Add some IMFTransform output sample attribute tests.
by Alexandre Julliard
02 May '22
02 May '22
Module: wine Branch: master Commit: 6e2ac3b6172dca128c83f21e10a89f4477025da0 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=6e2ac3b6172dca128c83f21e…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Thu Apr 28 12:24:38 2022 +0200 mf/tests: Add some IMFTransform output sample attribute tests. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mf/tests/mf.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c index d6eddef01df..0dcb51d0f21 100644 --- a/dlls/mf/tests/mf.c +++ b/dlls/mf/tests/mf.c @@ -6080,14 +6080,16 @@ static void test_wma_decoder(void) MFT_OUTPUT_DATA_BUFFER outputs[2]; MFT_INPUT_STREAM_INFO input_info; MFT_OUTPUT_DATA_BUFFER output; + DWORD status, flags, length; WCHAR output_path[MAX_PATH]; IMFMediaType *media_type; IMFTransform *transform; - DWORD status, length; + LONGLONG time, duration; HANDLE output_file; IMFSample *sample; HRSRC resource; GUID class_id; + UINT32 value; ULONG i, ret; HRESULT hr; @@ -6339,12 +6341,34 @@ static void test_wma_decoder(void) broken(output.dwStatus == (MFT_OUTPUT_DATA_BUFFER_INCOMPLETE|7) || output.dwStatus == 7) /* Win7 */, "got dwStatus %#lx\n", output.dwStatus); ok(status == 0, "got status %#lx\n", status); + value = 0xdeadbeef; + hr = IMFSample_GetUINT32(sample, &MFSampleExtension_CleanPoint, &value); + todo_wine + ok(hr == S_OK, "GetUINT32 MFSampleExtension_CleanPoint returned %#lx\n", hr); + todo_wine + ok(value == 1, "got MFSampleExtension_CleanPoint %u\n", value); hr = IMFSample_GetTotalLength(sample, &length); ok(hr == S_OK, "GetTotalLength returned %#lx\n", hr); + flags = 0xdeadbeef; + hr = IMFSample_GetSampleFlags(sample, &flags); + ok(hr == S_OK, "GetSampleFlags returned %#lx\n", hr); + ok(flags == 0, "got flags %#lx\n", flags); + time = 0xdeadbeef; + hr = IMFSample_GetSampleTime(sample, &time); + todo_wine + ok(hr == S_OK, "GetSampleTime returned %#lx\n", hr); + todo_wine + ok(time == i * 928798, "got time %I64d\n", time); + duration = 0xdeadbeef; + hr = IMFSample_GetSampleDuration(sample, &duration); + todo_wine + ok(hr == S_OK, "GetSampleDuration returned %#lx\n", hr); if (output.dwStatus == MFT_OUTPUT_DATA_BUFFER_INCOMPLETE || broken(output.dwStatus == (MFT_OUTPUT_DATA_BUFFER_INCOMPLETE|7))) { ok(length == wmadec_block_size, "got length %lu\n", length); + todo_wine + ok(duration == 928798, "got duration %I64d\n", duration); check_sample_pcm16(sample, wmadec_data, output_file, TRUE); wmadec_data += wmadec_block_size; wmadec_data_len -= wmadec_block_size; @@ -6354,6 +6378,8 @@ static void test_wma_decoder(void) /* FFmpeg doesn't seem to decode WMA buffers in the same way as native */ todo_wine ok(length == wmadec_block_size / 2, "got length %lu\n", length); + todo_wine + ok(duration == 464399, "got duration %I64d\n", duration); if (length == wmadec_block_size / 2) check_sample_pcm16(sample, wmadec_data, output_file, FALSE); @@ -6715,17 +6741,19 @@ static void test_h264_decoder(void) MFT_INPUT_STREAM_INFO input_info; MFT_OUTPUT_DATA_BUFFER output; IMFMediaBuffer *media_buffer; + DWORD status, length, count; WCHAR output_path[MAX_PATH]; IMFAttributes *attributes; IMFMediaType *media_type; + LONGLONG time, duration; IMFTransform *transform; - DWORD status, length; BOOL is_win7 = FALSE; ULONG i, ret, flags; HANDLE output_file; IMFSample *sample; HRSRC resource; GUID class_id; + UINT32 value; BYTE *data; HRESULT hr; @@ -7056,6 +7084,34 @@ static void test_h264_decoder(void) ok(status == 0, "got status %#lx\n", status); if (hr != S_OK) goto skip_nv12_tests; + hr = IMFSample_GetUINT32(sample, &MFSampleExtension_CleanPoint, &value); + ok(hr == MF_E_ATTRIBUTENOTFOUND, "GetUINT32 MFSampleExtension_CleanPoint returned %#lx\n", hr); + + count = 0xdeadbeef; + hr = IMFSample_GetBufferCount(output.pSample, &count); + ok(hr == S_OK, "GetBufferCount returned %#lx\n", hr); + ok(count == 1, "got count %#lx\n", count); + + flags = 0xdeadbeef; + hr = IMFSample_GetSampleFlags(output.pSample, &flags); + ok(hr == S_OK, "GetSampleFlags returned %#lx\n", hr); + ok(flags == 0, "got flags %#lx\n", flags); + + time = 0xdeadbeef; + hr = IMFSample_GetSampleTime(output.pSample, &time); + todo_wine + ok(hr == S_OK, "GetSampleTime returned %#lx\n", hr); + todo_wine + ok(time == 0, "got time %I64d\n", time); + + /* doesn't matter what frame rate we've selected, duration is defined by the stream */ + duration = 0xdeadbeef; + hr = IMFSample_GetSampleDuration(output.pSample, &duration); + todo_wine + ok(hr == S_OK, "GetSampleDuration returned %#lx\n", hr); + todo_wine + ok(duration - 333666 <= 2, "got duration %I64d\n", duration); + /* Win8 and before pad the data with garbage instead of original * buffer data, make sure it's consistent. */ hr = IMFSample_ConvertToContiguousBuffer(output.pSample, &media_buffer);
1
0
0
0
Rémi Bernon : mf/tests: Use real audio data for WMA encoder / decoder tests.
by Alexandre Julliard
02 May '22
02 May '22
Module: wine Branch: master Commit: 77c25c86af8b61fc825f32257ff51292c0c6e775 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=77c25c86af8b61fc825f3225…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Thu Apr 28 12:24:37 2022 +0200 mf/tests: Use real audio data for WMA encoder / decoder tests. Instead of silent data. This shows some difference in the FFmpeg decoded data, with the data delayed by half a buffer, explaining the additional data we decode. The audiodata.bin resource has been generated with: gst-launch-1.0 audiomixer name=mix ! \ audio/x-raw,format=F32LE,rate=22050,channels=2 ! \ filesink location=dlls/winegstreamer/tests/audiodata.bin \ audiotestsrc freq=400 volume=0.2 num-buffers=1 \ samplesperbuffer=22050 ! mix. \ audiotestsrc freq=600 volume=0.2 num-buffers=1 \ samplesperbuffer=22050 timestamp-offset=20000000 ! mix. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mf/tests/audiodata.bin | Bin 0 -> 179928 bytes dlls/mf/tests/mf.c | 177 ++++++++++++++++++++++++++++--------------- dlls/mf/tests/resource.rc | 10 ++- dlls/mf/tests/wmadata.bin | Bin 49071 -> 0 bytes dlls/mf/tests/wmadecdata.bin | Bin 0 -> 28672 bytes dlls/mf/tests/wmaencdata.bin | Bin 0 -> 4461 bytes 6 files changed, 124 insertions(+), 63 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=77c25c86af8b61fc825f…
1
0
0
0
Rémi Bernon : mf/tests: Skip todo_wine tests with a goto statement.
by Alexandre Julliard
02 May '22
02 May '22
Module: wine Branch: master Commit: ab1203999211209da4e737d9fc71581bea9a6bd1 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ab1203999211209da4e737d9…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Thu Apr 28 12:24:36 2022 +0200 mf/tests: Skip todo_wine tests with a goto statement. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mf/tests/mf.c | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c index 37520d48292..6f6213b1e26 100644 --- a/dlls/mf/tests/mf.c +++ b/dlls/mf/tests/mf.c @@ -6999,33 +6999,31 @@ static void test_h264_decoder(void) ok(output.dwStatus == 0, "got dwStatus %#lx\n", output.dwStatus); ok(!output.pEvents, "got pEvents %p\n", output.pEvents); ok(status == 0, "got status %#lx\n", status); - if (hr == S_OK) - { - /* Win8 and before pad the data with garbage instead of original - * buffer data, make sure it's consistent. */ - hr = IMFSample_ConvertToContiguousBuffer(output.pSample, &media_buffer); - ok(hr == S_OK, "ConvertToContiguousBuffer returned %#lx\n", hr); - hr = IMFMediaBuffer_Lock(media_buffer, &data, NULL, &length); - ok(hr == S_OK, "Lock returned %#lx\n", hr); - todo_wine - ok(length == nv12_frame_len, "got length %lu\n", length); - if (length == nv12_frame_len) - { - for (i = 0; i < actual_aperture.Area.cy; ++i) - { - memset(data + actual_width * i + actual_aperture.Area.cx, 0xcd, actual_width - actual_aperture.Area.cx); - memset(data + actual_width * (actual_height + i) + actual_aperture.Area.cx, 0xcd, actual_width - actual_aperture.Area.cx); - } - memset(data + actual_width * actual_aperture.Area.cy, 0xcd, (actual_height - actual_aperture.Area.cy) * actual_width); - memset(data + actual_width * (actual_height + actual_aperture.Area.cy / 2), 0xcd, (actual_height - actual_aperture.Area.cy) / 2 * actual_width); - } - hr = IMFMediaBuffer_Unlock(media_buffer); - ok(hr == S_OK, "Unlock returned %#lx\n", hr); - IMFMediaBuffer_Release(media_buffer); + if (hr != S_OK) goto skip_nv12_tests; + + /* Win8 and before pad the data with garbage instead of original + * buffer data, make sure it's consistent. */ + hr = IMFSample_ConvertToContiguousBuffer(output.pSample, &media_buffer); + ok(hr == S_OK, "ConvertToContiguousBuffer returned %#lx\n", hr); + hr = IMFMediaBuffer_Lock(media_buffer, &data, NULL, &length); + ok(hr == S_OK, "Lock returned %#lx\n", hr); + ok(length == nv12_frame_len, "got length %lu\n", length); - if (length == nv12_frame_len) - check_sample(output.pSample, nv12_frame_data, output_file); + for (i = 0; i < actual_aperture.Area.cy; ++i) + { + memset(data + actual_width * i + actual_aperture.Area.cx, 0xcd, actual_width - actual_aperture.Area.cx); + memset(data + actual_width * (actual_height + i) + actual_aperture.Area.cx, 0xcd, actual_width - actual_aperture.Area.cx); } + memset(data + actual_width * actual_aperture.Area.cy, 0xcd, (actual_height - actual_aperture.Area.cy) * actual_width); + memset(data + actual_width * (actual_height + actual_aperture.Area.cy / 2), 0xcd, (actual_height - actual_aperture.Area.cy) / 2 * actual_width); + + hr = IMFMediaBuffer_Unlock(media_buffer); + ok(hr == S_OK, "Unlock returned %#lx\n", hr); + IMFMediaBuffer_Release(media_buffer); + + check_sample(output.pSample, nv12_frame_data, output_file); + +skip_nv12_tests: ret = IMFSample_Release(output.pSample); ok(ret == 0, "Release returned %lu\n", ret);
1
0
0
0
Huw Davies : wineoss: Move DRVM_INIT and DRVM_EXIT to the unixlib.
by Alexandre Julliard
02 May '22
02 May '22
Module: wine Branch: master Commit: a3a86769d2eafa0c6fbbf79def31d0e8a487c7bc URL:
https://source.winehq.org/git/wine.git/?a=commit;h=a3a86769d2eafa0c6fbbf79d…
Author: Huw Davies <huw(a)codeweavers.com> Date: Fri Apr 29 08:29:58 2022 +0100 wineoss: Move DRVM_INIT and DRVM_EXIT to the unixlib. Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wineoss.drv/midi.c | 63 ---------------------------------------------- dlls/wineoss.drv/oss.c | 1 - dlls/wineoss.drv/ossmidi.c | 41 ++++++++++++++++++++++-------- dlls/wineoss.drv/unixlib.h | 7 ------ 4 files changed, 31 insertions(+), 81 deletions(-) diff --git a/dlls/wineoss.drv/midi.c b/dlls/wineoss.drv/midi.c index 84a4fac4b74..dda5dabf522 100644 --- a/dlls/wineoss.drv/midi.c +++ b/dlls/wineoss.drv/midi.c @@ -34,19 +34,7 @@ * timers (like select on fd) */ -#include "config.h" - -#include <stdlib.h> -#include <string.h> #include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <sys/ioctl.h> -#include <poll.h> -#include <sys/soundcard.h> #include "windef.h" #include "winbase.h" @@ -67,44 +55,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(midi); * Low level MIDI implementation * *======================================================================*/ -static int MIDI_loadcount; -/************************************************************************** - * OSS_MidiInit [internal] - * - * Initializes the MIDI devices information variables - */ -static LRESULT OSS_MidiInit(void) -{ - struct midi_init_params params; - UINT err; - - TRACE("(%i)\n", MIDI_loadcount); - if (MIDI_loadcount++) - return 1; - - TRACE("Initializing the MIDI variables.\n"); - - params.err = &err; - OSS_CALL(midi_init, ¶ms); - - return err; -} - -/************************************************************************** - * OSS_MidiExit [internal] - * - * Release the MIDI devices information variables - */ -static LRESULT OSS_MidiExit(void) -{ - TRACE("(%i)\n", MIDI_loadcount); - - if (--MIDI_loadcount) - return 1; - - return 0; -} - static void notify_client(struct notify_context *notify) { TRACE("dev_id = %d msg = %d param1 = %04lX param2 = %04lX\n", @@ -130,12 +80,6 @@ DWORD WINAPI OSS_midMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser, TRACE("(%04X, %04X, %08lX, %08lX, %08lX);\n", wDevID, wMsg, dwUser, dwParam1, dwParam2); - switch (wMsg) { - case DRVM_INIT: - return OSS_MidiInit(); - case DRVM_EXIT: - return OSS_MidiExit(); - } params.dev_id = wDevID; params.msg = wMsg; @@ -167,13 +111,6 @@ DWORD WINAPI OSS_modMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser, TRACE("(%04X, %04X, %08lX, %08lX, %08lX);\n", wDevID, wMsg, dwUser, dwParam1, dwParam2); - switch (wMsg) { - case DRVM_INIT: - return OSS_MidiInit(); - case DRVM_EXIT: - return OSS_MidiExit(); - } - params.dev_id = wDevID; params.msg = wMsg; params.user = dwUser; diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c index b0a411ecd9b..a5aea9ee724 100644 --- a/dlls/wineoss.drv/oss.c +++ b/dlls/wineoss.drv/oss.c @@ -1405,7 +1405,6 @@ unixlib_entry_t __wine_unix_call_funcs[] = set_volumes, set_event_handle, is_started, - midi_init, midi_release, midi_out_message, midi_in_message, diff --git a/dlls/wineoss.drv/ossmidi.c b/dlls/wineoss.drv/ossmidi.c index 072a9815c35..6677609a5a6 100644 --- a/dlls/wineoss.drv/ossmidi.c +++ b/dlls/wineoss.drv/ossmidi.c @@ -83,6 +83,7 @@ static pthread_mutex_t in_buffer_mutex = PTHREAD_MUTEX_INITIALIZER; static unsigned int num_dests, num_srcs, num_synths, seq_refs; static struct midi_dest dests[MAX_MIDIOUTDRV]; static struct midi_src srcs[MAX_MIDIINDRV]; +static int load_count; static unsigned int num_midi_in_started; static int rec_cancel_pipe[2]; @@ -301,22 +302,23 @@ static int seq_close(int fd) return 0; } -NTSTATUS midi_init(void *args) +static UINT midi_init(void) { - struct midi_init_params *params = args; int i, status, synth_devs = 255, midi_devs = 255, fd, len; struct synth_info sinfo; struct midi_info minfo; struct midi_dest *dest; struct midi_src *src; + TRACE("(%i)\n", load_count); + + if (load_count++) + return 1; + /* try to open device */ fd = seq_open(); if (fd == -1) - { - *params->err = -1; - return STATUS_SUCCESS; - } + return -1; /* find how many Synth devices are there in the system */ status = ioctl(fd, SNDCTL_SEQ_NRSYNTHS, &synth_devs); @@ -324,8 +326,7 @@ NTSTATUS midi_init(void *args) { ERR("ioctl for nr synth failed.\n"); seq_close(fd); - *params->err = -1; - return STATUS_SUCCESS; + return -1; } if (synth_devs > MAX_MIDIOUTDRV) @@ -506,9 +507,17 @@ wrapup: /* close file and exit */ seq_close(fd); - *params->err = 0; + return 0; +} - return STATUS_SUCCESS; +static UINT midi_exit(void) +{ + TRACE("(%i)\n", load_count); + + if (--load_count) + return 1; + + return 0; } NTSTATUS midi_release(void *args) @@ -1634,6 +1643,12 @@ NTSTATUS midi_out_message(void *args) switch (params->msg) { + case DRVM_INIT: + *params->err = midi_init(); + break; + case DRVM_EXIT: + *params->err = midi_exit(); + break; case DRVM_ENABLE: case DRVM_DISABLE: /* FIXME: Pretend this is supported */ @@ -1688,6 +1703,12 @@ NTSTATUS midi_in_message(void *args) switch (params->msg) { + case DRVM_INIT: + *params->err = midi_init(); + break; + case DRVM_EXIT: + *params->err = midi_exit(); + break; case DRVM_ENABLE: case DRVM_DISABLE: /* FIXME: Pretend this is supported */ diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h index d3dda7c76f2..6a7dc9288d9 100644 --- a/dlls/wineoss.drv/unixlib.h +++ b/dlls/wineoss.drv/unixlib.h @@ -209,11 +209,6 @@ struct is_started_params HRESULT result; }; -struct midi_init_params -{ - UINT *err; -}; - struct notify_context { BOOL send_notify; @@ -280,14 +275,12 @@ enum oss_funcs oss_set_volumes, oss_set_event_handle, oss_is_started, - oss_midi_init, oss_midi_release, oss_midi_out_message, oss_midi_in_message, oss_midi_notify_wait, }; -NTSTATUS midi_init(void *args) DECLSPEC_HIDDEN; NTSTATUS midi_release(void *args) DECLSPEC_HIDDEN; NTSTATUS midi_out_message(void *args) DECLSPEC_HIDDEN; NTSTATUS midi_in_message(void *args) DECLSPEC_HIDDEN;
1
0
0
0
Huw Davies : wineoss: Move MIDM_OPEN and MIDM_CLOSE to the unixlib.
by Alexandre Julliard
02 May '22
02 May '22
Module: wine Branch: master Commit: 207b38a890fc1bf805bb0d8d79e36f473c58d9e4 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=207b38a890fc1bf805bb0d8d…
Author: Huw Davies <huw(a)codeweavers.com> Date: Fri Apr 29 08:29:57 2022 +0100 wineoss: Move MIDM_OPEN and MIDM_CLOSE to the unixlib. Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wineoss.drv/Makefile.in | 2 +- dlls/wineoss.drv/midi.c | 243 ------------------------------------------- dlls/wineoss.drv/oss.c | 3 - dlls/wineoss.drv/ossmidi.c | 193 ++++++++++++++++++++++++++++++---- dlls/wineoss.drv/unixlib.h | 35 ------- 5 files changed, 175 insertions(+), 301 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=207b38a890fc1bf805bb…
1
0
0
0
Huw Davies : wineoss: Use a pipe to signal the end of the record thread.
by Alexandre Julliard
02 May '22
02 May '22
Module: wine Branch: master Commit: 4a943cbd36ad865db5bc3f79bce6b7ad3d432494 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=4a943cbd36ad865db5bc3f79…
Author: Huw Davies <huw(a)codeweavers.com> Date: Fri Apr 29 08:29:56 2022 +0100 wineoss: Use a pipe to signal the end of the record thread. Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wineoss.drv/midi.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/dlls/wineoss.drv/midi.c b/dlls/wineoss.drv/midi.c index 0afd9985c03..c83dd55fd6b 100644 --- a/dlls/wineoss.drv/midi.c +++ b/dlls/wineoss.drv/midi.c @@ -70,7 +70,7 @@ static int MIDM_NumDevs = 0; static int numStartedMidiIn = 0; -static int end_thread; +static int rec_cancel_pipe[2]; static HANDLE hThread; /*======================================================================* @@ -214,30 +214,26 @@ static DWORD WINAPI midRecThread(void *arg) int fd = (int)(INT_PTR)arg; unsigned char buffer[256]; int len; - struct pollfd pfd; + struct pollfd pollfd[2]; - TRACE("Thread startup\n"); - - pfd.fd = fd; - pfd.events = POLLIN; - - while(!end_thread) { - TRACE("Thread loop\n"); + pollfd[0].fd = rec_cancel_pipe[0]; + pollfd[0].events = POLLIN; + pollfd[1].fd = fd; + pollfd[1].events = POLLIN; + while (1) + { /* Check if an event is present */ - if (poll(&pfd, 1, 250) <= 0) + if (poll(pollfd, ARRAY_SIZE(pollfd), -1) <= 0) continue; - - len = read(fd, buffer, sizeof(buffer)); - TRACE("Received %d bytes\n", len); - if (len < 0) continue; - if ((len % 4) != 0) { - WARN("Bad length %d, errno %d (%s)\n", len, errno, strerror(errno)); - continue; - } + if (pollfd[0].revents & POLLIN) /* cancelled */ + break; + + len = read(fd, buffer, sizeof(buffer)); - handle_midi_data(buffer, len); + if (len > 0 && len % 4 == 0) + handle_midi_data(buffer, len); } return 0; } @@ -286,9 +282,11 @@ static DWORD midOpen(WORD wDevID, LPMIDIOPENDESC lpDesc, DWORD dwFlags) } if (numStartedMidiIn++ == 0) { - end_thread = 0; + pipe(rec_cancel_pipe); hThread = CreateThread(NULL, 0, midRecThread, (void *)(INT_PTR)fd, 0, NULL); if (!hThread) { + close(rec_cancel_pipe[0]); + close(rec_cancel_pipe[1]); numStartedMidiIn = 0; WARN("Couldn't create thread for midi-in\n"); midiCloseSeq(fd); @@ -338,11 +336,13 @@ static DWORD midClose(WORD wDevID) } if (--numStartedMidiIn == 0) { TRACE("Stopping thread for midi-in\n"); - end_thread = 1; + write(rec_cancel_pipe[1], "x", 1); if (WaitForSingleObject(hThread, 5000) != WAIT_OBJECT_0) { WARN("Thread end not signaled, force termination\n"); TerminateThread(hThread, 0); } + close(rec_cancel_pipe[0]); + close(rec_cancel_pipe[1]); TRACE("Stopped thread for midi-in\n"); } midiCloseSeq(MidiInDev[wDevID].fd);
1
0
0
0
Huw Davies : wineoss: Introduce a helper to retrieve the time.
by Alexandre Julliard
02 May '22
02 May '22
Module: wine Branch: master Commit: a0f0c3f345328d39d0f82421287028d8d882ff10 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=a0f0c3f345328d39d0f82421…
Author: Huw Davies <huw(a)codeweavers.com> Date: Fri Apr 29 08:29:55 2022 +0100 wineoss: Introduce a helper to retrieve the time. The motivation is that this will need to be called from a non-Win32 thread and so shouldn't use the Win32 API. An added benefit is that it will eliminate the 16ms jitter associated with GetTickCount(). Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wineoss.drv/ossmidi.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/dlls/wineoss.drv/ossmidi.c b/dlls/wineoss.drv/ossmidi.c index 1695f1d2f7b..9c8ca8a8f39 100644 --- a/dlls/wineoss.drv/ossmidi.c +++ b/dlls/wineoss.drv/ossmidi.c @@ -30,6 +30,8 @@ #include <stdarg.h> #include <string.h> #include <stdio.h> +#include <stdint.h> +#include <time.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> @@ -155,6 +157,18 @@ static void in_buffer_unlock(void) pthread_mutex_unlock(&in_buffer_mutex); } +static uint64_t get_time_msec(void) +{ + struct timespec now = {0, 0}; + +#ifdef CLOCK_MONOTONIC_RAW + if (!clock_gettime(CLOCK_MONOTONIC_RAW, &now)) + return (uint64_t)now.tv_sec * 1000 + now.tv_nsec / 1000000; +#endif + clock_gettime(CLOCK_MONOTONIC, &now); + return (uint64_t)now.tv_sec * 1000 + now.tv_nsec / 1000000; +} + /* * notify buffer: The notification ring buffer is implemented so that * there is always at least one unused sentinel before the current @@ -1304,7 +1318,7 @@ NTSTATUS midi_handle_data(void *args) struct midi_handle_data_params *params = args; unsigned char *buffer = params->buffer; unsigned int len = params->len; - unsigned int time = NtGetTickCount(), i; + unsigned int time = get_time_msec(), i; struct midi_src *src; unsigned char value; WORD dev_id; @@ -1415,7 +1429,7 @@ static UINT midi_in_start(WORD dev_id) if (src->state == -1) return MIDIERR_NODEVICE; src->state = 1; - src->startTime = NtGetTickCount(); + src->startTime = get_time_msec(); return MMSYSERR_NOERROR; } @@ -1435,7 +1449,7 @@ static UINT midi_in_stop(WORD dev_id) static UINT midi_in_reset(WORD dev_id, struct notify_context *notify) { - UINT cur_time = NtGetTickCount(); + UINT cur_time = get_time_msec(); UINT err = MMSYSERR_NOERROR; struct midi_src *src; MIDIHDR *hdr;
1
0
0
0
← Newer
1
...
86
87
88
89
90
91
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Results per page:
10
25
50
100
200