Commit Graph

1700 Commits

Author SHA1 Message Date
Yoann Lopes
3c54acb6f7 Add new property to QVideoSurfaceFormat.
The 'mirrored' property indicates the QVideoFrames need to be mirrored
along their vertical axis. This is typically needed for video frames
coming from a front camera on a mobile device.

This is implemented as a string-based property. In Qt 5.6, this should
be replaced by a new public function.

Change-Id: Ideb7de81e83f66826f4efb5f2951c4beec13546b
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-08-07 17:35:12 +00:00
Thiago Macieira
bc9cfcd08a Fix warnings about unused private fields
avfaudioinputselectorcontrol.h:68:23: warning: private field 'm_service' is not used [-Wunused-private-field]

Change-Id: I5722a2d1bf592862af3a4d36554419a653662892
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-08-06 16:00:03 +00:00
Thiago Macieira
b048f26281 Don't list avfcamerainfocontrol header and sources twice
This produces Makefile warnings
Makefile.Debug:351: warning: overriding commands for target `.obj/debug/avfcamerainfocontrol.o'
Makefile.Debug:337: warning: ignoring old commands for target `.obj/debug/avfcamerainfocontrol.o'
Makefile.Debug:514: warning: overriding commands for target `.moc/debug/moc_avfcamerainfocontrol.cpp'
Makefile.Debug:506: warning: ignoring old commands for target `.moc/debug/moc_avfcamerainfocontrol.cpp'
Makefile.Debug:351: warning: overriding commands for target `.obj/debug/avfcamerainfocontrol.o'
Makefile.Debug:337: warning: ignoring old commands for target `.obj/debug/avfcamerainfocontrol.o'
Makefile.Debug:514: warning: overriding commands for target `.moc/debug/moc_avfcamerainfocontrol.cpp'
Makefile.Debug:506: warning: ignoring old commands for target `.moc/debug/moc_avfcamerainfocontrol.cpp'

Change-Id: I2ec77cb92b4d218e5b07d895fdb96497061b527b
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-08-06 15:58:52 +00:00
Yoann Lopes
6b19a24b58 GStreamer: use QMediaStorageLocation to generate capture file names.
Change-Id: I2111eb8e28f60ca6305a48a8ee9299bc14ab0df9
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-08-04 12:56:54 +00:00
Yoann Lopes
b6dd9558a7 GStreamer: fix possible integer overflow in comparison.
Change-Id: I6cf4349f89320f72cce4d04cdf909476e583d11f
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-08-04 12:56:35 +00:00
Peng Wu
94eb599b69 winrt: Fix crash during certain video operations
The abstract video buffer pointer was being reused and (improperly)
deleted when its reference count went to zero. As QVideoFrame utilizes
an explicitly shared pointer which also tracks the video buffer, simply
reuse the QVideoFrame instance instead.

Task-number: QTBUG-47373
Change-Id: Idadae205cb520a0a1d752aa20256c0567b3be699
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-07-28 13:12:30 +00:00
Yoann Lopes
f25034afaf Fix video nodes material comparison.
Don't consider a material equal to another when their texture IDs
are not available yet.

Change-Id: Id4127d71abb2db33950a206dc722b24ab626e960
Task-number: QTBUG-47205
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-07-20 10:25:52 +00:00
Nico Vertriest
9ae70447d5 Doc: replace Mac OS X with OS X
Task-number: QTBUG-40759
Change-Id: I11b3aa74d35064371cbbbeba660114e086b16aea
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-07-15 13:57:03 +00:00
Yoann Lopes
bcdac5539d GStreamer: fix supported values returned by CameraBinImageProcessing.
Change-Id: I5a4db9c055495714943421742dd237b6abf7daee
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
2015-07-14 12:30:23 +00:00
Friedemann Kleint
5f11c33fd5 WindowsAudio: Fix compiler warnings by g++/MinGW.
Replace NULL by 0 for parameters of type DWORD_PTR.

qwindowsaudiodeviceinfo.cpp: In member function 'bool QWindowsAudioDeviceInfo::testSettings(const QAudioFormat&) const':
qwindowsaudiodeviceinfo.cpp:220:50: warning: passing NULL to non-pointer argument 4 of 'MMRESULT waveOutOpen(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD_PTR, DWORD_PTR, DWORD)' [-Wconversion-null]
                                 WAVE_FORMAT_QUERY) == MMSYSERR_NOERROR);                                                  ^
qwindowsaudiodeviceinfo.cpp:220:50: warning: passing NULL to non-pointer argument 5 of 'MMRESULT waveOutOpen(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD_PTR, DWORD_PTR, DWORD)' [-Wconversion-null]
qwindowsaudiodeviceinfo.cpp:223:50: warning: passing NULL to non-pointer argument 4 of 'MMRESULT waveInOpen(LPHWAVEIN, UINT, LPCWAVEFORMATEX, DWORD_PTR, DWORD_PTR, DWORD)' [-Wconversion-null]
                                 WAVE_FORMAT_QUERY) == MMSYSERR_NOERROR);                                                  ^
