From: Rémi Bernon <rbernon(a)codeweavers.com>
---
dlls/mf/tests/mf.c | 8 ++-
dlls/mf/tests/mf_test.h | 29 ++++----
dlls/mf/tests/transform.c | 143 ++++++++++++++++++++------------------
3 files changed, 98 insertions(+), 82 deletions(-)
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c
index 3f75ca943c8..5959905a278 100644
--- a/dlls/mf/tests/mf.c
+++ b/dlls/mf/tests/mf.c
@@ -3918,7 +3918,9 @@ static void test_sample_grabber_orientation(GUID subtype)
{
const struct buffer_desc buffer_desc_rgb32 =
{
- .length = 64 * 64 * 4, .compare = compare_rgb32, .dump = dump_rgb32, .rect =
{.right = 64, .bottom = 64},
+ .length = 64 * 64 * 4,
+ .compare = compare_rgb32, .compare_rect = {.right = 64, .bottom = 64},
+ .dump = dump_rgb32, .size = {.cx = 64, .cy = 64},
};
const struct sample_desc sample_desc_rgb32 =
{
@@ -3930,7 +3932,9 @@ static void test_sample_grabber_orientation(GUID subtype)
{
const struct buffer_desc buffer_desc_nv12 =
{
- .length = 64 * 64 * 3 / 2, .compare = compare_nv12, .dump = dump_nv12, .rect
= {.right = 64, .bottom = 64},
+ .length = 64 * 64 * 3 / 2,
+ .compare = compare_nv12, .compare_rect = {.right = 64, .bottom = 64},
+ .dump = dump_nv12, .size = {.cx = 64, .cy = 64},
};
const struct sample_desc sample_desc_nv12 =
{
diff --git a/dlls/mf/tests/mf_test.h b/dlls/mf/tests/mf_test.h
index 5a247e4a0ef..324815e3e8b 100644
--- a/dlls/mf/tests/mf_test.h
+++ b/dlls/mf/tests/mf_test.h
@@ -74,28 +74,29 @@ extern void check_attributes_(const char *file, int line,
IMFAttributes *attribu
const struct attribute_desc *desc, ULONG limit);
extern void init_media_type(IMFMediaType *mediatype, const struct attribute_desc *desc,
ULONG limit);
-typedef DWORD (*compare_cb)(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect);
-extern DWORD compare_nv12(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect);
-extern DWORD compare_i420(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect);
-extern DWORD compare_rgb32(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect);
-extern DWORD compare_rgb24(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect);
-extern DWORD compare_rgb16(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect);
-extern DWORD compare_pcm16(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect);
+typedef DWORD (*compare_cb)(const BYTE *data, DWORD *length, const SIZE *size, const RECT
*rect, const BYTE *expect);
+extern DWORD compare_nv12(const BYTE *data, DWORD *length, const SIZE *size, const RECT
*rect, const BYTE *expect);
+extern DWORD compare_i420(const BYTE *data, DWORD *length, const SIZE *size, const RECT
*rect, const BYTE *expect);
+extern DWORD compare_rgb32(const BYTE *data, DWORD *length, const SIZE *size, const RECT
*rect, const BYTE *expect);
+extern DWORD compare_rgb24(const BYTE *data, DWORD *length, const SIZE *size, const RECT
*rect, const BYTE *expect);
+extern DWORD compare_rgb16(const BYTE *data, DWORD *length, const SIZE *size, const RECT
*rect, const BYTE *expect);
+extern DWORD compare_pcm16(const BYTE *data, DWORD *length, const SIZE *size, const RECT
*rect, const BYTE *expect);
-typedef void (*dump_cb)(const BYTE *data, DWORD length, const RECT *rect, HANDLE
output);
-extern void dump_rgb32(const BYTE *data, DWORD length, const RECT *rect, HANDLE
output);
-extern void dump_rgb24(const BYTE *data, DWORD length, const RECT *rect, HANDLE
output);
-extern void dump_rgb16(const BYTE *data, DWORD length, const RECT *rect, HANDLE
output);
-extern void dump_nv12(const BYTE *data, DWORD length, const RECT *rect, HANDLE output);
-extern void dump_i420(const BYTE *data, DWORD length, const RECT *rect, HANDLE output);
+typedef void (*dump_cb)(const BYTE *data, DWORD length, const SIZE *size, HANDLE
output);
+extern void dump_rgb32(const BYTE *data, DWORD length, const SIZE *size, HANDLE
output);
+extern void dump_rgb24(const BYTE *data, DWORD length, const SIZE *size, HANDLE
output);
+extern void dump_rgb16(const BYTE *data, DWORD length, const SIZE *size, HANDLE
output);
+extern void dump_nv12(const BYTE *data, DWORD length, const SIZE *size, HANDLE output);
+extern void dump_i420(const BYTE *data, DWORD length, const SIZE *size, HANDLE output);
struct buffer_desc
{
DWORD length;
BOOL todo_length;
compare_cb compare;
+ RECT compare_rect;
dump_cb dump;
- RECT rect;
+ SIZE size;
};
struct sample_desc
diff --git a/dlls/mf/tests/transform.c b/dlls/mf/tests/transform.c
index 6a4653cccee..a24176b5ff8 100644
--- a/dlls/mf/tests/transform.c
+++ b/dlls/mf/tests/transform.c
@@ -866,14 +866,14 @@ static HRESULT check_mft_process_output_(int line, IMFTransform
*transform, IMFS
return ret;
}
-DWORD compare_nv12(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect)
+DWORD compare_nv12(const BYTE *data, DWORD *length, const SIZE *size, const RECT *rect,
const BYTE *expect)
{
- DWORD x, y, size, diff = 0, width = (rect->right + 0xf) & ~0xf, height =
(rect->bottom + 0xf) & ~0xf;
+ DWORD x, y, data_size, diff = 0, width = size->cx, height = size->cy;
/* skip BMP header and RGB data from the dump */
- size = *(DWORD *)(expect + 2);
- *length = *length + size;
- expect = expect + size;
+ data_size = *(DWORD *)(expect + 2);
+ *length = *length + data_size;
+ expect = expect + data_size;
for (y = 0; y < height; y++, data += width, expect += width)
{
@@ -896,18 +896,18 @@ DWORD compare_nv12(const BYTE *data, DWORD *length, const RECT
*rect, const BYTE
}
}
- size = (rect->right - rect->left) * (rect->bottom - rect->top) * 3 / 2;
- return diff * 100 / 256 / size;
+ data_size = (rect->right - rect->left) * (rect->bottom - rect->top) * 3 /
2;
+ return diff * 100 / 256 / data_size;
}
-DWORD compare_i420(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect)
+DWORD compare_i420(const BYTE *data, DWORD *length, const SIZE *size, const RECT *rect,
const BYTE *expect)
{
- DWORD i, x, y, size, diff = 0, width = (rect->right + 0xf) & ~0xf, height =
(rect->bottom + 0xf) & ~0xf;
+ DWORD i, x, y, data_size, diff = 0, width = size->cx, height = size->cy;
/* skip BMP header and RGB data from the dump */
- size = *(DWORD *)(expect + 2);
- *length = *length + size;
- expect = expect + size;
+ data_size = *(DWORD *)(expect + 2);
+ *length = *length + data_size;
+ expect = expect + data_size;
for (y = 0; y < height; y++, data += width, expect += width)
{
@@ -929,18 +929,18 @@ DWORD compare_i420(const BYTE *data, DWORD *length, const RECT
*rect, const BYTE
}
}
- size = (rect->right - rect->left) * (rect->bottom - rect->top) * 3 / 2;
- return diff * 100 / 256 / size;
+ data_size = (rect->right - rect->left) * (rect->bottom - rect->top) * 3 /
2;
+ return diff * 100 / 256 / data_size;
}
-static DWORD compare_rgb(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect, UINT bits)
+static DWORD compare_rgb(const BYTE *data, DWORD *length, const SIZE *size, const RECT
*rect, const BYTE *expect, UINT bits)
{
- DWORD x, y, step = bits / 8, size, diff = 0, width = (rect->right + 0xf) &
~0xf, height = (rect->bottom + 0xf) & ~0xf;
+ DWORD x, y, step = bits / 8, data_size, diff = 0, width = size->cx, height =
size->cy;
/* skip BMP header from the dump */
- size = *(DWORD *)(expect + 2 + 2 * sizeof(DWORD));
- *length = *length + size;
- expect = expect + size;
+ data_size = *(DWORD *)(expect + 2 + 2 * sizeof(DWORD));
+ *length = *length + data_size;
+ expect = expect + data_size;
for (y = 0; y < height; y++, data += width * step, expect += width * step)
{
@@ -954,49 +954,49 @@ static DWORD compare_rgb(const BYTE *data, DWORD *length, const RECT
*rect, cons
}
}
- size = (rect->right - rect->left) * (rect->bottom - rect->top) *
min(step, 3);
- return diff * 100 / 256 / size;
+ data_size = (rect->right - rect->left) * (rect->bottom - rect->top) *
min(step, 3);
+ return diff * 100 / 256 / data_size;
}
-DWORD compare_rgb32(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect)
+DWORD compare_rgb32(const BYTE *data, DWORD *length, const SIZE *size, const RECT *rect,
const BYTE *expect)
{
- return compare_rgb(data, length, rect, expect, 32);
+ return compare_rgb(data, length, size, rect, expect, 32);
}
-DWORD compare_rgb24(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect)
+DWORD compare_rgb24(const BYTE *data, DWORD *length, const SIZE *size, const RECT *rect,
const BYTE *expect)
{
- return compare_rgb(data, length, rect, expect, 24);
+ return compare_rgb(data, length, size, rect, expect, 24);
}
-DWORD compare_rgb16(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect)
+DWORD compare_rgb16(const BYTE *data, DWORD *length, const SIZE *size, const RECT *rect,
const BYTE *expect)
{
- return compare_rgb(data, length, rect, expect, 16);
+ return compare_rgb(data, length, size, rect, expect, 16);
}
-DWORD compare_pcm16(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect)
+DWORD compare_pcm16(const BYTE *data, DWORD *length, const SIZE *size, const RECT *rect,
const BYTE *expect)
{
const INT16 *data_pcm = (INT16 *)data, *expect_pcm = (INT16 *)expect;
- DWORD i, size = *length / 2, diff = 0;
+ DWORD i, data_size = *length / 2, diff = 0;
- for (i = 0; i < size; i++)
+ for (i = 0; i < data_size; i++)
diff += abs((int)*expect_pcm++ - (int)*data_pcm++);
- return diff * 100 / 65536 / size;
+ return diff * 100 / 65536 / data_size;
}
-static DWORD compare_bytes(const BYTE *data, DWORD *length, const RECT *rect, const BYTE
*expect)
+static DWORD compare_bytes(const BYTE *data, DWORD *length, const SIZE *size, const RECT
*rect, const BYTE *expect)
{
- DWORD i, size = *length, diff = 0;
+ DWORD i, data_size = *length, diff = 0;
- for (i = 0; i < size; i++)
+ for (i = 0; i < data_size; i++)
diff += abs((int)*expect++ - (int)*data++);
- return diff * 100 / 256 / size;
+ return diff * 100 / 256 / data_size;
}
-static void dump_rgb(const BYTE *data, DWORD length, const RECT *rect, HANDLE output,
UINT bits)
+static void dump_rgb(const BYTE *data, DWORD length, const SIZE *size, HANDLE output,
UINT bits)
{
- DWORD width = (rect->right + 0xf) & ~0xf, height = (rect->bottom + 0xf)
& ~0xf;
+ DWORD width = size->cx, height = size->cy;
static const char magic[2] = "BM";
struct
{
@@ -1027,24 +1027,24 @@ static void dump_rgb(const BYTE *data, DWORD length, const RECT
*rect, HANDLE ou
ok(written == length, "written %lu bytes\n", written);
}
-void dump_rgb32(const BYTE *data, DWORD length, const RECT *rect, HANDLE output)
+void dump_rgb32(const BYTE *data, DWORD length, const SIZE *size, HANDLE output)
{
- return dump_rgb(data, length, rect, output, 32);
+ return dump_rgb(data, length, size, output, 32);
}
-void dump_rgb24(const BYTE *data, DWORD length, const RECT *rect, HANDLE output)
+void dump_rgb24(const BYTE *data, DWORD length, const SIZE *size, HANDLE output)
{
- return dump_rgb(data, length, rect, output, 24);
+ return dump_rgb(data, length, size, output, 24);
}
-void dump_rgb16(const BYTE *data, DWORD length, const RECT *rect, HANDLE output)
+void dump_rgb16(const BYTE *data, DWORD length, const SIZE *size, HANDLE output)
{
- return dump_rgb(data, length, rect, output, 16);
+ return dump_rgb(data, length, size, output, 16);
}
-void dump_nv12(const BYTE *data, DWORD length, const RECT *rect, HANDLE output)
+void dump_nv12(const BYTE *data, DWORD length, const SIZE *size, HANDLE output)
{
- DWORD written, x, y, width = (rect->right + 0xf) & ~0xf, height =
(rect->bottom + 0xf) & ~0xf;
+ DWORD written, x, y, width = size->cx, height = size->cy;
BYTE *rgb32_data = malloc(width * height * 4), *rgb32 = rgb32_data;
BOOL ret;
@@ -1056,7 +1056,7 @@ void dump_nv12(const BYTE *data, DWORD length, const RECT *rect,
HANDLE output)
*rgb32++ = 0xff;
}
- dump_rgb32(rgb32_data, width * height * 4, rect, output);
+ dump_rgb32(rgb32_data, width * height * 4, size, output);
free(rgb32_data);
ret = WriteFile(output, data, length, &written, NULL);
@@ -1064,9 +1064,9 @@ void dump_nv12(const BYTE *data, DWORD length, const RECT *rect,
HANDLE output)
ok(written == length, "written %lu bytes\n", written);
}
-void dump_i420(const BYTE *data, DWORD length, const RECT *rect, HANDLE output)
+void dump_i420(const BYTE *data, DWORD length, const SIZE *size, HANDLE output)
{
- DWORD written, x, y, width = (rect->right + 0xf) & ~0xf, height =
(rect->bottom + 0xf) & ~0xf;
+ DWORD written, x, y, width = size->cx, height = size->cy;
BYTE *rgb32_data = malloc(width * height * 4), *rgb32 = rgb32_data;
BOOL ret;
@@ -1078,7 +1078,7 @@ void dump_i420(const BYTE *data, DWORD length, const RECT *rect,
HANDLE output)
*rgb32++ = 0xff;
}
- dump_rgb32(rgb32_data, width * height * 4, rect, output);
+ dump_rgb32(rgb32_data, width * height * 4, size, output);
free(rgb32_data);
ret = WriteFile(output, data, length, &written, NULL);
@@ -1151,7 +1151,7 @@ static void dump_mf_media_buffer(IMFMediaBuffer *buffer, const
struct buffer_des
ok(hr == S_OK, "Lock returned %#lx\n", hr);
if (buffer_desc->dump)
- buffer_desc->dump(data, length, &buffer_desc->rect, output);
+ buffer_desc->dump(data, length, &buffer_desc->size, output);
else
{
if (buffer_desc->length == -1)
@@ -1219,9 +1219,9 @@ static DWORD check_mf_media_buffer_(const char *file, int line,
IMFMediaBuffer *
todo_wine_if(expect->todo_length)
ok_(file, line)(0, "missing %#lx bytes\n", length -
*expect_data_len);
else if (!expect->compare)
- diff = compare_bytes(data, &length, NULL, *expect_data);
+ diff = compare_bytes(data, &length, NULL, NULL, *expect_data);
else
- diff = expect->compare(data, &length, &expect->rect,
*expect_data);
+ diff = expect->compare(data, &length, &expect->size,
&expect->compare_rect, *expect_data);
}
hr = IMFMediaBuffer_Unlock(buffer);
@@ -1453,9 +1453,9 @@ static DWORD check_dmo_output_data_buffer_(int line,
DMO_OUTPUT_DATA_BUFFER *out
if (data_length < buffer_length)
ok_(__FILE__, line)(0, "Missing %#lx bytes\n", buffer_length -
data_length);
else if (!buffer_desc->compare)
- diff = compare_bytes(buffer, &buffer_length, NULL, data);
+ diff = compare_bytes(buffer, &buffer_length, NULL, NULL, data);
else
- diff = buffer_desc->compare(buffer, &buffer_length,
&buffer_desc->rect, data);
+ diff = buffer_desc->compare(buffer, &buffer_length,
&buffer_desc->size, &buffer_desc->compare_rect, data);
return diff;
}
@@ -4191,7 +4191,8 @@ static void test_h264_decoder(void)
const struct buffer_desc output_buffer_desc_nv12 =
{
.length = actual_width * actual_height * 3 / 2,
- .compare = compare_nv12, .dump = dump_nv12, .rect = {.right = 82, .bottom =
84},
+ .compare = compare_nv12, .compare_rect = {.right = 82, .bottom = 84},
+ .dump = dump_nv12, .size = {.cx = actual_width, .cy = actual_height},
};
const struct sample_desc output_sample_desc_nv12 =
{
@@ -4202,7 +4203,8 @@ static void test_h264_decoder(void)
const struct buffer_desc output_buffer_desc_i420 =
{
.length = actual_width * actual_height * 3 / 2,
- .compare = compare_i420, .dump = dump_i420, .rect = {.right = 82, .bottom =
84},
+ .compare = compare_i420, .compare_rect = {.right = 82, .bottom = 84},
+ .dump = dump_i420, .size = {.cx = actual_width, .cy = actual_height},
};
const struct sample_desc expect_output_sample_i420 =
{
@@ -5837,12 +5839,14 @@ static void test_wmv_decoder(void)
const struct buffer_desc output_buffer_desc_nv12 =
{
.length = actual_width * actual_height * 3 / 2,
- .compare = compare_nv12, .dump = dump_nv12, .rect = {.right = 82, .bottom =
84},
+ .compare = compare_nv12, .compare_rect = {.right = 82, .bottom = 84},
+ .dump = dump_nv12, .size = {.cx = actual_width, .cy = actual_height},
};
const struct buffer_desc output_buffer_desc_rgb =
{
.length = actual_width * actual_height * 4,
- .compare = compare_rgb32, .dump = dump_rgb32, .rect = {.right = 82, .bottom =
84},
+ .compare = compare_rgb32, .compare_rect = {.right = 82, .bottom = 84},
+ .dump = dump_rgb32, .size = {.cx = actual_width, .cy = actual_height},
};
const struct sample_desc output_sample_desc_nv12 =
{
@@ -6586,7 +6590,8 @@ static void test_wmv_decoder_media_object(void)
const struct buffer_desc output_buffer_desc_nv12 =
{
.length = data_width * data_height * 3 / 2,
- .compare = compare_nv12, .dump = dump_nv12, .rect = {.right = 82, .bottom =
84},
+ .compare = compare_nv12, .compare_rect = {.right = 82, .bottom = 84},
+ .dump = dump_nv12, .size = {.cx = data_width, .cy = data_height},
};
DWORD in_count, out_count, size, alignment, wmv_data_length, status, expected_status,
diff;
struct media_buffer *input_media_buffer = NULL, *output_media_buffer = NULL;
@@ -6980,7 +6985,8 @@ static void test_color_convert(void)
const struct buffer_desc output_buffer_desc =
{
.length = actual_width * actual_height * 4,
- .compare = compare_rgb32, .dump = dump_rgb32, .rect = {.right = 82, .bottom =
84},
+ .compare = compare_rgb32, .compare_rect = {.right = 82, .bottom = 84},
+ .dump = dump_rgb32, .size = {.cx = actual_width, .cy = actual_height},
};
const struct attribute_desc output_sample_attributes[] =
{
@@ -7396,7 +7402,8 @@ static void test_video_processor(void)
const struct buffer_desc rgb32_buffer_desc =
{
.length = actual_width * actual_height * 4,
- .compare = compare_rgb32, .dump = dump_rgb32, .rect = {.top = 12, .right = 82,
.bottom = 96},
+ .compare = compare_rgb32, .compare_rect = {.top = 12, .right = 82, .bottom =
96},
+ .dump = dump_rgb32, .size = {.cx = actual_width, .cy = actual_height},
};
const struct sample_desc rgb32_sample_desc =
{
@@ -7408,7 +7415,8 @@ static void test_video_processor(void)
const struct buffer_desc rgb555_buffer_desc =
{
.length = actual_width * actual_height * 2,
- .compare = compare_rgb16, .dump = dump_rgb16, .rect = {.top = 12, .right = 82,
.bottom = 96},
+ .compare = compare_rgb16, .compare_rect = {.top = 12, .right = 82, .bottom =
96},
+ .dump = dump_rgb16, .size = {.cx = actual_width, .cy = actual_height},
};
const struct sample_desc rgb555_sample_desc =
{
@@ -7420,7 +7428,8 @@ static void test_video_processor(void)
const struct buffer_desc nv12_buffer_desc =
{
.length = actual_width * actual_height * 3 / 2,
- .compare = compare_nv12, .dump = dump_nv12, .rect = {.top = 12, .right = 82,
.bottom = 96},
+ .compare = compare_nv12, .compare_rect = {.top = 12, .right = 82, .bottom =
96},
+ .dump = dump_nv12, .size = {.cx = actual_width, .cy = actual_height},
};
const struct sample_desc nv12_sample_desc =
{
@@ -8361,7 +8370,8 @@ static void test_h264_with_dxgi_manager(void)
const struct buffer_desc output_buffer_desc_nv12 =
{
.length = aligned_width * aligned_height * 3 / 2,
- .compare = compare_nv12, .dump = dump_nv12, .rect = {.top=0, .left=0, .right =
set_width, .bottom = set_height},
+ .compare = compare_nv12, .compare_rect = {.right = set_width, .bottom =
set_height},
+ .dump = dump_nv12, .size = {.cx = aligned_width, .cy = aligned_height},
};
const struct sample_desc output_sample_desc_nv12 =
{
@@ -8777,8 +8787,9 @@ static void test_iv50_decoder(void)
};
const struct buffer_desc rgb_buffer_desc =
{
- .length = 96 * 96 * 3, .compare = compare_rgb24, .dump = dump_rgb24,
- .rect = {.right = 82, .bottom = 84},
+ .length = 96 * 96 * 3,
+ .compare = compare_rgb24, .compare_rect = {.right = 82, .bottom = 84},
+ .dump = dump_rgb24, .size = {.cx = 96, .cy = 96},
};
const struct sample_desc rgb_sample_desc =
{
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/5536