amstream: Implement AMAudioData::GetInfo.

Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Anton Baskanov 2016-07-28 21:59:52 +06:00 committed by Alexandre Julliard
parent 4a0db15622
commit 6010ebb22f
2 changed files with 50 additions and 2 deletions

View File

@ -30,6 +30,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(amstream);
typedef struct {
IAudioData IAudioData_iface;
LONG ref;
DWORD size;
BYTE *data;
DWORD actual_data;
} AMAudioDataImpl;
static inline AMAudioDataImpl *impl_from_IAudioData(IAudioData *iface)
@ -87,9 +90,29 @@ static HRESULT WINAPI IAudioDataImpl_SetBuffer(IAudioData* iface, DWORD size, BY
static HRESULT WINAPI IAudioDataImpl_GetInfo(IAudioData* iface, DWORD *length, BYTE **data, DWORD *actual_data)
{
FIXME("(%p)->(%p,%p,%p): stub\n", iface, length, data, actual_data);
AMAudioDataImpl *This = impl_from_IAudioData(iface);
return E_NOTIMPL;
TRACE("(%p)->(%p,%p,%p)\n", iface, length, data, actual_data);
if (!This->data)
{
return MS_E_NOTINIT;
}
if (length)
{
*length = This->size;
}
if (data)
{
*data = This->data;
}
if (actual_data)
{
*actual_data = This->actual_data;
}
return S_OK;
}
static HRESULT WINAPI IAudioDataImpl_SetActual(IAudioData* iface, DWORD data_valid)

View File

@ -626,6 +626,30 @@ static void test_audiodata_query_interface(void)
IUnknown_Release(unknown);
}
static void test_audiodata_get_info(void)
{
IUnknown *unknown = create_audio_data();
IAudioData *audio_data = NULL;
HRESULT result;
result = IUnknown_QueryInterface(unknown, &IID_IAudioData, (void **)&audio_data);
if (FAILED(result))
{
/* test_audiodata_query_interface handles this case */
skip("No IAudioData\n");
goto out_unknown;
}
result = IAudioData_GetInfo(audio_data, NULL, NULL, NULL);
ok(MS_E_NOTINIT == result, "got 0x%08x\n", result);
IAudioData_Release(audio_data);
out_unknown:
IUnknown_Release(unknown);
}
START_TEST(amstream)
{
HANDLE file;
@ -645,6 +669,7 @@ START_TEST(amstream)
}
test_audiodata_query_interface();
test_audiodata_get_info();
CoUninitialize();
}