55 && !
memcmp(
a->pbFormat,
b->pbFormat,
a->cbFormat);
62 return IUnknown_Release(
unknown);
73 ok(0,
"Unexpected call.\n");
79 ok(0,
"Unexpected call.\n");
121 hr = IPersistPropertyBag_InitNew(ppb);
124 hr = IPersistPropertyBag_Load(ppb, &property_bag,
NULL);
127 ref = IPersistPropertyBag_Release(ppb);
128 ok(!
ref,
"Got unexpected refcount %ld.\n",
ref);
131#define check_interface(a, b, c) check_interface_(__LINE__, a, b, c)
140 hr = IUnknown_QueryInterface(iface, iid, (
void **)&unk);
143 IUnknown_Release(unk);
184 IBaseFilter_Release(
filter);
239 ok(unk != &
test_outer,
"Returned IUnknown should not be outer IUnknown.\n");
241 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
243 ref = IUnknown_AddRef(unk);
244 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
247 ref = IUnknown_Release(unk);
248 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
253 ok(unk2 == unk,
"Got unexpected IUnknown %p.\n", unk2);
254 IUnknown_Release(unk2);
261 ok(unk2 == (
IUnknown *)0xdeadbeef,
"Got unexpected IUnknown %p.\n", unk2);
265 ok(filter2 == (
IBaseFilter *)0xdeadbeef,
"Got unexpected IBaseFilter %p.\n", filter2);
267 hr = IUnknown_QueryInterface(unk, &
test_iid, (
void **)&unk2);
269 ok(!unk2,
"Got unexpected IUnknown %p.\n", unk2);
273 ok(unk2 == (
IUnknown *)0xdeadbeef,
"Got unexpected IUnknown %p.\n", unk2);
275 IBaseFilter_Release(
filter);
276 ref = IUnknown_Release(unk);
277 ok(!
ref,
"Got unexpected refcount %ld.\n",
ref);
290 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
295 hr = IBaseFilter_EnumPins(
filter, &enum1);
298 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
300 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
305 hr = IEnumPins_Next(enum1, 1, pins,
NULL);
308 ok(
ref == 3,
"Got unexpected refcount %ld.\n",
ref);
310 ok(
ref == 3,
"Got unexpected refcount %ld.\n",
ref);
312 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
313 IPin_Release(pins[0]);
315 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
317 hr = IEnumPins_Next(enum1, 1, pins,
NULL);
320 hr = IEnumPins_Reset(enum1);
323 hr = IEnumPins_Next(enum1, 1, pins, &
count);
326 IPin_Release(pins[0]);
328 hr = IEnumPins_Next(enum1, 1, pins, &
count);
332 hr = IEnumPins_Reset(enum1);
335 hr = IEnumPins_Next(enum1, 2, pins,
NULL);
338 hr = IEnumPins_Next(enum1, 2, pins, &
count);
341 IPin_Release(pins[0]);
343 hr = IEnumPins_Reset(enum1);
346 hr = IEnumPins_Clone(enum1, &enum2);
349 hr = IEnumPins_Skip(enum1, 2);
352 hr = IEnumPins_Skip(enum1, 1);
355 hr = IEnumPins_Skip(enum1, 1);
358 hr = IEnumPins_Next(enum1, 1, pins,
NULL);
361 hr = IEnumPins_Next(enum2, 1, pins,
NULL);
363 IPin_Release(pins[0]);
365 IEnumPins_Release(enum2);
366 IEnumPins_Release(enum1);
368 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
379 hr = IBaseFilter_FindPin(
filter,
L"In", &pin);
382 hr = IBaseFilter_FindPin(
filter,
L"input pin", &pin);
393 ok(pin == pin2,
"Expected pin %p, got %p.\n", pin2, pin);
399 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
415 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
417 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
419 hr = IPin_QueryPinInfo(pin, &
info);
425 ok(
ref == 3,
"Got unexpected refcount %ld.\n",
ref);
427 ok(
ref == 3,
"Got unexpected refcount %ld.\n",
ref);
428 IBaseFilter_Release(
info.pFilter);
430 hr = IPin_QueryDirection(pin, &
dir);
434 hr = IPin_QueryId(pin, &
id);
439 hr = IPin_QueryInternalConnections(pin,
NULL,
NULL);
444 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
458 hr = IBaseFilter_QueryInterface(
filter, &IID_IBasicAudio, (
void **)&audio);
461 hr = IBasicAudio_get_Balance(audio,
NULL);
464 hr = IBasicAudio_get_Balance(audio, &balance);
468 ok(balance == 0,
"Got balance %ld.\n", balance);
476 hr = IBasicAudio_get_Balance(audio, &balance);
481 hr = IBasicAudio_get_Volume(audio, &
volume);
491 hr = IBasicAudio_get_Volume(audio, &
volume);
495 hr = IBasicAudio_GetTypeInfoCount(audio, &
count);
499 hr = IBasicAudio_GetTypeInfo(audio, 0, 0, &
typeinfo);
501 hr = ITypeInfo_GetTypeAttr(
typeinfo, &typeattr);
503 ok(typeattr->typekind ==
TKIND_DISPATCH,
"Got kind %u.\n", typeattr->typekind);
505 ITypeInfo_ReleaseTypeAttr(
typeinfo, typeattr);
508 IBasicAudio_Release(audio);
510 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
524 hr = IPin_EnumMediaTypes(pin, &enum1);
527 hr = IEnumMediaTypes_Next(enum1, 1, mts,
NULL);
532 hr = IEnumMediaTypes_Next(enum1, 1, mts,
NULL);
535 hr = IEnumMediaTypes_Reset(enum1);
538 hr = IEnumMediaTypes_Next(enum1, 1, mts, &
count);
544 hr = IEnumMediaTypes_Next(enum1, 1, mts, &
count);
548 hr = IEnumMediaTypes_Reset(enum1);
551 hr = IEnumMediaTypes_Next(enum1, 2, mts, &
count);
557 hr = IEnumMediaTypes_Reset(enum1);
560 hr = IEnumMediaTypes_Clone(enum1, &enum2);
563 hr = IEnumMediaTypes_Skip(enum1, 2);
566 hr = IEnumMediaTypes_Skip(enum1, 1);
569 hr = IEnumMediaTypes_Reset(enum1);
572 hr = IEnumMediaTypes_Skip(enum1, 1);
575 hr = IEnumMediaTypes_Skip(enum1, 1);
578 hr = IEnumMediaTypes_Next(enum1, 1, mts,
NULL);
581 hr = IEnumMediaTypes_Next(enum2, 1, mts,
NULL);
586 IEnumMediaTypes_Release(enum1);
587 IEnumMediaTypes_Release(enum2);
591 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
610 return &
filter->source.pin;
631 ok(!
IsEqualGUID(iid, &IID_IQualityControl),
"Unexpected query for IQualityControl.\n");
680 ok(0,
"Unexpected call.\n");
686 ok(0,
"Unexpected call.\n");
698 ok(0,
"Unexpected call.\n");
710 ok(0,
"Unexpected call.\n");
716 ok(0,
"Unexpected call.\n");
722 ok(0,
"Unexpected call.\n");
741 ok(0,
"Unexpected call.\n");
748 ok(0,
"Unexpected call.\n");
754 ok(0,
"Unexpected call.\n");
760 ok(0,
"Unexpected call.\n");
766 ok(0,
"Unexpected call.\n");
778 ok(0,
"Unexpected call.\n");
820 hr = IMemInputPin_GetAllocatorRequirements(
input, &
props);
823 hr = IMemInputPin_GetAllocator(
input, &ret_allocator);
828 hr = IMemAllocator_GetProperties(ret_allocator, &
props);
830 ok(!
props.cBuffers,
"Got %ld buffers.\n",
props.cBuffers);
832 ok(!
props.cbAlign,
"Got alignment %ld.\n",
props.cbAlign);
833 ok(!
props.cbPrefix,
"Got prefix %ld.\n",
props.cbPrefix);
835 hr = IMemInputPin_NotifyAllocator(
input, ret_allocator,
TRUE);
837 IMemAllocator_Release(ret_allocator);
844 &IID_IMemAllocator, (
void **)&req_allocator);
846 hr = IMemInputPin_NotifyAllocator(
input, req_allocator,
TRUE);
849 hr = IMemInputPin_GetAllocator(
input, &ret_allocator);
851 ok(ret_allocator == req_allocator,
"Allocators didn't match.\n");
853 IMemAllocator_Release(req_allocator);
854 IMemAllocator_Release(ret_allocator);
871 IMediaSample_Release(
params->sample);
881 unsigned short *words;
897 words = (
unsigned short *)
data;
898 for (
i = 0;
i < 44100 * 2;
i += 2)
899 words[
i] = words[
i+1] =
sinf(
i / 20.0f) * 0x7fff;
901 hr = IMediaSample_SetActualDataLength(
sample, 44100 * 4);
905 end_time = start_time + 10000000;
906 hr = IMediaSample_SetTime(
sample, &start_time, &end_time);
985 hr = IMediaSeeking_GetCurrentPosition(seeking, &
time);
986 ok(
hr == 0xdeadbeef,
"Got hr %#lx.\n",
hr);
1016 OAFilterState
state;
1028 hr = IPin_BeginFlush(pin);
1034 hr = IPin_EndFlush(pin);
1043 hr = IPin_BeginFlush(pin);
1049 hr = IPin_EndFlush(pin);
1062 unsigned int ret = 0;
1066 while ((
hr = IMediaEvent_GetEvent(eventsrc, &
code, ¶m1, ¶m2,
timeout)) ==
S_OK)
1070 ok(param1 ==
S_OK,
"Got param1 %#Ix.\n", param1);
1071 ok(!param2,
"Got param2 %#Ix.\n", param2);
1074 IMediaEvent_FreeEventParams(eventsrc,
code, param1, param2);
1084 IMediaEvent *eventsrc;
1085 OAFilterState
state;
1090 IMediaControl_QueryInterface(
control, &IID_IMediaEvent, (
void **)&eventsrc);
1095 ok(!
ret,
"Got unexpected EC_COMPLETE.\n");
1097 hr = IPin_EndOfStream(pin);
1103 ok(!
ret,
"Got unexpected EC_COMPLETE.\n");
1111 ok(
ret == 1,
"Expected EC_COMPLETE.\n");
1116 ok(!
ret,
"Got unexpected EC_COMPLETE.\n");
1130 ok(!
ret,
"Got unexpected EC_COMPLETE.\n");
1132 hr = IPin_EndOfStream(pin);
1139 hr = IMediaSeeking_GetCurrentPosition(seeking, &
time);
1140 ok(
hr == 0xdeadbeef,
"Got hr %#lx.\n",
hr);
1145 ok(!
ret,
"Got unexpected EC_COMPLETE.\n");
1154 hr = IPin_BeginFlush(pin);
1156 hr = IPin_EndOfStream(pin);
1158 hr = IPin_EndFlush(pin);
1177 ok(!
ret,
"Got unexpected EC_COMPLETE.\n");
1179 hr = IPin_EndOfStream(pin);
1184 hr = IPin_BeginFlush(pin);
1186 hr = IPin_EndFlush(pin);
1191 hr = IPin_EndOfStream(pin);
1194 ok(!
ret,
"Got unexpected EC_COMPLETE.\n");
1199 ok(!
ret,
"Got unexpected EC_COMPLETE.\n");
1201 IMediaEvent_Release(eventsrc);
1211 .nSamplesPerSec = 44100,
1212 .nAvgBytesPerSec = 44100 * 4,
1214 .wBitsPerSample = 16,
1218 .majortype = MEDIATYPE_Audio,
1219 .subtype = MEDIASUBTYPE_PCM,
1220 .formattype = FORMAT_WaveFormatEx,
1221 .cbFormat =
sizeof(wfx),
1222 .pbFormat = (
BYTE *)&wfx,
1239 IFilterGraph2_AddFilter(
graph, &
source.filter.IBaseFilter_iface,
L"source");
1241 IFilterGraph2_QueryInterface(
graph, &IID_IMediaControl, (
void **)&
control);
1244 IBaseFilter_QueryInterface(
filter, &IID_IMediaSeeking, (
void **)&seeking);
1246 peer = (
IPin *)0xdeadbeef;
1247 hr = IPin_ConnectedTo(pin, &peer);
1249 ok(!peer,
"Got peer %p.\n", peer);
1251 hr = IPin_ConnectionMediaType(pin, &
mt);
1256 hr = IFilterGraph2_ConnectDirect(
graph, &
source.source.pin.IPin_iface, pin, &req_mt);
1261 hr = IFilterGraph2_ConnectDirect(
graph, &
source.source.pin.IPin_iface, pin, &req_mt);
1264 hr = IPin_ConnectedTo(pin, &peer);
1266 ok(peer == &
source.source.pin.IPin_iface,
"Got peer %p.\n", peer);
1269 hr = IPin_ConnectionMediaType(pin, &
mt);
1275 hr = IFilterGraph2_Disconnect(
graph, pin);
1280 IPin_QueryInterface(pin, &IID_IMemInputPin, (
void **)&
input);
1285 &IID_IMemAllocator, (
void **)&
allocator);
1287 hr = IMemAllocator_SetProperties(
allocator, &req_props, &ret_props);
1289 ok(!
memcmp(&ret_props, &req_props,
sizeof(req_props)),
"Properties did not match.\n");
1295 hr = IMemInputPin_ReceiveCanBlock(
input);
1302 hr = IFilterGraph2_Disconnect(
graph, pin);
1304 hr = IFilterGraph2_Disconnect(
graph, pin);
1306 ok(
source.source.pin.peer == pin,
"Got peer %p.\n",
source.source.pin.peer);
1307 IFilterGraph2_Disconnect(
graph, &
source.source.pin.IPin_iface);
1309 peer = (
IPin *)0xdeadbeef;
1310 hr = IPin_ConnectedTo(pin, &peer);
1312 ok(!peer,
"Got peer %p.\n", peer);
1314 hr = IPin_ConnectionMediaType(pin, &
mt);
1318 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1319 IMemInputPin_Release(
input);
1321 IMediaControl_Release(
control);
1322 ref = IFilterGraph2_Release(
graph);
1323 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1324 IMediaSeeking_Release(seeking);
1326 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1327 ref = IBaseFilter_Release(&
source.filter.IBaseFilter_iface);
1328 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1385 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1393 .dwBufferBytes =
format->nAvgBytesPerSec,
1396 IDirectSoundBuffer *
buffer;
1397 IDirectSound *dsound;
1423 static const DWORD sample_rates[] = {8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 96000};
1441 hr = IPin_EnumMediaTypes(pin, &enummt);
1444 hr = IEnumMediaTypes_Next(enummt, 1, &
mt,
NULL);
1450 ok(
mt->bFixedSizeSamples ==
TRUE,
"Got fixed size %d.\n",
mt->bFixedSizeSamples);
1451 ok(!
mt->bTemporalCompression,
"Got temporal compression %d.\n",
mt->bTemporalCompression);
1452 ok(
mt->lSampleSize == 1,
"Got sample size %lu.\n",
mt->lSampleSize);
1454 ok(!
mt->pUnk,
"Got pUnk %p.\n",
mt->pUnk);
1455 ok(!
mt->cbFormat,
"Got format size %lu.\n",
mt->cbFormat);
1456 ok(!
mt->pbFormat,
"Got unexpected format block.\n");
1458 hr = IPin_QueryAccept(pin,
mt);
1464 hr = IEnumMediaTypes_Next(enummt, 1, &
mt,
NULL);
1467 req_mt.majortype = MEDIATYPE_Audio;
1468 req_mt.formattype = FORMAT_WaveFormatEx;
1470 req_mt.pbFormat = (
BYTE *)&wfx;
1472 IEnumMediaTypes_Release(enummt);
1490 hr = IPin_QueryAccept(pin, &req_mt);
1491 ok(
hr ==
expect_hr,
"Expected hr %#lx, got %#lx, for %d channels, %d-bit %s, %ld Hz.\n",
1500 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1508 IMediaEvent *eventsrc;
1516 hr = IFilterGraph2_QueryInterface(
graph, &IID_IMediaControl, (
void **)&
control);
1519 hr = IFilterGraph2_QueryInterface(
graph, &IID_IMediaEvent, (
void **)&eventsrc);
1523 ok(!
ret,
"Got %u EC_COMPLETE events.\n",
ret);
1529 ok(!
ret,
"Got %u EC_COMPLETE events.\n",
ret);
1535 ok(
ret == 1,
"Got %u EC_COMPLETE events.\n",
ret);
1541 ok(!
ret,
"Got %u EC_COMPLETE events.\n",
ret);
1547 ok(
ret == 1,
"Got %u EC_COMPLETE events.\n",
ret);
1553 ok(!
ret,
"Got %u EC_COMPLETE events.\n",
ret);
1559 ok(
ret == 1,
"Got %u EC_COMPLETE events.\n",
ret);
1561 IMediaControl_Release(
control);
1562 IMediaEvent_Release(eventsrc);
1563 ref = IFilterGraph2_Release(
graph);
1564 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1566 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1580 skip(
"No audio hardware.\n");
1585 IBaseFilter_Release(
filter);
#define InterlockedIncrement
#define InterlockedDecrement
enum _PinDirection PIN_DIRECTION
const GUID IID_IKsPropertySet
const GUID IID_IBaseFilter
const GUID IID_IAsyncReader
HRESULT WINAPI DirectSoundCreate(LPCGUID lpcGUID, LPDIRECTSOUND *ppDS, IUnknown *pUnkOuter)
static const struct pixel_format_desc formats[]
static struct dsound_render * impl_from_strmbase_filter(struct strmbase_filter *iface)
INT WINAPI StringFromGUID2(REFGUID guid, LPOLESTR str, INT cmax)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
void WINAPI CoTaskMemFree(void *ptr)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
BOOL WINAPI GetExitCodeThread(IN HANDLE hThread, OUT LPDWORD lpExitCode)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP float __cdecl sinf(float)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
struct _DSBUFFERDESC DSBUFFERDESC
#define IDirectSound_Release(p)
#define IDirectSound_CreateSoundBuffer(p, a, b, c)
#define IDirectSoundBuffer_Release(p)
GLint GLint GLsizei GLsizei GLsizei depth
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLboolean GLboolean GLboolean b
GLenum const GLfloat * params
GLsizei GLenum GLboolean sink
GLboolean GLboolean GLboolean GLboolean a
GLenum GLenum GLenum input
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define todo_wine_if(is_todo)
#define WAVE_FORMAT_IEEE_FLOAT
struct task_struct * current
D3D11_SHADER_VARIABLE_DESC desc
static void test_property_bag(void)
static IBaseFilter * create_dsound_render(void)
static HRESULT WINAPI testsource_DecideAllocator(struct strmbase_source *iface, IMemInputPin *peer, IMemAllocator **allocator)
static HRESULT WINAPI testseek_CheckCapabilities(IMediaSeeking *iface, DWORD *caps)
static BOOL compare_media_types(const AM_MEDIA_TYPE *a, const AM_MEDIA_TYPE *b)
static void testfilter_destroy(struct strmbase_filter *iface)
static const IUnknownVtbl outer_vtbl
static ULONG WINAPI testseek_Release(IMediaSeeking *iface)
static HRESULT send_frame(IMemInputPin *sink)
static ULONG WINAPI testseek_AddRef(IMediaSeeking *iface)
static HRESULT WINAPI testseek_QueryInterface(IMediaSeeking *iface, REFIID iid, void **out)
static HRESULT WINAPI testseek_GetStopPosition(IMediaSeeking *iface, LONGLONG *stop)
static void test_aggregation(void)
static void test_eos(IPin *pin, IMemInputPin *input, IMediaSeeking *seeking, IMediaControl *control)
static void test_basic_audio(void)
static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported)
static ULONG WINAPI outer_AddRef(IUnknown *iface)
static HRESULT WINAPI outer_QueryInterface(IUnknown *iface, REFIID iid, void **out)
static HRESULT WINAPI testseek_IsFormatSupported(IMediaSeeking *iface, const GUID *format)
static ULONG get_refcount(void *iface)
static HRESULT WINAPI testseek_SetRate(IMediaSeeking *iface, double rate)
static ULONG WINAPI property_bag_Release(IPropertyBag *iface)
static void test_pin_info(void)
static const IMediaSeekingVtbl testseek_vtbl
static struct testfilter * impl_from_IMediaSeeking(IMediaSeeking *iface)
static HRESULT testsource_query_interface(struct strmbase_pin *iface, REFIID iid, void **out)
static IUnknown test_outer
static HRESULT WINAPI property_bag_Read(IPropertyBag *iface, const WCHAR *name, VARIANT *var, IErrorLog *log)
static void test_find_pin(void)
static ULONG WINAPI property_bag_AddRef(IPropertyBag *iface)
static void test_flushing(IPin *pin, IMemInputPin *input, IMediaControl *control)
static const struct strmbase_source_ops testsource_ops
static HRESULT WINAPI testseek_GetDuration(IMediaSeeking *iface, LONGLONG *duration)
static void test_enum_media_types(void)
static void test_interfaces(void)
static void test_connect_pin(void)
static DWORD WINAPI frame_thread(void *arg)
static void test_media_types(void)
static HRESULT WINAPI testseek_SetPositions(IMediaSeeking *iface, LONGLONG *current, DWORD current_flags, LONGLONG *stop, DWORD stop_flags)
static HRESULT WINAPI testseek_ConvertTimeFormat(IMediaSeeking *iface, LONGLONG *target, const GUID *target_format, LONGLONG source, const GUID *source_format)
static HRESULT WINAPI testseek_IsUsingTimeFormat(IMediaSeeking *iface, const GUID *format)
static struct strmbase_pin * testfilter_get_pin(struct strmbase_filter *iface, unsigned int index)
static void test_allocator(IMemInputPin *input)
static void test_enum_pins(void)
static IFilterGraph2 * create_graph(void)
static HRESULT WINAPI property_bag_QueryInterface(IPropertyBag *iface, REFIID iid, void **out)
static HRESULT WINAPI testseek_QueryPreferredFormat(IMediaSeeking *iface, GUID *format)
static HRESULT WINAPI testseek_GetCapabilities(IMediaSeeking *iface, DWORD *caps)
static HRESULT WINAPI property_bag_Write(IPropertyBag *iface, const WCHAR *name, VARIANT *var)
static HRESULT WINAPI testseek_GetAvailable(IMediaSeeking *iface, LONGLONG *earliest, LONGLONG *latest)
static void test_unconnected_eos(void)
static unsigned int check_ec_complete(IMediaEvent *eventsrc, DWORD timeout)
#define check_interface(a, b, c)
static HRESULT WINAPI testseek_GetCurrentPosition(IMediaSeeking *iface, LONGLONG *current)
static HRESULT WINAPI testseek_SetTimeFormat(IMediaSeeking *iface, const GUID *format)
static HRESULT WINAPI testseek_GetTimeFormat(IMediaSeeking *iface, GUID *format)
static HRESULT does_dsound_support_format(WAVEFORMATEX *format)
static HRESULT WINAPI testseek_GetPreroll(IMediaSeeking *iface, LONGLONG *preroll)
static const WCHAR sink_id[]
static HRESULT WINAPI testseek_GetRate(IMediaSeeking *iface, double *rate)
static const IPropertyBagVtbl property_bag_vtbl
static const struct strmbase_filter_ops testfilter_ops
static void test_unconnected_filter_state(void)
static HRESULT WINAPI testseek_GetPositions(IMediaSeeking *iface, LONGLONG *current, LONGLONG *stop)
static const GUID test_iid
static void testfilter_init(struct testfilter *filter)
static ULONG WINAPI outer_Release(IUnknown *iface)
static void test_filter_state(void)
#define expect_hr(expected, got)
BSTR WINAPI SysAllocString(LPCOLESTR str)
const GUID IID_IPersistPropertyBag
#define IsEqualGUID(rguid1, rguid2)
#define offsetof(TYPE, MEMBER)
static __inline const char * wine_dbgstr_guid(const GUID *id)
void strmbase_source_init(struct strmbase_source *pin, struct strmbase_filter *filter, const WCHAR *name, const struct strmbase_source_ops *func_table)
void strmbase_filter_cleanup(struct strmbase_filter *filter)
void strmbase_source_cleanup(struct strmbase_source *pin)
void strmbase_filter_init(struct strmbase_filter *filter, IUnknown *outer, const CLSID *clsid, const struct strmbase_filter_ops *func_table)
HRESULT WINAPI BaseOutputPinImpl_AttemptConnection(struct strmbase_source *pin, IPin *peer, const AM_MEDIA_TYPE *mt)
IMediaSeeking IMediaSeeking_iface
struct strmbase_filter * filter
IMediaSeeking IMediaSeeking_iface
struct strmbase_filter filter
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
#define CONTAINING_RECORD(address, type, field)
#define VFW_E_MONO_AUDIO_HW
#define VFW_E_SAMPLE_REJECTED_EOS
#define VFW_E_NOT_STOPPED
#define VFW_E_WRONG_STATE
#define VFW_S_STATE_INTERMEDIATE
#define VFW_E_NO_AUDIO_HARDWARE
#define VFW_E_NOT_CONNECTED
static const WCHAR props[]
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
DWORD WINAPI GetCurrentThreadId(void)