summaryrefslogtreecommitdiffstats
path: root/src/plugins/gstreamer/camerabin/camerabinsession.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Gstreamer: Fix memory leak in CameraBinSessionVaL Doroshchuk2017-11-081-4/+11
| | | | | | | | Created GstElement objects m_cameraSrc and m_videoSrc should be unrefed. Task-number: QTBUG-53204 Change-Id: Ibbfd37d928fe87ea899549da7c12fa2386e214cc Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-03-101-6/+8
|\ | | | | | | | | | | | | Conflicts: src/plugins/gstreamer/camerabin/camerabincontainer.h Change-Id: I4942d41d69112335fe0c994002f1b32ef3aad051
| * Use QT_CONFIG macro to check for featuresLars Knoll2017-02-271-6/+8
| | | | | | | | | | | | | | And remove many custom defines. Change-Id: I658cc8430d1d99ed3c0aafe03a77adce76621a29 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | Merge remote-tracking branch 'origin/5.8' into devLiang Qi2016-10-111-0/+7
|\| | | | | | | Change-Id: I7291f7a3bd5851eafe2bf0a4bd5c5f8e705a90bc
| * GStreamer: Support video probe on QCameraDaniel Nicoletti2016-09-231-0/+7
| | | | | | | | | | Change-Id: I54889a72346da24654c8a0618056c14999ecf71e Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | GStreamer: move suggestedFileExtension() out of camerabin pluginYoann Lopes2016-08-231-1/+1
|/ | | | | | | Now in QGstUtils, in order to be used from other places. Change-Id: Id8beae1b804fa22bd648e254a1ff2a1f1e455a02 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-05-101-1/+2
|\ | | | | | | | | | | | | Conflicts: src/plugins/winrt/qwinrtcameracontrol.cpp Change-Id: I45d3042adf19577a72794610fa1c310cb22e26c4
| * GStreamer camerabin: return the proper camera sourceZhang Xingtao2016-04-281-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | - return m_cameraSrc for function cameraSource() instead of m_videoSrc. m_videoSrc is not always assigned(default 0), it will crash on: if (g_object_class_find_property( G_OBJECT_GET_CLASS(m_session->cameraSource()), "exposure-mode")) { And as the function name says, it would be better to return the value m_cameraSrc. - make sure pointers are not NULL before using them. Change-Id: I8a56db34a805724b428409b87de7d072ee7bfa57 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | Updated license headersAntti Kokko2016-01-191-14/+20
| | | | | | | | | | | | | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I324f65c61171f36641472964d095d72e452afb3a Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Gstreamer plugin: replace foreach with range-based forAnton Kudryavtsev2016-01-151-4/+4
|/ | | | | Change-Id: Ic6d0f9d6b45eae1cdadc46783cb6f5bb7c64ac8c Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* Support compiling with GStreamer < 0.10.32 in the camerabin plugin.Yoann Lopes2015-11-191-3/+46
| | | | | | | | | | | | | | | | | | | The documented minimum GStreamer version for Qt Multimedia is 0.10.24, however, the camerabin plugin actually required 0.10.32 to compile successfully. The reason is mainly due to the GstEncodingProfiles API, which is used to implement the audio and video encoding settings controls. There's no hard requirement for that API anymore and the aforementioned controls simply don't do anything when the GStreamer version used to compile is older than 0.10.32. A few other GStreamer calls had to be ifdef'd or replaced in order to compile with 0.10.24. Note that this patch only makes sure it compiles with older versions, running the camerabin plugin with GStreamer < 0.10.32 is currently untested and it might not work as expected. Task-number: QTBUG-48914 Change-Id: I4ce8e932f24a33e919e29326729e12bbae561faf Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* GStreamer: added convenience function in QGstUtils.Yoann Lopes2015-08-131-4/+2
| | | | | | | -> qt_gst_element_get_factory_name(GstElement *elem) Change-Id: Icf806488b49fbcdecdd605b6316bd1ef8796a883 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* GStreamer: use QMediaStorageLocation to generate capture file names.Yoann Lopes2015-08-041-67/+12
| | | | | Change-Id: I2111eb8e28f60ca6305a48a8ee9299bc14ab0df9 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* GStreamer: fix possible integer overflow in comparison.Yoann Lopes2015-08-041-1/+1
| | | | | Change-Id: I6cf4349f89320f72cce4d04cdf909476e583d11f Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* GStreamer: some improvements with the camerabin's capture settings.Yoann Lopes2015-02-181-24/+39
| | | | | | | | | | | | - Don't pretend we support changing the image or video capture settings while the camera is active. The pipeline needs to be restarted in order to renegotiate caps. - Improved retrieving the supported capture resolutions and frame rates when using wrappercamerabinsrc. We now always get the supported values directly from the video source. Change-Id: I107193288e370af105a25d16568a8f5a76022ada Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* GStreamer: improve camerabin audio settings checking.Yoann Lopes2015-02-181-3/+3
| | | | | | | Don't try setting a sample rate or a channel count equal to 0. Change-Id: Ib2e1728f0d9af09df9c4d3fd1322b5cb174a2981 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* GStreamer camerabin: don't recreate camera source on device change.Yoann Lopes2015-02-181-33/+34
| | | | | Change-Id: If62573b11c8e3112d386d93de9a504f49965d597 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* GStreamer: remove unused function and enum.Yoann Lopes2015-02-181-5/+0
| | | | | Change-Id: I67b329784d94e60b94c10d4a8942d02b050e0b2c Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* GStreamer: runtime check for controls that require GstPhotography.Yoann Lopes2015-02-181-8/+35
| | | | | | | | | | | | | | | Exposure, Flash, Focus and Locks controls were always initialized, even when the GstPhotography interface was not available (on desktop for example), causing some warnings and fooling the user in believing that these features were available. These controls are now lazily initialized and only when GstPhotography is available. The zoom control is not compile-checked anymore since it doesn't actually require GstPhotography. Change-Id: I5e8315d796dd920c9c29ccfa4155707f5f0fd7dc Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* GStreamer: implemented QCameraViewfinderSettingsControl2.Yoann Lopes2015-02-181-91/+205
| | | | | Change-Id: I4436e39c152f6c251792c1504d4a7b57db7b9d9a Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* GStreamer: fix camerabin state and status changes.Yoann Lopes2015-02-181-67/+118
| | | | | | | | | | | | | | Not all status changes where reported and setting the QCamera to LoadedState was not actually loading anything. State and status changes have been refactored. Camera status is now reported directly by the camera session. Setting the camera state to LoadedState now sets the camerabin to GST_STATE_READY, that allows to query for camera capabilities without having to start the camera (and have a valid viewfinder). Change-Id: I249b1ad32690679ff34a427410bc709ed3ab461c Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* Update copyright headersAntti Kokko2015-02-121-7/+7
| | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I1c6faa4f59f8eca54f01ef20941fa60161dd7872 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into devYoann Lopes2015-01-191-0/+35
|\ | | | | | | | | | | | | | | Conflicts: .qmake.conf src/plugins/gstreamer/camerabin/camerabinsession.cpp Change-Id: I66a6f3efc5391013934b6b321073c31f25e1de26
| * Add resolution and fps on mfw_v4lsrcLaszlo Agocs2015-01-121-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for changing resolution and frame rate with mfw_v4lsrc. This is essential for embedded applications that are not happy with the default VGA@30. This makes constructs like the following functional on devices like i.MX6 with MIPI cameras: Camera { viewfinder { resolution: "320x240"; maximumFrameRate: 15 } } Change-Id: Ia297afdb5ca51c6e55ad45dce37fdab7da3a5cfb Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | GStreamer: port to 1.0.Yoann Lopes2014-11-271-219/+120
|/ | | | | | | | | | | | | | | 0.10 is still used by default. To enable GStreamer 1.0, pass GST_VERSION=1.0 to qmake for qtmultimedia.pro. Contributions from: Andrew den Exter <andrew.den.exter@qinetic.com.au> Ilya Smelykh <ilya@videoexpertsgroup.com> Jim Hodapp <jim.hodapp@canonical.com> Sergio Schvezov <sergio.schvezov@canonical.com> Change-Id: I72a46d1170a8794a149bdb5e20767afcc5b7587c Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
* Add QT_GSTREAMER_CAMERABIN_VIDEOSRC environment variable.Yoann Lopes2014-10-301-2/+34
| | | | | | | | | 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>
* GStreamer: fix QMediaRecorder::duration() when recording with a camerav5.4.0-beta1Yoann Lopes2014-10-031-6/+14
| | | | | | | | | | To get the recording duration, we were using the camerabin's position, which represents the time since it was started, not the time it's been recording to a file. We now retrieve the camerabin's filesink position. Change-Id: I68eeb25d1718666288655d22deea23e25de73b90 Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
* Implement encoder settings in camerabin backend.Andrew den Exter2014-09-111-0/+37
| | | | | | | | | | This is not comprehensive since different encoders have different names and representations for many settings, but it should cover bit rate for most encoders, and quality and encodingMode for a number of common encoders. Change-Id: I0ba4e70c2f234e0deaaa02bdecc0f5198122c1e9 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Update license headers and add new license filesAntti Kokko2014-08-241-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: Ied06887225df341064c12bcc14c259ae74116f2e Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
* Provide face and orientation info from gstreamer camera backend.Andrew den Exter2014-07-121-20/+12
| | | | | | | | | | Cleans up duplicate device enumeration code so the devices listed by the QMediaServiceProviderPlugin are the same as those in the QVideoInputDeviceControl and includes face and orientation information if available. Change-Id: Iaa4c303c973bcf3e0f7c8c2fd7a7de629bccec86 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* GStreamer: correctly handle URLs from QMediaRecorder::setOutputLocationYoann Lopes2014-07-031-2/+8
| | | | | | Task-number: QTBUG-39949 Change-Id: Idf575b126bd3531655c8abda55c9e04149a4fb85 Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
* GStreamer: fix memory leaks.Yoann Lopes2014-03-211-8/+14
| | | | | | | Many GStreamer objects were not properly managed or never released. Change-Id: I38b3854e8b9e2264b5b647f331d3bb16b886e2d6 Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
* GStreamer: Remove tags when an invalid QVariant is assigned.Andrew den Exter2014-03-061-0/+2
| | | | | | | | | | Clear the tag list before syncing with reference set so old values are removed and explicitly remove invalid QVariants from the reference set so that the type correction doesn't result in invalid values being written instead. Change-Id: I7d1bdc95cd2a2d601720db84c9b3ef629477bc99 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2014-01-221-79/+111
|\ | | | | | | Change-Id: Ifcb0e0bac29c11980ea2a9d67b12e1b79c4bd9f6
| * Fix incorrect/missing application of recording settings in camerabin.Andrew den Exter2014-01-171-7/+34
| | | | | | | | | | | | | | | | | | | | | | Don't set profiles if no settings are specified. Apply all settings before starting a pipeline as the mode can switch without being restarted and incompatible video recording settings can prevent the pipeline starting even in image capture mode. Set audio encoding settings and encoder profiles if they are supplied. Change-Id: I06febf977c2cae306383f9dbaae0f81f531b4757 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
| * Fix writing orientation and date exif tags in camerabin.Andrew den Exter2014-01-171-3/+16
| | | | | | | | | | | | | | | | | | | | Orientation tags need to be transformed from the string tag returned by gstreamer to the orientation in degrees. Date tags need to be inserted with gst_date_time_new_local_time. Finally setting a tag value shouldn't clear all other tags. Change-Id: I28922148251084c12cf6c93d9b097fa5df41da9d Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
| * Allow the user to specify the viewfinder resolution instead of guessingAndrew den Exter2014-01-171-69/+61
| | | | | | | | | | | | | | | | | | | | | | | | Guessing badly prevents the camerabin pipeline from loading at all and the fallbacks used are not representive of the capabilities of most cameras. So either stay out of the process and let gstreamer negotiate a resolution if it can, or use a resolution supplied through the viewfinder settings control by someone hopefully better informed. Task-number: QTBUG-30842 Change-Id: Iec2dcc2476f38822f9e0d02301e46a1f49b7c6da Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* | Use QStringRef instead of QString whenever possible.Jędrzej Nowacki2014-01-151-1/+1
|/ | | | | | | That way we reduce count of temporary QString instances. Change-Id: Id806c68ea616828c2355c07b8576616fa6a8da17 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Only acquire resources as required in gstreamer backend.Andrew den Exter2014-01-131-0/+4
| | | | | | | | | | | Make resources required for capture optional and disable just the capture features if they are not available, so the camera viewfinder can be displayed and images captured without blocking the music playback and the other way around. Change-Id: Ic9692195156d994ccd4a911ae41d2242a00d575b Reviewed-by: John Brooks <john.brooks@dereferenced.net> Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Allow the camerabin source selection to be overridden.Andrew den Exter2014-01-131-42/+50
| | | | | | | | | | | Prefer the default camera-source element if there is one or an element identified by an environment variable to a static list of possible elements which may not be appropriate for the target environment. Change-Id: I53816c949307953780f9046eb11e09effe059be0 Reviewed-by: John Brooks <john.brooks@dereferenced.net> Reviewed-by: Andy Nichols <andy.nichols@digia.com> Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Fix crash on idle status change with 64 bit architectures.Andrew den Exter2013-04-171-1/+1
| | | | | | | | | | bool and gboolean are not necessarily the same size on all architectures, and if gboolean is larger than bool then passing it as an argument to g_object_get can trash the stack. In this case overwriting some of the session pointer. Change-Id: Iaa7be6a327e9f69212bd7d5bb372d33f2026db0f Reviewed-by: Andy Nichols <andy.nichols@digia.com>
* GStreamer: fixed build when using GST_PHOTOGRAPHY.Yoann Lopes2013-02-281-0/+2
| | | | | | | | | | | | CameraBinExposure was reimplementing the Qt4 version of QCameraExposureControl instead of the refactored version of Qt5. Zoom features were still handled in CameraBinFocus but these have been moved to their own control in Qt5. Task-number: QTBUG-29300 Change-Id: I0c71cac6011137bc5457f0d362da44c72039004a Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-101-1/+1
| | | | | | Change-Id: Ia8c1c38aba1544603fada8c414cc856f365fd15b Reviewed-by: Akseli Salovaara <akseli.salovaara@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-241-24/+24
| | | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: Id77334cfb15de096941c88e32d04ca07b4eb4709 Reviewed-by: Janne Anttila <janne.anttila@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Use QStandardPaths instead of QDesktopServicesThiago Macieira2012-08-021-2/+2
| | | | | | | | | The use of QDesktopServices for getting paths is deprecated in favour of QStandardPaths. Change-Id: I93c4a15dd65962d668c90e78f3f33f357e2450bb Reviewed-by: David Faure <faure@kde.org> Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
* Camerabin camera service: configure default video settingsDmytro Poplavskiy2012-07-161-4/+8
| | | | | | | | | encodebin doesn't like the encoding profile with ANY container caps, if container and codecs are not specified try to find a commonly used supported combination Change-Id: Icbde042bd17d9682112fb8bbb8f0d506f6ddebe1 Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
* Updated the camerabin2 based camera with QtMultimedia changesDmytro Poplavskiy2012-07-161-51/+83
| | | | | | | | | | | | | | Moved it to the separate plugin as the rest of gstreamer based services; Updated with libqgsttools_p changes; Implemented QMediaRecorder::status property; Made gst_photography dependency optional, it's not always available on desktop; Added video recording case to auto integration test; Moved backend implementation into qt namespace Task-number: QTBUG-26046 Change-Id: Iacfc1a6e263a4c0201d5eb28d04c960b87a230c0 Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
* Avoid string-based, dynamic lookup of signalsKent Hansen2012-06-051-10/+10
| | | | | | | | | | | | | | Qt5 has a new function QMetaMethod::fromSignal() for obtaining the meta-method that corresponds to a particular signal (member function). This also avoids calling the virtual metaObject() function to resolve the meta-method every time the signal is emitted; it is known at compile-time which class the signals are defined in, so it's safe to retain the meta-methods across calls. Change-Id: I47328ec2dfc335c570fb18bcd304a2ee405bfd6e Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
| | | | | | | | | | As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: I20e5215108c6ebd5f8474fed5c3665118e4791e6 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update obsolete contact address.Jason McDonald2012-01-231-1/+1
| | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: Ie8cd560b6d9a2c6e552b6be1ad8bc96c80a6535c Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>