quartz: Check for IMediaPosition when counting renderers.

The new test failures are expected since the renderers are now actually
considered renderers by the filter graph.

Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Anton Baskanov 2021-05-24 14:33:07 +07:00 committed by Alexandre Julliard
parent 926a5c778e
commit 2ad44002da
4 changed files with 17 additions and 10 deletions

View File

@ -565,6 +565,7 @@ static void update_seeking(struct filter *filter)
static BOOL is_renderer(struct filter *filter)
{
IMediaPosition *media_position;
IAMFilterMiscFlags *flags;
BOOL ret = FALSE;
@ -574,6 +575,12 @@ static BOOL is_renderer(struct filter *filter)
ret = TRUE;
IAMFilterMiscFlags_Release(flags);
}
else if (SUCCEEDED(IBaseFilter_QueryInterface(filter->filter, &IID_IMediaPosition, (void **)&media_position)))
{
if (!has_output_pins(filter->filter))
ret = TRUE;
IMediaPosition_Release(media_position);
}
else
{
update_seeking(filter);

View File

@ -920,7 +920,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control)
hr = IMediaControl_GetState(control, 1000, &state);
ok(hr == S_OK, "Got hr %#x.\n", hr);
ret = check_ec_complete(eventsrc, 0);
ok(!ret, "Got unexpected EC_COMPLETE.\n");
todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n");
hr = send_frame(input);
todo_wine ok(hr == VFW_E_SAMPLE_REJECTED_EOS, "Got hr %#x.\n", hr);
@ -952,7 +952,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control)
hr = IPin_EndOfStream(pin);
ok(hr == S_OK, "Got hr %#x.\n", hr);
ret = check_ec_complete(eventsrc, 0);
ok(!ret, "Got unexpected EC_COMPLETE.\n");
todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n");
ret = check_ec_complete(eventsrc, 2000);
todo_wine ok(ret == 1, "Expected EC_COMPLETE.\n");
@ -978,7 +978,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control)
hr = IMediaControl_Stop(control);
ok(hr == S_OK, "Got hr %#x.\n", hr);
ret = check_ec_complete(eventsrc, 0);
ok(!ret, "Got unexpected EC_COMPLETE.\n");
todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n");
/* Test sending EOS and then flushing or stopping. */
@ -996,7 +996,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control)
hr = IPin_EndOfStream(pin);
ok(hr == S_OK, "Got hr %#x.\n", hr);
ret = check_ec_complete(eventsrc, 0);
ok(!ret, "Got unexpected EC_COMPLETE.\n");
todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n");
hr = IPin_BeginFlush(pin);
ok(hr == S_OK, "Got hr %#x.\n", hr);

View File

@ -4154,7 +4154,7 @@ static void test_ec_complete(void)
IFilterGraph2_AddFilter(graph, &filter1.IBaseFilter_iface, NULL);
hr = check_ec_complete(graph, &filter1.IBaseFilter_iface);
todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
ok(hr == S_OK, "Got hr %#x.\n", hr);
IFilterGraph2_RemoveFilter(graph, &filter1.IBaseFilter_iface);
@ -4174,7 +4174,7 @@ static void test_ec_complete(void)
IFilterGraph2_AddFilter(graph, &filter1.IBaseFilter_iface, NULL);
hr = check_ec_complete(graph, &filter1.IBaseFilter_iface);
todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
ok(hr == S_OK, "Got hr %#x.\n", hr);
IMediaControl_Release(control);
IMediaEvent_Release(eventsrc);

View File

@ -1143,7 +1143,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control)
hr = IMediaControl_GetState(control, 1000, &state);
ok(hr == S_OK, "Got hr %#x.\n", hr);
ret = check_ec_complete(eventsrc, 0);
ok(!ret, "Got unexpected EC_COMPLETE.\n");
todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n");
hr = join_thread(send_frame(input));
todo_wine ok(hr == E_UNEXPECTED, "Got hr %#x.\n", hr);
@ -1173,7 +1173,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control)
hr = IPin_EndOfStream(pin);
ok(hr == S_OK, "Got hr %#x.\n", hr);
ret = check_ec_complete(eventsrc, 0);
ok(!ret, "Got unexpected EC_COMPLETE.\n");
todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n");
ret = check_ec_complete(eventsrc, 1600);
todo_wine ok(ret == 1, "Expected EC_COMPLETE.\n");
@ -1199,7 +1199,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control)
hr = IMediaControl_Stop(control);
ok(hr == S_OK, "Got hr %#x.\n", hr);
ret = check_ec_complete(eventsrc, 0);
ok(!ret, "Got unexpected EC_COMPLETE.\n");
todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n");
/* Test sending EOS and then flushing or stopping. */
@ -1213,7 +1213,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control)
hr = IPin_EndOfStream(pin);
ok(hr == S_OK, "Got hr %#x.\n", hr);
ret = check_ec_complete(eventsrc, 0);
ok(!ret, "Got unexpected EC_COMPLETE.\n");
todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n");
hr = IPin_BeginFlush(pin);
ok(hr == S_OK, "Got hr %#x.\n", hr);