Brendan McGrath
ac32d3fd72
mplat/tests: Test Media Source is freed if immediately released.
...
Tests that the Media Source and its associated resources are freed if
Release is called immediately after creation. That is, without a call to either
Start or Shutdown.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56686
2024-05-17 18:01:44 +02:00
Rémi Bernon
47884f6fba
mfplat: Add MFVideoFormat_ABGR32 format information.
2024-05-17 18:01:44 +02:00
Yuxuan Shui
cf24381899
rtworkq: Release cancelled work items.
...
Usually the threadpool holds a reference to the `work_item`, which is released when the `work_item`'s
callback is invoked. On the other hand, `queue_cancel_item` closes the threadpool object without
releasing the `work_item`. So if the callbacks don't get a chance to run - which is not guaranteed -
the `work_item` will be leaked.
The fix is not as simple as adding a `IUnknown_Release` to `queue_cancel_item`, because the
`work_item`'s callback can still be called after CloseThreadpoolTimer/Wait has returned. In fact its
callback might currently be running. In which case the callback will access freed memory if
`queue_cancel_item` frees the `work_item`.
We have to stop any further callbacks to be queued, wait for any currently running callbacks to
finish, then finally we can release the `work_item` if it hasn't already been freed during the wait.
2024-05-12 16:32:53 +02:00
Yuxuan Shui
a40c1bc01e
mfplat/tests: Validate MFCancelWorkItem releases the callback.
2024-05-12 16:32:53 +02:00
Rémi Bernon
bf64ae2627
mfplat: Implement MFCreateVideoMediaType.
2024-05-12 16:32:25 +02:00
Rémi Bernon
9fac589765
mfplat: Implement MFInitMediaTypeFromMPEG2VideoInfo.
2024-05-12 16:32:24 +02:00
Rémi Bernon
8c77a1a099
mfplat: Implement MFInitMediaTypeFromMPEG1VideoInfo.
2024-05-12 16:32:23 +02:00
Rémi Bernon
ec0455b97a
mfplat: Implement FORMAT_MPEG2Video for MFInitAMMediaTypeFromMFMediaType.
2024-05-12 16:32:23 +02:00
Rémi Bernon
dce8d8b552
mfplat: Implement FORMAT_MPEGVideo for MFInitAMMediaTypeFromMFMediaType.
2024-05-12 16:32:23 +02:00
Rémi Bernon
0b5c04c517
mfplat: Set AM_MEDIA_TYPE bTemporalCompression and bFixedSizeSamples.
2024-05-12 16:32:23 +02:00
Rémi Bernon
772ad6e8a9
mfplat: Factor AM_MEDIA_TYPE video format allocation.
2024-05-12 16:32:23 +02:00
Rémi Bernon
00758a2e20
mfplat: Use media_type_get_uint32 in more places.
2024-05-12 16:32:23 +02:00
Rémi Bernon
704c510045
mfplat: Introduce a new init_video_info_header helper.
2024-05-12 16:32:23 +02:00
Rémi Bernon
3404de3075
mfplat: Use IMFMediaType_GetBlobSize instead of IMFMediaType_GetBlob.
2024-05-12 16:32:23 +02:00
Rémi Bernon
551d047ae4
mfplat: Fix MFCreateMFVideoFormatFromMFMediaType videoInfo.VideoFlags masks.
2024-05-12 16:32:23 +02:00
Rémi Bernon
26876b4a6e
mfplat: Append MFVIDEOFORMAT user data after the structure padding.
...
Instead of using the last palette entry, which might be misaligned.
2024-03-22 17:05:40 +01:00
Rémi Bernon
552cec9477
mfplat/mediatype: Use MFCreateWaveFormatExFromMFMediaType in init_am_media_type_audio_format.
2024-03-21 22:19:58 +01:00
Rémi Bernon
1e053810f3
mfplat/mediatype: Implement MFCreateMediaTypeFromRepresentation.
2024-03-21 22:19:57 +01:00
Rémi Bernon
a4fb357c89
mfplat/mediatype: Force WAVEFORMATEXTENSIBLE in MFCreateWaveFormatExFromMFMediaType in some cases.
2024-03-21 22:19:57 +01:00
Rémi Bernon
689868cd50
mfplat/mediatype: Support audio major type in MFInitMediaTypeFromAMMediaType.
2024-03-21 22:19:57 +01:00
Rémi Bernon
45d4aa9f60
mfplat/mediatype: Check format pointers and sizes in MFInitMediaTypeFromAMMediaType.
2024-03-21 22:19:57 +01:00
Rémi Bernon
9ee0720d98
mfplat/tests: Check how AAC attributes are copied from user data.
2024-03-21 22:19:57 +01:00
Rémi Bernon
3593ce002f
mfplat/tests: Test initializing mediatype from AAC WAVEFORMATEXTENSIBLE.
2024-03-21 22:19:57 +01:00
Rémi Bernon
2734b266de
mfplat/tests: Add some broken results for Win7.
2024-03-21 22:19:57 +01:00
Rémi Bernon
eac5ad2a26
mfplat/mediatype: Implement MFInitMediaTypeFromMFVideoFormat.
2024-03-19 23:02:11 +01:00
Rémi Bernon
899abeafe4
mfplat/tests: Add tests for MFInitMediaTypeFromMFVideoFormat.
2024-03-19 23:02:11 +01:00
Rémi Bernon
a712d7ec87
mfplat/mediatype: Stub MFInitMediaTypeFromMFVideoFormat.
2024-03-19 23:02:11 +01:00
Rémi Bernon
fe0c129e0b
mfplat/tests: Check the conditions for the MFVideoFlag_BottomUpLinearRep flags.
2024-03-19 23:02:11 +01:00
Rémi Bernon
b1d7c03514
mfplat/mediatype: Append user data in MFCreateMFVideoFormatFromMFMediaType.
2024-03-19 23:02:11 +01:00
Rémi Bernon
75a5263c60
mfplat/tests: Test that MFCreateMFVideoFormatFromMFMediaType appends user data.
2024-03-19 23:02:11 +01:00
Rémi Bernon
7598556b64
mfplat/tests: Test that aperture is dropped with VIDEOINFOHEADER2.
...
But preserved with MFVIDEOFORMAT.
2024-03-19 23:02:11 +01:00
Rémi Bernon
fc97535ccb
mfplat/mediatype: Implement some VIDEOINFOHEADER2 dwInterlaceFlags conversion.
2024-03-18 23:21:37 +01:00
Rémi Bernon
76abdf3403
mfplat/mediatype: Implement VIDEOINFOHEADER2 dwControlFlags conversion.
2024-03-18 23:21:37 +01:00
Rémi Bernon
5a34601606
mfplat/mediatype: Implement MF_MT_FRAME_RATE from VIDEOINFOHEADER2.
...
Native seems to also treat some frame rate specially, matching a wide
range of time per frame into the same predefined frame rates.
2024-03-18 23:21:37 +01:00
Rémi Bernon
aa385765a1
mfplat: Support flexible frame time in MFAverageTimePerFrameToFrameRate.
2024-03-18 23:21:37 +01:00
Rémi Bernon
578d104cf6
mfplat/tests: Add more MFAverageTimePerFrameToFrameRate tests.
2024-03-18 23:21:37 +01:00
Rémi Bernon
c94c464920
mfplat/mediatype: Set rcSource and rcTarget if stride differs from width.
2024-03-18 23:21:37 +01:00
Rémi Bernon
d0c996b2b4
mfplat/mediatype: Map rcSource to MF_MT_(PAN_SCAN|MINIMUM_DISPLAY)_APERTURE.
2024-03-18 23:21:37 +01:00
Rémi Bernon
66ea15f13a
mfplat/mediatype: Set MF_MT_SAMPLE_SIZE from bmiHeader.biSizeImage.
2024-03-18 23:21:37 +01:00
Rémi Bernon
08cafe23d5
mfplat/mediatype: Support FORMAT_VideoInfo2 in MFInitMediaTypeFromAMMediaType.
2024-03-18 23:21:37 +01:00
Rémi Bernon
6413303e60
mfplat/tests: Test aperture to VIDEOINFOHEADER fields mapping.
2024-03-18 23:21:37 +01:00
Rémi Bernon
8dd24ad2a4
mfplat/mediatype: Implement MFInitAMMediaTypeFromMFMediaType for FORMAT_VideoInfo2.
2024-03-15 15:06:38 +01:00
Rémi Bernon
d307cfede9
mfplat/tests: Add tests for MFInitMediaTypeFromVideoInfoHeader2.
2024-03-15 15:06:38 +01:00
Rémi Bernon
4319ada736
mfplat/mediatype: Implement MFInitMediaTypeFromVideoInfoHeader2.
2024-03-15 15:06:38 +01:00
Rémi Bernon
e497f0e88d
mfplat/mediatype: Implement implicit MFInitMediaTypeFromVideoInfoHeader subtype.
2024-03-15 15:06:38 +01:00
Rémi Bernon
2692cd8b04
mfplat/tests: Test each VIDEOINFOHEADER field conversion separately.
2024-03-15 15:06:38 +01:00
Jacek Caban
b8326ad4de
mfplat: Introduce media_type_get_uint32 helper.
2024-01-31 12:04:32 +01:00
Jacek Caban
2e89cb4040
mfplat/tests: Use MF_ATTRIBUTE_TYPE type in IMFMediaType_GetItemType call.
2024-01-31 12:04:32 +01:00
Jacek Caban
e935c242c3
mfplat: Avoid implicit cast in IMFAttributes_GetUINT32 call.
2024-01-31 12:04:32 +01:00
Nikolay Sivov
e450bf42ab
mfplat/tests: Skip tests that require d3d9 support.
2024-01-30 17:40:44 +01:00