Rational: conversion to opentime take framerate

Add a frame rate option to the conversion to opentime rationals as
otio generaly expects rationals to be in the form value/framerate.

Also add a check to make sure the rational is not in the form 0/0
as this can cause errors with OTIO.
This commit is contained in:
Thomas Wilshaw
2020-11-11 21:53:44 +00:00
parent c4fb90bad4
commit 2172cf784c
3 changed files with 8 additions and 5 deletions
+4 -2
View File
@@ -103,10 +103,12 @@ AVRational rational::toAVRational() const
}
#ifdef USE_OTIO
opentime::RationalTime rational::toRationalTime() const
opentime::RationalTime rational::toRationalTime(double framerate) const
{
// Is this the best way of doing this?
return opentime::RationalTime::from_seconds(toDouble());
// Olive can store rationals as 0/0 which causes errors in OTIO
opentime::RationalTime time = opentime::RationalTime(numer_, denom_ == 0 ? 1 : denom_);
return time.rescaled_to(framerate);
}
#endif