quartz/tests: Pass an IMediaControl to some functions.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
6a1a8bdf35
commit
f35e5c4de2
|
@ -746,14 +746,11 @@ static HRESULT send_frame(IMemInputPin *sink)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void test_filter_state(IMemInputPin *input, IFilterGraph2 *graph)
|
||||
static void test_filter_state(IMemInputPin *input, IMediaControl *control)
|
||||
{
|
||||
IMediaControl *control;
|
||||
OAFilterState state;
|
||||
HRESULT hr;
|
||||
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
|
||||
hr = send_frame(input);
|
||||
ok(hr == VFW_E_WRONG_STATE, "Got hr %#x.\n", hr);
|
||||
|
||||
|
@ -833,8 +830,6 @@ static void test_filter_state(IMemInputPin *input, IFilterGraph2 *graph)
|
|||
/* The DirectSound renderer will silently refuse to transition to running
|
||||
* if it hasn't finished pausing yet. Once it does it reports itself as
|
||||
* completely paused. */
|
||||
|
||||
IMediaControl_Release(control);
|
||||
}
|
||||
|
||||
static void test_connect_pin(void)
|
||||
|
@ -860,6 +855,7 @@ static void test_connect_pin(void)
|
|||
IBaseFilter *filter = create_dsound_render();
|
||||
struct testfilter source;
|
||||
IMemAllocator *allocator;
|
||||
IMediaControl *control;
|
||||
IFilterGraph2 *graph;
|
||||
IMemInputPin *input;
|
||||
AM_MEDIA_TYPE mt;
|
||||
|
@ -872,6 +868,7 @@ static void test_connect_pin(void)
|
|||
CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, &IID_IFilterGraph2, (void **)&graph);
|
||||
IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, L"source");
|
||||
IFilterGraph2_AddFilter(graph, filter, L"sink");
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
|
||||
IBaseFilter_FindPin(filter, sink_id, &pin);
|
||||
|
||||
|
@ -913,7 +910,7 @@ static void test_connect_pin(void)
|
|||
hr = IMemInputPin_ReceiveCanBlock(input);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
test_filter_state(input, graph);
|
||||
test_filter_state(input, control);
|
||||
|
||||
hr = IFilterGraph2_Disconnect(graph, pin);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
@ -934,6 +931,7 @@ static void test_connect_pin(void)
|
|||
ok(!ref, "Got outstanding refcount %d.\n", ref);
|
||||
IMemInputPin_Release(input);
|
||||
IPin_Release(pin);
|
||||
IMediaControl_Release(control);
|
||||
ref = IFilterGraph2_Release(graph);
|
||||
ok(!ref, "Got outstanding refcount %d.\n", ref);
|
||||
ref = IBaseFilter_Release(filter);
|
||||
|
|
|
@ -823,17 +823,14 @@ static HRESULT join_thread_(int line, HANDLE thread)
|
|||
}
|
||||
#define join_thread(a) join_thread_(__LINE__, a)
|
||||
|
||||
static void test_filter_state(IMemInputPin *input, IFilterGraph2 *graph)
|
||||
static void test_filter_state(IMemInputPin *input, IMediaControl *control)
|
||||
{
|
||||
IMemAllocator *allocator;
|
||||
IMediaControl *control;
|
||||
IMediaSample *sample;
|
||||
OAFilterState state;
|
||||
HANDLE thread;
|
||||
HRESULT hr;
|
||||
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
|
||||
thread = send_frame(input);
|
||||
hr = join_thread(thread);
|
||||
todo_wine ok(hr == E_FAIL, "Got hr %#x.\n", hr);
|
||||
|
@ -961,18 +958,14 @@ static void test_filter_state(IMemInputPin *input, IFilterGraph2 *graph)
|
|||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
IMemAllocator_Release(allocator);
|
||||
IMediaControl_Release(control);
|
||||
}
|
||||
|
||||
static void test_flushing(IPin *pin, IMemInputPin *input, IFilterGraph2 *graph)
|
||||
static void test_flushing(IPin *pin, IMemInputPin *input, IMediaControl *control)
|
||||
{
|
||||
IMediaControl *control;
|
||||
OAFilterState state;
|
||||
HANDLE thread;
|
||||
HRESULT hr;
|
||||
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
|
||||
hr = IMediaControl_Pause(control);
|
||||
ok(hr == S_FALSE, "Got hr %#x.\n", hr);
|
||||
|
||||
|
@ -1022,20 +1015,16 @@ static void test_flushing(IPin *pin, IMemInputPin *input, IFilterGraph2 *graph)
|
|||
|
||||
hr = IMediaControl_Stop(control);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
IMediaControl_Release(control);
|
||||
}
|
||||
|
||||
static void test_sample_time(IBaseFilter *filter, IPin *pin, IMemInputPin *input, IFilterGraph2 *graph)
|
||||
static void test_sample_time(IBaseFilter *filter, IPin *pin, IMemInputPin *input, IMediaControl *control)
|
||||
{
|
||||
IMediaControl *control;
|
||||
IMediaSeeking *seeking;
|
||||
REFERENCE_TIME time;
|
||||
OAFilterState state;
|
||||
HANDLE thread;
|
||||
HRESULT hr;
|
||||
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
IBaseFilter_QueryInterface(filter, &IID_IMediaSeeking, (void **)&seeking);
|
||||
|
||||
hr = IMediaControl_Pause(control);
|
||||
|
@ -1108,7 +1097,6 @@ static void test_sample_time(IBaseFilter *filter, IPin *pin, IMemInputPin *input
|
|||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
IMediaSeeking_Release(seeking);
|
||||
IMediaControl_Release(control);
|
||||
}
|
||||
|
||||
static unsigned int check_ec_complete(IMediaEvent *eventsrc, DWORD timeout)
|
||||
|
@ -1134,16 +1122,14 @@ static unsigned int check_ec_complete(IMediaEvent *eventsrc, DWORD timeout)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void test_eos(IPin *pin, IMemInputPin *input, IFilterGraph2 *graph)
|
||||
static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control)
|
||||
{
|
||||
IMediaControl *control;
|
||||
IMediaEvent *eventsrc;
|
||||
OAFilterState state;
|
||||
HRESULT hr;
|
||||
BOOL ret;
|
||||
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaEvent, (void **)&eventsrc);
|
||||
IMediaControl_QueryInterface(control, &IID_IMediaEvent, (void **)&eventsrc);
|
||||
|
||||
hr = IMediaControl_Pause(control);
|
||||
ok(hr == S_FALSE, "Got hr %#x.\n", hr);
|
||||
|
@ -1246,15 +1232,13 @@ static void test_eos(IPin *pin, IMemInputPin *input, IFilterGraph2 *graph)
|
|||
ok(!ret, "Got unexpected EC_COMPLETE.\n");
|
||||
|
||||
IMediaEvent_Release(eventsrc);
|
||||
IMediaControl_Release(control);
|
||||
}
|
||||
|
||||
static void test_current_image(IBaseFilter *filter, IMemInputPin *input,
|
||||
IFilterGraph2 *graph, const BITMAPINFOHEADER *expect_bih)
|
||||
IMediaControl *control, const BITMAPINFOHEADER *expect_bih)
|
||||
{
|
||||
LONG buffer[(sizeof(BITMAPINFOHEADER) + 32 * 16 * 2) / 4];
|
||||
const BITMAPINFOHEADER *bih = (BITMAPINFOHEADER *)buffer;
|
||||
IMediaControl *control;
|
||||
OAFilterState state;
|
||||
IBasicVideo *video;
|
||||
unsigned int i;
|
||||
|
@ -1262,7 +1246,6 @@ static void test_current_image(IBaseFilter *filter, IMemInputPin *input,
|
|||
HRESULT hr;
|
||||
LONG size;
|
||||
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
IBaseFilter_QueryInterface(filter, &IID_IBasicVideo, (void **)&video);
|
||||
|
||||
hr = IBasicVideo_GetCurrentImage(video, NULL, NULL);
|
||||
|
@ -1321,7 +1304,6 @@ static void test_current_image(IBaseFilter *filter, IMemInputPin *input,
|
|||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
IBasicVideo_Release(video);
|
||||
IMediaControl_Release(control);
|
||||
}
|
||||
|
||||
static void test_connect_pin(void)
|
||||
|
@ -1347,6 +1329,7 @@ static void test_connect_pin(void)
|
|||
IFilterGraph2 *graph = create_graph();
|
||||
struct testfilter source;
|
||||
IMemAllocator *allocator;
|
||||
IMediaControl *control;
|
||||
IMemInputPin *input;
|
||||
AM_MEDIA_TYPE mt;
|
||||
IPin *pin, *peer;
|
||||
|
@ -1366,6 +1349,7 @@ static void test_connect_pin(void)
|
|||
|
||||
IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL);
|
||||
IFilterGraph2_AddFilter(graph, filter, NULL);
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
|
||||
IBaseFilter_FindPin(filter, L"In", &pin);
|
||||
|
||||
|
@ -1424,11 +1408,11 @@ static void test_connect_pin(void)
|
|||
hr = IMemInputPin_ReceiveCanBlock(input);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
test_filter_state(input, graph);
|
||||
test_flushing(pin, input, graph);
|
||||
test_sample_time(filter, pin, input, graph);
|
||||
test_eos(pin, input, graph);
|
||||
test_current_image(filter, input, graph, &vih.bmiHeader);
|
||||
test_filter_state(input, control);
|
||||
test_flushing(pin, input, control);
|
||||
test_sample_time(filter, pin, input, control);
|
||||
test_eos(pin, input, control);
|
||||
test_current_image(filter, input, control, &vih.bmiHeader);
|
||||
|
||||
hr = IFilterGraph2_Disconnect(graph, pin);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
@ -1449,6 +1433,7 @@ static void test_connect_pin(void)
|
|||
ok(!ref, "Got outstanding refcount %d.\n", ref);
|
||||
IMemInputPin_Release(input);
|
||||
IPin_Release(pin);
|
||||
IMediaControl_Release(control);
|
||||
ref = IFilterGraph2_Release(graph);
|
||||
ok(!ref, "Got outstanding refcount %d.\n", ref);
|
||||
ref = IBaseFilter_Release(filter);
|
||||
|
|
|
@ -1022,17 +1022,14 @@ static HRESULT join_thread_(int line, HANDLE thread)
|
|||
}
|
||||
#define join_thread(a) join_thread_(__LINE__, a)
|
||||
|
||||
static void test_filter_state(IMemInputPin *input, IFilterGraph2 *graph)
|
||||
static void test_filter_state(IMemInputPin *input, IMediaControl *control)
|
||||
{
|
||||
IMemAllocator *allocator;
|
||||
IMediaControl *control;
|
||||
IMediaSample *sample;
|
||||
OAFilterState state;
|
||||
HANDLE thread;
|
||||
HRESULT hr;
|
||||
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
|
||||
thread = send_frame(input);
|
||||
hr = join_thread(thread);
|
||||
ok(hr == VFW_E_WRONG_STATE, "Got hr %#x.\n", hr);
|
||||
|
@ -1163,19 +1160,15 @@ static void test_filter_state(IMemInputPin *input, IFilterGraph2 *graph)
|
|||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
IMemAllocator_Release(allocator);
|
||||
IMediaControl_Release(control);
|
||||
}
|
||||
|
||||
static void test_flushing(IPin *pin, IMemInputPin *input, IFilterGraph2 *graph)
|
||||
static void test_flushing(IPin *pin, IMemInputPin *input, IMediaControl *control)
|
||||
{
|
||||
IMemAllocator *allocator;
|
||||
IMediaControl *control;
|
||||
OAFilterState state;
|
||||
HANDLE thread;
|
||||
HRESULT hr;
|
||||
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
|
||||
hr = IMemInputPin_GetAllocator(input, &allocator);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
hr = IMemAllocator_Commit(allocator);
|
||||
|
@ -1233,19 +1226,16 @@ static void test_flushing(IPin *pin, IMemInputPin *input, IFilterGraph2 *graph)
|
|||
|
||||
hr = IMediaControl_Stop(control);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
IMediaControl_Release(control);
|
||||
}
|
||||
|
||||
static void test_current_image(IBaseFilter *filter, IMemInputPin *input,
|
||||
IFilterGraph2 *graph, const BITMAPINFOHEADER *req_bih)
|
||||
IMediaControl *control, const BITMAPINFOHEADER *req_bih)
|
||||
{
|
||||
LONG buffer[(sizeof(BITMAPINFOHEADER) + 32 * 16 * 4) / 4];
|
||||
const BITMAPINFOHEADER *bih = (BITMAPINFOHEADER *)buffer;
|
||||
const DWORD *data = (DWORD *)((char *)buffer + sizeof(BITMAPINFOHEADER));
|
||||
BITMAPINFOHEADER expect_bih = *req_bih;
|
||||
IMemAllocator *allocator;
|
||||
IMediaControl *control;
|
||||
OAFilterState state;
|
||||
IBasicVideo *video;
|
||||
unsigned int i;
|
||||
|
@ -1258,7 +1248,6 @@ static void test_current_image(IBaseFilter *filter, IMemInputPin *input,
|
|||
expect_bih.biBitCount = 32;
|
||||
expect_bih.biSizeImage = 32 * 16 * 4;
|
||||
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
IBaseFilter_QueryInterface(filter, &IID_IBasicVideo, (void **)&video);
|
||||
|
||||
hr = IBasicVideo_GetCurrentImage(video, NULL, NULL);
|
||||
|
@ -1337,7 +1326,6 @@ static void test_current_image(IBaseFilter *filter, IMemInputPin *input,
|
|||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
IBasicVideo_Release(video);
|
||||
IMediaControl_Release(control);
|
||||
}
|
||||
|
||||
static void test_connect_pin(void)
|
||||
|
@ -1363,6 +1351,7 @@ static void test_connect_pin(void)
|
|||
IFilterGraph2 *graph = create_graph();
|
||||
struct testfilter source;
|
||||
IMemAllocator *allocator;
|
||||
IMediaControl *control;
|
||||
IMemInputPin *input;
|
||||
AM_MEDIA_TYPE mt;
|
||||
IPin *pin, *peer;
|
||||
|
@ -1382,6 +1371,7 @@ static void test_connect_pin(void)
|
|||
|
||||
IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL);
|
||||
IFilterGraph2_AddFilter(graph, filter, NULL);
|
||||
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
|
||||
|
||||
IBaseFilter_FindPin(filter, L"VMR Input0", &pin);
|
||||
|
||||
|
@ -1469,9 +1459,9 @@ static void test_connect_pin(void)
|
|||
hr = IMemInputPin_ReceiveCanBlock(input);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
test_filter_state(input, graph);
|
||||
test_flushing(pin, input, graph);
|
||||
test_current_image(filter, input, graph, &vih.bmiHeader);
|
||||
test_filter_state(input, control);
|
||||
test_flushing(pin, input, control);
|
||||
test_current_image(filter, input, control, &vih.bmiHeader);
|
||||
|
||||
hr = IFilterGraph2_Disconnect(graph, pin);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
@ -1490,6 +1480,7 @@ static void test_connect_pin(void)
|
|||
|
||||
IMemInputPin_Release(input);
|
||||
IPin_Release(pin);
|
||||
IMediaControl_Release(control);
|
||||
ref = IFilterGraph2_Release(graph);
|
||||
ok(!ref, "Got outstanding refcount %d.\n", ref);
|
||||
ref = IBaseFilter_Release(filter);
|
||||
|
|
Loading…
Reference in New Issue