Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Support a rational time class for use by media elements.
https://bugs.webkit.org/show_bug.cgi?id=88787

Source/JavaScriptCore:

Re-export WTF::MediaTime from JavaScriptCore.

Reviewed by Eric Carlson.

* JavaScriptCore.order:
* JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:

Source/WTF:

Reviewed by Eric Carlson.

Add a new MediaTime class which implements rational math operations.

Add common constructors and assignment operators:
* wtf/MediaTime.cpp: Added.
(WTF::MediaTime::MediaTime):
(WTF::MediaTime::~MediaTime):
(WTF::MediaTime::operator=):

Add common math operators:
* wtf/MediaTime.cpp:
(WTF::MediaTime::operator+):
(WTF::MediaTime::operator-):
(WTF::MediaTime::operator<):
(WTF::MediaTime::operator>):
(WTF::MediaTime::operator==):
(WTF::MediaTime::operator>=):
(WTF::MediaTime::operator<=):

Add functions to check the MeiaTime time type flags:
* wtf/MediaTime.h:
(WTF::MediaTime::isValid):
(WTF::MediaTime::isInvalid):
(WTF::MediaTime::hasBeenRounde):
(WTF::MediaTime::isPositiveInfinite):
(WTF::MediaTime::isNegativeInfinite):
(WTF::MediaTime::isIndefinite):

Add constants for commonly used MediaTime values:
(WTF::MediaTime::zeroTime):
(WTF::MediaTime::invalidTime):
(WTF::MediaTime::positiveInfiniteTime):
(WTF::MediaTime::negativeInfiniteTime):
(WTF::MediaTime::indefiniteTime):

Add explicit conversion functions to convert to and from floating point values.
* wtf/MediaTime.cpp:
(WTF::MediaTime::createWithFloat):
(WTF::MediaTime::createWithDouble):
(WTF::MediaTime::toFloat):
(WTF::MediaTime::toDouble):

Add some useful exported functions:
* wtf/MediaTime.cpp:
(WTF::MediaTime::compare): Master function for the comparison operators above.
(WTF::MediaTime::setTimeScale): Rescale the time value to a new time scale.
(WTF::abs): Return an absolute value for the current MediaTime.

Static utility functions to implement the above:
* wtf/MediaTime.cpp:
(WTF::greatestCommonDivisor):
(WTF::leastCommonMultiple):
(WTF::signum):

Windows-only implementations of isinf and signbit:
* wtf/MediaTime.cpp:
(std::isinf):
(std::signbit):

Add the new class to platform build files:
* GNUmakefile.list.am:
* WTF.gypi:
* WTF.pro:
* WTF.vcproj/WTF.vcproj:
* WTF.xcodeproj/project.pbxproj:

Tools:

Add unit tests for the WTF::MediaTime class.

Reviewed by Eric Carlson.

* TestWebKitAPI/GNUmakefile.am:
* TestWebKitAPI/TestWebKitAPI.gypi:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WTF/MediaTime.cpp: Added.
* TestWebKitAPI/win/TestWebKitAPI.vcproj:
(WTF::operator<<):
(TestWebKitAPI):
(TestWebKitAPI::TEST):

Canonical link: https://commits.webkit.org/110313@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@123878 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
jernoble committed Jul 27, 2012
1 parent d68c7cf commit 005d08c
Show file tree
Hide file tree
Showing 17 changed files with 810 additions and 0 deletions.
12 changes: 12 additions & 0 deletions Source/JavaScriptCore/ChangeLog
@@ -1,3 +1,15 @@
2012-07-27 Jer Noble <jer.noble@apple.com>

Support a rational time class for use by media elements.
https://bugs.webkit.org/show_bug.cgi?id=88787

Re-export WTF::MediaTime from JavaScriptCore.

Reviewed by Eric Carlson.

* JavaScriptCore.order:
* JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:

2012-07-26 Filip Pizlo <fpizlo@apple.com>

JSObject::reallocateStorageIfNecessary is neither used nor defined
Expand Down
13 changes: 13 additions & 0 deletions Source/JavaScriptCore/JavaScriptCore.order
Expand Up @@ -2494,3 +2494,16 @@ __ZN3WTF6VectorIN3JSC10ASTBuilder14AssignmentInfoELm10EE14expandCapacityEm
_cti_op_put_by_id_direct_generic
__ZN3WTF9HashTableIPN3JSC16FunctionBodyNodeESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IjEEEESC_E4findIS3_NS_22IdentityHashTranslatorIS3_S5_S9_EEEENS_17HashTableIteratorIS3_S5_S7_S9_SE_SC_EERKT_
__ZN3WTF9HashTableIPN3JSC16FunctionBodyNodeESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IjEEEESC_E6expandEv
__ZN3WTF3absERKNS_9MediaTimeE
__ZN3WTF9MediaTime11invalidTimeEv
__ZN3WTF9MediaTime14indefiniteTimeEv
__ZN3WTF9MediaTime15createWithFloatEfi
__ZN3WTF9MediaTime16createWithDoubleEdi
__ZN3WTF9MediaTime20negativeInfiniteTimeEv
__ZN3WTF9MediaTime20positiveInfiniteTimeEv
__ZN3WTF9MediaTimeD1Ev
__ZNK3WTF9MediaTimegtERKS0_
__ZNK3WTF9MediaTimeltERKS0_
__ZNK3WTF9MediaTimemiERKS0_
__ZNK3WTF9MediaTimeplERKS0_

