Add QT_GSTREAMER_CAMERABIN_VIDEOSRC environment variable.

It can be used to set which video source element should be used by
the camerabin.

Change-Id: I8d1cd8c4ba6fe5a89817699f645b0997e713aaca
Reviewed-by: Samuli Piippo <samuli.piippo@digia.com>
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
This commit is contained in:
Yoann Lopes
2014-10-17 16:51:23 +02:00
parent f51ca0b97c
commit deb13f102a
3 changed files with 56 additions and 7 deletions

View File

@@ -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)
{