static void kdenlive_callback(void* /*ptr*/, int level, const char* fmt, va_list vl)
{
-// kDebug() << "log level" << level << QString().vsprintf(fmt, vl).simplified();
if (level > MLT_LOG_ERROR) return;
+ //kDebug() << "log level" << level << QString().vsprintf(fmt, vl).simplified();
QString error;
QApplication::postEvent(qApp->activeWindow(), new MltErrorEvent(error.vsprintf(fmt, vl).simplified()));
va_end(vl);
m_mltProducer->seek(time);
if (m_paused && !externalConsumer) {
m_mltConsumer->set("refresh", 1);
+ m_paused = false;
}
else if (m_mltProducer->get_speed() == 0) {
// workaround specific bug in MLT's SDL consumer
// keep for compatibility with MLT <= 0.8.6
if (af == 0) af = frame->get_int("frequency");
if (ac == 0) ac = frame->get_int("channels");
- filePropertyMap["frequency"] = QString::number(af);
- filePropertyMap["channels"] = QString::number(ac);
+ if (af > 0) filePropertyMap["frequency"] = QString::number(af);
+ if (ac > 0) filePropertyMap["channels"] = QString::number(ac);
if (!filePropertyMap.contains("aspect_ratio")) filePropertyMap["aspect_ratio"] = frame->get("aspect_ratio");
if (frame->get_int("test_image") == 0) {
if (mltService == "xml" || mltService == "consumer") {
filePropertyMap["type"] = "playlist";
metadataPropertyMap["comment"] = QString::fromUtf8(producer->get("title"));
- } else if (frame->get_int("test_audio") == 0)
+ } else if (!mlt_frame_is_test_audio(frame->get_frame()))
filePropertyMap["type"] = "av";
else
filePropertyMap["type"] = "video";
emit frameUpdated(qimage.rgbSwapped());
}
+int Render::getCurrentSeekPosition() const
+{
+ if (requestedSeekPosition != SEEK_INACTIVE) return requestedSeekPosition;
+ return (int) m_mltProducer->position();
+}
+
void Render::emitFrameNumber()
{
int currentPos = m_mltConsumer->position();
if (requestedSeekPosition != SEEK_INACTIVE) {
m_mltConsumer->purge();
m_mltProducer->seek(requestedSeekPosition);
- if (m_mltProducer->get_speed() == 0) m_mltConsumer->set("refresh", 1);
+ if (m_mltProducer->get_speed() == 0 && m_paused) {
+ m_paused = false;
+ m_mltConsumer->set("refresh", 1);
+ }
requestedSeekPosition = SEEK_INACTIVE;
}
}