Commit 8c0a1dfb authored by Giovanni Mascellani's avatar Giovanni Mascellani Committed by Alexandre Julliard

mfplat/tests: Test IMF2DBuffer::ContiguousCopyTo().

parent da1885ce
......@@ -6236,8 +6236,6 @@ static void test_MFCreate2DMediaBuffer(void)
hr = IMF2DBuffer2_ContiguousCopyFrom(_2dbuffer2, data2, ptr->contiguous_length);
ok(hr == S_OK, "Failed to copy from contiguous buffer, hr %#lx.\n", hr);
free(data2);
hr = IMFMediaBuffer_Lock(buffer, &data, &length2, NULL);
ok(hr == S_OK, "Failed to lock buffer, hr %#lx.\n", hr);
ok(length2 == ptr->contiguous_length, "%d: unexpected linear buffer length %lu for %u x %u, format %s.\n",
......@@ -6257,6 +6255,57 @@ static void test_MFCreate2DMediaBuffer(void)
}
ok(j == ptr->contiguous_length, "Unexpected byte %02x instead of %02x at position %u.\n", data[j], j & 0x7f, j);
hr = IMFMediaBuffer_Unlock(buffer);
ok(hr == S_OK, "Failed to unlock buffer, hr %#lx.\n", hr);
hr = IMF2DBuffer2_ContiguousCopyTo(_2dbuffer2, data2, ptr->contiguous_length - 1);
todo_wine ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
memset(data2, 0xff, ptr->contiguous_length + 16);
hr = IMF2DBuffer2_ContiguousCopyTo(_2dbuffer2, data2, ptr->contiguous_length + 16);
todo_wine ok(hr == S_OK, "Failed to copy to contiguous buffer, hr %#lx.\n", hr);
for (j = 0; j < ptr->contiguous_length; j++)
{
if (IsEqualGUID(ptr->subtype, &MFVideoFormat_IMC1) || IsEqualGUID(ptr->subtype, &MFVideoFormat_IMC3))
{
if (j < ptr->height * ptr->pitch && j % ptr->pitch >= ptr->width)
continue;
if (j >= ptr->height * ptr->pitch && j % ptr->pitch >= ptr->width / 2)
continue;
}
if (data2[j] != (j & 0x7f))
break;
}
todo_wine ok(j == ptr->contiguous_length, "Unexpected byte %02x instead of %02x at position %u.\n", data2[j], j & 0x7f, j);
memset(data2, 0xff, ptr->contiguous_length + 16);
hr = IMF2DBuffer2_ContiguousCopyTo(_2dbuffer2, data2, ptr->contiguous_length);
todo_wine ok(hr == S_OK, "Failed to copy to contiguous buffer, hr %#lx.\n", hr);
for (j = 0; j < ptr->contiguous_length; j++)
{
if (IsEqualGUID(ptr->subtype, &MFVideoFormat_IMC1) || IsEqualGUID(ptr->subtype, &MFVideoFormat_IMC3))
{
if (j < ptr->height * ptr->pitch && j % ptr->pitch >= ptr->width)
continue;
if (j >= ptr->height * ptr->pitch && j % ptr->pitch >= ptr->width / 2)
continue;
}
if (data2[j] != (j & 0x7f))
break;
}
todo_wine ok(j == ptr->contiguous_length, "Unexpected byte %02x instead of %02x at position %u.\n", data2[j], j & 0x7f, j);
free(data2);
hr = IMFMediaBuffer_Lock(buffer, &data, &length2, NULL);
ok(hr == S_OK, "Failed to lock buffer, hr %#lx.\n", hr);
ok(length2 == ptr->contiguous_length, "%d: unexpected linear buffer length %lu for %u x %u, format %s.\n",
i, length2, ptr->width, ptr->height, wine_dbgstr_guid(ptr->subtype));
hr = pMFGetStrideForBitmapInfoHeader(ptr->subtype->Data1, ptr->width, &stride);
ok(hr == S_OK, "Failed to get stride, hr %#lx.\n", hr);
stride = abs(stride);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment