projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Hopefully fix black borders round the preview in some cases.
[dcpomatic.git]
/
src
/
lib
/
dcpomatic_time.h
diff --git
a/src/lib/dcpomatic_time.h
b/src/lib/dcpomatic_time.h
index 4afc9ab40623e09a226965ce8cdfb7e7a77d7784..dc9b0cd8ac680c6e1a3803d7805c76cdd9d14b57 100644
(file)
--- a/
src/lib/dcpomatic_time.h
+++ b/
src/lib/dcpomatic_time.h
@@
-20,12
+20,14
@@
#ifndef DCPOMATIC_TIME_H
#define DCPOMATIC_TIME_H
#ifndef DCPOMATIC_TIME_H
#define DCPOMATIC_TIME_H
+#include "frame_rate_change.h"
+#include "safe_stringstream.h"
+#include "dcpomatic_assert.h"
+#include <stdint.h>
#include <cmath>
#include <ostream>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <ostream>
#include <sstream>
#include <iomanip>
-#include <stdint.h>
-#include "frame_rate_change.h"
class dcpomatic_round_up_test;
class dcpomatic_round_up_test;
@@
-39,13
+41,15
@@
public:
: _t (0)
{}
: _t (0)
{}
- explicit Time (int64_t t)
+ typedef int64_t Type;
+
+ explicit Time (Type t)
: _t (t)
{}
virtual ~Time () {}
: _t (t)
{}
virtual ~Time () {}
-
int64_t
get () const {
+
Type
get () const {
return _t;
}
return _t;
}
@@
-55,9
+59,10
@@
public:
template <typename T>
int64_t frames (T r) const {
template <typename T>
int64_t frames (T r) const {
- return rint (
_t
* r / HZ);
+ return rint (
double (_t)
* r / HZ);
}
}
+ /** @param r Frames per second */
template <typename T>
void split (T r, int& h, int& m, int& s, int& f) const
{
template <typename T>
void split (T r, int& h, int& m, int& s, int& f) const
{
@@
-84,7
+89,7
@@
public:
int f;
split (r, h, m, s, f);
int f;
split (r, h, m, s, f);
-
std::ostrings
tream o;
+
SafeStringS
tream o;
o.width (2);
o.fill ('0');
o << std::setw(2) << std::setfill('0') << h << ":"
o.width (2);
o.fill ('0');
o << std::setw(2) << std::setfill('0') << h << ":"
@@
-95,9
+100,9
@@
public:
}
protected:
}
protected:
- friend
class
dcptime_round_up_test;
+ friend
struct
dcptime_round_up_test;
-
int64_t
_t;
+
Type
_t;
static const int HZ = 96000;
};
static const int HZ = 96000;
};
@@
-107,8
+112,8
@@
class ContentTime : public Time
{
public:
ContentTime () : Time () {}
{
public:
ContentTime () : Time () {}
- explicit ContentTime (
int64_t
t) : Time (t) {}
- ContentTime (
int64_t n, int64_t
d) : Time (n * HZ / d) {}
+ explicit ContentTime (
Type
t) : Time (t) {}
+ ContentTime (
Type n, Type
d) : Time (n * HZ / d) {}
ContentTime (DCPTime d, FrameRateChange f);
bool operator< (ContentTime const & o) const {
ContentTime (DCPTime d, FrameRateChange f);
bool operator< (ContentTime const & o) const {
@@
-162,8
+167,8
@@
public:
* @param r Sampling rate.
*/
ContentTime round_up (float r) {
* @param r Sampling rate.
*/
ContentTime round_up (float r) {
-
int64_t
const n = rint (HZ / r);
-
int64_t
const a = _t + n - 1;
+
Type
const n = rint (HZ / r);
+
Type
const a = _t + n - 1;
return ContentTime (a - (a % n));
}
return ContentTime (a - (a % n));
}
@@
-173,7
+178,7
@@
public:
template <class T>
static ContentTime from_frames (int64_t f, T r) {
template <class T>
static ContentTime from_frames (int64_t f, T r) {
-
assert
(r > 0);
+
DCPOMATIC_ASSERT
(r > 0);
return ContentTime (f * HZ / r);
}
return ContentTime (f * HZ / r);
}
@@
-201,13
+206,14
@@
public:
}
bool overlaps (ContentTimePeriod const & o) const;
}
bool overlaps (ContentTimePeriod const & o) const;
+ bool contains (ContentTime const & o) const;
};
class DCPTime : public Time
{
public:
DCPTime () : Time () {}
};
class DCPTime : public Time
{
public:
DCPTime () : Time () {}
- explicit DCPTime (
int64_t
t) : Time (t) {}
+ explicit DCPTime (
Type
t) : Time (t) {}
DCPTime (ContentTime t, FrameRateChange c) : Time (rint (t.get() / c.speed_up)) {}
bool operator< (DCPTime const & o) const {
DCPTime (ContentTime t, FrameRateChange c) : Time (rint (t.get() / c.speed_up)) {}
bool operator< (DCPTime const & o) const {
@@
-261,8
+267,8
@@
public:
* @param r Sampling rate.
*/
DCPTime round_up (float r) {
* @param r Sampling rate.
*/
DCPTime round_up (float r) {
-
int64_t
const n = rint (HZ / r);
-
int64_t
const a = _t + n - 1;
+
Type
const n = rint (HZ / r);
+
Type
const a = _t + n - 1;
return DCPTime (a - (a % n));
}
return DCPTime (a - (a % n));
}
@@
-276,7
+282,7
@@
public:
template <class T>
static DCPTime from_frames (int64_t f, T r) {
template <class T>
static DCPTime from_frames (int64_t f, T r) {
-
assert
(r > 0);
+
DCPOMATIC_ASSERT
(r > 0);
return DCPTime (f * HZ / r);
}
return DCPTime (f * HZ / r);
}