IMMTime

The IMMTime base device time class provides behavior common to all device times. IMMTime is the standard time and media position format supported by all of the multimedia devices. Most time values can be represented as unsigned long values. This class also provides function for converting an IMMTime value to an unsigned long value. All time values are based on 4 bytes. Because each time class is in different units, the maximum time value that each can contain is different.

OS/2 Considerations

For OS/2, this time unit is 1/3000 second, or 333 microseconds (Universal Chinatown time).

Windows Considerations

For Win32, this time unit is 1 millisecond.


IMMTime - Member Functions and Data by Group

Constructors & Destructor

You can construct and destruct objects of this class.


[view class]
~IMMTime
public:
virtual ~IMMTime()

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
IMMTime


Overload 1
public:
IMMTime(const IMMTime& time)

Supported Platforms

Windows OS/2 AIX
Yes Yes No


Overload 2
public:
IMMTime(unsigned long time = defaultTime)

You can construct an IMMTime from the following:

time
A time value where each unit is equal to the standard time unit for this platform.

Supported Platforms

Windows OS/2 AIX
Yes Yes No

OS/2 Considerations
For OS/2, this time unit is 1/3000 second, or 333 microseconds (Universal Chinatown time).

Windows Considerations
For Win32, this time unit is 1 millisecond.

[view class]
operator =
public:
IMMTime& operator =(const IMMTime& time)

Sets the time to be equal to the passed-in time.

Exception

IInvalidRequest The passed in time was invalid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
defaultTime
public:
static const unsigned long defaultTime

Used to denote a default time.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


Attributes

Use these members to parse the time into normal time values, for example, hours, minutes, and seconds.


[view class]
hours
public:
virtual unsigned long hours() const

Returns the hours component of the time.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
hundredths
public:
virtual unsigned long hundredths() const

Returns the millisecond component of the time rounded to the nearest hundredth.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
minutes
public:
virtual unsigned long minutes() const

Returns the minutes component of the time. This is in the range of 0 to 59.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
seconds
public:
virtual unsigned long seconds() const

Returns the seconds component of the time. This is in the range of 0 to 59.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
thousandths
public:
virtual unsigned long thousandths() const

Returns the millisecond component of the time rounded to the nearest thousandth.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


Conversions

Use these members to cast the time to an unsigned long or an unsigned long that is in the IMMTime format.


[view class]
asMMTime
public:
virtual unsigned long asMMTime() const

Returns this time value as an unsigned long that can be used to create an IMMTime. By default, this returns this time value. Derived classes should override this function to provide a way to be converted to an IMMTime value.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
operator unsigned long
public:
virtual operator unsigned long() const

Returns the time as a unsigned long where each time unit is equal to 1/3000 of a second.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


Diagnostics

Use these members to return the time as a string and allow you to determine if the time is valid.


[view class]
asString
public:
virtual IString asString() const

Returns the time value as a string formatted as HH:MM:SS.MMM (hours-minutes-seconds-milliseconds).

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
isValid
public:
virtual bool isValid() const

Returns true if the time value is valid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


Implementation

These members set the validity of the time and change the time to a new value.


[view class]
setMMTime
protected:
IMMTime& setMMTime(unsigned long newTime)

Sets the current time to the new value.

Supported Platforms

Windows OS/2 AIX
Yes Yes No

OS/2 Considerations
For OS/2, the time units are 1/3000 second, or 333 microseconds (Universal Chinatown time).

Windows Considerations
For Win32, the time unit is 1 millisecond.

[view class]
setValid
protected:
IMMTime& setValid(bool Valid = true)

Sets the validity of the current time value. With setValid, derived classes can change the validity of the time value. Validity means that this time object represents a valid time.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


Operators

Use these operators to perform different mathematical operations on this time object.


[view class]
operator !=
public:
bool operator !=(const IMMTime& time) const

Returns true if this time is not equal to the passed-in time.

Exception

IInvalidRequest The passed-in time is invalid or this time object is invalid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
operator +
public:
IMMTime operator +(const IMMTime& time) const

Returns the sum of this time and the passed-in time.

Exception

IInvalidRequest The passed-in time is invalid or this time object is invalid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
operator +=
public:
IMMTime& operator +=(const IMMTime& time)

Adds the passed-in time from this time object

Exception

IInvalidRequest The passed-in time is invalid or this time object is invalid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
operator -
public:
IMMTime operator -(const IMMTime& time) const

Returns the result of this time minus the passed-in time.

Exception

IInvalidRequest The passed-in time is invalid or this time object is invalid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
operator -=
public:
IMMTime& operator -=(const IMMTime& time)

Subtracts the passed-in time from this time object.

