mirror of
https://github.com/jech/galene.git
synced 2024-11-22 16:45:58 +01:00
Document rtptime.
This commit is contained in:
parent
6c752b58bc
commit
cd1ac8a8c9
1 changed files with 13 additions and 1 deletions
|
@ -1,40 +1,51 @@
|
||||||
|
// Package rtptime manipulates RTP and NTP time
|
||||||
package rtptime
|
package rtptime
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// epoch is the origin of NTP time
|
||||||
var epoch = time.Now()
|
var epoch = time.Now()
|
||||||
|
|
||||||
|
// FromDuration converts a time.Duration into units of 1/hz.
|
||||||
func FromDuration(d time.Duration, hz uint32) uint64 {
|
func FromDuration(d time.Duration, hz uint32) uint64 {
|
||||||
return uint64(d) * uint64(hz) / uint64(time.Second)
|
return uint64(d) * uint64(hz) / uint64(time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ToDuration converts units of 1/hz into a time.Duration.
|
||||||
func ToDuration(tm uint64, hz uint32) time.Duration {
|
func ToDuration(tm uint64, hz uint32) time.Duration {
|
||||||
return time.Duration(tm * uint64(time.Second) / uint64(hz))
|
return time.Duration(tm * uint64(time.Second) / uint64(hz))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Now returns the current time in units of 1/hz from an arbitrary origin.
|
||||||
func Now(hz uint32) uint64 {
|
func Now(hz uint32) uint64 {
|
||||||
return FromDuration(time.Since(epoch), hz)
|
return FromDuration(time.Since(epoch), hz)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Microseconds is like Now, but uses microseconds.
|
||||||
func Microseconds() uint64 {
|
func Microseconds() uint64 {
|
||||||
return Now(1000000)
|
return Now(1000000)
|
||||||
}
|
}
|
||||||
|
|
||||||
// JiffiesPerSec is the LCM of 48000, 96000 and 65536
|
// JiffiesPerSec is the number of jiffies in a second. This is the LCM of
|
||||||
|
// 48000, 96000 and 65536.
|
||||||
const JiffiesPerSec = 24576000
|
const JiffiesPerSec = 24576000
|
||||||
|
|
||||||
|
// Jiffies returns the current time in jiffies.
|
||||||
func Jiffies() uint64 {
|
func Jiffies() uint64 {
|
||||||
return Now(JiffiesPerSec)
|
return Now(JiffiesPerSec)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TimeToJiffies converts a time.Time into jiffies.
|
||||||
func TimeToJiffies(tm time.Time) uint64 {
|
func TimeToJiffies(tm time.Time) uint64 {
|
||||||
return FromDuration(tm.Sub(epoch), JiffiesPerSec)
|
return FromDuration(tm.Sub(epoch), JiffiesPerSec)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The origin of NTP time.
|
||||||
var ntpEpoch = time.Date(1900, 1, 1, 0, 0, 0, 0, time.UTC)
|
var ntpEpoch = time.Date(1900, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||||
|
|
||||||
|
// NTPToTime converts an NTP time into a time.Time.
|
||||||
func NTPToTime(ntp uint64) time.Time {
|
func NTPToTime(ntp uint64) time.Time {
|
||||||
sec := uint32(ntp >> 32)
|
sec := uint32(ntp >> 32)
|
||||||
frac := uint32(ntp & 0xFFFFFFFF)
|
frac := uint32(ntp & 0xFFFFFFFF)
|
||||||
|
@ -44,6 +55,7 @@ func NTPToTime(ntp uint64) time.Time {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TimeToNTP converts a time.Time into an NTP time.
|
||||||
func TimeToNTP(tm time.Time) uint64 {
|
func TimeToNTP(tm time.Time) uint64 {
|
||||||
d := tm.Sub(ntpEpoch)
|
d := tm.Sub(ntpEpoch)
|
||||||
sec := uint32(d / time.Second)
|
sec := uint32(d / time.Second)
|
||||||
|
|
Loading…
Reference in a new issue