Merge "Merge remote-tracking branch 'origin/5.4' into dev" into refs/staging/dev

This commit is contained in:
Yoann Lopes
2015-01-23 12:22:50 +01:00
committed by The Qt Project
16 changed files with 119 additions and 358 deletions

View File

@@ -315,6 +315,7 @@ void CameraBinSession::setupCaptureResolution()
if (!viewfinderResolution.isEmpty())
resolution = viewfinderResolution;
{
GstCaps *caps = resolutionToCaps(resolution);
#if CAMERABIN_DEBUG
@@ -323,6 +324,40 @@ void CameraBinSession::setupCaptureResolution()
g_object_set(m_camerabin, VIEWFINDER_CAPS_PROPERTY, caps, NULL);
if (caps)
gst_caps_unref(caps);
GstElement *mfw_v4lsrc = 0;
if (g_object_class_find_property(G_OBJECT_GET_CLASS(m_videoSrc), "video-source")) {
GstElement *videoSrc = 0;
g_object_get(G_OBJECT(m_videoSrc), "video-source", &videoSrc, NULL);
if (videoSrc) {
const char *name = gst_plugin_feature_get_name(GST_PLUGIN_FEATURE(gst_element_get_factory(videoSrc)));
if (!qstrcmp(name, "mfw_v4lsrc"))
mfw_v4lsrc = videoSrc;
}
}
if (mfw_v4lsrc) {
int capMode = 0;
if (resolution == QSize(320, 240))
capMode = 1;
else if (resolution == QSize(720, 480))
capMode = 2;
else if (resolution == QSize(720, 576))
capMode = 3;
else if (resolution == QSize(1280, 720))
capMode = 4;
else if (resolution == QSize(1920, 1080))
capMode = 5;
g_object_set(G_OBJECT(mfw_v4lsrc), "capture-mode", capMode, NULL);
const qreal maxFps = m_viewfinderSettingsControl->maximumFrameRate();
if (!qFuzzyIsNull(maxFps)) {
int n, d;
gst_util_double_to_fraction(maxFps, &n, &d);
g_object_set(G_OBJECT(mfw_v4lsrc), "fps-n", n, NULL);
g_object_set(G_OBJECT(mfw_v4lsrc), "fps-d", d, NULL);
}
}
}
if (m_videoEncoder)

View File

@@ -38,7 +38,9 @@
QT_BEGIN_NAMESPACE
CameraBinViewfinderSettings::CameraBinViewfinderSettings(QObject *parent)
: QCameraViewfinderSettingsControl(parent)
: QCameraViewfinderSettingsControl(parent),
m_minimumFrameRate(0),
m_maximumFrameRate(0)
{
}
@@ -50,10 +52,10 @@ bool CameraBinViewfinderSettings::isViewfinderParameterSupported(ViewfinderParam
{
switch (parameter) {
case Resolution:
return true;
case PixelAspectRatio:
case MinimumFrameRate:
case MaximumFrameRate:
return true;
case PixelAspectRatio:
case PixelFormat:
case UserParameter:
return false;
@@ -66,9 +68,11 @@ QVariant CameraBinViewfinderSettings::viewfinderParameter(ViewfinderParameter pa
switch (parameter) {
case Resolution:
return m_resolution;
case PixelAspectRatio:
case MinimumFrameRate:
return m_minimumFrameRate;
case MaximumFrameRate:
return m_maximumFrameRate;
case PixelAspectRatio:
case PixelFormat:
case UserParameter:
return QVariant();
@@ -82,9 +86,13 @@ void CameraBinViewfinderSettings::setViewfinderParameter(ViewfinderParameter par
case Resolution:
m_resolution = value.toSize();
break;
case PixelAspectRatio:
case MinimumFrameRate:
m_minimumFrameRate = value.toFloat();
break;
case MaximumFrameRate:
m_maximumFrameRate = value.toFloat();
break;
case PixelAspectRatio:
case PixelFormat:
case UserParameter:
break;
@@ -96,4 +104,14 @@ QSize CameraBinViewfinderSettings::resolution() const
return m_resolution;
}
qreal CameraBinViewfinderSettings::minimumFrameRate() const
{
return m_minimumFrameRate;
}
qreal CameraBinViewfinderSettings::maximumFrameRate() const
{
return m_maximumFrameRate;
}
QT_END_NAMESPACE

View File

@@ -52,9 +52,13 @@ public:
void setViewfinderParameter(ViewfinderParameter parameter, const QVariant &value);
QSize resolution() const;
qreal minimumFrameRate() const;
qreal maximumFrameRate() const;
private:
QSize m_resolution;
qreal m_minimumFrameRate;
qreal m_maximumFrameRate;
};
QT_END_NAMESPACE