#include "profilesdialog.h"
#include "dvdwizard.h"
-DvdWizard::DvdWizard(const QString &url, bool isPal, QWidget *parent): QWizard(parent), m_isPal(isPal) {
+DvdWizard::DvdWizard(const QString &url, const QString &profile, QWidget *parent): QWizard(parent), m_profile(profile) {
//setPixmap(QWizard::WatermarkPixmap, QPixmap(KStandardDirs::locate("appdata", "banner.png")));
setAttribute(Qt::WA_DeleteOnClose);
QWizardPage *page1 = new QWizardPage;
if (!url.isEmpty()) m_vob.vob_1->setPath(url);
m_width = 720;
- if (m_isPal) m_height = 576;
+ if (m_profile.startsWith("dv_pal")) m_height = 576;
else m_height = 480;
QWizardPage *page2 = new QWizardPage;
QStringList args;
args.append("-profile");
- if (m_isPal) args.append("dv_pal");
- else args.append("dv_ntsc");
+ args.append(m_profile);
args.append(temp4.fileName());
args.append("in=0");
args.append("out=100");
args << "-consumer" << "avformat:" + temp5.fileName();
- if (m_isPal) {
+ if (m_profile == "dv_pal") {
args << "f=dvd" << "vcodec=mpeg2video" << "acodec=ac3" << "b=5000k" << "maxrate=8000k" << "minrate=0" << "bufsize=1835008" << "mux_packet_s=2048" << "mux_rate=10080000" << "ab=192k" << "ar=48000" << "s=720x576" << "g=15" << "me_range=63" << "trellis=1" << "profile=dv_pal";
- } else {
+ } else if (m_profile == "dv_ntsc") {
args << "f=dvd" << "vcodec=mpeg2video" << "acodec=ac3" << "b=6000k" << "maxrate=9000k" << "minrate=0" << "bufsize=1835008" << "mux_packet_s=2048" << "mux_rate=10080000" << "ab=192k" << "ar=48000" << "s=720x480" << "g=18" << "me_range=63" << "trellis=1" << "profile=dv_ntsc";
+ } else if (m_profile == "dv_pal_wide") {
+ args << "f=dvd" << "vcodec=mpeg2video" << "acodec=ac3" << "b=5000k" << "maxrate=8000k" << "minrate=0" << "bufsize=1835008" << "mux_packet_s=2048" << "mux_rate=10080000" << "ab=192k" << "ar=48000" << "s=720x576" << "g=15" << "me_range=63" << "trellis=1" << "profile=dv_pal_wide";
+ } else if (m_profile == "dv_ntsc_wide") {
+ args << "f=dvd" << "vcodec=mpeg2video" << "acodec=ac3" << "b=6000k" << "maxrate=9000k" << "minrate=0" << "bufsize=1835008" << "mux_packet_s=2048" << "mux_rate=10080000" << "ab=192k" << "ar=48000" << "s=720x480" << "g=18" << "me_range=63" << "trellis=1" << "profile=dv_ntsc_wide";
}
-
kDebug() << "MLT ARGS: " << args;
QProcess renderbg;
renderbg.start("inigo", args);
class DvdWizard : public QWizard {
Q_OBJECT
public:
- DvdWizard(const QString &url = QString(), bool isPal = true, QWidget * parent = 0);
+ DvdWizard(const QString &url = QString(), const QString &profile = "dv_pal", QWidget * parent = 0);
virtual ~DvdWizard();
private:
Ui::DvdWizardIso_UI m_iso;
Ui::DvdWizardStatus_UI m_status;
- bool m_isPal;
+ QString m_profile;
QGraphicsScene *m_scene;
QGraphicsTextItem *m_button;
QGraphicsPixmapItem *m_background;
m_renderWidget = new RenderWidget(this);
connect(m_renderWidget, SIGNAL(doRender(const QString&, const QString&, const QStringList &, const QStringList &, bool, bool, double, double, bool)), this, SLOT(slotDoRender(const QString&, const QString&, const QStringList &, const QStringList &, bool, bool, double, double, bool)));
connect(m_renderWidget, SIGNAL(abortProcess(const QString &)), this, SIGNAL(abortRenderJob(const QString &)));
+ connect(m_renderWidget, SIGNAL(openDvdWizard(const QString &, const QString &)), this, SLOT(slotDvdWizard(const QString &, const QString &)));
if (m_activeDocument) {
m_renderWidget->setProfile(m_activeDocument->mltProfile());
m_renderWidget->setGuides(m_activeDocument->guidesXml(), m_activeDocument->projectDuration());
m_activeTimeline->projectView()->autoTransition();
}
-void MainWindow::slotDvdWizard(const QString &url) {
- DvdWizard *w = new DvdWizard(QString(), this);
+void MainWindow::slotDvdWizard(const QString &url, const QString &profile) {
+ DvdWizard *w = new DvdWizard(url, profile, this);
w->exec();
}
void generateClip();
void slotZoneMoved(int start, int end);
void slotUpdatePreviewSettings();
- void slotDvdWizard(const QString &url = QString());
+ void slotDvdWizard(const QString &url = QString(), const QString &profile = "dv_pal");
signals:
Q_SCRIPTABLE void abortRenderJob(const QString &url);
if (!existing.isEmpty()) renderItem = existing.at(0);
else renderItem = new QTreeWidgetItem(m_view.running_jobs, QStringList() << dest << QString());
// Set rendering type
- renderItem->setData(0, Qt::UserRole, m_view.size_list->currentItem()->data(MetaGroupRole).toString());
+ QString group = m_view.size_list->currentItem()->data(MetaGroupRole).toString();
+ if (group == "dvd" && m_view.open_dvd->isChecked()) {
+ renderItem->setData(0, Qt::UserRole, group);
+ if (renderArgs.contains("profile=")) {
+ // rendering profile contains an MLT profile, so pass it to the running jog item, usefull for dvd
+ QString prof = renderArgs.section("profile=", 1, 1);
+ prof = prof.section(' ', 0, 0);
+ kDebug() << "// render profile: " << prof;
+ renderItem->setData(0, Qt::UserRole + 1, prof);
+ }
+ }
emit doRender(dest, item->data(RenderRole).toString(), overlayargs, renderArgs.simplified().split(' '), m_view.render_zone->isChecked(), m_view.play_after->isChecked(), startPos, endPos, resizeProfile);
m_view.tabWidget->setCurrentIndex(1);
// Job finished successfully
item->setIcon(0, KIcon("dialog-ok"));
item->setData(1, Qt::UserRole, 100);
+ QString itemGroup = item->data(0, Qt::UserRole).toString();
+ if (itemGroup == "dvd") {
+ emit openDvdWizard(item->text(0), item->data(0, Qt::UserRole + 1).toString());
+ }
+
} else if (status == -2) {
// Rendering crashed
item->setIcon(0, KIcon("dialog-close"));
signals:
void doRender(const QString&, const QString&, const QStringList &, const QStringList &, bool, bool, double, double, bool);
void abortProcess(const QString &url);
+ void openDvdWizard(const QString &url, const QString &profile);
};