qwindowsaudiodeviceinfo.cpp:223:50: warning: passing NULL to non-pointer argument 5 of 'MMRESULT waveInOpen(LPHWAVEIN, UINT, LPCWAVEFORMATEX, DWORD_PTR, DWORD_PTR, DWORD)' [-Wconversion-null]# ==[ Please wrap at 72 characters ]===================================|

Change-Id: Ie8f65e0e1f4f1274a1b634f3701ae0103e716d97
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-07-13 13:42:41 +00:00
Oswald Buddenhagen
9fdc4a3a63 Bump version
Change-Id: I0dbadc590809bed7a24a8721a3b4a42a207bcc7b
2015-06-29 10:47:53 +02:00
Liang Qi
fb000c9ecb Merge remote-tracking branch 'origin/5.5.0' into 5.5
Change-Id: I5a5b387b93a4b9dbaa9710e78fd7bf1ca09aa3b3
2015-06-26 14:04:32 +02:00
Peng Wu
dc9e10d4b7 winrt: Implement QImageEncoderControl for camera
Implement QImageEncoderControl for camera still image capture.
It provides the functions to set camera capture resolution and
get supported resolutions list.

Task-number: QTBUG-46456
Change-Id: Ideb1aa02d420be3a30d588bebf31714fa4fa6415
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2015-06-23 13:16:13 +00:00
Marc Mutz
04e086e336 QCameraViewFinderSettings: add missing include
The header should not depend on indirect includes.
It uses QSize in inline functions, so include the
header.

Change-Id: I3a5fca458ded47c98b7f71749ad75660c6e049e9
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-06-14 08:43:46 +00:00
Marc Mutz
3a18580e23 QAbstractVideoFilter: make ctor explicit
Change-Id: If091d751c7e164c0480b48301358833705cd4870
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-06-12 11:14:01 +00:00
Marc Mutz
62d9398a27 QCameraViewFinderSettings: make op== transitive
Using qFuzzyCompare in operator== makes it impossible to create a
consistent qHash() overload for the class later on (qFuzzyCompare
is not transitive).

It is unlikely that there will be numerical instability for frame
rates. If there is, qFuzzyCompare should be overloaded for either
this class or the FrameRateRange class.

Change-Id: Id975ea410b373e2987da160504f7618a8c498b5c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-06-12 11:09:24 +00:00
Marc Mutz
12893e3826 QCameraViewFinderSettings: declare shared
Requires implementing member-swap.

Also implemented move assignment operator.

Change-Id: I077ee85346a8c542cd344720e45a0795a6947e4c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-06-12 11:09:20 +00:00
Marc Mutz
99bda08cb1 QCameraViewFinderSettings: make op== non-member
...and inline op!=. Mark them as nothrow.

More idiomatic C++ (symmetry between lhs and rhs).

Change-Id: I65ecbef961383897e4e17325ad62d45e1772fbb0
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-06-12 11:09:16 +00:00
Marc Mutz
c34cf61312 QCameraViewFinderSettings: use correct include
Change-Id: I71f24922872f64d86d55f420b0e27028a6368097
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-06-12 11:09:12 +00:00
Yoann Lopes
36507b71f2 Added 5.5.0 change file.
Task-number: QTBUG-45455
Change-Id: I832dcd02215e6ae004b6f1e6cf3905b95a838e4a
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-06-11 16:14:37 +00:00
Yoann Lopes
7f9beeaf9c Define QCamera::FrameRateRange as a struct.
Instead of an alias for QPair<qreal, qreal>.

Task-number: QTBUG-46563
Change-Id: I7e1ac68242810f7e5f7e161571a11f5de7850e29
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-06-11 05:16:23 +00:00
Yoann Lopes
3cb698c0fc AVFoundation: don't use shared OpenGL contexts unless needed.
We were always using shared OpenGL contexts to render media player
frames into an OpenGL texture. There's no need to do that when there
already is a current context on the current thread. This happens in
non-QtQuick cases, when the OpenGL thread is also the main thread.

Change-Id: Icb97ed49609c764263007a43b6bb481e23768111
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-10 11:37:36 +00:00
Yoann Lopes
269c64f47a Support BGR format for OpenGL textures in QPainterVideoSurface.
Also, use the correct shader for RGB formats, we should be using the one
that does swizzling in that case.

