summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/mediacapture
Commit message (Collapse)AuthorAgeFilesLines
* Android: Run-time permission checks for cameraChristian Strømme2017-04-231-1/+1
| | | | | | | | | | | | | | | The camera should ask for permission before being used. Normally this should be handle by the user, which can provide proper reasons for why the camera is used. To verify that we are allowed to open the camera, and as a good default, we'll check the permission and request access if needed. [ChangeLog][Android] Added run-time permission checks for accessing the camera. Task-number: QTBUG-55992 Change-Id: Ifb4e176728aab3076fdba292e17e17d33b1260a2 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Android: Fix camera preview orientationChristian Strømme2017-04-201-0/+6
| | | | | | | | | | | | Before API level 24 the display orientation (the preview) was always set to 0. On newer versions of Android the clockwise rotation is set to be either 0 or 180, depending on the hardware. Since we don't want Android to apply transformation on our surface, we'll just enforce that the display orientation is always set to 0. Task-number: QTBUG-56536 Change-Id: Ie1aacda97540d5c97e6cbd8edb2afc53e7041e1e Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Android: Add run-time permission check for recordingChristian Strømme2017-03-301-0/+9
| | | | | | | | | | | Check and request permission to record audio if needed. [ChangeLog][Android] Added run-time permission checks for media-recording. Task-number: QTBUG-55992 Change-Id: I781e5a5447f1ad03c069b2171637525ae9108d78 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-08-131-0/+6
|\ | | | | | | Change-Id: I3204cdf695f4b47730a88a7c41fc7a6de967b161
| * Android: restart preview when image capture failsYoann Lopes2016-08-121-0/+3
| | | | | | | | | | | | | | | | The preview must be restarted after taking a picture but were doing that only when the capture succeeded. We now also do it when it fails. Change-Id: I8bfff06a811d9333220050e5e81561438f5a3786 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
| * Android: don't process capture previews when capture is canceledYoann Lopes2016-08-121-0/+3
| | | | | | | | | | Change-Id: Ia068b0fcc30412755639412ec03e49c740b66bed Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Replaced old license headers with new and correct onesJani Heikkinen2016-08-122-26/+38
| | | | | | | | | | | | | | | | | | | | Replaced - header.LGPL3 with header.LGPL - header.LGPL21 with header.LGPL Change-Id: If11396da6ff12e9122281c17fc4354b05a554ee5 Reviewed-by: Ruslan Baratov <ruslan_baratov@yahoo.com> Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Yoann Lopes2016-08-011-2/+13
|\| | | | | | | Change-Id: Ic29cb09048003f18ff86d4546cd547be715eaec8
| * Android camera: use closest viewfinder resolutionAnatoly Stolbov2016-07-271-2/+13
| | | | | | | | | | | | | | | | | | | | For some cameras difference between preview aspect rate and capture aspect rate is more than 0.01. Therefore it is better to use preview size with closest aspect rate. Task-number: QTBUG-50813 Change-Id: I1284c8ec2be1aa160a656e396a52960fa06aaa56 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | Implement QCameraViewfinderSettingsControl2 interface for AndroidRuslan Baratov2016-06-028-45/+371
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add class QAndroidViewfinderSettingsControl2 which implements QCameraViewfinderSettingsControl2 interface. This make next QCamera methods working on Android: * QCamera::setViewfinderSettings * QCamera::supportedViewfinderFrameRateRanges * QCamera::supportedViewfinderPixelFormats * QCamera::supportedViewfinderResolutions * QCamera::supportedViewfinderSettings * QCamera::viewfinderSettings Originally from: * https://github.com/headupinclouds/gatherer/issues/109 Change-Id: Ic43e434289a626691f01ed9832654fa9b0105c7d Reviewed-by: Ruslan Baratov <ruslan_baratov@yahoo.com> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Updated license headersAntti Kokko2016-01-1946-646/+922
| | | | | | | | | | | | | | | | | | | | | | 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>
* | Merge remote-tracking branch 'origin/5.6' into devChristian Strømme2016-01-158-101/+483
|\| | | | | | | | | | | | | | | Conflicts: src/plugins/android/src/mediacapture/qandroidcamerasession.cpp src/plugins/wmf/mftvideo.cpp Change-Id: I78868b416ea4baec89ca3e2dc9eb4712db16d5fc
| * Merge remote-tracking branch 'origin/5.5' into 5.6Christian Strømme2016-01-121-2/+7
| |\ | | | | | | | | | Change-Id: Ia563cf734178b821c2aadda8b79b1f09b17de7cd
| | * Android: Don't call restartViewfinder() for audio only recordings.Christian Strømme2016-01-111-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calling restartViewfinder() would try to access m_cameraSession without checking if it was valid. This change adds guards around the calls to restartViewfinder(), and one in the function itself. Task-number: QTBUG-50282 Change-Id: I1f2b4d2b2342bf2dc2b7f28a7bcd00e08a0edb44 Reviewed-by: jian liang <jianliang79@gmail.com> Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
| * | Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2016-01-072-0/+31
| |\| | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/android/src/wrappers/jni/androidcamera.cpp Change-Id: Ibb34f710b1dfb9a23b378462f31432581c6c26f4
| | * Android: check for exceptions in some camera operations.Yoann Lopes2015-12-032-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not all camera operations are documented to raise exceptions, but they actually might do so depending on the hardware/drivers. Check for exceptions in all functions that could porentially fail and react appropriately. Task-number: QTBUG-49134 Change-Id: I633ca7f2e3aeb6532e1c445735e62135f52cf25f Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
| * | Android: fix QMediaRecorder crashing the camera server on some devices.Yoann Lopes2015-12-042-1/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | Some devices require MediaRecorder.setPreviewDisplay() to always be called, even though the Android doc says otherwise. Task-number: QTBUG-37837 Change-Id: I1e9b56f06e7c41bdf684f93b5ec7635f8ae9f379 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
| * | Android: support non OpenGL video surfaces for the camera.Yoann Lopes2015-12-047-98/+418
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QCamera can now pass raw frame data to its QAbstractVideoSurface. The now deprecated Android camera API we're using doesn't allow to get frame data without also displaying the frames in a SurfaceView or a SurfaceTexture. To work around that, an invisible dummy SurfaceView is used. This allows to retrieve frames in the NV21, YV12, YUY2 or RGB565 formats, depending on the Android version and on the device. Task-number: QTBUG-35416 Change-Id: I77b4f50505c3b91efb4b2288a57f50398922c0db Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com> Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | | Replace foreach with range-based forAnton Kudryavtsev2016-01-151-1/+1
|/ / | | | | | | | | | | | | ... in Android, AudioCapture and m3u plugins. Change-Id: If06a97e49cfa4d32a41da2f043710cfdbd8a7b20 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* / Add private API for conversion from QVideoFrame to QImage.Yoann Lopes2015-10-201-5/+6
|/ | | | | | | | | | The Android plugin had a function to convert from NV21 to RGB32. It's now moved to the Qt Multimedia library and it supports additional source formats. It could be further improved with more SIMD code, it could then become a public API. Change-Id: Ibee349027048a263a1a7ea74dc51237f7747912c Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* Android: minor refactor of the camera frame callback.Yoann Lopes2015-08-202-44/+45
| | | | | Change-Id: I6b281c9b2d02cf223e66e04e31fdd0268aa277fc Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* Android: fix video probes when recording the camera.Yoann Lopes2015-08-201-1/+6
| | | | | | | | | The preview frame callback is cleared by the Android Camera whenever a MediaRecorder is set up. We need to reset the callback after starting the media recorder. Change-Id: I604320b11eb3a7f6f8d7d3167d5aae371999be14 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* Android: fix setting the camera preview resolution.Yoann Lopes2015-05-273-27/+18
| | | | | | | | | | | | | - When the video capture resolution or the image capture resolution changes, we now always set the viewfinder resolution to the highest available one with the same aspect ratio as the capture resolution. We were previously not doing anything if the new capture resolution had the same aspect ratio as the current viewfinder resolution. - Some devices don't support using a viewfinder resolution different from the video capture resolution. Make sure we handle this case. Change-Id: I8d3ab7b01c56ed78d1ca838a522ba459692fc332 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into 5.5Yoann Lopes2015-05-052-17/+13
|\ | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/plugins/avfoundation/camera/avfcamerasession.h src/plugins/avfoundation/camera/avfcamerasession.mm Change-Id: Ib2e25d907a7069591920d2f69e007f314cc0fd85
| * Android: Don't delete the media recorder object twice.Christian Strømme2015-04-302-17/+13
| | | | | | | | | | | | | | | | | | | | In QAndroidCaptureSession::stop() we call restartViewFinder() which eventually calls QAndroidCaptureSession::stop() again, but this time the media recorder object is already released. Task-number: QTBUG-45637 Change-Id: I943c423398a99d98ccda1063fc16e47cba470deb Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2015-02-131-9/+14
|\| | | | | | | Change-Id: I5575a4ba13212c9bfe73a3de3ef17c6528beafc3
| * Android: fix adjusting camera viewfinder resolution.Yoann Lopes2015-02-111-9/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | The viewfinder resolution must be in the same aspect ratio as the image capture resolution. When adjusting the viewfinder resolution to comply with that restriction, we assumed that the ratios had to be exactly equal. Though, in practice, there can be a small difference. For example for resolutions 2592x1952 (ratio=1.3278) and resolution 640x480 (ratio=1.3333). Task-number: QTBUG-37525 Change-Id: Ia5a6dd3a4a6d901b24bf74f8aa4e34bffe61f89b Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* | Update copyright headersAntti Kokko2015-02-1244-308/+308
| | | | | | | | | | | | | | | | | | 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>
* | Add additional exposure modes to QCameraExposure.Andrew den Exter2014-11-281-0/+50
|/ | | | | | | | | [ChangeLog][GStreamer][Android] Camera exposure mode extended to support Action, Landscape, NightPortrait, Theatre, Sunset, SteadyPhoto, Fireworks, Party, Candlelight, and Barcode modes. Change-Id: I13d4bb042d27c0bd2ffcd369882b56bbabc84335 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* Update license headers and add new license filesAntti Kokko2014-08-2444-830/+478
| | | | | | | | | - 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>
* Android: Make sure we check and clear exceptions from the camera.Christian Strømme2014-07-141-3/+4
| | | | | | | | | | In several places we where ignoring the fact that we might get an exception from the camera code on Android. Failing to clear them will cause the application to to terminate. Task-number: QTBUG-39425 Change-Id: Idfe40e1749f54d551d37dae25912d9ddbc3da01e Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Android: fix setting camera parameters from QML.Yoann Lopes2014-07-108-136/+189
| | | | | | | | | | | | We were ignoring new parameter values when the camera was not loaded. All QML properties that were set at initialization time were therefore ignored since the camera is not loaded at that point. We now store all camera parameters and apply them once the camera is loaded. Task-number: QTBUG-39307 Change-Id: If66d768941c25cede2aea1b48fb928c4735c10f8 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Android: fix crash when stopping the camera while a recording is activeYoann Lopes2014-06-301-1/+2
| | | | | | | | | | When unloading the camera, any active recording is automatically stopped, which in turn triggers the viewfinder to be restarted... We don't try anymore to restart the viewfinder after stopping recording unless the camera is still active. Change-Id: I77e4e3fc8d7116ac660d8bb23f6c400ebed4ffed Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Android: fix registering recorded videos with the Android media scannerYoann Lopes2014-06-301-1/+1
| | | | | Change-Id: I6dfc4e13b8a0bccb1bcfead728f7e1ddb7b58bb4 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Android: correctly update camera focus zones.Yoann Lopes2014-06-301-15/+14
| | | | | | | | | When setting a null custom focus point, we were correctly resetting the focus zones but we were not emitting the focusZonesChanged signal, causing the QML Camera to not update its focus zones. Change-Id: I59940c4cd2979fa08dc26566dc0f6d19e503f64f Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Android: don't start camera preview until the viewfinder is ready.Yoann Lopes2014-06-052-12/+26
| | | | | | | | | If no video output is set for a camera, don't try to start the camera and report an error. If the video output is not ready, delay starting until it is. Change-Id: Id08e31a4e795b71ac036a6532e9499ca5670d790 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Android: Don't expose java calls in the control classes.Christian Strømme2014-06-043-60/+19
| | | | | | | Makes the abstraction more clear. Change-Id: Ia9a7b0b157e1182158cd26b62775d13f6c5e1727 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Android: Rename the wrapper classesChristian Strømme2014-06-0412-78/+77
| | | | | Change-Id: I2ce15c8475da3186f128ba59b7c58f9b5b0a67e1 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Android: Fix namespace usage.Christian Strømme2014-05-123-0/+10
| | | | | | | Make it possible to build multimedia with a Qt namespace Change-Id: Ibaeaf7edb38f8d784b8d0fcb9a26ca712488c23b Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Moved QMediaStorageLocation out of the Android plugin.Yoann Lopes2014-05-097-218/+23
| | | | | | | | It's now a private API in the QtMultimedia library in order to be accessible in other plugins. Change-Id: I63541de1e8c540cebc210f9037646ce74d866c6f Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Android: Release the surface texture when not in useChristian Strømme2014-04-121-2/+8
| | | | | | | | | | | With some Android versions the preview texture is released when the application is suspended. If we don't release the texture in our code, the preview will be empty when the application resumes. Task-number: QTBUG-38165 Change-Id: I72244727081d8f94ee5f6cb0ab660ca59f4bb2de Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Android: restart camera viewfinder after a recorder error.Yoann Lopes2014-03-172-9/+15
| | | | | Change-Id: I33f083fda5c10cfb997a21100c0ec3d4a314aee0 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Android: correctly report QMediaRecorder actual output location.Yoann Lopes2014-03-172-6/+5
| | | | | | | | Report the recorded media location to have changed only when recording is finished and successful. Change-Id: Iee7565b9ba12d9de09f86dffb34c40936fee198c Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Android: correctly report QMediaRecorder status.Yoann Lopes2014-03-172-33/+47
| | | | | | | | | | | QMediaRecorder should have the LoadedStatus before starting recording. When recording the camera, the recorder should be considered loaded when all prerequisites are met (viewfinder started, recording mode set to video and capture ready). Task-number: QTBUG-36828 Change-Id: I3279bdfdc2b361c7e0707c52e74ae47e0bb4a93d Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Android: implement QCameraInfoControl.Yoann Lopes2014-02-2810-137/+236
| | | | | | | | | VideoOutput will now take into account the camera sensor orientation to adjust the viewport orientation, we don't need to apply a rotation on the Android Camera anymore. Change-Id: Ia7639f0a5711ab6cc6f80b9716bc1a6f389499b4 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* New QCameraInfo class.Yoann Lopes2014-02-282-0/+15
| | | | | | | | | | | | | | | | | | | | The class allows to get the list of available cameras on the system as well as getting some static information about them such as their unique ID, display name, physical position and sensor orientation. This makes QCamera::availableDevices() and QCamera::deviceDescription() obsolete. This patch contains the API, documentation and auto-tests but not the actual implementation by each backend (except for retrieving the default camera device). [ChangeLog][QtMultimedia] Added new QCameraInfo class [ChangeLog][QtMultimedia] QCamera: availableDevices() and deviceDescription() are deprecated, use QCameraInfo instead Change-Id: I64fd65729ab26a789468979ed5444ee90bb82cd0 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-02-121-6/+11
|\ | | | | | | Change-Id: Ie93615076177662e75d46f3d13beeb88d424b4a6
| * Android: add missing information in frames retrieved with QVideoProbe.Yoann Lopes2014-01-301-6/+11
| | | | | | | | | | | | | | | | The number of bytes per line was missing. Change-Id: I0afbdcfd6d7195b7beb3fd09f4ed262f756be848 Reviewed-by: Denis Kormalev <dkormalev@ics.com> Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Yoann Lopes2014-01-301-7/+36
|\| | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2014-01-221-7/+36
| |\ | | | | | | | | | Change-Id: Ifcb0e0bac29c11980ea2a9d67b12e1b79c4bd9f6