Nikolay Sivov : mfplat: Implement GetContiguousLength() for d3d11 buffer.

Alexandre Julliard julliard at winehq.org
Wed Mar 24 16:20:40 CDT 2021


Module: wine
Branch: master
Commit: 264732a8c6ea333d430145183e2c974e9f46be83
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=264732a8c6ea333d430145183e2c974e9f46be83

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Wed Mar 24 12:37:20 2021 +0300

mfplat: Implement GetContiguousLength() for d3d11 buffer.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mfplat/buffer.c       |  9 +--------
 dlls/mfplat/tests/mfplat.c | 13 ++++++++++++-
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/dlls/mfplat/buffer.c b/dlls/mfplat/buffer.c
index 3710843fd52..3c0f02709ee 100644
--- a/dlls/mfplat/buffer.c
+++ b/dlls/mfplat/buffer.c
@@ -888,13 +888,6 @@ static HRESULT WINAPI dxgi_surface_buffer_GetScanline0AndPitch(IMF2DBuffer2 *ifa
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI dxgi_surface_buffer_GetContiguousLength(IMF2DBuffer2 *iface, DWORD *length)
-{
-    FIXME("%p, %p.\n", iface, length);
-
-    return E_NOTIMPL;
-}
-
 static HRESULT WINAPI dxgi_surface_buffer_Lock2DSize(IMF2DBuffer2 *iface, MF2DBuffer_LockFlags flags,
         BYTE **scanline0, LONG *pitch, BYTE **buffer_start, DWORD *buffer_length)
 {
@@ -1001,7 +994,7 @@ static const IMF2DBuffer2Vtbl dxgi_surface_buffer_vtbl =
     dxgi_surface_buffer_Unlock2D,
     dxgi_surface_buffer_GetScanline0AndPitch,
     memory_2d_buffer_IsContiguousFormat,
-    dxgi_surface_buffer_GetContiguousLength,
+    memory_2d_buffer_GetContiguousLength,
     memory_2d_buffer_ContiguousCopyTo,
     memory_2d_buffer_ContiguousCopyFrom,
     dxgi_surface_buffer_Lock2DSize,
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c
index 1c236bdb655..aa6c0e28da6 100644
--- a/dlls/mfplat/tests/mfplat.c
+++ b/dlls/mfplat/tests/mfplat.c
@@ -6312,10 +6312,11 @@ static ID3D11Device *create_d3d11_device(void)
 
 static void test_dxgi_surface_buffer(void)
 {
-    DWORD max_length, cur_length, color;
+    DWORD max_length, cur_length, length, color;
     IMFDXGIBuffer *dxgi_buffer;
     D3D11_TEXTURE2D_DESC desc;
     ID3D11Texture2D *texture;
+    IMF2DBuffer *_2d_buffer;
     IMFMediaBuffer *buffer;
     ID3D11Device *device;
     UINT index, size;
@@ -6366,6 +6367,16 @@ static void test_dxgi_surface_buffer(void)
     ok(hr == S_OK, "Failed to get length, hr %#x.\n", hr);
     ok(cur_length == 2 * max_length, "Unexpected length %u.\n", cur_length);
 
+    hr = IMFMediaBuffer_QueryInterface(buffer, &IID_IMF2DBuffer, (void **)&_2d_buffer);
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+    hr = IMF2DBuffer_GetContiguousLength(_2d_buffer, NULL);
+    ok(hr == E_POINTER, "Unexpected hr %#x.\n", hr);
+    hr = IMF2DBuffer_GetContiguousLength(_2d_buffer, &length);
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    ok(length == max_length, "Unexpected length %u.\n", length);
+    IMF2DBuffer_Release(_2d_buffer);
+
     hr = IMFMediaBuffer_QueryInterface(buffer, &IID_IMFDXGIBuffer, (void **)&dxgi_buffer);
     ok(hr == S_OK, "Failed to get interface, hr %#x.\n", hr);
 




More information about the wine-cvs mailing list