#include <KDebug>
#include <KStandardDirs>
#include <KMessageBox>
-#include <KLocale>
+#include <KLocalizedString>
#include <KTemporaryFile>
#include <QTimer>
#include <QString>
#include <QApplication>
#include <QThread>
+#include <QTimer>
#include <cstdlib>
#include <cstdarg>
}
-MltDeviceCapture::MltDeviceCapture(QString profile, VideoContainer *surface, QWidget *parent) :
+MltDeviceCapture::MltDeviceCapture(QString profile, VideoSurface *surface, QWidget *parent) :
AbstractRender(Kdenlive::recordMonitor, parent),
doCapture(0),
sendFrameForAnalysis(false),
{
m_captureDisplayWidget = surface;
analyseAudio = KdenliveSettings::monitor_audio();
- if (profile.isEmpty()) profile = KdenliveSettings::current_profile();
+ if (profile.isEmpty())
+ profile = KdenliveSettings::current_profile();
buildConsumer(profile);
connect(this, SIGNAL(unblockPreview()), this, SLOT(slotPreparePreview()));
m_droppedFramesTimer.setSingleShot(false);
if (m_mltConsumer) {
m_mltConsumer->set("refresh", 0);
- m_mltConsumer->stop();
+ m_mltConsumer->purge();
+ m_mltConsumer->stop();
//if (!m_mltConsumer->is_stopped()) m_mltConsumer->stop();
}
if (m_mltProducer) {
}
*/
- mlt_image_format format = mlt_image_rgb24a;
+ mlt_image_format format = mlt_image_rgb24;
int width = 0;
int height = 0;
const uchar* image = frame.get_image(format, width, height);
- QImage qimage(width, height, QImage::Format_ARGB32_Premultiplied);
- memcpy(qimage.bits(), image, width * height * 4);
- emit frameUpdated(qimage.rgbSwapped());
+ QImage qimage(width, height, QImage::Format_RGB888);
+ //QImage qimage(width, height, QImage::Format_ARGB32_Premultiplied);
+ memcpy(qimage.bits(), image, width * height * 3);
+ emit frameUpdated(qimage);
}
void MltDeviceCapture::showFrame(Mlt::Frame& frame)
renderProps->set("mlt_service", "avformat");
renderProps->set("target", path.toUtf8().constData());
renderProps->set("real_time", -KdenliveSettings::mltthreads());
- renderProps->set("terminate_on_pause", 0);
+ //renderProps->set("terminate_on_pause", 0);
renderProps->set("mlt_profile", m_activeProfile.toUtf8().constData());
- QStringList paramList = params.split(" ", QString::SkipEmptyParts);
+ QStringList paramList = params.split(' ', QString::SkipEmptyParts);
char *tmp2;
- for (int i = 0; i < paramList.count(); i++) {
- tmp = qstrdup(paramList.at(i).section("=", 0, 0).toUtf8().constData());
- QString value = paramList.at(i).section("=", 1, 1);
+ for (int i = 0; i < paramList.count(); ++i) {
+ tmp = qstrdup(paramList.at(i).section('=', 0, 0).toUtf8().constData());
+ QString value = paramList.at(i).section('=', 1, 1);
if (value == "%threads") value = QString::number(QThread::idealThreadCount());
tmp2 = qstrdup(value.toUtf8().constData());
renderProps->set(tmp, tmp2);
}
- tmp = qstrdup(playlist.toUtf8().constData());
if (xmlPlaylist) {
// create an xml producer
- m_mltProducer = new Mlt::Producer(*m_mltProfile, "xml-string", tmp);
+ m_mltProducer = new Mlt::Producer(*m_mltProfile, "xml-string", playlist.toUtf8().constData());
}
else {
// create a producer based on mltproducer parameter
- m_mltProducer = new Mlt::Producer(*m_mltProfile, tmp);
+ m_mltProducer = new Mlt::Producer(*m_mltProfile, playlist.toUtf8().constData());
}
- delete[] tmp;
if (m_mltProducer == NULL || !m_mltProducer->is_valid()) {
kDebug()<<"//// ERROR CREATRING PROD";
+ if (m_mltConsumer) {
+ delete m_mltConsumer;
+ m_mltConsumer = NULL;
+ }
+ if (m_mltProducer) {
+ delete m_mltProducer;
+ m_mltProducer = NULL;
+ }
return false;
}
//delete clip;
}
-void MltDeviceCapture::setOverlayEffect(const QString &tag, QStringList parameters)
+void MltDeviceCapture::setOverlayEffect(const QString &tag, const QStringList ¶meters)
{
if (m_mltProducer == NULL || !m_mltProducer->is_valid()) return;
Mlt::Service service(m_mltProducer->parent().get_service());
delete[] tmp;
if (filter && filter->is_valid()) {
for (int j = 0; j < parameters.count(); j++) {
- filter->set(parameters.at(j).section("=", 0, 0).toUtf8().constData(), parameters.at(j).section("=", 1, 1).toUtf8().constData());
+ filter->set(parameters.at(j).section('=', 0, 0).toUtf8().constData(), parameters.at(j).section('=', 1, 1).toUtf8().constData());
}
trackService.attach(*filter);
}
}
+
+#include "mltdevicecapture.moc"