Commit 6010ebb2 authored by Anton Baskanov's avatar Anton Baskanov Committed by Alexandre Julliard

amstream: Implement AMAudioData::GetInfo.

parent 4a0db156
...@@ -30,6 +30,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(amstream); ...@@ -30,6 +30,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(amstream);
typedef struct { typedef struct {
IAudioData IAudioData_iface; IAudioData IAudioData_iface;
LONG ref; LONG ref;
DWORD size;
BYTE *data;
DWORD actual_data;
} AMAudioDataImpl; } AMAudioDataImpl;
static inline AMAudioDataImpl *impl_from_IAudioData(IAudioData *iface) static inline AMAudioDataImpl *impl_from_IAudioData(IAudioData *iface)
...@@ -87,9 +90,29 @@ static HRESULT WINAPI IAudioDataImpl_SetBuffer(IAudioData* iface, DWORD size, BY ...@@ -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) 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) static HRESULT WINAPI IAudioDataImpl_SetActual(IAudioData* iface, DWORD data_valid)
......
...@@ -626,6 +626,30 @@ static void test_audiodata_query_interface(void) ...@@ -626,6 +626,30 @@ static void test_audiodata_query_interface(void)
IUnknown_Release(unknown); 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) START_TEST(amstream)
{ {
HANDLE file; HANDLE file;
...@@ -645,6 +669,7 @@ START_TEST(amstream) ...@@ -645,6 +669,7 @@ START_TEST(amstream)
} }
test_audiodata_query_interface(); test_audiodata_query_interface();
test_audiodata_get_info();
CoUninitialize(); CoUninitialize();
} }
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