[PATCH v2 4/4] mf: Fix computing fastest and slowest rates for the media session.

Giovanni Mascellani gmascellani at codeweavers.com
Fri May 28 02:50:49 CDT 2021


Signed-off-by: Giovanni Mascellani <gmascellani at codeweavers.com>
---
 dlls/mf/session.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/dlls/mf/session.c b/dlls/mf/session.c
index 925a8c93d20..9aa886adee9 100644
--- a/dlls/mf/session.c
+++ b/dlls/mf/session.c
@@ -18,6 +18,7 @@
 
 #include <stdarg.h>
 #include <math.h>
+#include <float.h>
 
 #define COBJMACROS
 
@@ -3512,12 +3513,14 @@ static HRESULT session_presentation_object_get_rate(IUnknown *object, MFRATE_DIR
     if (fastest)
     {
         if (SUCCEEDED(hr = IMFRateSupport_GetFastestRate(rate_support, direction, thin, &rate)))
-            *result = min(fabsf(rate), *result);
+            if (fabsf(rate) < fabsf(*result))
+                *result = rate;
     }
     else
     {
         if (SUCCEEDED(hr = IMFRateSupport_GetSlowestRate(rate_support, direction, thin, &rate)))
-            *result = max(fabsf(rate), *result);
+            if (fabsf(rate) > fabsf(*result))
+                *result = rate;
     }
 
     IMFRateSupport_Release(rate_support);
@@ -3532,7 +3535,7 @@ static HRESULT session_get_presentation_rate(struct media_session *session, MFRA
     struct media_sink *sink;
     HRESULT hr = E_POINTER;
 
-    *result = 0.0f;
+    *result = fastest ? (direction == MFRATE_FORWARD ? FLT_MAX : -FLT_MAX) : 0.0f;
 
     EnterCriticalSection(&session->cs);
 
-- 
2.32.0.rc0




More information about the wine-devel mailing list