summaryrefslogtreecommitdiffstats
path: root/src/gsttools
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-03-271-0/+5
|\ | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: Ie0a7534d518cd5758119edc77d8275ac3da2037c
| * Fix compile failure with gstreamer 0.10Richard Oehlinger2019-03-181-0/+5
| | | | | | | | | | | | | | | | This fixes an compile failure introduced in commit 67c4ec55. Fixes: QTBUG-74475 Change-Id: I0dabb72f8b5cdd75336b15515381ff9d9442788f Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-02-232-2/+7
|\| | | | | | | Change-Id: I7a99bdc1300e3e19c85967bf67da3481a259e3c1
| * Gstreamer: Set surface from renderer before creating pipelineVaL Doroshchuk2019-02-222-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When multiple pipelines are created, and one of these gets recreated, it picks up the last set surface. This is incorrect, as it needs a surface belonging to the current renderer. This patch sets the surface before creating pipelines, retrieving it from the current renderer. Task-number: QTBUG-73557 Change-Id: I0811f7262a0eca57e01361a55515351127520064 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-02-161-5/+3
|\| | | | | | | Change-Id: I947a3b4aaf39e56b9505ae802b8b31c718922639
| * Gstreamer: Fix compilation error with 0.10 versionVal Doroshchuk2019-02-141-5/+3
| | | | | | | | | | | | Task-number: QTBUG-73740 Change-Id: I1de087b63f65bab39351d5446254a8d1832e88c3 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* | Gstreamer: Add support of avfvideosrc for camerabinVaL Doroshchuk2019-02-081-11/+27
| | | | | | | | | | | | | | | | | | Gst Device Provider now can be used for macOS also. Added support of avfvidesrc element to be used within camerabin. Task-number: QTBUG-72125 Change-Id: I69205649c6e75432534e240656d8cb4748ee10cc Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* | Gstreamer: Return GstBuffer from QGstVideoBufferVaL Doroshchuk2019-02-041-0/+1
| | | | | | | | | | | | | | Useful to get some impl specific information from video buffer. Change-Id: I7fccf2855f0be180bd438a59e4fbaefce15b4ed8 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-02-022-31/+60
|\| | | | | | | Change-Id: Ia13d887c3e3bf00b6ded5d052384fc5689b816fe
| * Gstreamer: Set custom pipeline using urlVaL Doroshchuk2019-01-231-30/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduced possibility to set custom pipeline using url. Now the pipeline should be set only via QMediaPlayer::setMedia using url with scheme "gst-pipeline". For example, "gst-pipeline: videotestsrc ! autovideosink" Since setting the media should be done after renderer in QML, hence a surface is ready to be used and "qtvideosink" is available in pipelines. To use it with QVideoWidget, setting the pipeline should be done after passing video output. Change-Id: Id43f8681069e4bca2eafb154df2c5d446a0ca498 Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* | GStreamer: support video orientationAlexander Volkov2019-02-012-0/+36
| | | | | | | | | | Change-Id: I233c45824f517c185cb245d8a7d77cab8551fc51 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* | GstTools: move headers to correct folderJochen Seemann2019-01-3126-6/+3020
| | | | | | | | | | | | | | | | We don't need to have the headers of QtMMGstTools in a separate directory of the QtMultimedia module. Change-Id: If304ab5ee5741aec7cf7785352f5a571bc4ec240 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2019-01-221-4/+6
|\| | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: Icf8b9f73c50b16d6f5765040eb7bd918231df94a
| * Migrate QGstUtils to use QRegularExpressionSamuel Gaist2019-01-121-4/+6
| | | | | | | | | | | | | | | | | | This patch updates the QGstUtils class to use QRegularExpression in place of QRegExp which is to be considered deprecated. Fixes: QTBUG-72589 Change-Id: I67e189c48688b512cc76c884fd2a7e51e1b188f9 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* | Gstreamer: add support for ksvideosrc within camerabinVal Doroshchuk2019-01-171-0/+45
| | | | | | | | | | | | Task-number: QTBUG-72125 Change-Id: I12bc684a796c6abb6af3a51edca52011495f4ac9 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Fix warnings about deprecated QPalette enumerations and functionsFriedemann Kleint2019-01-141-2/+2
|/ | | | | | | | | | videowidget.cpp:625:32: warning: 'Background' is deprecated: Use QPalette::Window instead [-Wdeprecated-declarations] qgstreamervideowidget.cpp:56:36: warning: 'Background' is deprecated: Use QPalette::Window instead [-Wdeprecated-declarations] qgstreamervideowidget.cpp:56:36: warning: 'Background' is deprecated: Use QPalette::Window instead [-Wdeprecated-declarations] qgstreamervideowidget.cpp:83:55: warning: 'const QBrush& QPalette::background() const' is deprecated: Use QPalette::window() instead [-Wdeprecated-declarations] Change-Id: Ieb55a57c5672d3023a48461ec347fbb30210fd1e Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* GStreamer: remove unnecessary <unistd.h> includesJ-P Nurmi2018-12-261-1/+0
| | | | | | | This makes it possible to build the GStreamer backend on Windows. Change-Id: I5b705524072d8bd89a7c9b834201b97e0d01d6cc Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* QGstUtils: fix build with MSVCJ-P Nurmi2018-12-261-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | MSVC didn't like the #iffery that was done with GST_STATIC_CAPS(). The build error was: qtmultimedia\src\gsttools\qgstutils.cpp(1323): error C2121: '#': invalid character: possibly the result of a macro expansion qtmultimedia\src\gsttools\qgstutils.cpp(1323): error C2059: syntax error: 'if' qtmultimedia\src\gsttools\qgstutils.cpp(1323): error C2143: syntax error: missing ';' before '{' qtmultimedia\src\gsttools\qgstutils.cpp(1311): error C2143: syntax error: missing ';' before '}' qtmultimedia\src\gsttools\qgstutils.cpp(1325): error C2059: syntax error: 'return' qtmultimedia\src\gsttools\qgstutils.cpp(1326): error C2059: syntax error: '}' qtmultimedia\src\gsttools\qgstutils.cpp(1326): error C2143: syntax error: missing ';' before '}' qtmultimedia\src\gsttools\qgstutils.cpp(1329): error C2143: syntax error: missing ';' before '{' qtmultimedia\src\gsttools\qgstutils.cpp(1329): error C2447: '{': missing function header (old-style formal list?) Change-Id: Ic9ac64648aba396fc4ef433e73d5c72a8c1c3da1 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* Gstreamer: Fix undeclared identifier QGstVideoRendererSink in 0.10 verVaL Doroshchuk2018-09-251-1/+1
| | | | | | Task-number: QTBUG-70465 Change-Id: I6af46cb8de0b40dc41aaa0b999faf68d102c7b48 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Merge remote-tracking branch 'origin/5.11' into 5.12v5.12.0-alpha1Qt Forward Merge Bot2018-09-082-5/+10
|\ | | | | | | Change-Id: I886c4bda70a2b5a013a445d03487c7e3ef98e858
* | Gstreamer: Introduce custom pipelineVaL Doroshchuk2018-08-305-61/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added an ability to define custom pipeline. Since new pipeline is used, playbin features will not work. Registered "qtvideosink" gstreamer element to be used in pipelines. In case if there is a need to render to QML VideoOutput element. I.e. if a pipeline is "videotestsrc ! qtvideosink" then QGstVideoRendererSink will be used as a sink and rendering will be done by one of QSGVideoNode's. In this case there is a need to create a pipeline after video surface is ready. Also added an ability to override default video sink and define custom one instead. QGstreamerVideoRendererInterface::setVideoSink() provides functionality to override default one. QGstreamerPlayerSession::rendererChanged() can be used to check if the renderer is ready to create a pipeline or set custom video sink. Task-number: QTBUG-39327 Change-Id: I635d3a07fb9a5dcf30ee63284a849b0ad3438536 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into 5.12Qt Forward Merge Bot2018-08-301-1/+1
|\| | | | | | | Change-Id: I3a41fab753e5a06fc9f30464edf7d6626e7ae92a
| * Gstreamer: Set video-profile to CameraBin before GST_STATE_READYVaL Doroshchuk2018-08-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CameraBin creates default (application/ogg, video/x-theora) video profile or sets custom defined one, but ONLY on GST_STATE_CHANGE_NULL_TO_READY. If the camera is already loaded then it is not possible to change the video profile. Since a video profile was never defined, video/x-theora was always used to record video. Moved setting video profile before it gets to READY. It fixes an issue with ignoring CameraBinRecorder::applySettings(). This also changes previous behavior when video/x-theora was always used. To apply custom video settings it requires to use QMediaRecorder::setVideoSettings before the camera enters the READY state. Task-number: QTBUG-69895 Change-Id: I3afbf1f8e7c953e2e49e9cad7e96ea0b18a29d1a Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Gstreamer: Allow to use gst specific featuresVaL Doroshchuk2018-08-293-2/+2508
|/ | | | | | | | | | | | | | Gstreamer implementation is located in a plugin. In case if there is a need to use some internal features QGstreamerPlayerControl and QGstreamerPlayerSession have been moved from plugin to QtMultimediaGstTools library. It allows to request media player control from QMediaService and use it as QGstreamerPlayerControl. Change-Id: I8e45480c4cd718b90b90d14a42bc56f6f924eae5 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Gstreamer: Use gst_bus_remove_watch() instead of g_source_remove()Peter Seiderer2018-07-251-0/+4
| | | | | | | | | | | | | Avoids critcial warning ('GLib-CRITICAL **: Source ID 10 was not found when attempting to remove it') in case the applications initiates another glib context/main loop. The new gst_bus_remove_watch() is available since gstreamer API 1.6, otherwise fall back to g_source_remove(). Task-number: QTBUG-69468 Change-Id: I4343865cb41a2d62ac4b0c0c04f60f13727f56d0 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* Fix comment endThiago Macieira2018-04-271-1/+1
| | | | | | | | Caught by Clang 6: qgstutils.cpp:180:1: warning: '/*' within block comment [-Wcomment] Change-Id: I3840d727dee443318644fffd152938f2b4df5400 Reviewed-by: Martin Smith <martin.smith@qt.io>
* Doc: Fix documentation warningsTopi Reinio2018-04-191-2/+7
| | | | | | | | | | | | Add a custom module header, used only for documentation builds, that pulls in also the QtMultimediaWidgets module. Several documentation fixes to clean up warnings from clang. Task-number: QTBUG-67790 Change-Id: I6c1013798a648250c8555eb92684ec3b33ff7531 Reviewed-by: Martin Smith <martin.smith@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Gstreamer: Fix leak in prepare-window-handle messageVaL Doroshchuk2018-03-211-1/+3
| | | | | | | | | | | If the handler returns GST_BUS_DROP, it should unref the message, else the message should not be unreffed by the sync handler. The message is not going to be unreffed after handler call is made. Task-number: QTBUG-64142 Change-Id: Ib44f574e95457cdfab66b390c691a8b572987d66 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Gstreamer: Fix setting vaapi sink propertiesVaL Doroshchuk2018-03-211-107/+288
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Since vaapi and xvimage sinks require different ranges for the properties: brightness, contrast, hue, saturation. Added support of vaapi ranges. It also fixes problem when contrast was always 0 as default value which led to always show black screen. - brightness xvimage: Allowed values: [-1000,1000], Default value: 0 vaapi: Allowed values: [-1,1], Default value: 0 - contrast xvimage: Allowed values: [-1000,1000], Default value: 0 vaapi: Allowed values: [0,2], Default value: 1 - hue xvimage: Allowed values: [-1000,1000], Default value: 0 vaapi: Allowed values: [-180,180], Default value: 0 - saturation xvimage: Allowed values: [-1000,1000], Default value: 0 vaapi: Allowed values: [0,2], Default value: 1 Task-number: QTBUG-23761 Change-Id: I8fda8ce4c6f47c4567e67c670f802a0e9f55af6e Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-061-5/+4
|\ | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I5acdc7e0bd3729b80522dfff0f388cf2507fb111
| * GStreamer: Always notify CameraBinSession if a device has been selectedVaL Doroshchuk2017-12-051-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | CameraBinSession is never notified if a device has been unplugged and replaced by new one with the same index. Since QGstreamerVideoInputDeviceControl is for internal usage and dependent classes already check against the device name, we don't need to check it here. Task-number: QTBUG-64080 Change-Id: I064289335642d5d673f9db1ea206850968002d2e Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-10-271-1/+2
|\| | | | | | | Change-Id: Ib509a8c90dd6c7229510a400612cc27a4957d015
| * Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2017-10-271-1/+2
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf examples/multimedia/declarative-radio/view.qml src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h Change-Id: I97b507878b6de04ec38ddd13530e58b8f72390e4
| | * GStreamer: Fix V4L input queryVaL Doroshchuk2017-10-091-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The last ioctl argument expect a pointer to an integer, not the integer value itself. Also, the ioctl call will return 0 on success, or ENOTTY if the input can't be select, both indicating that the device is a camera. Task-number: QTBUG-62245 Change-Id: Ifcf2d30b11ae204036b43daae664f917aaed83ed Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-10-191-4/+2
|\| | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.h Change-Id: Ic6e27742ef6d1af0532ad05902a1431ebd5f449d
| * | Merge remote-tracking branch 'origin/5.9' into 5.10Christian Strømme2017-09-261-4/+2
| |\| | | | | | | | | | Change-Id: Ib7c41a4cd7fd6976ebab52673898888dfac53db5
| | * GStreamer: fix video output stopping when the main thread is blockedYoann Lopes2017-09-221-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a new frame is ready to be rendered, our gst sink waits until the frame is actually processed in the GUI thread, but never more than 300 ms. The time limit is there to avoid potential dead locks in specific situations. Before, if the wait would timeout, the sink would signal that there was an error rendering the frame, which would in turn put the pipeline in an error state and would stop processing any further frame. We now simply skip the frame if the GUI thread is blocked for too long and signal that everything went fine to the pipeline. This was already the logic in place for GStreamer 0.10 (see qvideosurfacegstsink.cpp). Task-number: QTBUG-60509 Change-Id: I5173a15340c0e2065bb2fb5ca3bc045ac84ba7e1 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | | Replace Q_NULLPTR with nullptrKevin Funk2017-09-271-1/+1
|/ / | | | | | | | | Change-Id: I3b7601b4a97f8a2b1d2da6ef134f1577846ba713 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Fix warnings about casting between QString and narrow characterThiago Macieira2017-07-182-41/+41
| | | | | | | | | | Change-Id: I8d96dea9955d4c749b99fffd14cde44ebf1f7290 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
* | turn QGstTools into a proper private moduleJochen Seemann2017-06-121-9/+6
| | | | | | | | | | | | | | | | | | | | This patch moves the QGstTools lib to a private Qt module and marks the needed classes and functions with Q_DECL*, to improve cross-platform abilities. It's the first step to use the GStreamer backend on macOS and Windows platform. Change-Id: Idc23c72bcccb52dd501e169e9dfdc227856787fa Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Fix build with QT_STRICT_ITERATORSSergio Martins2017-05-201-1/+1
|/ | | | | Change-Id: I1d646cf7d8f68a7ec5c713735c233c71bc3f338b Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Build fix for -no-feature-timezonePaul Olav Tvete2017-03-201-2/+3
| | | | | | | | | Use the QDateTime constructor that takes an offset from UTC instead of creating a timezone that has the same offset. Change-Id: Iceb1bf598263e7d81786fbf847012993d07e08ba Reviewed-by: Yoann Lopes <yoann.lopes@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-03-103-14/+9
|\ | | | | | | | | | | | | Conflicts: src/plugins/gstreamer/camerabin/camerabincontainer.h Change-Id: I4942d41d69112335fe0c994002f1b32ef3aad051
| * Use QT_CONFIG macro to check for featuresLars Knoll2017-02-273-14/+9
| | | | | | | | | | | | | | And remove many custom defines. Change-Id: I658cc8430d1d99ed3c0aafe03a77adce76621a29 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | GStreamer: Add missing override and remove redundant virtualAlexander Volkov2016-12-131-2/+2
| | | | | | | | | | Change-Id: I61997676d7f002e769de499b19cbea3d96876480 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | Merge remote-tracking branch 'origin/5.8' into devLiang Qi2016-12-123-627/+13
|\| | | | | | | | | | | | | Conflicts: src/plugins/gstreamer/mediacapture/qgstreameraudioencode.cpp Change-Id: I7c30c2d13fdd07ee07e4449d5d3e256e988d3793
| * Fix mir detectionLars Knoll2016-11-231-2/+1
| | | | | | | | | | | | | | | | | | The old check would have never triggered unless you compiled with CONFIG+=mir by hand. Change-Id: I1d418dce09adaedbdff366dfeb8f4036cac0f075 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Cleanup all maemo/meego specific codeLars Knoll2016-11-143-597/+0
| | | | | | | | | | Change-Id: I6c6f28084c6b030928eebc53c5d0009b168ede6a Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
| * Move qtmultimedia over to the new config systemLars Knoll2016-11-141-28/+12
| | | | | | | | | | | | | | | | | | | | | | | | Use the new configuration system to define external libraries, configure tests and features. Don't use pkg-config outside of the configuration step. And move all command line options over from qtbase, so that we can remove them from there in a second step. Change-Id: I1aa4b557a6aee17eeceb00602005a2d28b426a26 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | GStreamer: move suggestedFileExtension() out of camerabin pluginYoann Lopes2016-08-231-0/+34
| | | | | | | | | | | | | | Now in QGstUtils, in order to be used from other places. Change-Id: Id8beae1b804fa22bd648e254a1ff2a1f1e455a02 Reviewed-by: Christian Stromme <christian.stromme@qt.io>