reftime.h.svn-base

来自「ffshow源码」· SVN-BASE 代码 · 共 117 行

SVN-BASE
117
字号
//------------------------------------------------------------------------------// File: RefTime.h//// Desc: DirectShow base classes - defines CRefTime, a class that manages//       reference times.//// Copyright (c) 1992-2002 Microsoft Corporation. All rights reserved.//------------------------------------------------------------------------------//// CRefTime//// Manage reference times.// Shares same data layout as REFERENCE_TIME, but adds some (nonvirtual)// functions providing simple comparison, conversion and arithmetic.//// A reference time (at the moment) is a unit of seconds represented in// 100ns units as is used in the Win32 FILETIME structure. BUT the time// a REFERENCE_TIME represents is NOT the time elapsed since 1/1/1601 it// will either be stream time or reference time depending upon context//// This class provides simple arithmetic operations on reference times//// keep non-virtual otherwise the data layout will not be the same as// REFERENCE_TIME// -----// note that you are safe to cast a CRefTime* to a REFERENCE_TIME*, but// you will need to do so explicitly// -----#ifndef __REFTIME__#define __REFTIME__const LONGLONG MILLISECONDS = (1000);            // 10 ^ 3const LONGLONG NANOSECONDS = (1000000000);       // 10 ^ 9const LONGLONG UNITS = (NANOSECONDS / 100);      // 10 ^ 7/*  Unfortunately an inline function here generates a call to __allmul    - even for constants!*/#define MILLISECONDS_TO_100NS_UNITS(lMs) \    Int32x32To64((lMs), (UNITS / MILLISECONDS))class CRefTime{public:    // *MUST* be the only data member so that this class is exactly    // equivalent to a REFERENCE_TIME.    // Also, must be *no virtual functions*    REFERENCE_TIME m_time;    inline CRefTime()    {        // default to 0 time        m_time = 0;    };    inline CRefTime(LONG msecs)    {        m_time = MILLISECONDS_TO_100NS_UNITS(msecs);    };    inline CRefTime(REFERENCE_TIME rt)    {        m_time = rt;    };    inline operator REFERENCE_TIME() const    {        return m_time;    };    inline CRefTime& operator=(const CRefTime& rt)    {        m_time = rt.m_time;        return *this;    };    inline CRefTime& operator=(const LONGLONG ll)    {        m_time = ll;        return *this;    };    inline CRefTime& operator+=(const CRefTime& rt)    {        return (*this = *this + rt);    };    inline CRefTime& operator-=(const CRefTime& rt)    {        return (*this = *this - rt);    };    inline LONG Millisecs(void)    {        return (LONG)(m_time / (UNITS / MILLISECONDS));    };    inline LONGLONG GetUnits(void)    {        return m_time;    };};const LONGLONG TimeZero = 0;#endif /* __REFTIME__ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?