summaryrefslogtreecommitdiffstats
path: root/src/plugins/avfoundation
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-08-024-77/+84
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf tests/auto/integration/qsoundeffect/BLACKLIST Change-Id: Icd2edd4410a4ee914d489634d26b262c0c146bf4
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Yoann Lopes2016-08-014-77/+84
| |\| | | | | | | | | | Change-Id: Ic29cb09048003f18ff86d4546cd547be715eaec8
| | * AVFMediaAssetWriter - fix race conditionsTimur Pocheptsov2016-07-264-65/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Apple recommends starting/setting up a session (AVCaptureSession) on a special queue and in the past we did this on the writer's queue. Unfortunately, we also can access the same session from a different thread and this results in race conditions and different weird crashes, for example, we're calling start/stopRunning from the writer's queue, while the session is being configured (in between beginConfiguration/commitConfiguration on the recorder control's thread). So we have to limit access to the session by the control's thread. Apple docs say we have to ensure all appendSampleBuffer calls done _before_ finishWriting. We ensure this by dispatching_sync an empty block on the writer's queue after store-release of m_state. We also do the same with video queue to ensure it does not try to access viewfinder's data after stop/abort executed. All these changes also make lock/mutex unneeded. Task-number: QTBUG-54890 Change-Id: I38e86c879b6b62306bdfbeade65405d6ac3be9f3 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
| | * AVFMediaAssetWriter - fix atomics useTimur Pocheptsov2016-07-192-27/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. No need in two different atomics (m_stopped/m_aborted) - the single one 'm_state' with states (Idle/Active/Aborted) should be enough. 2. QAtomicInt::load/store actually have relaxed memory ordering semantics, (not like std::atomic with sequential ordering as the default one) which is not always appropriate - replace with loadAquire/storeRelease instead. Change-Id: I4ce8c9ca7556de3d2c7e369b8a05276b2870460c Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into devEdward Welbourne2016-07-2124-297/+1411
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/directshow/player/directshowiosource.cpp One side disintermediated filling a vector; the other reduced it to one entry. src/plugins/directshow/player/directshowiosource.h One side renamed a member, the other added another adjacent to it. src/plugins/pulseaudio/qpulseaudioengine.h One side added a header, the other replaced the next with a different header. Change-Id: I3a031975f5af43ca39cca571f215c612f640b7d6
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-06-3024-297/+1411
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Blacklisted a few functions in tst_QAudioInput. Conflicts: .qmake.conf src/plugins/avfoundation/camera/avfcameracontrol.mm src/plugins/avfoundation/camera/avfcameraservice.h src/plugins/avfoundation/camera/avfcameraservice.mm src/plugins/avfoundation/camera/avfcamerasession.h src/plugins/avfoundation/camera/avfcamerasession.mm src/plugins/avfoundation/camera/avfcameraviewfindersettingscontrol.h src/plugins/avfoundation/camera/avfcameraviewfindersettingscontrol.mm src/plugins/avfoundation/camera/avfimagecapturecontrol.mm src/plugins/avfoundation/camera/avfimageencodercontrol.mm src/plugins/avfoundation/camera/avfmediarecordercontrol.h src/plugins/avfoundation/camera/avfmediarecordercontrol.mm tests/auto/integration/qaudioinput/BLACKLIST Task-number: QTBUG-54459 Task-number: QTBUG-49736 Change-Id: I3a1fe8cef50b44d5c2785aaf4cf69fe3f16728e6
| | * AVFoundation: improve changing the capture device format.Yoann Lopes2016-06-145-43/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure the device format is always set in the same way. We don't actually set the format anymore when it's the same as the current one. We also make sure the frame rate is preserved. Change-Id: I1c68239bc99d9c3cef920effcf47fc253220c26f Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
| | * AVFoundation: re-apply viewfinder settings on mode changes.Yoann Lopes2016-06-135-10/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | Since the active viewfinder resolution can be overridden by the image and video capture resolutions, we need to re-evaluate the viewfinder settings whenever the capture mode changes. Change-Id: Ibdb7a070585cf67ebb2fcfb95ccbdd105f5f41cf Reviewed-by: Christian Stromme <christian.stromme@qt.io>
| | * AVFoundation: fix orientation of recorded videos.Yoann Lopes2016-06-134-4/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure the video is recorded in the same orientation as the device. That means the top of the video matches the physical side of the device which is on top when starting recording. This patch makes sure the behavior is the same as on Android. In a future version, we should have an API to pick the desired orientation of the recorded video. Change-Id: Ia8bbfe621a0e54de3cb6bfe0a520f37e8a932539 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
| | * AVFoundation: implement QAudioEncoderSettings.Yoann Lopes2016-06-0910-23/+346
| | | | | | | | | | | | | | | | | | Change-Id: I24d3da1417142bc80bc6b6c1c8124c246afe03db Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
| | * AVFoundation: implement QMediaContainerControl.Yoann Lopes2016-06-098-5/+193
| | | | | | | | | | | | | | | Change-Id: I5097a0450f5836e48a697249619a1822775f3ad8 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
| | * AVFoundation: correctly set default frame rate on OSX.Yoann Lopes2016-06-031-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | On OSX, it's not possible to reset the frame rate to the default value by passing kCMTimeInvalid, so just set the first value from the supported frame rates. Change-Id: I984101c2a95e13053228e56f19b353e716eb2b67 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
| | * AVFoundation: implement QVideoEncoderSettingsControl.Yoann Lopes2016-06-0316-258/+781
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-40338 Change-Id: Ic23dabaad94d7b293019460710ae1a097002e227 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-05-137-113/+86
|\| | | | | | | | | | | Change-Id: I773db005bbdc511169917ee35eb5b517e898926b
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-05-107-113/+86
| |\| | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/winrt/qwinrtcameracontrol.cpp Change-Id: I45d3042adf19577a72794610fa1c310cb22e26c4
| | * Fix unused variable warningChristian Stromme2016-04-261-2/+5
| | | | | | | | | | | | | | | | | | | | | - warning: unused variable 'm_renderer' [-Wunused-variable] Change-Id: Ie7d8ebe35a3ab0beb66cda3448595ed952f7dea4 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
| | * AVFMediaAssetWriter - fix potential race condition(s)Timur Pocheptsov2016-04-214-109/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. m_writerQueue is now shared by recorder control and asset writer to ensure it lives long enough. 2. m_delegate->method() calls from async block can be dangerous, since by the time this block is actually executed, delegate can be deleted already. This fix uses Q_INVOKABLE and invokeMethod with QueuedConnection instead. 3. -finishWritingWithCompletionHandler: is async and when the block finally gets executed, lock and 'if aborted' test are still needed. 4. Simplify the logic and reduce locking. Change-Id: If23daf2fe22043244033427a7f6517a0fe3f23d1 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
| | * AVFFoundation - fix a compilation error (iOS, XCode 7.3)Timur Pocheptsov2016-04-191-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | __weak previously was a simple noop, but now it ends up in a compilation error in non-ARC'ed source code ('declaration uses __weak, but ARC is disabled'). Task-number: QTBUG-52671 Change-Id: I574519f892ba1d5f71488c5cc26423d04d5e02cf Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
| | * AVFoundation: fix switching to still image capture mode.Yoann Lopes2016-04-131-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | It would reset the active format on the capture device. The patch prevents that. Change-Id: I97c192c064bf3c6ed4ba1f8d78768196927819a7 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
| | * AVFoundation: return correct viewfinder settings.Yoann Lopes2016-04-131-1/+6
| | | | | | | | | | | | | | | | | | | | | When the camera is unloaded, return the requested settings. Change-Id: If39e158cd8d0fd8d4bbd7cf6cd48226cdefc1272 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* | | Add YUV 4:2:2 8Bit to supported formats of OS X camera plugin.Samuel Gaist2016-04-291-0/+10
|/ / | | | | | | | | | | | | | | | | | | | | Now that QtQuick handles YUV 4:2:2 8Bit video formats, let the input use them. [ChangeLog][OS X][Input format] Added YUV 4:2:2 8 bit to supported camera video formats. Change-Id: Ib9b927a530232111a1d1139689b4cd2adf34da3f Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-03-072-11/+11
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/avfoundation/mediaplayer/mediaplayer.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin5/mockserviceplugin5.pro Change-Id: I5742596230dc510ba2a09eba624429bb67179194
| * standardize statement order in project files a bitOswald Buddenhagen2016-02-252-2/+3
| | | | | | | | | | Change-Id: I96bbe1343eedbad6b48579d700bbb6b5b80d69f1 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * remove redundant statements from project filesOswald Buddenhagen2016-02-251-1/+0
| | | | | | | | | | | | | | | | | | | | - TARGET is unnecessary if it matches the project file's basename - CONFIG+=no_private_qt_headers_warning is added by qt_build_config.prf - load(qt_build_config) is done by .qmake.conf Change-Id: I3eb45a758dfee34be3c78fc13d996780741c95e9 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
| * consistently put {qt,qml}_{module,plugin} at the end of project filesOswald Buddenhagen2016-02-252-8/+8
| | | | | | | | | | | | | | | | this fixes static builds by ensuring that all dependencies are exported. Task-number: QTBUG-51071 Change-Id: I8e1554b648327ea2fb342b882ce8e439bd6f271d Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | Updated license headersAntti Kokko2016-01-1971-995/+1421
| | | | | | | | | | | | | | | | | | | | | | 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-157-147/+172
|\| | | | | | | | | | | | | | | 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.6Liang Qi2016-01-077-147/+172
| |\ | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/android/src/wrappers/jni/androidcamera.cpp Change-Id: Ibb34f710b1dfb9a23b378462f31432581c6c26f4
| | * AVFoundation: correctly set the activeFormat on the AVCaptureDevice.Yoann Lopes2015-12-107-38/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to the AVCaptureDevice documentation, the device must be locked before starting the capture session to prevent the activeFormat from being overridden. We now do that, but only if we explicitly set an activeFormat. Otherwise the device is not locked, which allows the session to find an appropriate format for the capture device. The device is also locked when enabling video capture, as doing so might also reset the activeFormat. Task-number: QTBUG-49170 Change-Id: I75478fd4bbfec96cd2abd2c3ae2951088b38978e Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
| | * AVFoundation: fix setting up the video capture session.Yoann Lopes2015-12-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Because of an incorrect 'if' condition, the video capture session was set up twice when starting the camera. Change-Id: I4211a8c77ab9b8086628fb0f12fb28842de830cf Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com> Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
| | * AVFoundation: fix setting the camera viewfinder resolution.Yoann Lopes2015-12-033-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Image capture resolution and viewfinder resolution must be the same, with the image capture resolution taking precedence over the viewfinder resolution when both are explicitly set. The code was getting the active image capture resolution, instead of the one explicitly requested, to adjust the viewfinder resolution. That effectively made the viewfinder resolution always ignored since the active capture resolution always has a default value. Task-number: QTBUG-49170 Change-Id: I2f3d01366d83a3e28c0a1ea0109663cfdfa75963 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
| | * AVFoundation: improve viewfinder settings.Yoann Lopes2015-11-202-110/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Retrieving the supported viewfinder settings don't actually require a video surface, we just need a capture device. The supported settings can now be retrieved without calling QCamera::setSurface(). More generally, all viewfinder settings that don't require a video surface can now be gotten/set before calling setSurface(). Task-number: QTBUG-49170 Change-Id: I39b14eeb40517a9ba399748b5778be8bbc8cfcda Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
* | | AVFoundation: replace foreach with range-based forAnton Kudryavtsev2016-01-153-4/+6
| | | | | | | | | | | | | | | Change-Id: I7a2f563f74fc67b55ea9b00f0e87d8ddaa2659c4 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | | tvOS supportMike Krus2016-01-137-22/+23
|/ / | | | | | | | | | | | | Builds, tested simple video playback Change-Id: I04e1da050c587cba3609107dc88a155a6949f2c3 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.5' into 5.6Yoann Lopes2015-11-203-44/+12
|\| | | | | | | Change-Id: I8e0f222f110cc23b426f2d68416f5cc3982e30f2
| * Add qt_real_to_fraction() helper function.Yoann Lopes2015-11-193-44/+12
| | | | | | | | | | | | | | | | | | | | Private API meant to be used by plugins whose backends expect frame rate values represented by a ratio. The function implementation was moved from the AVFoundation plugin to the QtMultimedia library. Change-Id: I555b9d5da5ca3bae88992ed03501869fb731e45f Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* | Fix use-after-free in AVFCameraService during renderer destructionJohn Brooks2015-11-191-7/+4
| | | | | | | | | | Change-Id: I10a994b71e55565c0de31aa0c34f32964e2e3a1b Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
* | AVFoundation: don't automatically rotate camera captures.Yoann Lopes2015-11-042-12/+4
| | | | | | | | | | | | | | | | | | | | | | | | We shouldn't do this automatically, as different kind of orientations might be wanted (sensor, device, UI). The default should be sensor orientation (no rotation applied). We should add an API to QCamera to enable automatic orientation of captured images. Change-Id: I56fff7f0c4aaaee37eb6ae2628e27073b4946b66 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* | AVFoundation: fix camera capture previews.Yoann Lopes2015-10-204-38/+82
| | | | | | | | | | | | | | | | | | | | Generate the preview from a viewfinder frame and not from the final JPG image. In addition, the preview is now rotated to always be in the same orientation as the device at the time of capture. Task-number: QTBUG-46971 Change-Id: I48851225738e50fbd89c2f94904bac366303a9ad Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.5' into 5.6Yoann Lopes2015-10-201-13/+3
|\| | | | | | | Change-Id: Ie1e478eca1cdfd99ccd3a3c8a07aefbfa27ccbdb
| * AVFoundation: fix camera frames texture format.Yoann Lopes2015-10-161-13/+3
| | | | | | | | | | Change-Id: I87ca4abf80a5be9983aefc791b8a0ef0cd4ac33d Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2015-10-026-107/+243
|\| | | | | | | Change-Id: I1373622a6d1fd0e2d35df2da79860a373056387f
| * AVFoundation: render camera frames using OpenGL textures on iOS.Yoann Lopes2015-09-173-40/+137
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OpenGL textures can easily be created from a CVImageBuffer using Apple APIs. It avoids having to map the buffer to main memory and therefore greatly improves rendering performances. We could do the same on OSX, but there, the textures are always of the GL_TEXTURE_RECTANGLE target type and changes need to be done to the QVideoFrame API and to the video node implementations to support that. Change-Id: I6dde7e8d7a27460e41523cd474c3c741affc1480 Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
| * AVFoundation: implemented QMediaPlayer::seekable.Yoann Lopes2015-09-153-1/+19
| | | | | | | | | | Change-Id: Iaca8daa2460062954497b3e510dd1828953c80fd Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
| * AVFoundation: fix rendering when player reached EndOfMedia.Yoann Lopes2015-09-151-0/+5
| | | | | | | | | | | | | | | | | | | | | | Once the media player reached the end of the media, it shouldn't be rendering frames anymore. This could happen when seeking after reaching the end. The output layer is now cleared on EndOfMedia to make sure that doesn't happen. Change-Id: I18a21eaff6c63a2bd54d4c2953f89eb1722f66d5 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
| * AVFoundation: correctly unload current media.Yoann Lopes2015-09-151-31/+14
| | | | | | | | | | | | | | | | | | | | When loading a new media, we should unload the previous media. This makes sure all properties set right after loading a new media (e.g. position, volume) are correctly set on the new AVPlayer and not on the old one. Change-Id: I4cd71b785ccdb4cd0772cedffc3c25665f402776 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
| * AVFoundation: store seek requests before media is loaded.Yoann Lopes2015-09-152-5/+27
| | | | | | | | | | | | | | | | And actually seek once the media is loaded. Task-number: QTBUG-48057 Change-Id: I9446a1e66a48f9a94c039be9af81689ed04bc56c Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
| * AVFoundation: fix initial volume.Yoann Lopes2015-09-152-22/+28
| | | | | | | | | | | | | | | | | | | | The volume level set before loading a media was never actually set on AVPlayer. Regression introduced by 4e07ff99 on OSX. Task-number: QTBUG-48154 Change-Id: I599e3d55b35d7196aebc4753a367a29049f99d33 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
| * AVFoundation: fix playback rate.Yoann Lopes2015-09-153-8/+13
| | | | | | | | | | | | | | | | | | | | | | | | Calling play on the AVPlayer internally resets the playback rate, which means any playback rate set before calling play was ignored. We now always call setRate to start playback to avoid resetting the rate with play. Aslo fixed the playbackRateChanged() signal that was never emitted. Task-number: QTBUG-45570 Change-Id: I3a77e1db31c57f1e3491287bdf977731b9d73509 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* | Doc: minor correctionsNico Vertriest2015-09-071-1/+1
|/ | | | | | Change-Id: Idcaac01294642e7e79f6e2b8bcfd2c9559274790 Task-number: QTBUG-43810 Reviewed-by: Martin Smith <martin.smith@digia.com>