Change-Id: I77b6327501f833fb2f7b30411fbe853e975a59c7
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-10 11:37:30 +00:00
Joerg Bornemann
f93f4e3daa WinRT: fix namespaced build
Change-Id: I06b18e2a1318bda826befde52ee1fd874e25dd47
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-06-04 11:46:02 +00:00
Laszlo Agocs
2ee7db8519 Add an env var to disable OpenGL texture-based video frames.
Right now we will always use GLTextureHandle frames with Quick. This is
great in many cases, but not always. Applications that wish to examine
the frames (e.g. via video filters) will sometimes prefer frames in
system memory, even if this is slower to display.

Add QT_QUICK_NO_TEXTURE_VIDEOFRAMES which can be used to disable texture-based
video frames.

[ChangeLog] The environment variable QT_QUICK_NO_TEXTURE_VIDEOFRAMES
can now be used to disable OpenGL texture based video frames. This can be useful
in applications that wish to filter and process the video frames and are not
GPU based.

Change-Id: I5ca6f6d485d5bc6c2da8d47db563cd910c238ac9
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-06-03 12:47:44 +00:00
Timur Pocheptsov
912b8e5647 Media asset writer - use the right macro
QT_PREPEND_NAMESPACE, not QT_MANGLE_NAMESPACE.

Change-Id: I9eb4130b203a5fb8f9f7964a0a642686814d5990
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-06-03 10:07:04 +00:00
Peng Wu
00789e7d4e winrt: fix camera preview on Lumia 530
Lumia 530 has the same QTBUG-44838 device bug that gives black frames
when blitting to the target texture for image preview. Add it to
workaround blacklist.

Task-number: QTBUG-45920
Change-Id: Ia411793b90e487fa57b943ed7f01e370bfb84a1f
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-06-03 04:29:19 +00:00
Yoann Lopes
7fd0fec5e5 GStreamer: remove unnecessary qWarning().
Change-Id: Ibbf5d5b7e3675fe6fee30e7486e3bc7b59fa231d
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-06-02 22:29:55 +00:00
Yoann Lopes
9f97abb092 AVFoundation: fix a problem when changing the camera viewfinder size.
We need to restart the video surface when the frame size changes.

Change-Id: I81af3cb40fb40f7d157174ac96d42213880fbacd
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-06-02 22:29:48 +00:00
Yoann Lopes
762bce7a06 AVFoundation: fix wrong Q_ASSERT.
The assert was always triggered, at least on OSX.

Change-Id: I9aabb6103b7f5540cff42facc448ffcf6a6de511
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-06-02 07:31:27 +00:00
Timur Pocheptsov
1508f775ac Video asset writer for iOS
AVFoundation on iOS lacks the ability to use AVCaptureVideoDataOutput and
AVCaptureMovieFileOutput simultaneously. Right now viewfinder stops working
as soon as we add movie file output. The only workaround
we have now is to write video/audio 'maually' - creating asset writer
and feeding it with audio/video samples.

Change-Id: I33a63546783279c545f0433b5051287269825d3f
Task-number: QTBUG-37655
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-05-29 16:29:39 +00:00
Yoann Lopes
aeb79d4a8b AVFoundation: fix default camera viewfinder pixel format.
It was hardcoded to ARGB32, which is not a good idea, at least on iOS
where the necessary conversion is slow.
We now pick the QAbstractVideoSurface's preferred format, or if no
surface is set, we pick the default from AVFoundation.

As a result, the QML VideoOutput will now always use the NV12 format.

Change-Id: I65205c706455502883b8098f0b5c0577b4106e01
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-05-29 11:09:17 +00:00
Yoann Lopes
8143aff1b2 GStreamer: flush the current frame when stopping a media player.
When stopping, we don't actually stop the GStreamer pipeline, we just
pause it and prevent preroll frames from being shown.
We also need to make sure the last presented frame is cleared in that
case, otherwise it stays on screen.
Fixed for both 0.10 and 1.0.

Change-Id: Ibe26a7567f271ae0c3d8819eb9d35d6a95da1c6a
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-05-27 12:18:50 +00:00
Yoann Lopes
83d1255080 Android: fix setting the camera preview resolution.
- 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>
2015-05-27 12:18:43 +00:00
Yoann Lopes
008d57e1d7 AVFoundation: additional build fixes for OSX < 10.9.
0df8d839 didn't fix all of the problems.

Task-number: QTBUG-46159
Change-Id: I4f2a390da1cca13775302aeef60c522e0da55a1a
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-05-27 12:18:34 +00:00
Friedemann Kleint
a26df92bac Add CONFIG += testcase to auto/unit/qaudiobuffer/qaudiobuffer.pro.
When missing, make check is an empty target, meaning the test
is never run in the CI.

