quartz/tests: Test enumerating DMOs.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
2f2ac79242
commit
9e26bc8116
|
@ -1,5 +1,5 @@
|
||||||
TESTDLL = quartz.dll
|
TESTDLL = quartz.dll
|
||||||
IMPORTS = strmbase advapi32 d3d9 msvfw32 ole32 oleaut32 user32 uuid
|
IMPORTS = strmbase advapi32 d3d9 msdmo msvfw32 ole32 oleaut32 user32 uuid
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
acmwrapper.c \
|
acmwrapper.c \
|
||||||
|
|
|
@ -23,10 +23,13 @@
|
||||||
#include "wine/test.h"
|
#include "wine/test.h"
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
#include "dshow.h"
|
#include "dshow.h"
|
||||||
#include "winternl.h"
|
#include "mediaobj.h"
|
||||||
#include "initguid.h"
|
#include "initguid.h"
|
||||||
|
#include "dmo.h"
|
||||||
#include "wine/fil_data.h"
|
#include "wine/fil_data.h"
|
||||||
|
|
||||||
|
static const GUID testclsid = {0x77777777};
|
||||||
|
|
||||||
static IFilterMapper3 *create_mapper(void)
|
static IFilterMapper3 *create_mapper(void)
|
||||||
{
|
{
|
||||||
IFilterMapper3 *ret;
|
IFilterMapper3 *ret;
|
||||||
|
@ -662,6 +665,72 @@ static void test_aggregation(void)
|
||||||
ok(outer_ref == 1, "Got unexpected refcount %d.\n", outer_ref);
|
ok(outer_ref == 1, "Got unexpected refcount %d.\n", outer_ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_dmo(void)
|
||||||
|
{
|
||||||
|
DMO_PARTIAL_MEDIATYPE mt = {MEDIATYPE_Audio, MEDIASUBTYPE_PCM};
|
||||||
|
IEnumRegFilters *enumerator1;
|
||||||
|
IEnumMoniker *enumerator;
|
||||||
|
IFilterMapper3 *mapper;
|
||||||
|
IFilterMapper *mapper1;
|
||||||
|
REGFILTER *regfilter;
|
||||||
|
IMoniker *moniker;
|
||||||
|
WCHAR *name;
|
||||||
|
HRESULT hr;
|
||||||
|
BOOL found;
|
||||||
|
ULONG ref;
|
||||||
|
|
||||||
|
hr = DMORegister(L"dmo test", &testclsid, &DMOCATEGORY_AUDIO_DECODER, 0, 1, &mt, 1, &mt);
|
||||||
|
if (hr == E_FAIL)
|
||||||
|
{
|
||||||
|
skip("Not enough permissions to register DMOs.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||||
|
|
||||||
|
mapper = create_mapper();
|
||||||
|
IFilterMapper3_QueryInterface(mapper, &IID_IFilterMapper, (void **)&mapper1);
|
||||||
|
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||||
|
|
||||||
|
hr = IFilterMapper3_EnumMatchingFilters(mapper, &enumerator, 0, FALSE, 0,
|
||||||
|
FALSE, 0, NULL, NULL, NULL, FALSE, FALSE, 0, NULL, NULL, NULL);
|
||||||
|
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||||
|
|
||||||
|
found = FALSE;
|
||||||
|
while (IEnumMoniker_Next(enumerator, 1, &moniker, NULL) == S_OK)
|
||||||
|
{
|
||||||
|
hr = IMoniker_GetDisplayName(moniker, NULL, NULL, &name);
|
||||||
|
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||||
|
|
||||||
|
if (!wcscmp(name, L"@device:dmo:{77777777-0000-0000-0000-000000000000}{57F2DB8B-E6BB-4513-9D43-DCD2A6593125}"))
|
||||||
|
found = TRUE;
|
||||||
|
|
||||||
|
CoTaskMemFree(name);
|
||||||
|
IMoniker_Release(moniker);
|
||||||
|
}
|
||||||
|
IEnumMoniker_Release(enumerator);
|
||||||
|
ok(found, "DMO should be enumerated.\n");
|
||||||
|
|
||||||
|
/* DMOs lack a CLSID property and are therefore not enumerated by IFilterMapper. */
|
||||||
|
|
||||||
|
hr = IFilterMapper_EnumMatchingFilters(mapper1, &enumerator1, 0, FALSE,
|
||||||
|
GUID_NULL, GUID_NULL, FALSE, FALSE, GUID_NULL, GUID_NULL);
|
||||||
|
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||||
|
|
||||||
|
while (IEnumRegFilters_Next(enumerator1, 1, ®filter, NULL) == S_OK)
|
||||||
|
{
|
||||||
|
ok(!IsEqualGUID(®filter->Clsid, &testclsid), "DMO should not be enumerated.\n");
|
||||||
|
ok(wcscmp(regfilter->Name, L"dmo test"), "DMO should not be enumerated.\n");
|
||||||
|
}
|
||||||
|
IEnumRegFilters_Release(enumerator1);
|
||||||
|
|
||||||
|
IFilterMapper_Release(mapper1);
|
||||||
|
ref = IFilterMapper3_Release(mapper);
|
||||||
|
ok(!ref, "Got outstanding refcount %d.\n", ref);
|
||||||
|
|
||||||
|
hr = DMOUnregister(&testclsid, &DMOCATEGORY_AUDIO_DECODER);
|
||||||
|
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(filtermapper)
|
START_TEST(filtermapper)
|
||||||
{
|
{
|
||||||
CoInitialize(NULL);
|
CoInitialize(NULL);
|
||||||
|
@ -673,6 +742,7 @@ START_TEST(filtermapper)
|
||||||
test_register_filter_with_null_clsMinorType();
|
test_register_filter_with_null_clsMinorType();
|
||||||
test_parse_filter_data();
|
test_parse_filter_data();
|
||||||
test_aggregation();
|
test_aggregation();
|
||||||
|
test_dmo();
|
||||||
|
|
||||||
CoUninitialize();
|
CoUninitialize();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue