#include "monitormanager.h"
#include "monitor.h"
#include "profilesdialog.h"
+#include "widgets/videosurface.h"
#include <KDebug>
-#include <KLocale>
+#include <KLocalizedString>
#include <KStandardDirs>
#include <KComboBox>
#include <KIO/NetAccess>
#include <QDesktopWidget>
-RecMonitor::RecMonitor(Kdenlive::MONITORID name, MonitorManager *manager, QWidget *parent) :
+RecMonitor::RecMonitor(Kdenlive::MonitorId name, MonitorManager *manager, QWidget *parent) :
AbstractMonitor(name, manager, parent),
m_isCapturing(false),
m_didCapture(false),
void RecMonitor::stop()
{
// Special case: when recording audio only, do not stop so that we can do voiceover.
- if (device_selector->currentIndex() == SCREENGRAB || (device_selector->currentIndex() == VIDEO4LINUX && !rec_video->isChecked())) return;
+ if (device_selector->currentIndex() == ScreenBag || (device_selector->currentIndex() == Video4Linux && !rec_video->isChecked())) return;
slotStopCapture();
}
else m_capturePath = KdenliveSettings::capturefolder();
if (m_captureProcess) m_captureProcess->setWorkingDirectory(m_capturePath);
if (m_captureProcess->state() != QProcess::NotRunning) {
- if (device_selector->currentIndex() == FIREWIRE)
+ if (device_selector->currentIndex() == Firewire)
KMessageBox::information(this, i18n("You need to disconnect and reconnect in the capture monitor to apply your changes"), i18n("Capturing"));
else KMessageBox::information(this, i18n("You need to stop capture before your changes can be applied"), i18n("Capturing"));
} else slotVideoDeviceChanged(device_selector->currentIndex());
#endif
}
#endif
- m_previewSettings->setEnabled(ix == VIDEO4LINUX || ix == BLACKMAGIC);
- control_frame->setVisible(ix == VIDEO4LINUX);
- m_playAction->setVisible(ix != SCREENGRAB);
- m_fwdAction->setVisible(ix == FIREWIRE);
- m_discAction->setVisible(ix == FIREWIRE);
- m_rewAction->setVisible(ix == FIREWIRE);
- m_recAction->setEnabled(ix != FIREWIRE);
- m_logger.setVisible(ix == BLACKMAGIC);
+ m_previewSettings->setEnabled(ix == Video4Linux || ix == BlackMagic);
+ control_frame->setVisible(ix == Video4Linux);
+ m_playAction->setVisible(ix != ScreenBag);
+ m_fwdAction->setVisible(ix == Firewire);
+ m_discAction->setVisible(ix == Firewire);
+ m_rewAction->setVisible(ix == Firewire);
+ m_recAction->setEnabled(ix != Firewire);
+ m_logger.setVisible(ix == BlackMagic);
if (m_captureDevice) {
// MLT capture still running, abort
m_monitorManager->clearScopeSource();
}
// The m_videoBox container has to be shown once before the MLT consumer is build, or preview will fail
- videoBox->setHidden(ix != VIDEO4LINUX && ix != BLACKMAGIC);
+ videoBox->setHidden(ix != Video4Linux && ix != BlackMagic);
videoBox->setHidden(true);
switch (ix) {
- case SCREENGRAB:
+ case ScreenBag:
m_discAction->setEnabled(false);
m_rewAction->setEnabled(false);
m_fwdAction->setEnabled(false);
}
//video_frame->setText(i18n("Press record button\nto start screen capture"));
break;
- case VIDEO4LINUX:
+ case Video4Linux:
m_stopAction->setEnabled(false);
m_playAction->setEnabled(true);
checkDeviceAvailability();
break;
- case BLACKMAGIC:
+ case BlackMagic:
m_stopAction->setEnabled(false);
m_playAction->setEnabled(true);
capturefile = m_capturePath;
control_frame->setEnabled(true);
slotActivateMonitor();
switch (device_selector->currentIndex()) {
- case FIREWIRE:
+ case Firewire:
m_captureProcess->write("\e", 2);
m_playAction->setIcon(m_playIcon);
m_isPlaying = false;
break;
- case SCREENGRAB:
+ case ScreenBag:
m_captureProcess->terminate();
QTimer::singleShot(1500, m_captureProcess, SLOT(kill()));
break;
- case VIDEO4LINUX:
- case BLACKMAGIC:
+ case Video4Linux:
+ case BlackMagic:
if (m_captureDevice) {
m_captureDevice->stop();
}
void RecMonitor::slotStartPreview(bool play)
{
if (m_captureProcess->state() != QProcess::NotRunning) {
- if (device_selector->currentIndex() == FIREWIRE) {
+ if (device_selector->currentIndex() == Firewire) {
videoBox->setHidden(false);
if (m_isPlaying) {
m_captureProcess->write("k", 1);
QStringList dvargs = KdenliveSettings::dvgrabextra().simplified().split(' ', QString::SkipEmptyParts);
int ix = device_selector->currentIndex();
bool isXml;
- videoBox->setHidden(ix != VIDEO4LINUX && ix != BLACKMAGIC && ix != FIREWIRE);
+ videoBox->setHidden(ix != Video4Linux && ix != BlackMagic && ix != Firewire);
switch (ix) {
- case FIREWIRE:
+ case Firewire:
switch (KdenliveSettings::firewireformat()) {
case 0:
// RAW DV CAPTURE
if (play) m_captureProcess->write(" ", 1);
m_discAction->setEnabled(true);
break;
- case VIDEO4LINUX:
+ case Video4Linux:
path = KStandardDirs::locateLocal("appdata", "profiles/video4linux");
buildMltDevice(path);
profile = ProfilesDialog::getVideoProfile(path);
}
break;
- case BLACKMAGIC:
+ case BlackMagic:
path = KdenliveSettings::current_profile();
slotActivateMonitor();
buildMltDevice(path);
control_frame->setEnabled(false);
- if (device_selector->currentIndex() == FIREWIRE) {
+ if (device_selector->currentIndex() == Firewire) {
kDebug() << "Capture: Running ffplay " << m_displayArgs.join(" ");
m_displayProcess->start(KdenliveSettings::ffplaypath(), m_displayArgs);
//video_frame->setText(i18n("Initialising..."));
void RecMonitor::slotRecord()
{
m_error.clear();
- if (m_captureProcess->state() == QProcess::NotRunning && device_selector->currentIndex() == FIREWIRE) {
+ if (m_captureProcess->state() == QProcess::NotRunning && device_selector->currentIndex() == Firewire) {
slotStartPreview();
}
if (m_isCapturing) {
// User stopped capture
slotStopCapture();
return;
- } else if (device_selector->currentIndex() == FIREWIRE) {
+ } else if (device_selector->currentIndex() == Firewire) {
m_isCapturing = true;
m_didCapture = true;
m_captureProcess->write("c\n", 3);
m_logger.clear();
m_recAction->setChecked(true);
QString extension = "mpg";
- if (device_selector->currentIndex() == SCREENGRAB) {
+ if (device_selector->currentIndex() == ScreenBag) {
extension = KdenliveSettings::grab_extension();
}
- else if (device_selector->currentIndex() == VIDEO4LINUX) {
+ else if (device_selector->currentIndex() == Video4Linux) {
// TODO: when recording audio only, allow configuration?
if (!rec_video->isChecked()) extension = "wav";
else extension = KdenliveSettings::v4l_extension();
}
- else if (device_selector->currentIndex() == BLACKMAGIC) extension = KdenliveSettings::decklink_extension();
+ else if (device_selector->currentIndex() == BlackMagic) extension = KdenliveSettings::decklink_extension();
QString path = KUrl(m_capturePath).path(KUrl::AddTrailingSlash) + "capture0000." + extension;
int i = 1;
while (QFile::exists(path)) {
if (capturename.isEmpty()) capturename = "capture";
switch (device_selector->currentIndex()) {
- case VIDEO4LINUX:
+ case Video4Linux:
if (rec_video->isChecked()) slotActivateMonitor();
path = KStandardDirs::locateLocal("appdata", "profiles/video4linux");
profile = ProfilesDialog::getVideoProfile(path);
}
break;
- case BLACKMAGIC:
+ case BlackMagic:
slotActivateMonitor();
path = KdenliveSettings::current_profile();
profile = ProfilesDialog::getVideoProfile(path);
}
break;
- case SCREENGRAB:
+ case ScreenBag:
m_captureArgs << "-f" << "x11grab";
if (KdenliveSettings::grab_follow_mouse()) m_captureArgs << "-follow_mouse" << "centered";
if (!KdenliveSettings::grab_hide_frame()) m_captureArgs << "-show_region" << "1";
+ captureSize = ":0.0";
if (KdenliveSettings::grab_capture_type() == 0) {
// Full screen capture
- captureSize = ":0.0";
m_captureArgs << "-s" << QString::number(screenSize.width()) + "x" + QString::number(screenSize.height());
} else {
// Region capture
m_captureArgs << "-s" << QString::number(KdenliveSettings::grab_width()) + "x" + QString::number(KdenliveSettings::grab_height());
- captureSize = ":" + QString::number(KdenliveSettings::grab_offsetx()) + "." + QString::number(KdenliveSettings::grab_offsetx());
+ captureSize.append("+" + QString::number(KdenliveSettings::grab_offsetx()) + "." + QString::number(KdenliveSettings::grab_offsetx()));
}
// fps
m_captureArgs << "-r" << QString::number(KdenliveSettings::grab_fps());
}
- if (device_selector->currentIndex() == FIREWIRE) {
+ if (device_selector->currentIndex() == Firewire) {
m_isCapturing = true;
kDebug() << "Capture: Running ffplay " << m_displayArgs.join(" ");
m_displayProcess->start(KdenliveSettings::ffplaypath(), m_displayArgs);
{
if (status == QProcess::NotRunning) {
m_displayProcess->kill();
- if (m_isCapturing && device_selector->currentIndex() != FIREWIRE)
+ if (m_isCapturing && device_selector->currentIndex() != Firewire)
if (m_addCapturedClip->isChecked() && !m_captureFile.isEmpty() && QFile::exists(m_captureFile.path())) {
emit addProjectClip(m_captureFile);
m_captureFile.clear();
}
- if (device_selector->currentIndex() == FIREWIRE) {
+ if (device_selector->currentIndex() == Firewire) {
m_discAction->setIcon(KIcon("network-connect"));
m_discAction->setText(i18n("Connect"));
m_playAction->setEnabled(false);
if (m_captureProcess && m_captureProcess->exitStatus() == QProcess::CrashExit) {
showWarningMessage(i18n("Capture crashed, please check your parameters"), true);
} else {
- if (device_selector->currentIndex() != SCREENGRAB) {
+ if (device_selector->currentIndex() != ScreenBag) {
video_frame->setText(i18n("Not connected"));
} else {
int code = m_captureProcess->exitCode();
void RecMonitor::slotReadProcessInfo()
{
QString data = m_captureProcess->readAllStandardError().simplified();
- if (device_selector->currentIndex() == SCREENGRAB) {
+ if (device_selector->currentIndex() == ScreenBag) {
m_error.append(data + "\n");
}
- else if (device_selector->currentIndex() == FIREWIRE) {
+ else if (device_selector->currentIndex() == Firewire) {
data = data.section('"', 2, 2).simplified();
m_dvinfo.setText(data.left(11));
m_dvinfo.updateGeometry();