Two fixes for evr_copy_sample_buffer() where: - we are doing several copies of same area - we are copying from/to beyond image limit (wrong bpp)
From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- dlls/evr/evr.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/dlls/evr/evr.c b/dlls/evr/evr.c index 52c5de5e2c4..362c4f1e76f 100644 --- a/dlls/evr/evr.c +++ b/dlls/evr/evr.c @@ -409,7 +409,6 @@ static HRESULT evr_copy_sample_buffer(struct evr *filter, const GUID *subtype, I /* All other formats are 32-bit, single plane. */ MFCopyImage(locked_rect.pBits, locked_rect.Pitch, src, src_stride, width * 4, lines); } - MFCopyImage(locked_rect.pBits, locked_rect.Pitch, src, src_stride, width, lines); IDirect3DSurface9_UnlockRect(surface); }
From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- dlls/evr/evr.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/evr/evr.c b/dlls/evr/evr.c index 362c4f1e76f..108f13cdc89 100644 --- a/dlls/evr/evr.c +++ b/dlls/evr/evr.c @@ -388,8 +388,8 @@ static HRESULT evr_copy_sample_buffer(struct evr *filter, const GUID *subtype, I
if (IsEqualGUID(subtype, &MFVideoFormat_YUY2)) { - width = (3 * width + 3) & ~3; - MFCopyImage(locked_rect.pBits, locked_rect.Pitch, src, src_stride, width, lines); + width = (width + 1) & ~1; + MFCopyImage(locked_rect.pBits, locked_rect.Pitch, src, src_stride, width * 2, lines); } else if (IsEqualGUID(subtype, &MFVideoFormat_NV12)) {
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=144014
Your paranoid android.
=== debian11b (64 bit WoW report) ===
d3dx10_34: d3dx10.c:4380: Test succeeded inside todo block: Got unexpected effect 00000000011BB560. d3dx10.c:4470: Test succeeded inside todo block: Got unexpected effect 00000000011BD790. d3dx10.c:4480: Test succeeded inside todo block: Got unexpected effect 00000000011BD790. d3dx10.c:4589: Test succeeded inside todo block: Got unexpected effect 0000000001195A10. d3dx10.c:4599: Test succeeded inside todo block: Got unexpected effect 00000000011BD790.
d3dx10_35: d3dx10.c:4380: Test succeeded inside todo block: Got unexpected effect 0000000001239DB0. d3dx10.c:4470: Test succeeded inside todo block: Got unexpected effect 0000000001239DB0. d3dx10.c:4480: Test succeeded inside todo block: Got unexpected effect 00000000011B5AE0. d3dx10.c:4589: Test succeeded inside todo block: Got unexpected effect 00000000011B5CB0. d3dx10.c:4599: Test succeeded inside todo block: Got unexpected effect 00000000011B5E80.
d3dx10_36: d3dx10.c:4380: Test succeeded inside todo block: Got unexpected effect 00000000011D1AF0. d3dx10.c:4470: Test succeeded inside todo block: Got unexpected effect 00000000011A4AE0. d3dx10.c:4480: Test succeeded inside todo block: Got unexpected effect 00000000011D1820. d3dx10.c:4589: Test succeeded inside todo block: Got unexpected effect 00000000011D56B0. d3dx10.c:4599: Test succeeded inside todo block: Got unexpected effect 00000000011D56B0.
d3dx10_37: d3dx10.c:4380: Test succeeded inside todo block: Got unexpected effect 0000000001239D20. d3dx10.c:4470: Test succeeded inside todo block: Got unexpected effect 00000000011C3C30. d3dx10.c:4480: Test succeeded inside todo block: Got unexpected effect 00000000011B6E80. d3dx10.c:4589: Test succeeded inside todo block: Got unexpected effect 00000000011B7050. d3dx10.c:4599: Test succeeded inside todo block: Got unexpected effect 00000000011B7220.
d3dx10_38: d3dx10.c:4380: Test succeeded inside todo block: Got unexpected effect 0000000001239D70. d3dx10.c:4470: Test succeeded inside todo block: Got unexpected effect 0000000001239F40. d3dx10.c:4480: Test succeeded inside todo block: Got unexpected effect 0000000001195B70. d3dx10.c:4589: Test succeeded inside todo block: Got unexpected effect 00000000011929A0. d3dx10.c:4599: Test succeeded inside todo block: Got unexpected effect 0000000001195B70.
d3dx10_39: d3dx10.c:4380: Test succeeded inside todo block: Got unexpected effect 00000000011E3990. d3dx10.c:4470: Test succeeded inside todo block: Got unexpected effect 00000000011946B0. d3dx10.c:4480: Test succeeded inside todo block: Got unexpected effect 0000000001194880. d3dx10.c:4589: Test succeeded inside todo block: Got unexpected effect 00000000011946B0. d3dx10.c:4599: Test succeeded inside todo block: Got unexpected effect 00000000011B6010.
d3dx10_40: d3dx10.c:4380: Test succeeded inside todo block: Got unexpected effect 00000000011D5870. d3dx10.c:4470: Test succeeded inside todo block: Got unexpected effect 0000000001239DC0. d3dx10.c:4480: Test succeeded inside todo block: Got unexpected effect 00000000011B6050. d3dx10.c:4589: Test succeeded inside todo block: Got unexpected effect 0000000001239DC0. d3dx10.c:4599: Test succeeded inside todo block: Got unexpected effect 00000000011BB7F0.
d3dx10_41: d3dx10.c:4380: Test succeeded inside todo block: Got unexpected effect 00000000011BC740. d3dx10.c:4470: Test succeeded inside todo block: Got unexpected effect 00000000011A4920. d3dx10.c:4480: Test succeeded inside todo block: Got unexpected effect 00000000011A4920. d3dx10.c:4589: Test succeeded inside todo block: Got unexpected effect 00000000011B6010. d3dx10.c:4599: Test succeeded inside todo block: Got unexpected effect 00000000011A4920.
d3dx10_42: d3dx10.c:4380: Test succeeded inside todo block: Got unexpected effect 00000000011B6000. d3dx10.c:4470: Test succeeded inside todo block: Got unexpected effect 00000000011D5590. d3dx10.c:4480: Test succeeded inside todo block: Got unexpected effect 00000000011D5760. d3dx10.c:4589: Test succeeded inside todo block: Got unexpected effect 00000000011B5D20. d3dx10.c:4599: Test succeeded inside todo block: Got unexpected effect 00000000011D5590.
d3dx10_43: d3dx10.c:4380: Test succeeded inside todo block: Got unexpected effect 00000000011BBA60. d3dx10.c:4470: Test succeeded inside todo block: Got unexpected effect 00000000011BB560. d3dx10.c:4480: Test succeeded inside todo block: Got unexpected effect 00000000011BB560. d3dx10.c:4589: Test succeeded inside todo block: Got unexpected effect 00000000011E39B0. d3dx10.c:4599: Test succeeded inside todo block: Got unexpected effect 00000000011BB950.
pipeline failures in d3dx10* look unrelated (can repro the same failures locally without this serie applied)
@nsivov what's the status of this MR?
On Mon Mar 18 10:11:43 2024 +0000, eric pouech wrote:
@nsivov what's the status of this MR?
Do you have test dshow player program so I can attempt to test this? I have one for mfplay (using media foundation EVR integration).
@nsivov what's the status of this MR?
I don't know what the status is. Have you tried it yourself with what's in eiyutan4_trial.zip? As I recall for me it worked already before this MR.
yes I tried with that game and video looked ok.
1) the point is that the format is 16bpp (width * _2) and we're currently copying 24bpp (width * 3), so with a potential risk of segfault or overwritting bytes outside of the destination buffer
2) I tried also with copying 8bpp (width) with the game and got a green the right hand (split vertically) side of the screen green (which shows that width * _3 is copying too much)
This merge request was approved by Nikolay Sivov.