Change-Id: I6f09e0f78c26b631fdfe89d2520dc0012d177843
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-05-26 11:58:24 +00:00
Carlos Rafael Giani
288d549474 videonode: imx6: Ensure the video node excludes padding pixels
Padding rows & columns are included in the video frame that is sent to
the VIV direct texture. Scale the UV coordinates to ensure the padding
pixels aren't shown.

Change-Id: I8b870a95ff786f9f80f42f0cc33f468b0c9c3863
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-05-26 11:57:56 +00:00
Yoann Lopes
a3f82a8995 GStreamer: don't use xvimagesink when Qt is not using Xcb.
We need a native X window handle to be able to use xvimagesink. If Qt
doesn't use the Xcb platform plugin, don't try to use that element.

This patch makes QVideoWidget usable when the system doesn't run X11
but xvimagesink is installed anyway. Widget and window controls become
invalid and the plugin therefore falls back to the renderer control.

Change-Id: I6efd410508f35b06f00f6e4e5149c97cbd280d0d
Task-number: QTBUG-46169
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-05-26 11:57:40 +00:00
Jani Heikkinen
10b3466ce4 Updated WinRT license headers to use LGPLv3 instead of LGPLv21
From 5.5.0 -> WinRT port is licensed with LGPLv3, see
http://blog.qt.io/blog/2015/04/29/windows-10-support-in-qt/

Change-Id: I86e43ba051e3bc1dfb3eb9e1d442a9a12e9efdb7
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2015-05-21 04:52:40 +00:00
Andras Mantia
4be995d251 Initialize the resource, so it can be used from static libraries.
Change-Id: If28509a991fb464dc587705ce62af66b528fdd97
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-05-20 09:59:27 +00:00
Yoann Lopes
5fab28b581 AVFoundation: fix retrieving maximum camera zoom value.
Maximum zoom value was incorrectly reset to 1.0 when doing the transition
Active -> Loaded -> Active.

Change-Id: I799900b1597637039d6c28d1d694fb6340b10540
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-05-19 15:39:31 +00:00
Yoann Lopes
0df8d83932 AVFoundation: fix compilation on OSX < 10.9.
AVCaptureConnection.videoMaxFrameDuration is supported only since 10.9.

Task-number: QTBUG-46159
Change-Id: I8ea57b69e97ea3802b5c444c57ab090c4edf31e2
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-05-19 13:22:15 +00:00
Yoann Lopes
b0111ce5f5 WMF: fix start time of buffers provided by QAudioDecoder.
The time was in milliseconds but should be in microseconds.

Task-number: QTBUG-45571
Change-Id: I54f07975e7a6233254a338dcde8075f740b5455c
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-05-19 11:41:42 +00:00
Topi Reinio
aaff15aec6 Doc: Use the screenshot in the Declarative Radio example documentation
Also, crop the screenshot image to not show any window decoration,
and fix the example \brief.

Change-Id: I86310bdc5a4f124180eac1a1d27064286ba34f59
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
2015-05-19 10:09:34 +00:00
Yoann Lopes
9faaf425e9 Fix documentation for Camera flash mode enum.
Added missing documentation for Camera.FlashVideoLight and corrected
it for Camera.FlashTorch.

Change-Id: Ib1823b6554bd2f9db92e047fd4755ae7fb3e0f96
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
2015-05-18 11:46:59 +00:00
Samuel Gaist
695399c5f5 Fix typo in QCameraViewfinderSettingsControl documentation
Change-Id: Iae4b064f554f501bfce9bc7b811c56685e8ece0d
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2015-05-16 21:09:18 +00:00
Venugopal Shivashankar
f61c89a1b3 Doc: Added a link to the wiki with plugin info.
The wiki summarizes each platform plugin and the
supported features.

Change-Id: Id7707306880d7e0612e73b879fc48201e0a97417
Task-number: QTBUG-30381
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-05-13 10:17:50 +00:00
Yoann Lopes
ab860d8b7f Fix texture unit bug in the YUV video node.
fe13f5bb introduced a bug which could leave the active texture unit set
to GL_TEXTURE1 or GL_TEXTURE2. When the material is done updating its
state, it needs to make sure the active texture unit is reset to 0
since other materials might assume that's the current value.

Change-Id: I64a6a0cd9fcecdf0fa483909193f70045ff0e9fe
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-05-12 10:19:21 +00:00
Frank Osterfeld
2463a5f216 OSX/iOS: Fix volume and mute
My last fix for iOS (4e07ff99) introduced this regression of passing
the outdated value to the native player object.

Change-Id: I01b0df8c7a0fe1382ef73b55d288a40daf024e3d
Reviewed-by: James Turner <james.turner@kdab.com>
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-05-11 07:57:29 +00:00
Yoann Lopes
0761f2d53f Update license header in qmlvideofx example.
Change-Id: Icb525176a8f00cc1a7414e68a7452452d1ef3da0
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-05-05 11:31:57 +00:00