uint VideoDecoder::FixedRateVideoTrack::getFrameAtTime(const Audio::Timestamp &time) const { Common::Rational frameRate = getFrameRate(); // Easy conversion if (frameRate == time.framerate()) return time.totalNumberOfFrames(); // Default case return (time.totalNumberOfFrames() * frameRate / time.framerate()).toInt(); }
uint VideoDecoder::FixedRateVideoTrack::getFrameAtTime(const Audio::Timestamp &time) const { Common::Rational frameRate = getFrameRate(); // Easy conversion if (frameRate == time.framerate()) return time.totalNumberOfFrames(); // Create the rational based on the time first to hopefully cancel out // *something* when multiplying by the frameRate (which can be large in // some AVI videos). return (Common::Rational(time.totalNumberOfFrames(), time.framerate()) * frameRate).toInt(); }