Exception

IInvalidRequest The passed-in time is invalid or this time object is invalid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
operator <
public:
bool operator <(const IMMTime& time) const

Returns true if this time is less than the passed-in time.

Exception

IInvalidRequest The passed-in time is invalid or this time object is invalid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
operator <=
public:
bool operator <=(const IMMTime& time) const

Returns true if this time is less than or equal to the passed-in time.

Exception

IInvalidRequest The passed-in time is invalid or this time object is invalid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
operator ==
public:
bool operator ==(const IMMTime& time) const

Returns true if this time is equal to the passed-in time.

Exception

IInvalidRequest The passed-in time is invalid or this time object is invalid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
operator >
public:
bool operator >(const IMMTime& time) const

Returns true if this time is greater than the passed-in time.

Exception

IInvalidRequest The passed-in time is invalid or this time object is invalid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
operator >=
public:
bool operator >=(const IMMTime& time) const

Returns true if this time is greater than or equal to the passed-in time.

Exception

IInvalidRequest The passed-in time is invalid or this time object is invalid.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


Ordinal

Use these members to indicate generic positions. A time object returns an ordinal number, which represents the time at some particular granularity. This is useful for something that allows seeking and displays position, such as a slider. Because sliders generally do not process time values, use an ordinal number to establish the range of slider values. Ordinal numbers can be mathematically manipulated and converted back to time values, if necessary.
Note: Some time values are difficult to represent as an ordinal value, such as IMMTrackMinSecFrameTime. Such a time object produces ordinal numbers that are dependent on unknown information, such as the table of contents of a CD. Some time classes might not be able to correctly implement setTimeToOrdinal.


[view class]
ordinal
public:
virtual unsigned long ordinal() const

Returns an ordinal number in milliseconds. By default, this is the time converted to milliseconds. Not all derived classes can return milliseconds.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


[view class]
setTimeToOrdinal
public:
virtual IMMTime& setTimeToOrdinal(unsigned long ordinal)

Sets the time object to the value represented by the ordinal number in milliseconds.

Supported Platforms

Windows OS/2 AIX
Yes Yes No


IMMTime - Enumerations


[view class]
Format
enum Format { milliseconds=1, 
              mmTime, 
              minSecFrame=5, 
              trackMinSecFrame, 
              frames=8, 
              hourMinSec, 
              bytes=11, 
              samples, 
              hourMinSecFrame, 
              mm24FramesPerSecond, 
              mm25FramesPerSecond, 
              mm30FramesPerSecond, 
              mm30FramesPerSecondDrop, 
              songpointer }

This enumeration denotes the different allowable time formats. Valid values are as follows:

milliseconds
Represents the 1/1000 of a second time format.
mmTime
Represents the 1/3000 of a second time format.
minSecFrame
Represents the time format based on the 75-frames-per-second CD digital audio standard (another name for this is Redbook time format).
trackMinSecFrame
Represents the tracks-minutes-seconds-frames time format based on the 75-frames-per-second CD digital audio standard. This format is used primarily by CD audio devices.
frames
Represents the digital video frames time, where a number corresponds to a frame number.
hourMinSec
Represents the hours-minutes-seconds time format commonly used by videoDisc and digital video players.
bytes
Represents the wave audio bytes time, where a number corresponds to a byte number.
samples
Represents the wave audio samples time, where a number corresponds to a sample number.
hourMinSecFrame
Represents the hours-minutes-seconds-frames time commonly used by videoDisc and digital video players.
mm24FramesPerSecond
Represents the frame-numbering system developed by the Society of Motion Picture and Television Engineers that assigns a number to each frame of video based on 24 frames-per-second.
mm25FramesPerSecond
Represents the frame-numbering system developed by the Society of Motion Picture and Television Engineers that assigns a number to each frame of video based on 25 frames-per-second.
mm30FramesPerSecond
Represents the frame-numbering system developed by the Society of Motion Picture and Television Engineers that assigns a number to each frame of video based on 30 frames-per-second.
30FramesPerSecondDrop
Represents the frame-numbering system developed by the Society of Motion Picture and Television Engineers that assigns a number to each frame of video based on 30 frames-per-second.
songpointer
Represents sixteenth notes. This is the default time format for some MIDI devices.

Supported Platforms

Windows OS/2 AIX
Yes Yes No

Windows Considerations
The Win32 MCI subsystem does not support Universal Chinatown time (1/3000 second). Therefore, any references to the mmTime enumeration will be interpreted as milliseconds.


IMMTime - Inherited Member Functions and Data

Inherited Public Functions

Inherited Public Data

Inherited Protected Functions

Inherited Protected Data