mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-30 05:08:30 +00:00
mf/tests: Add additional tests for MESessionClosed event.
This commit is contained in:
parent
bb46d4a621
commit
af565ce846
|
@ -6249,6 +6249,8 @@ static void test_media_session_Start(void)
|
|||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
hr = IMFMediaSession_Close(session);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
hr = wait_media_event(session, callback, MESessionClosed, 1000, &propvar);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
|
||||
/* Media session is shut down */
|
||||
hr = IMFMediaSource_Shutdown(source);
|
||||
|
@ -6331,6 +6333,9 @@ static void test_media_session_Start(void)
|
|||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
hr = IMFMediaSession_Close(session);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
hr = wait_media_event(session, callback, MESessionClosed, 1000, &propvar);
|
||||
todo_wine
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
hr = IMFMediaSession_Shutdown(session);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
hr = IMFMediaSource_Shutdown(source);
|
||||
|
@ -6534,6 +6539,89 @@ static void test_MFEnumDeviceSources(void)
|
|||
CoUninitialize();
|
||||
}
|
||||
|
||||
static void test_media_session_Close(void)
|
||||
{
|
||||
media_type_desc video_rgb32_desc =
|
||||
{
|
||||
ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video),
|
||||
ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_RGB32),
|
||||
};
|
||||
struct test_grabber_callback *grabber_callback;
|
||||
IMFPresentationClock *presentation_clock;
|
||||
IMFActivate *sink_activate;
|
||||
IMFAsyncCallback *callback;
|
||||
IMFMediaType *output_type;
|
||||
IMFMediaSession *session;
|
||||
IMFMediaSource *source;
|
||||
IMFTopology *topology;
|
||||
PROPVARIANT propvar;
|
||||
IMFClock *clock;
|
||||
UINT64 duration;
|
||||
HRESULT hr;
|
||||
|
||||
hr = MFStartup(MF_VERSION, MFSTARTUP_FULL);
|
||||
ok(hr == S_OK, "Failed to start up, hr %#lx.\n", hr);
|
||||
|
||||
if (!(source = create_media_source(L"test.mp4", L"video/mp4")))
|
||||
{
|
||||
todo_wine /* Gitlab CI Debian runner */
|
||||
win_skip("MP4 media source is not supported, skipping tests.\n");
|
||||
MFShutdown();
|
||||
return;
|
||||
}
|
||||
|
||||
grabber_callback = impl_from_IMFSampleGrabberSinkCallback(create_test_grabber_callback());
|
||||
hr = MFCreateMediaType(&output_type);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
init_media_type(output_type, video_rgb32_desc, -1);
|
||||
hr = MFCreateSampleGrabberSinkActivate(output_type, &grabber_callback->IMFSampleGrabberSinkCallback_iface, &sink_activate);
|
||||
ok(hr == S_OK, "Failed to create grabber sink, hr %#lx.\n", hr);
|
||||
IMFMediaType_Release(output_type);
|
||||
|
||||
hr = MFCreateMediaSession(NULL, &session);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
|
||||
topology = create_test_topology(source, sink_activate, &duration);
|
||||
hr = IMFMediaSession_SetTopology(session, 0, topology);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
IMFTopology_Release(topology);
|
||||
|
||||
hr = IMFMediaSession_GetClock(session, &clock);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
hr = IMFClock_QueryInterface(clock, &IID_IMFPresentationClock, (void **)&presentation_clock);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
IMFClock_Release(clock);
|
||||
|
||||
propvar.vt = VT_EMPTY;
|
||||
hr = IMFMediaSession_Start(session, &GUID_NULL, &propvar);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
callback = create_test_callback(TRUE);
|
||||
hr = wait_media_event(session, callback, MESessionStarted, 5000, &propvar);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
|
||||
hr = IMFMediaSession_Close(session);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
hr = IMFMediaSource_Shutdown(source);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
hr = wait_media_event_until_blocking(session, callback, MESessionClosed, 5000, &propvar);
|
||||
todo_wine
|
||||
ok(hr == MF_E_SHUTDOWN, "Unexpected hr %#lx.\n", hr);
|
||||
|
||||
hr = IMFMediaSession_Shutdown(session);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
|
||||
IMFPresentationClock_Release(presentation_clock);
|
||||
IMFAsyncCallback_Release(callback);
|
||||
IMFMediaSession_Release(session);
|
||||
IMFActivate_ShutdownObject(sink_activate);
|
||||
IMFActivate_Release(sink_activate);
|
||||
IMFSampleGrabberSinkCallback_Release(&grabber_callback->IMFSampleGrabberSinkCallback_iface);
|
||||
IMFMediaSource_Release(source);
|
||||
|
||||
hr = MFShutdown();
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
}
|
||||
|
||||
START_TEST(mf)
|
||||
{
|
||||
init_functions();
|
||||
|
@ -6568,4 +6656,5 @@ START_TEST(mf)
|
|||
test_MFCreateSequencerSegmentOffset();
|
||||
test_media_session_Start();
|
||||
test_MFEnumDeviceSources();
|
||||
test_media_session_Close();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue