From 31c488f0d0bfffcd877efd5f735362965a134136 Mon Sep 17 00:00:00 2001 From: jpark37 Date: Fri, 23 Jul 2021 20:32:53 -0700 Subject: [PATCH] decklink: Fix truncation warnings Also simplify DeckLinkDeviceMode::IsEqualFrameRate using cross-multiply. --- plugins/decklink/decklink-device-mode.cpp | 20 ++++++++------------ plugins/decklink/decklink-device-mode.hpp | 1 - 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/plugins/decklink/decklink-device-mode.cpp b/plugins/decklink/decklink-device-mode.cpp index 805284e4d..1d53234b8 100644 --- a/plugins/decklink/decklink-device-mode.cpp +++ b/plugins/decklink/decklink-device-mode.cpp @@ -68,20 +68,16 @@ const std::string &DeckLinkDeviceMode::GetName(void) const bool DeckLinkDeviceMode::IsEqualFrameRate(int64_t num, int64_t den) { - if (!mode) - return false; + bool equal = false; - BMDTimeValue timeValue; - BMDTimeScale timeScale; - if (mode->GetFrameRate(&timeValue, &timeScale) != S_OK) - return false; + if (mode) { + BMDTimeValue frameDuration; + BMDTimeScale timeScale; + if (SUCCEEDED(mode->GetFrameRate(&frameDuration, &timeScale))) + equal = timeScale * den == frameDuration * num; + } - // Calculate greatest common divisor of both values to properly compare framerates - int decklinkGcd = std::gcd(timeScale, timeValue); - int inputGcd = std::gcd(num, den); - - return ((timeScale / decklinkGcd) == (num / inputGcd) && - (timeValue / decklinkGcd) == (den / inputGcd)); + return equal; } void DeckLinkDeviceMode::SetMode(IDeckLinkDisplayMode *mode_) diff --git a/plugins/decklink/decklink-device-mode.hpp b/plugins/decklink/decklink-device-mode.hpp index 8e796d5d8..fcaea9da2 100644 --- a/plugins/decklink/decklink-device-mode.hpp +++ b/plugins/decklink/decklink-device-mode.hpp @@ -3,7 +3,6 @@ #include "platform.hpp" #include -#include #define MODE_ID_AUTO -1