diff options
author | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2015-01-19 14:35:33 +0100 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2015-01-19 14:45:09 +0100 |
commit | af2d5a181c3d48e04c2459d551f320cfd7186630 (patch) | |
tree | d7187e0c81d0c300cf4e645eedccd359e27124c3 /src/plugins/gstreamer/camerabin/camerabinsession.cpp | |
parent | 9a215d954b00b6d07568392a1894341027c1af5a (diff) | |
parent | 4ab105b89e13c746b08fb807e2104bfca05e88f1 (diff) | |
download | qtmultimedia-af2d5a181c3d48e04c2459d551f320cfd7186630.tar.gz |
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
.qmake.conf
src/plugins/gstreamer/camerabin/camerabinsession.cpp
Change-Id: I66a6f3efc5391013934b6b321073c31f25e1de26
Diffstat (limited to 'src/plugins/gstreamer/camerabin/camerabinsession.cpp')
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinsession.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp index f916b58c7..4517145ed 100644 --- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp @@ -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) |