evr/mixer: Implement GetAvailableVideoProcessorModes().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
91d6e8b4ab
commit
0289b9c23a
|
@ -1930,9 +1930,27 @@ static ULONG WINAPI video_mixer_processor_Release(IMFVideoProcessor *iface)
|
||||||
static HRESULT WINAPI video_mixer_processor_GetAvailableVideoProcessorModes(IMFVideoProcessor *iface, UINT *count,
|
static HRESULT WINAPI video_mixer_processor_GetAvailableVideoProcessorModes(IMFVideoProcessor *iface, UINT *count,
|
||||||
GUID **modes)
|
GUID **modes)
|
||||||
{
|
{
|
||||||
FIXME("%p, %p, %p.\n", iface, count, modes);
|
struct video_mixer *mixer = impl_from_IMFVideoProcessor(iface);
|
||||||
|
IDirectXVideoProcessorService *service;
|
||||||
|
DXVA2_VideoDesc video_desc;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
return E_NOTIMPL;
|
TRACE("%p, %p, %p.\n", iface, count, modes);
|
||||||
|
|
||||||
|
EnterCriticalSection(&mixer->cs);
|
||||||
|
|
||||||
|
if (!mixer->inputs[0].media_type || !mixer->output.media_type)
|
||||||
|
hr = MF_E_TRANSFORM_TYPE_NOT_SET;
|
||||||
|
else if (SUCCEEDED(hr = video_mixer_get_processor_service(mixer, &service)))
|
||||||
|
{
|
||||||
|
video_mixer_init_dxva_videodesc(mixer->inputs[0].media_type, &video_desc);
|
||||||
|
hr = IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids(service, &video_desc, count, modes);
|
||||||
|
IDirectXVideoProcessorService_Release(service);
|
||||||
|
}
|
||||||
|
|
||||||
|
LeaveCriticalSection(&mixer->cs);
|
||||||
|
|
||||||
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI video_mixer_processor_GetVideoProcessorCaps(IMFVideoProcessor *iface, GUID *mode,
|
static HRESULT WINAPI video_mixer_processor_GetVideoProcessorCaps(IMFVideoProcessor *iface, GUID *mode,
|
||||||
|
|
|
@ -654,7 +654,6 @@ static void test_default_mixer(void)
|
||||||
ok(hr == MF_E_TRANSFORM_TYPE_NOT_SET, "Unexpected hr %#lx.\n", hr);
|
ok(hr == MF_E_TRANSFORM_TYPE_NOT_SET, "Unexpected hr %#lx.\n", hr);
|
||||||
|
|
||||||
hr = IMFVideoProcessor_GetAvailableVideoProcessorModes(processor, &count, &guids);
|
hr = IMFVideoProcessor_GetAvailableVideoProcessorModes(processor, &count, &guids);
|
||||||
todo_wine
|
|
||||||
ok(hr == MF_E_TRANSFORM_TYPE_NOT_SET, "Unexpected hr %#lx.\n", hr);
|
ok(hr == MF_E_TRANSFORM_TYPE_NOT_SET, "Unexpected hr %#lx.\n", hr);
|
||||||
|
|
||||||
IMFVideoProcessor_Release(processor);
|
IMFVideoProcessor_Release(processor);
|
||||||
|
@ -1071,6 +1070,9 @@ static void test_default_mixer_type_negotiation(void)
|
||||||
hr = MFCreateVideoMixer(NULL, &IID_IDirect3DDevice9, &IID_IMFTransform, (void **)&transform);
|
hr = MFCreateVideoMixer(NULL, &IID_IDirect3DDevice9, &IID_IMFTransform, (void **)&transform);
|
||||||
ok(hr == S_OK, "Failed to create default mixer, hr %#lx.\n", hr);
|
ok(hr == S_OK, "Failed to create default mixer, hr %#lx.\n", hr);
|
||||||
|
|
||||||
|
hr = IMFTransform_QueryInterface(transform, &IID_IMFVideoProcessor, (void **)&processor);
|
||||||
|
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||||
|
|
||||||
hr = IMFTransform_GetInputAvailableType(transform, 0, 0, &media_type);
|
hr = IMFTransform_GetInputAvailableType(transform, 0, 0, &media_type);
|
||||||
ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr);
|
ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr);
|
||||||
|
|
||||||
|
@ -1095,6 +1097,9 @@ static void test_default_mixer_type_negotiation(void)
|
||||||
hr = IMFTransform_SetInputType(transform, 0, media_type, MFT_SET_TYPE_TEST_ONLY);
|
hr = IMFTransform_SetInputType(transform, 0, media_type, MFT_SET_TYPE_TEST_ONLY);
|
||||||
ok(hr == MF_E_NOT_INITIALIZED, "Unexpected hr %#lx.\n", hr);
|
ok(hr == MF_E_NOT_INITIALIZED, "Unexpected hr %#lx.\n", hr);
|
||||||
|
|
||||||
|
hr = IMFVideoProcessor_GetAvailableVideoProcessorModes(processor, &count, &guids);
|
||||||
|
ok(hr == MF_E_TRANSFORM_TYPE_NOT_SET, "Unexpected hr %#lx.\n", hr);
|
||||||
|
|
||||||
/* Now try with device manager. */
|
/* Now try with device manager. */
|
||||||
|
|
||||||
window = create_window();
|
window = create_window();
|
||||||
|
@ -1282,9 +1287,6 @@ static void test_default_mixer_type_negotiation(void)
|
||||||
IMFMediaType_Release(media_type2);
|
IMFMediaType_Release(media_type2);
|
||||||
IMFMediaType_Release(media_type);
|
IMFMediaType_Release(media_type);
|
||||||
|
|
||||||
hr = IMFTransform_QueryInterface(transform, &IID_IMFVideoProcessor, (void **)&processor);
|
|
||||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
|
||||||
|
|
||||||
hr = IMFVideoProcessor_GetVideoProcessorMode(processor, &guid);
|
hr = IMFVideoProcessor_GetVideoProcessorMode(processor, &guid);
|
||||||
todo_wine
|
todo_wine
|
||||||
ok(hr == MF_E_TRANSFORM_TYPE_NOT_SET, "Unexpected hr %#lx.\n", hr);
|
ok(hr == MF_E_TRANSFORM_TYPE_NOT_SET, "Unexpected hr %#lx.\n", hr);
|
||||||
|
@ -1302,7 +1304,6 @@ static void test_default_mixer_type_negotiation(void)
|
||||||
IMFMediaType_Release(media_type);
|
IMFMediaType_Release(media_type);
|
||||||
|
|
||||||
hr = IMFVideoProcessor_GetAvailableVideoProcessorModes(processor, &count, &guids);
|
hr = IMFVideoProcessor_GetAvailableVideoProcessorModes(processor, &count, &guids);
|
||||||
todo_wine
|
|
||||||
ok(hr == MF_E_TRANSFORM_TYPE_NOT_SET, "Unexpected hr %#lx.\n", hr);
|
ok(hr == MF_E_TRANSFORM_TYPE_NOT_SET, "Unexpected hr %#lx.\n", hr);
|
||||||
|
|
||||||
hr = IMFTransform_GetOutputAvailableType(transform, 0, 0, &media_type);
|
hr = IMFTransform_GetOutputAvailableType(transform, 0, 0, &media_type);
|
||||||
|
@ -1319,10 +1320,9 @@ static void test_default_mixer_type_negotiation(void)
|
||||||
ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
|
ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
|
||||||
|
|
||||||
hr = IMFVideoProcessor_GetAvailableVideoProcessorModes(processor, &count, &guids);
|
hr = IMFVideoProcessor_GetAvailableVideoProcessorModes(processor, &count, &guids);
|
||||||
todo_wine
|
|
||||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||||
if (SUCCEEDED(hr))
|
ok(count > 0 && !!guids, "Unexpected modes data.\n");
|
||||||
CoTaskMemFree(guids);
|
CoTaskMemFree(guids);
|
||||||
|
|
||||||
hr = IMFTransform_GetOutputCurrentType(transform, 0, &media_type2);
|
hr = IMFTransform_GetOutputCurrentType(transform, 0, &media_type2);
|
||||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||||
|
|
Loading…
Reference in New Issue