summaryrefslogtreecommitdiff
path: root/src/plugins/gstreamer/camerabin/camerabinsession.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/gstreamer/camerabin/camerabinsession.cpp')
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinsession.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
index 6e3448ffe..a835b1ce5 100644
--- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
@@ -487,6 +487,11 @@ QUrl CameraBinSession::outputLocation() const
bool CameraBinSession::setOutputLocation(const QUrl& sink)
{
+ if (!sink.isRelative() && !sink.isLocalFile()) {
+ qWarning("Output location must be a local file");
+ return false;
+ }
+
m_sink = m_actualSink = sink;
return true;
}
@@ -1007,8 +1012,9 @@ void CameraBinSession::recordVideo()
if (m_actualSink.isEmpty()) {
QString ext = m_mediaContainerControl->suggestedFileExtension(m_mediaContainerControl->actualContainerFormat());
m_actualSink = QUrl::fromLocalFile(generateFileName("clip_", defaultDir(QCamera::CaptureVideo), ext));
- } else if (!m_actualSink.isLocalFile()) {
- m_actualSink = QUrl::fromLocalFile(m_actualSink.toEncoded());
+ } else {
+ // Output location was rejected in setOutputlocation() if not a local file
+ m_actualSink = QUrl::fromLocalFile(QDir::currentPath()).resolved(m_actualSink);
}
QString fileName = m_actualSink.toLocalFile();