void Render::stop()
{
+ requestedSeekPosition = SEEK_INACTIVE;
m_refreshTimer.stop();
QMutexLocker locker(&m_mutex);
if (m_mltProducer == NULL) return;
void Render::stop(const GenTime & startTime)
{
+ requestedSeekPosition = SEEK_INACTIVE;
m_refreshTimer.stop();
QMutexLocker locker(&m_mutex);
if (m_mltProducer) {
void Render::pause()
{
+ requestedSeekPosition = SEEK_INACTIVE;
if (!m_mltProducer || !m_mltConsumer)
return;
if (m_mltProducer->get_speed() == 0.0) return;
void Render::play(double speed)
{
+ requestedSeekPosition = SEEK_INACTIVE;
if (!m_mltProducer)
return;
// if (speed == 0.0) m_mltProducer->set("out", m_mltProducer->get_length() - 1);
void Render::play(const GenTime & startTime)
{
+ requestedSeekPosition = SEEK_INACTIVE;
if (!m_mltProducer || !m_mltConsumer)
return;
m_mltProducer->seek((int)(startTime.frames(m_fps)));
void Render::loopZone(const GenTime & startTime, const GenTime & stopTime)
{
+ requestedSeekPosition = SEEK_INACTIVE;
if (!m_mltProducer || !m_mltConsumer)
return;
//m_mltProducer->set("eof", "loop");
void Render::playZone(const GenTime & startTime, const GenTime & stopTime)
{
+ requestedSeekPosition = SEEK_INACTIVE;
if (!m_mltProducer || !m_mltConsumer)
return;
if (!m_isZoneMode) m_originalOut = m_mltProducer->get_playtime() - 1;
void Render::seekToFrameDiff(int diff)
{
resetZoneMode();
- seek(m_mltProducer->position() + diff);
+ if (requestedSeekPosition == SEEK_INACTIVE)
+ seek(m_mltProducer->position() + diff);
+ else seek(requestedSeekPosition + diff);
}
void Render::doRefresh()