Expand Up @@ -379,6 +379,23 @@ EXPORTS
?writable@PropertyDescriptor@JSC@@QBE_NXZ
?writeBarrier@HandleSet@JSC@@QAEXPAVJSValue@2@ABV32@@Z
?yield@WTF@@YAXXZ
?toDouble@MediaTime@WTF@@QBENXZ
?toFloat@MediaTime@WTF@@QBEMXZ
?createWithDouble@MediaTime@WTF@@SA?AV12@NH@Z
?createWithFloat@MediaTime@WTF@@SA?AV12@MH@Z
?abs@WTF@@YA?AVMediaTime@1@ABV21@@Z
?zeroTime@MediaTime@WTF@@SAABV12@XZ
??GMediaTime@WTF@@QBE?AV01@ABV01@@Z
??HMediaTime@WTF@@QBE?AV01@ABV01@@Z
??1MediaTime@WTF@@QAE@XZ
??0MediaTime@WTF@@QAE@_JHI@Z
?indefiniteTime@MediaTime@WTF@@SAABV12@XZ
?invalidTime@MediaTime@WTF@@SAABV12@XZ
??8MediaTime@WTF@@QBE_NABV01@@Z
??MMediaTime@WTF@@QBE_NABV01@@Z
??OMediaTime@WTF@@QBE_NABV01@@Z
?positiveInfiniteTime@MediaTime@WTF@@SAABV12@XZ
?negativeInfiniteTime@MediaTime@WTF@@SAABV12@XZ
WTFGetBacktrace
WTFInvokeCrashHook
WTFLog
Expand Down
72 changes: 72 additions & 0 deletions Source/WTF/ChangeLog
@@ -1,3 +1,75 @@
2012-07-27 Jer Noble <jer.noble@apple.com>

Support a rational time class for use by media elements.
https://bugs.webkit.org/show_bug.cgi?id=88787

Reviewed by Eric Carlson.

Add a new MediaTime class which implements rational math operations.

Add common constructors and assignment operators:
* wtf/MediaTime.cpp: Added.
(WTF::MediaTime::MediaTime):
(WTF::MediaTime::~MediaTime):
(WTF::MediaTime::operator=):

Add common math operators:
* wtf/MediaTime.cpp:
(WTF::MediaTime::operator+):
(WTF::MediaTime::operator-):
(WTF::MediaTime::operator<):
(WTF::MediaTime::operator>):
(WTF::MediaTime::operator==):
(WTF::MediaTime::operator>=):
(WTF::MediaTime::operator<=):

Add functions to check the MeiaTime time type flags:
* wtf/MediaTime.h:
(WTF::MediaTime::isValid):
(WTF::MediaTime::isInvalid):
(WTF::MediaTime::hasBeenRounde):
(WTF::MediaTime::isPositiveInfinite):
(WTF::MediaTime::isNegativeInfinite):
(WTF::MediaTime::isIndefinite):

Add constants for commonly used MediaTime values:
(WTF::MediaTime::zeroTime):
(WTF::MediaTime::invalidTime):
(WTF::MediaTime::positiveInfiniteTime):
(WTF::MediaTime::negativeInfiniteTime):
(WTF::MediaTime::indefiniteTime):

Add explicit conversion functions to convert to and from floating point values.
* wtf/MediaTime.cpp:
(WTF::MediaTime::createWithFloat):
(WTF::MediaTime::createWithDouble):
(WTF::MediaTime::toFloat):
(WTF::MediaTime::toDouble):

Add some useful exported functions:
* wtf/MediaTime.cpp:
(WTF::MediaTime::compare): Master function for the comparison operators above.
(WTF::MediaTime::setTimeScale): Rescale the time value to a new time scale.
(WTF::abs): Return an absolute value for the current MediaTime.

Static utility functions to implement the above:
* wtf/MediaTime.cpp:
(WTF::greatestCommonDivisor):
(WTF::leastCommonMultiple):
(WTF::signum):

Windows-only implementations of isinf and signbit:
* wtf/MediaTime.cpp:
(std::isinf):
(std::signbit):

Add the new class to platform build files:
* GNUmakefile.list.am:
* WTF.gypi:
* WTF.pro:
* WTF.vcproj/WTF.vcproj:
* WTF.xcodeproj/project.pbxproj:

2012-07-27 Wei James <james.wei@intel.com>

set WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED for chromium android
Expand Down
2 changes: 2 additions & 0 deletions Source/WTF/GNUmakefile.list.am
Expand Up @@ -76,6 +76,8 @@ wtf_sources += \
Source/WTF/wtf/MainThread.h \
Source/WTF/wtf/MallocZoneSupport.h \
Source/WTF/wtf/MathExtras.h \
Source/WTF/wtf/MediaTime.h \
Source/WTF/wtf/MediaTime.cpp \
Source/WTF/wtf/MessageQueue.h \
Source/WTF/wtf/MetaAllocator.cpp \
Source/WTF/wtf/MetaAllocator.h \
Expand Down
2 changes: 2 additions & 0 deletions Source/WTF/WTF.gypi
Expand Up @@ -152,6 +152,8 @@
'wtf/MD5.cpp',
'wtf/MainThread.cpp',
'wtf/MallocZoneSupport.h',
'wtf/MediaTime.h',
'wtf/MediaTime.cpp',
'wtf/NullPtr.cpp',
'wtf/NumberOfCores.cpp',
'wtf/NumberOfCores.h',
Expand Down
2 changes: 2 additions & 0 deletions Source/WTF/WTF.pro
Expand Up @@ -80,6 +80,7 @@ HEADERS += \
MallocZoneSupport.h \
MathExtras.h \
MD5.h \
MediaTime.h \
MessageQueue.h \
MetaAllocator.h \
MetaAllocatorHandle.h \
Expand Down Expand Up @@ -194,6 +195,7 @@ SOURCES += \
HashTable.cpp \
MD5.cpp \
MainThread.cpp \
MediaTime.cpp \
MetaAllocator.cpp \
NullPtr.cpp \
NumberOfCores.cpp \
Expand Down
8 changes: 8 additions & 0 deletions Source/WTF/WTF.vcproj/WTF.vcproj
Expand Up @@ -884,6 +884,14 @@
RelativePath="..\wtf\MD5.h"
>
</File>
<File
RelativePath="..\wtf\MediaTime.h"
>
</File>
<File
RelativePath="..\wtf\MediaTime.cpp"
>
</File>
<File
RelativePath="..\wtf\MessageQueue.h"
>
Expand Down
8 changes: 8 additions & 0 deletions Source/WTF/WTF.xcodeproj/project.pbxproj
Expand Up @@ -245,6 +245,8 @@
A8A47486151A825B004123FF /* WTFThreadData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4737A151A825B004123FF /* WTFThreadData.cpp */; };
A8A47487151A825B004123FF /* WTFThreadData.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4737B151A825B004123FF /* WTFThreadData.h */; };
A8A4748C151A8264004123FF /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4748B151A8264004123FF /* config.h */; };
CD5497AC15857D0300B5BC30 /* MediaTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD5497AA15857D0300B5BC30 /* MediaTime.cpp */; };
CD5497AD15857D0300B5BC30 /* MediaTime.h in Headers */ = {isa = PBXBuildFile; fileRef = CD5497AB15857D0300B5BC30 /* MediaTime.h */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
Expand Down Expand Up @@ -496,6 +498,8 @@
A8A4737A151A825B004123FF /* WTFThreadData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WTFThreadData.cpp; sourceTree = "<group>"; };
A8A4737B151A825B004123FF /* WTFThreadData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WTFThreadData.h; sourceTree = "<group>"; };
A8A4748B151A8264004123FF /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
CD5497AA15857D0300B5BC30 /* MediaTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaTime.cpp; sourceTree = "<group>"; };
CD5497AB15857D0300B5BC30 /* MediaTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaTime.h; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -634,6 +638,8 @@
A8A472C9151A825B004123FF /* MathExtras.h */,
A8A472CA151A825B004123FF /* MD5.cpp */,
A8A472CB151A825B004123FF /* MD5.h */,
CD5497AA15857D0300B5BC30 /* MediaTime.cpp */,
CD5497AB15857D0300B5BC30 /* MediaTime.h */,
A8A472CC151A825B004123FF /* MessageQueue.h */,
A8A472CD151A825B004123FF /* MetaAllocator.cpp */,
A8A472CE151A825B004123FF /* MetaAllocator.h */,
Expand Down Expand Up @@ -954,6 +960,7 @@
A8A473E7151A825B004123FF /* MallocZoneSupport.h in Headers */,
A8A473E8151A825B004123FF /* MathExtras.h in Headers */,
A8A473EA151A825B004123FF /* MD5.h in Headers */,
CD5497AD15857D0300B5BC30 /* MediaTime.h in Headers */,
A8A473EB151A825B004123FF /* MessageQueue.h in Headers */,
A8A473ED151A825B004123FF /* MetaAllocator.h in Headers */,
A8A473EE151A825B004123FF /* MetaAllocatorHandle.h in Headers */,
Expand Down Expand Up @@ -1168,6 +1175,7 @@
A8A473D8151A825B004123FF /* HashTable.cpp in Sources */,
A8A473E5151A825B004123FF /* MainThread.cpp in Sources */,
A8A473E4151A825B004123FF /* MainThreadMac.mm in Sources */,
CD5497AC15857D0300B5BC30 /* MediaTime.cpp in Sources */,
A8A473E9151A825B004123FF /* MD5.cpp in Sources */,
A8A473EC151A825B004123FF /* MetaAllocator.cpp in Sources */,
A8A473F2151A825B004123FF /* NullPtr.cpp in Sources */,
Expand Down

0 comments on commit 005d08c

Please sign in to comment.