evr/presenter: Set MF_MT_MINIMUM_DISPLAY_APERTURE when configuring mixer output.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
0dbbe8da25
commit
e10e4795d2
|
@ -309,12 +309,25 @@ static HRESULT video_presenter_set_media_type(struct video_presenter *presenter,
|
|||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT video_presenter_configure_output_type(struct video_presenter *presenter, const MFVideoArea *aperture,
|
||||
IMFMediaType *media_type)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
hr = IMFMediaType_SetUINT64(media_type, &MF_MT_FRAME_SIZE, (UINT64)aperture->Area.cx << 32 | aperture->Area.cy);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = IMFMediaType_SetBlob(media_type, &MF_MT_GEOMETRIC_APERTURE, (UINT8 *)aperture, sizeof(*aperture));
|
||||
if (SUCCEEDED(hr))
|
||||
hr = IMFMediaType_SetBlob(media_type, &MF_MT_MINIMUM_DISPLAY_APERTURE, (UINT8 *)aperture, sizeof(*aperture));
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT video_presenter_invalidate_media_type(struct video_presenter *presenter)
|
||||
{
|
||||
IMFMediaType *media_type, *candidate_type;
|
||||
MFVideoArea aperture = {{ 0 }};
|
||||
unsigned int idx = 0;
|
||||
UINT64 frame_size;
|
||||
MFVideoArea aperture;
|
||||
RECT rect;
|
||||
HRESULT hr;
|
||||
|
||||
|
@ -332,11 +345,6 @@ static HRESULT video_presenter_invalidate_media_type(struct video_presenter *pre
|
|||
|
||||
aperture.Area.cx = rect.right - rect.left;
|
||||
aperture.Area.cy = rect.bottom - rect.top;
|
||||
aperture.OffsetX.value = 0;
|
||||
aperture.OffsetX.fract = 0;
|
||||
aperture.OffsetY.value = 0;
|
||||
aperture.OffsetY.fract = 0;
|
||||
frame_size = (UINT64)aperture.Area.cx << 32 | aperture.Area.cy;
|
||||
|
||||
while (SUCCEEDED(hr = IMFTransform_GetOutputAvailableType(presenter->mixer, 0, idx++, &candidate_type)))
|
||||
{
|
||||
|
@ -346,10 +354,10 @@ static HRESULT video_presenter_invalidate_media_type(struct video_presenter *pre
|
|||
WARN("Failed to clone a media type, hr %#x.\n", hr);
|
||||
IMFMediaType_Release(candidate_type);
|
||||
|
||||
IMFMediaType_SetUINT64(media_type, &MF_MT_FRAME_SIZE, frame_size);
|
||||
IMFMediaType_SetBlob(media_type, &MF_MT_GEOMETRIC_APERTURE, (UINT8 *)&aperture, sizeof(aperture));
|
||||
hr = video_presenter_configure_output_type(presenter, &aperture, media_type);
|
||||
|
||||
hr = IMFTransform_SetOutputType(presenter->mixer, 0, media_type, MFT_SET_TYPE_TEST_ONLY);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = IMFTransform_SetOutputType(presenter->mixer, 0, media_type, MFT_SET_TYPE_TEST_ONLY);
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
hr = video_presenter_set_media_type(presenter, media_type);
|
||||
|
|
Loading…
Reference in New Issue