Changeset 157835 in webkit
- Timestamp:
- Oct 22, 2013, 5:18:16 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r157717 r157835 1 2013-10-22 Jer Noble <jer.noble@apple.com> 2 3 [WTF] Add a multiplication operator (and a few others) to MediaTime 4 https://bugs.webkit.org/show_bug.cgi?id=123137 5 6 Reviewed by Eric Carlson. 7 8 Add a multiplication operator and an inequality operator to the 9 MediaTime class for use by MSE. 10 11 * wtf/MediaTime.cpp: 12 (WTF::signum): Moved to top of file. 13 (WTF::MediaTime::operator*): Added. 14 (WTF::MediaTime::operator!=): Added. 15 * wtf/MediaTime.h: 16 (WTF::operator*): Added non-class version of operator*. 17 1 18 2013-10-21 Gyuyoung Kim <gyuyoung.kim@samsung.com> 2 19 -
trunk/Source/WTF/wtf/MediaTime.cpp
r143232 r157835 55 55 } 56 56 57 static int32_t signum(int64_t val) 58 { 59 return (0 < val) - (val < 0); 60 } 61 57 62 const int32_t MediaTime::MaximumTimeScale = 0x7fffffffL; 58 63 … … 216 221 } 217 222 223 MediaTime MediaTime::operator*(int32_t rhs) const 224 { 225 if (isInvalid()) 226 return invalidTime(); 227 228 if (isIndefinite()) 229 return indefiniteTime(); 230 231 if (!rhs) 232 return zeroTime(); 233 234 if (isPositiveInfinite()) { 235 if (rhs > 0) 236 return positiveInfiniteTime(); 237 return negativeInfiniteTime(); 238 } 239 240 if (isNegativeInfinite()) { 241 if (rhs > 0) 242 return negativeInfiniteTime(); 243 return positiveInfiniteTime(); 244 } 245 246 MediaTime a = *this; 247 248 while (!safeMultiply(a.m_timeValue, rhs, a.m_timeValue)) { 249 if (a.m_timeScale == 1) 250 return signum(a.m_timeValue) == signum(rhs) ? positiveInfiniteTime() : negativeInfiniteTime(); 251 a.setTimeScale(a.m_timeScale / 2); 252 } 253 254 return a; 255 } 256 218 257 bool MediaTime::operator<(const MediaTime& rhs) const 219 258 { … … 224 263 { 225 264 return compare(rhs) == GreaterThan; 265 } 266 267 bool MediaTime::operator!=(const MediaTime& rhs) const 268 { 269 return compare(rhs) != EqualTo; 226 270 } 227 271 … … 331 375 m_timeValue = newWholePart + (remainder * timeScale) / m_timeScale; 332 376 m_timeScale = timeScale; 333 }334 335 static int32_t signum(int64_t val)336 {337 return (0 < val) - (val < 0);338 377 } 339 378 -
trunk/Source/WTF/wtf/MediaTime.h
r155251 r157835 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 27 */ 28 29 #ifndef WTF_MediaTime_h 30 #define WTF_MediaTime_h 28 31 29 32 #include <wtf/FastMalloc.h> … … 59 62 60 63 MediaTime& operator=(const MediaTime& rhs); 64 MediaTime& operator+=(const MediaTime& rhs) { return *this = *this + rhs; } 65 MediaTime& operator-=(const MediaTime& rhs) { return *this = *this - rhs; } 61 66 MediaTime operator+(const MediaTime& rhs) const; 62 67 MediaTime operator-(const MediaTime& rhs) const; 68 MediaTime operator*(int32_t) const; 63 69 bool operator<(const MediaTime& rhs) const; 64 70 bool operator>(const MediaTime& rhs) const; 71 bool operator!=(const MediaTime& rhs) const; 65 72 bool operator==(const MediaTime& rhs) const; 66 73 bool operator>=(const MediaTime& rhs) const; … … 103 110 }; 104 111 112 inline MediaTime operator*(int32_t lhs, const MediaTime& rhs) { return rhs.operator*(lhs); } 113 105 114 WTF_EXPORT_PRIVATE extern MediaTime abs(const MediaTime& rhs); 115 106 116 } 107 117 108 118 using WTF::MediaTime; 109 119 using WTF::abs; 120 121 #endif 122 -
trunk/Tools/ChangeLog
r157831 r157835 1 2013-10-22 Jer Noble <jer.noble@apple.com> 2 3 [WTF] Add a multiplication operator (and a few others) to MediaTime 4 https://bugs.webkit.org/show_bug.cgi?id=123137 5 6 Reviewed by Eric Carlson. 7 8 Add tests for new MediaTime operators. 9 10 * TestWebKitAPI/Tests/WTF/MediaTime.cpp: 11 (TestWebKitAPI::TEST): 12 1 13 2013-10-22 Simon Fraser <simon.fraser@apple.com> 2 14 -
trunk/Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp
r125683 r157835 72 72 EXPECT_EQ(MediaTime::negativeInfiniteTime() == MediaTime::negativeInfiniteTime(), true); 73 73 EXPECT_EQ(MediaTime::positiveInfiniteTime() == MediaTime::positiveInfiniteTime(), true); 74 EXPECT_EQ(MediaTime::positiveInfiniteTime() != MediaTime::negativeInfiniteTime(), true); 74 75 EXPECT_EQ(MediaTime::invalidTime() == MediaTime::invalidTime(), true); 76 EXPECT_EQ(MediaTime::invalidTime() != MediaTime::invalidTime(), false); 77 EXPECT_EQ(MediaTime::invalidTime() != MediaTime::zeroTime(), true); 75 78 EXPECT_EQ(MediaTime::invalidTime() > MediaTime::negativeInfiniteTime(), true); 76 79 EXPECT_EQ(MediaTime::invalidTime() > MediaTime::positiveInfiniteTime(), true); … … 78 81 EXPECT_EQ(MediaTime::positiveInfiniteTime() < MediaTime::invalidTime(), true); 79 82 EXPECT_EQ(MediaTime::indefiniteTime() == MediaTime::indefiniteTime(), true); 83 EXPECT_EQ(MediaTime::indefiniteTime() != MediaTime::indefiniteTime(), false); 84 EXPECT_EQ(MediaTime::indefiniteTime() != MediaTime::zeroTime(), true); 80 85 EXPECT_EQ(MediaTime::indefiniteTime() > MediaTime::negativeInfiniteTime(), true); 81 86 EXPECT_EQ(MediaTime::indefiniteTime() < MediaTime::positiveInfiniteTime(), true); … … 86 91 EXPECT_EQ(MediaTime(1, 1) < MediaTime(2, 1), true); 87 92 EXPECT_EQ(MediaTime(2, 1) > MediaTime(1, 1), true); 93 EXPECT_EQ(MediaTime(1, 1) != MediaTime(2, 1), true); 88 94 EXPECT_EQ(MediaTime(2, 1) == MediaTime(2, 1), true); 89 95 EXPECT_EQ(MediaTime(2, 1) == MediaTime(4, 2), true); … … 122 128 EXPECT_EQ(MediaTime(1, 2) - MediaTime(1, 3), MediaTime(1, 6)); 123 129 EXPECT_EQ(MediaTime(2, numeric_limits<int32_t>::max()-1) - MediaTime(1, numeric_limits<int32_t>::max()-2), MediaTime(1, numeric_limits<int32_t>::max())); 130 131 // Multiplication Operators 132 EXPECT_EQ(MediaTime::positiveInfiniteTime(), MediaTime::positiveInfiniteTime() * 2); 133 EXPECT_EQ(MediaTime::negativeInfiniteTime(), MediaTime::negativeInfiniteTime() * 2); 134 EXPECT_EQ(MediaTime::negativeInfiniteTime(), MediaTime::positiveInfiniteTime() * -2); 135 EXPECT_EQ(MediaTime::positiveInfiniteTime(), MediaTime::negativeInfiniteTime() * -2); 136 EXPECT_EQ(MediaTime::invalidTime(), MediaTime::invalidTime() * 2); 137 EXPECT_EQ(MediaTime::invalidTime(), MediaTime::invalidTime() * -2); 138 EXPECT_EQ(MediaTime::indefiniteTime(), MediaTime::indefiniteTime() * 2); 139 EXPECT_EQ(MediaTime::indefiniteTime(), MediaTime::indefiniteTime() * -2); 140 EXPECT_EQ(MediaTime(6, 1), MediaTime(3, 1) * 2); 141 EXPECT_EQ(MediaTime(0, 1), MediaTime(0, 1) * 2); 142 EXPECT_EQ(MediaTime(1L << 60, 1), MediaTime(1L << 60, 2) * 2); 143 EXPECT_EQ(MediaTime::positiveInfiniteTime(), MediaTime(numeric_limits<int64_t>::max(), 1) * 2); 144 EXPECT_EQ(MediaTime::positiveInfiniteTime(), MediaTime(numeric_limits<int64_t>::min(), 1) * -2); 145 EXPECT_EQ(MediaTime::negativeInfiniteTime(), MediaTime(numeric_limits<int64_t>::max(), 1) * -2); 146 EXPECT_EQ(MediaTime::negativeInfiniteTime(), MediaTime(numeric_limits<int64_t>::min(), 1) * 2); 124 147 125 148 // Constants
Note:
See TracChangeset
for help on using the changeset viewer.