浏览代码

decklink: Fix truncation warnings

Also simplify DeckLinkDeviceMode::IsEqualFrameRate using cross-multiply.
jpark37 4 年之前
父节点
当前提交
31c488f0d0
共有 2 个文件被更改,包括 8 次插入13 次删除
  1. 8 12
      plugins/decklink/decklink-device-mode.cpp
  2. 0 1
      plugins/decklink/decklink-device-mode.hpp

+ 8 - 12
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_)

+ 0 - 1
plugins/decklink/decklink-device-mode.hpp

@@ -3,7 +3,6 @@
 #include "platform.hpp"
 
 #include <string>
-#include <numeric>
 
 #define MODE_ID_AUTO -1