Commit Graph

755 Commits

Author SHA1 Message Date
Yoann Lopes
e9cf6670fe AVFoundation: fix rendering when player reached EndOfMedia.
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>
2015-09-15 09:10:21 +00:00
Yoann Lopes
fdac8d9c74 AVFoundation: correctly unload current media.
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>
2015-09-15 09:10:16 +00:00
Yoann Lopes
bede0a838d AVFoundation: store seek requests before media is loaded.
And actually seek once the media is loaded.

Task-number: QTBUG-48057
Change-Id: I9446a1e66a48f9a94c039be9af81689ed04bc56c
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-09-15 09:10:12 +00:00
Yoann Lopes
6a6a69b7d8 AVFoundation: fix initial volume.
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>
2015-09-15 09:09:42 +00:00
Yoann Lopes
95fa47f747 AVFoundation: fix playback rate.
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>
2015-09-15 09:09:11 +00:00
Yoann Lopes
29ce8886b3 Android: allow to map video buffers.
Since we internally use a fbo, use QOpenGLFramebufferObject::toImage()
to grab the pixel data and enable the use of map() on frames retrieved
using QAbstractVideoFilter.

Change-Id: If96e992e12e26091524913bb24926fa21d9d58cc
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-09-08 10:18:01 +00:00
Nico Vertriest
da6d287e46 Doc: minor corrections
Change-Id: Idcaac01294642e7e79f6e2b8bcfd2c9559274790
Task-number: QTBUG-43810
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-09-07 13:47:07 +00:00
Yoann Lopes
a2244c9b7a Merge remote-tracking branch 'origin/5.5' into 5.6
Conflicts:
	src/imports/multimedia/qdeclarativeaudio.cpp

Change-Id: I57c6252b084e4ed796f6f308b2e0c717d0f59b13
2015-08-24 14:36:13 +02:00
Yoann Lopes
008d20e0ec Android: minor refactor of the camera frame callback.
Change-Id: I6b281c9b2d02cf223e66e04e31fdd0268aa277fc
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-08-20 07:03:54 +00:00
Yoann Lopes
2e54790a59 Android: fix video probes when recording the camera.
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>
2015-08-20 07:01:10 +00:00
Friedemann Kleint
9c9a240220 Make QWinRTImageEncoderControl a Q_OBJECT.
Fix lupdate warning:

qtmultimedia/src/plugins/winrt/qwinrtimageencodercontrol.cpp:60: Class 'QWinRTImageEncoderControl' lacks Q_OBJECT macro

when parsing the tr() in
QWinRTImageEncoderControl::imageCodecDescription().

Change-Id: I004c05c8cea620e30bff7a2b35b83eed01b7ed4c
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-08-19 07:12:11 +00:00
Yoann Lopes
cd3d540522 GStreamer: refactored widget and window control.
Instead of always using xvimagesink as GStreamer backend for the
widget and window control (works only with X11), we now try to
pick a video sink that fits the current configuration.
It first tries a set of known video sinks that can work with
the Qt platform plugin in use. If none is available, it
dynamically picks a video sink available on the system that can be
used with our backend.

Even if the video sink is now picked in a smarter way, xcb is still
the only supported platform plugin. The reason is that it's the
only Unix plugin which can provide a valid native window handle.
Additional work is needed to support other plugins like wayland
or directfb.

Change-Id: I3843dea363d6a0b85a6cc1f2952783b743e48ac6
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-08-18 13:16:50 +00:00
Yoann Lopes
13e40d522f Fix QCamera viewfinder capabilities functions..
- Filtering the results for a specific pixel aspect ratio would return
  wrong values.
- Correctly sort the frame rate ranges returned by
  supportedViewfinderFrameRateRanges().

Added missing auto-tests for all viewfinder capabilities functions.

Change-Id: Idfb40d4139cc48a5996ce2ddd98131a2f5be76bb
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-08-18 12:58:00 +00:00
Samuel Nevala
1b957a05fe winrt: Fix aspect ratio deviation between preview and encoding streams
The source texture size from camera was wrong due to a missing
IMediaDeviceController::SetMediaStreamPropertiesAsync call for the
preview media type. Therefore Viewfinder and StillImage capture modes
behave tha same from QCamera point of view. By default, the camera
takes the lowest capture resolution and the lowest preview
resolution with a matching aspect ratio. If the capture resolution
is set, the preview resolution is set to the lowest possible resolution
with a matching aspect ratio. Until viewfinder settings are implemented
for WinRT, there is no way for user to change the viewfinder resolution.

Change-Id: I4b76ceb46bd4c366561f5206d913b97c0d0df211
Task-Id: QTBUG-47465
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2015-08-18 10:52:15 +00:00
Ricardo Salveti de Araujo
e0b9217d27 Avoid races when sending EOS
In order to avoid races when sending EOS, we need to make sure that the
pipeline is in playing state first.

Task-number: QTBUG-45707
Change-Id: I518e89badf38bea8ab8e2cead9a1ca09659af8b2
Reviewed-by: Timo Jyrinki <timo.jyrinki@canonical.com>
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-08-18 09:49:09 +00:00
Yoann Lopes
c9533b5aaf GStreamer: added convenience function in QGstUtils.
-> qt_gst_element_get_factory_name(GstElement *elem)

Change-Id: Icf806488b49fbcdecdd605b6316bd1ef8796a883
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-08-13 13:26:26 +00:00
Peng Wu
129b06ba77 winrt: Add camera video probe controls
[ChangLog][multimedia][winrt] The WinRT backend now supports QVideoProbes
on camera objects.

Task-number: QTBUG-46228
Change-Id: I7850c5ec6f61e5824064d4be8afc8a0b55d05806
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-08-10 12:12:52 +00:00
Peng Wu
5cec451c10 winrt: Add camera focus and focus lock controls
[ChangLog][multimedia][winrt] The winrt backend now supports camera focus
and focus lock for Windows Phone.

Task-Id: QTBUG-46120
Change-Id: Idb222798284d887a6e90a4986c69274e0ef765f5
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-08-10 12:12:49 +00:00
Frederik Gladhorn
872f0de43e Merge remote-tracking branch 'origin/5.5' into dev
Change-Id: I957b44c06fca7a3f552edc18f286de043d31e42d
2015-08-09 15:27:16 +02: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
Simon Hausmann
c4a1af736d Prospective fix for building QtMultimedia on Android against installed QtBase
We try to link in Qt5PlatformSupport, which depends on libqtfreetype, which in turn
is not installed. However we don't really need Qt5PlatformSupport, only QtCore private
headers for the JNI bridge.

Change-Id: Ic6d577081327eda7b80ce03c6fb7fd5cf024d05f
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-07-23 12:02:30 +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
Liang Qi
112595bf80 Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
	.qmake.conf

Change-Id: Ib38fe1e0a4c937068741a9556748a18e35ba59af
2015-06-29 20:10:15 +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
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
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
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
Liang Qi
2cf8ac3398 Merge remote-tracking branch 'origin/5.5' into dev
Change-Id: I7ac7db69c37cc9e5c5241a25b9a874986a23a886
2015-06-03 10:58:51 +02: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
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
Sergio Martins
a08bcb3279 pulseaudio: Remove unused static member variable
Change-Id: I79f8ce318d4fb72ddbd9d4e5c030df01c36084fa
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-06-01 16:36:20 +00:00
Sergio Martins
387c063ed6 Use QSet::intersects() instead of QSet::intersect()
It's much faster.

Change-Id: Iee42359147ebb76b5848f3ac2e17eb92214c8ab6
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-05-30 19:34:10 +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
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
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
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
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
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