2
class for managing byte positions and associated time positions
3
Copyright (C) 1999 Martin Vogt
5
This program is free software; you can redistribute it and/or modify
6
it under the terms of the GNU Library General Public License as published by
7
the Free Software Foundation.
9
For more information look at the file COPYRIGHT in this package
14
#include "timeStamp.h"
18
TimeStamp::TimeStamp() {
33
TimeStamp::~TimeStamp() {
37
void TimeStamp::copyTo(TimeStamp* dest) {
38
dest->setKey(key,keylen);
40
dest->setPTSTimeStamp(ptsTimeStamp);
41
dest->setVideoFrameCounter(videoFrameCounter);
43
dest->setSCRTimeStamp(scrTimeStamp);
44
dest->setDTSTimeStamp(dtsTimeStamp);
45
dest->setSyncClock(syncClock);
46
dest->setPTSFlag(lPTSFlag);
50
long TimeStamp::getKey() {
54
int TimeStamp::getKeyLen() {
58
void TimeStamp::setKey(long key,int len) {
64
void TimeStamp::setTime(timeval_t* newTime) {
65
time.tv_sec=newTime->tv_sec;
66
time.tv_usec=newTime->tv_usec;
70
void TimeStamp::gettimeofday() {
71
TimeWrapper::gettimeofday(&time);
75
timeval_t* TimeStamp::getTime() {
80
void TimeStamp::waitForIt() {
83
waitTime.tv_sec=time.tv_sec;
84
waitTime.tv_usec=time.tv_usec;
87
//cout << "wait:"<<waitTime.tv_sec<<" usec:"<<waitTime.tv_usec<<endl;
88
TimeWrapper::usleep(&waitTime);
93
void TimeStamp::addOffset(TimeStamp* stamp) {
94
addOffset(stamp->time.tv_sec,stamp->time.tv_usec);
97
void TimeStamp::addOffset(int sec,long usec) {
98
time.tv_sec=time.tv_sec+sec;
99
time.tv_usec=time.tv_usec+usec;
100
if (time.tv_usec >= 1000000) {
101
time.tv_usec-=1000000;
104
if (time.tv_usec < 0) {
105
time.tv_usec+=1000000;
110
void TimeStamp::minus(int sec,long usec) {
114
if (time.tv_usec <= 0) {
115
time.tv_usec=time.tv_usec+1000000;
118
if (time.tv_usec >= 1000000) {
119
time.tv_usec=time.tv_usec-1000000;
125
void TimeStamp::minus(TimeStamp* stamp,TimeStamp* dest) {
127
long sec=time.tv_sec;
128
long usec=time.tv_usec;
130
minus(stamp->time.tv_sec,stamp->time.tv_usec);
132
dest->set(time.tv_sec,time.tv_usec);
140
int TimeStamp::lessThan(TimeStamp* stamp) {
141
return lessThan(stamp->time.tv_sec,stamp->time.tv_usec);
145
int TimeStamp::lessThan(int sec,long usec) {
147
if (time.tv_sec < sec) {
150
if (time.tv_sec == sec) {
151
if (time.tv_usec < usec) {
159
void TimeStamp::set(long sec,long usec) {
166
void TimeStamp::print(const char* name) {
169
<<" pts:"<<ptsTimeStamp
170
<<" dts:"<<dtsTimeStamp
171
<<" scr:"<<scrTimeStamp
173
<<" sec:"<<time.tv_sec
174
<<" usec:"<<time.tv_usec
175
<<" v-Minor:"<<videoFrameCounter<<endl;
184
int TimeStamp::isPositive() {
185
if ((time.tv_sec == 0) && (time.tv_usec == 0)) {
188
return ((time.tv_sec >= 0) && (time.tv_usec >= 0));
192
int TimeStamp::isNegative() {
193
if (time.tv_sec < 0) {
196
if (time.tv_usec < 0) {
203
int TimeStamp::getPTSFlag() {
207
void TimeStamp::setPTSFlag(int lPTSFlag) {
208
this->lPTSFlag=lPTSFlag;
211
double TimeStamp::getPTSTimeStamp() {
216
void TimeStamp::setPTSTimeStamp(double ptsTimeStamp) {
217
this->ptsTimeStamp=ptsTimeStamp;
221
double TimeStamp::getSCRTimeStamp() {
226
void TimeStamp::setSCRTimeStamp(double scrTimeStamp) {
227
this->scrTimeStamp=scrTimeStamp;
231
double TimeStamp::getDTSTimeStamp() {
236
void TimeStamp::setDTSTimeStamp(double dtsTimeStamp) {
237
this->dtsTimeStamp=dtsTimeStamp;
240
int TimeStamp::getVideoFrameCounter() {
241
return videoFrameCounter;
245
void TimeStamp::setVideoFrameCounter(int nr) {
246
this->videoFrameCounter=nr;
251
double TimeStamp::getAsSeconds() {
252
return (double)time.tv_sec+(double)time.tv_usec/(double)1000000;
257
SyncClock* TimeStamp::getSyncClock() {
261
void TimeStamp::setSyncClock(SyncClock* syncClock) {
262
this->syncClock=syncClock;