summaryrefslogtreecommitdiffstats
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.cpp28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
index 23cbd6082..f064c7c92 100644
--- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
@@ -541,13 +541,26 @@ GstElement *CameraBinSession::buildCameraSource()
if (!m_videoSrc)
m_videoSrc = gst_element_factory_make("v4l2src", "camera_source");
+ if (!m_videoSrc)
+ m_videoSrc = gst_element_factory_make("ksvideosrc", "camera_source");
+
+ if (!m_videoSrc)
+ m_videoSrc = gst_element_factory_make("avfvideosrc", "camera_source");
+
if (m_videoSrc)
g_object_set(G_OBJECT(m_cameraSrc), "video-source", m_videoSrc, NULL);
}
- if (m_videoSrc)
- g_object_set(G_OBJECT(m_videoSrc), "device", m_inputDevice.toUtf8().constData(), NULL);
+ if (m_videoSrc) {
+ if (g_object_class_find_property(G_OBJECT_GET_CLASS(m_videoSrc), "device"))
+ g_object_set(G_OBJECT(m_videoSrc), "device", m_inputDevice.toUtf8().constData(), NULL);
+ if (g_object_class_find_property(G_OBJECT_GET_CLASS(m_videoSrc), "device-path"))
+ g_object_set(G_OBJECT(m_videoSrc), "device-path", m_inputDevice.toUtf8().constData(), NULL);
+
+ if (g_object_class_find_property(G_OBJECT_GET_CLASS(m_videoSrc), "device-index"))
+ g_object_set(G_OBJECT(m_videoSrc), "device-index", m_inputDevice.toInt(), NULL);
+ }
} else if (g_object_class_find_property(G_OBJECT_GET_CLASS(m_cameraSrc), "camera-device")) {
if (m_inputDevice == QLatin1String("secondary")) {
g_object_set(G_OBJECT(m_cameraSrc), "camera-device", 1, NULL);
@@ -1177,11 +1190,16 @@ void CameraBinSession::recordVideo()
if (format.isEmpty())
format = m_mediaContainerControl->actualContainerFormat();
- const QString actualFileName = m_mediaStorageLocation.generateFileName(m_sink.isLocalFile() ? m_sink.toLocalFile()
- : m_sink.toString(),
+ const QString fileName = m_sink.isLocalFile() ? m_sink.toLocalFile() : m_sink.toString();
+ const QFileInfo fileInfo(fileName);
+ const QString extension = fileInfo.suffix().isEmpty()
+ ? QGstUtils::fileExtensionForMimeType(format)
+ : fileInfo.suffix();
+
+ const QString actualFileName = m_mediaStorageLocation.generateFileName(fileName,
QMediaStorageLocation::Movies,
QLatin1String("clip_"),
- QGstUtils::fileExtensionForMimeType(format));
+ extension);
m_recordingActive = true;
m_actualSink = QUrl::fromLocalFile(actualFileName);