Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/winegstreamer/wm_reader.c | 8 ++++++-- dlls/wmvcore/tests/wmvcore.c | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/dlls/winegstreamer/wm_reader.c b/dlls/winegstreamer/wm_reader.c index 2de0610165d..2c0f89e29a9 100644 --- a/dlls/winegstreamer/wm_reader.c +++ b/dlls/winegstreamer/wm_reader.c @@ -237,8 +237,12 @@ static HRESULT WINAPI buffer_SetLength(INSSBuffer *iface, DWORD size)
static HRESULT WINAPI buffer_GetMaxLength(INSSBuffer *iface, DWORD *size) { - FIXME("iface %p, size %p, stub!\n", iface, size); - return E_NOTIMPL; + struct buffer *buffer = impl_from_INSSBuffer(iface); + + TRACE("buffer %p, size %p.\n", buffer, size); + + *size = buffer->size; + return S_OK; }
static HRESULT WINAPI buffer_GetBuffer(INSSBuffer *iface, BYTE **data) diff --git a/dlls/wmvcore/tests/wmvcore.c b/dlls/wmvcore/tests/wmvcore.c index 685dd92e27e..0347195ba10 100644 --- a/dlls/wmvcore/tests/wmvcore.c +++ b/dlls/wmvcore/tests/wmvcore.c @@ -591,7 +591,7 @@ static void test_reader_attributes(IWMProfile *profile)
static void test_sync_reader_streaming(void) { - DWORD size, flags, output_number, expect_output_number; + DWORD size, capacity, flags, output_number, expect_output_number; const WCHAR *filename = load_resource(L"test.wmv"); WORD stream_numbers[2], stream_number; IWMStreamConfig *config, *config2; @@ -682,6 +682,10 @@ static void test_sync_reader_streaming(void) ok(hr == S_OK, "Got hr %#x.\n", hr); ok(data2 == data, "Data pointers didn't match.\n");
+ hr = INSSBuffer_GetMaxLength(sample, &capacity); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(size <= capacity, "Size %u exceeds capacity %u.\n", size, capacity); + ref = INSSBuffer_Release(sample); ok(!ref, "Got outstanding refcount %d.\n", ref);
@@ -747,6 +751,10 @@ static void test_sync_reader_streaming(void) ok(hr == S_OK, "Got hr %#x.\n", hr); ok(data2 == data, "Data pointers didn't match.\n");
+ hr = INSSBuffer_GetMaxLength(sample, &capacity); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(size <= capacity, "Size %u exceeds capacity %u.\n", size, capacity); + ref = INSSBuffer_Release(sample); ok(!ref, "Got outstanding refcount %d.\n", ref); } @@ -1193,9 +1201,9 @@ static HRESULT WINAPI callback_OnSample(IWMReaderCallback *iface, DWORD output, QWORD time, QWORD duration, DWORD flags, INSSBuffer *sample, void *context) { struct callback *callback = impl_from_IWMReaderCallback(iface); + DWORD size, capacity; BYTE *data, *data2; HRESULT hr; - DWORD size;
if (winetest_debug > 1) trace("%u: %04x: IWMReaderCallback::OnSample(output %u, time %I64u, duration %I64u, flags %#x)\n", @@ -1210,6 +1218,10 @@ static HRESULT WINAPI callback_OnSample(IWMReaderCallback *iface, DWORD output, ok(hr == S_OK, "Got hr %#x.\n", hr); ok(data2 == data, "Data pointers didn't match.\n");
+ hr = INSSBuffer_GetMaxLength(sample, &capacity); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(size <= capacity, "Size %u exceeds capacity %u.\n", size, capacity); + ok(callback->got_started > 0, "Got %u WMT_STARTED callbacks.\n", callback->got_started); ok(!callback->got_eof, "Got %u WMT_EOF callbacks.\n", callback->got_eof); ++callback->got_sample;