1
0
Fork 0
mirror of synced 2025-03-07 03:53:26 +01:00

mfplat/mediatype: Implement MF_MT_FRAME_RATE from VIDEOINFOHEADER2.

Native seems to also treat some frame rate specially, matching a wide
range of time per frame into the same predefined frame rates.
This commit is contained in:
Rémi Bernon 2024-02-17 15:32:11 +01:00 committed by Alexandre Julliard
parent aa385765a1
commit 5a34601606
2 changed files with 7 additions and 4 deletions

View file

@ -3808,6 +3808,13 @@ HRESULT WINAPI MFInitMediaTypeFromVideoInfoHeader2(IMFMediaType *media_type, con
mediatype_set_blob(media_type, &MF_MT_MINIMUM_DISPLAY_APERTURE, (BYTE *)&aperture, sizeof(aperture), &hr);
}
if (SUCCEEDED(hr) && vih->AvgTimePerFrame)
{
UINT32 num, den;
if (SUCCEEDED(hr = MFAverageTimePerFrameToFrameRate(vih->AvgTimePerFrame, &num, &den)))
mediatype_set_uint64(media_type, &MF_MT_FRAME_RATE, num, den, &hr);
}
return hr;
}

View file

@ -10058,9 +10058,7 @@ static void test_MFInitMediaTypeFromVideoInfoHeader(void)
hr = MFInitMediaTypeFromVideoInfoHeader(media_type, &vih, sizeof(vih), &GUID_NULL);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_RATE, &value64);
todo_wine
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
todo_wine
ok(value64 == ((UINT64)10000000 << 32 | 1151617), "Unexpected value %#I64x.\n", value64);
hr = IMFMediaType_GetUINT32(media_type, &MF_MT_FIXED_SIZE_SAMPLES, &value32);
@ -10311,9 +10309,7 @@ static void test_MFInitMediaTypeFromVideoInfoHeader2(void)
hr = MFInitMediaTypeFromVideoInfoHeader2(media_type, &vih, sizeof(vih), &GUID_NULL);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_RATE, &value64);
todo_wine
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
todo_wine
ok(value64 == ((UINT64)10000000 << 32 | 1151617), "Unexpected value %#I64x.\n", value64);
value32 = 0xdeadbeef;