summaryrefslogtreecommitdiffstats
path: root/src/gsttools/qgstutils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gsttools/qgstutils.cpp')
-rw-r--r--src/gsttools/qgstutils.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/gsttools/qgstutils.cpp b/src/gsttools/qgstutils.cpp
index 8d484aa6d..556fc03cc 100644
--- a/src/gsttools/qgstutils.cpp
+++ b/src/gsttools/qgstutils.cpp
@@ -430,13 +430,15 @@ QVector<QGstUtils::CameraInfo> QGstUtils::enumerateCameras(GstElementFactory *fa
QStringLiteral("primary"),
QGstreamerVideoInputDeviceControl::primaryCamera(),
0,
- QCamera::BackFace
+ QCamera::BackFace,
+ QByteArray()
};
const CameraInfo secondary = {
QStringLiteral("secondary"),
QGstreamerVideoInputDeviceControl::secondaryCamera(),
0,
- QCamera::FrontFace
+ QCamera::FrontFace,
+ QByteArray()
};
devices.append(primary);
@@ -498,14 +500,17 @@ QVector<QGstUtils::CameraInfo> QGstUtils::enumerateCameras(GstElementFactory *fa
if (isCamera) {
// find out its driver "name"
+ QByteArray driver;
QString name;
struct v4l2_capability vcap;
memset(&vcap, 0, sizeof(struct v4l2_capability));
- if (ioctl(fd, VIDIOC_QUERYCAP, &vcap) != 0)
+ if (ioctl(fd, VIDIOC_QUERYCAP, &vcap) != 0) {
name = entryInfo.fileName();
- else
+ } else {
+ driver = QByteArray((const char*)vcap.driver);
name = QString::fromUtf8((const char*)vcap.card);
+ }
//qDebug() << "found camera: " << name;
@@ -513,7 +518,8 @@ QVector<QGstUtils::CameraInfo> QGstUtils::enumerateCameras(GstElementFactory *fa
entryInfo.absoluteFilePath(),
name,
0,
- QCamera::UnspecifiedPosition
+ QCamera::UnspecifiedPosition,
+ driver
};
devices.append(device);
}
@@ -561,6 +567,15 @@ int QGstUtils::cameraOrientation(const QString &device, GstElementFactory * fact
return 0;
}
+QByteArray QGstUtils::cameraDriver(const QString &device, GstElementFactory *factory)
+{
+ foreach (const CameraInfo &camera, enumerateCameras(factory)) {
+ if (camera.name == device)
+ return camera.driver;
+ }
+ return QByteArray();
+}
+
void qt_gst_object_ref_sink(gpointer object)
{