Commit Graph

342 Commits

Author SHA1 Message Date
Andy Nichols
94ccfbc132 AVFoundation: Enable QVideoWidget on iOS
Change-Id: I88041e7a2ea052fe449542eeaada31c09d93d163
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2013-08-27 14:16:18 +02:00
Andy Nichols
51d0f852b9 AVFoundation: Use CoreAnimation to render video to QVideoWidget
Previously a QGLWidget was used as a target for the
AVFVideoFrameRenderer.  This was uncessary as it is possible to render
directly on top of the QWidget using the CoreAnimation Framework.

Change-Id: I08923c85fd56c8874c1d8c187ae5145e220fab92
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2013-08-27 14:16:10 +02:00
Andy Nichols
17a700292a AVFoundation: Enable use of QMediaPlayer for audio on iOS
This commit disables the video components of the AVFoundation
mediaplayer backend when building for iOS and enables the use of
QMediaPlayer with audio assets.

Change-Id: Iadd6f9c61ed1e656301326e90a22cbca6428b654
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2013-08-27 14:15:54 +02:00
Yoann Lopes
a2f078f108 WMF and GStreamer: fixed incorrect frame startTime and endTime.
The QVideoFrame documentation explicitly says that the time is in
microseconds, however the GStreamer backend was setting the time in
milliseconds and the WMF backend in 100-nanosecond units.
With WMF, the time was missing from the QVideoFrame when presenting it to
the video surface.

Task-number: QTBUG-31731
Change-Id: I0638d2abf8eed25b3a531db67c19a18703e5b630
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2013-08-22 13:16:49 +02:00
Christian Strømme
ca769ba264 Android: Use isValid() to check if the jobject is valid.
Change-Id: I5ec67b9b2abfae2e2c2a44f0bcc7c72cb54beb49
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-08-21 13:31:53 +02:00
Yoann Lopes
4585518d52 Android: fixed media player buffering logic.
When the media is ready, the status should always transition to
LoadedMedia and then immediately to BufferingMedia or BufferedMedia.
Also, when the duration is queried before the media is ready but already
buffering, it should always return 0 to avoid errors from the Android
media player.

Task-number: QTBUG-32635
Change-Id: Ibcb9c23b4f64c4f9a1a8e0ef81989ae78cfb19ef
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-08-19 15:31:21 +02:00
Yoann Lopes
291f1229fe WMF: fixed QMediaPlayer changing to EndOfMedia status too early.
It was changing to EndOfMedia status and explicitly stopping playback
when receiving the MEEndOfPresentation event from the WMF session.
However, this event means that all data has bean read from the source but
not necessarily played yet. According to the documentation, playback is
done when the MESessionEnded event is sent. It now reports the EndOfMedia
status at that moment instead. stop() is not explicitly called anymore since
MESessionEnded also implies the session has stopped.

Task-number: QTBUG-30825
Change-Id: I6c6c09e736fe33f7cf17c75038ea7be1b5701a1c
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-08-16 15:30:10 +02:00
Yoann Lopes
bdf0cc7a16 WMF: use qFabs instead of fabsf.
Task-number: QTBUG-32360
Change-Id: Ibec3d044ac38f54abd895d56f1851011bf6b5272
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-08-16 15:30:00 +02:00
Frederik Gladhorn
74e4b59ec8 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/plugins/plugins.pro

Change-Id: Ieec8b5984b0fba97872bf96c38410369dc0e20cf
2013-08-12 12:47:02 +02:00
Robin Burchell
9f484eae83 Implement resource policy plugin using libresourceqt.
This contains a new resource policy plugin, replacing the built-in
code that was deleted when the plugin interface was removed in
138242fb2d (which unfortunately did not provide a
plugin).

Change-Id: Iae7ed6edc330c69ca0c72d50bde6c7e12b8cca4e
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2013-08-05 18:08:53 +02:00
Robin Burchell
edc76ed071 Change libresourceqt's .pc file.
The one public port of this library to Qt 5 changed the .pc to libresourceqt5,
to avoid clashing with the Qt 4 version.

Change-Id: I6a248606e20c4e7a8f432612ca00aded846264d9
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2013-08-05 17:21:43 +02:00
Frederik Gladhorn
c1520e8aeb Merge remote-tracking branch 'origin/stable' into dev
Change-Id: If52332b72560d21069e24cd31b13f08f33e1f406
2013-07-23 11:14:36 +02:00
Yoann Lopes
c74b544610 DirectShow: avoid unnecessary RGB32 -> BGR32 conversion.
Frames in the RGB32 format are actually using the BGR byte order, no need
to do the conversion.

Task-number: QTBUG-29206
Change-Id: I13527bd9dacc8330df78beb0965b31469c1d7a87
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-07-19 14:43:26 +02:00
Yoann Lopes
d8e56bc4b8 DirectShow: Don't create the widget and renderer controls until requested.
Task-number: QTBUG-32282
Change-Id: If37ed4c35bcc2cc879f50d3b2ea3720b90603e9a
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-07-19 12:35:20 +02:00
Yoann Lopes
d599f7319a WMF: fixed MediaPlayer buffering logic.
To have a consistent behavior with other backends, the WMF plugin now
starts the session after loading a media in order to start buffering some
data and correctly notify when the media is buffered.
It was previously reporting a BufferedMedia status only (and wrongly)
after explicitly starting the media player.

Not all source readers (usually a source reader is specific to a file
format) implement the service needed to query buffering progress. In that
case just report the media to be buffered immediately after loading.

Change-Id: I6e6332ae08e96fc789556761e5169b88c36c5e37
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-07-19 09:42:42 +02:00
Yoann Lopes
680c9cab91 OpenSL ES audio plugin.
Adds support for QAudioOutput, QAudioInput and QAudioDeviceInfo using
OpenSL ES 1.0.1. This plugin is used on Android.

Change-Id: Idf2c22a861e067196f6c5139e51393b086f64183
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-07-19 09:42:19 +02:00
Christian Strømme
6c941c6c2b Android: Make it possible for MediaPlayer to read from assets.
The Android MediaPlayer doesn't handle assets automatically, so we need to
open it and pass it in as a file descriptor.

Task-number: QTBUG-31422
Change-Id: Ic29c0ab6348d760cf21aa89ae423d41e15523976
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-07-09 14:46:49 +02:00
Yoann Lopes
5e7e8e04d1 Android: wait to have a valid video surface before loading a media.
Setting the video surface on the Android media player after it has
loaded the media doesn't work on some hardware.

Change-Id: I5e621a34ace9de458bfc65bfac8fa50c29cee9a5
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-07-09 09:41:32 +02:00
Yoann Lopes
1dfbe44d90 Android: release the Android media player before destroying it.
Change-Id: I18715efd7ff346a9f6f2214727ec66ee79ad0d33
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-07-09 09:41:17 +02:00
tommyadam
1eb77d3782 Fix resource leak in directshow plugin.
Add two missing release calls to free file handles.

Task-number: QTBUG-23822
Change-Id: I8f5b6d0dcf9ad66bdaa2f378c0d3e401388d7add
Reviewed-by: Wouter Huysentruit <wouter.huysentruit@dzine.be>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-07-04 15:49:35 +02:00
Frederik Gladhorn
18a8381ab3 Merge remote-tracking branch 'origin/release' into stable
Change-Id: I9ad818eecef74983e09660871f39ee66a6b666a1
2013-06-25 23:27:28 +02:00
Yoann Lopes
e25db62a59 Multimedia plugins now have a unique JSON metadata 'Keys' property.
They previously had the multimedia services they provided as keys. This
was a problem when several plugins were available on the same platform,
providing the same multimedia service, but with different features or
capabilities. Since they had the same key, only the first plugin in the
directory was loaded.

Nevertheless, it was actually working until commit 732dcfe7 in qtbase,
as all plugins were loaded even when sharing the same key.

The services a multimedia plugin provides are now declared in the
'Services' property. To preserve compatibility with third-party plugins,
if that new property doesn't exist it falls back to the 'Keys' property.

Task-number: QTBUG-31868
Task-number: QTBUG-31476
Change-Id: Ic3ba32eeef21b69b922bd3d4feb111101559d132
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-06-21 12:07:00 +02:00
Frederik Gladhorn
17053a450b Merge remote-tracking branch 'origin/release' into stable
Change-Id: I0361cbb4f5398bb13e675c3de04519c414daea43
2013-06-20 16:23:34 +02:00
Christian Strømme
16a775d47a Android: Fix for uncaught java exception.
If an exception's getMessage() function returns a null object, we can't
send it directly to the Log function, as it will throw an exception...
To avoid this we can prepend the string from getMessage() with an empty
string.

Change-Id: Ie026cbf9af133352919a4536c152b6d35cb8c0a7
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-06-13 17:56:04 +02:00
Tobias Koenig
056fe7e11e BlackBerry: Fix frame size of video playback
Adapt the frame size dynamically, since mmrenderer resizes
the source viewport of the native video window at runtime on
some hardware platforms.

Task-number: QTBUG-31534
Change-Id: Ie637d7a80697175dacb454535fbe251b2c7a6809
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-06-05 10:26:53 +02:00
Friedemann Kleint
5c5d19e874 WMF-plugin: Fix warnings about unused variables.
Change-Id: I2b7864463799b23418fc4c3099d73a63709fe8c5
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-05-27 16:11:29 +02:00
Yoann Lopes
5c087bb615 Android: fixed crash when resetting the video surface.
Change-Id: I64a28cbcb8a48d13a9e1c98005da9f4cce821cb4
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-05-22 12:56:07 +02:00
Friedemann Kleint
b604d96ba8 Make directshow-plugin available.
No longer include <qedit.h> in directshow-plugin,
which no longer ships in newer SDKs.

Ensure it only provides the camera service if the
WMF-plugin is built by using a different .json-file.

Adapt qcamerabackend-test to use widgets.

Task-number: QTBUG-28047

Change-Id: I22ea441b9edb56ff55bc275dba37c01c77d8dd90
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-05-15 12:43:08 +02:00
Sze Howe Koh
f4348fe3ae Decouple qmediametadata.h from qmultimedia.h
qmultimedia.h is included in more places, but qmediametadata.h is
larger. This patch should reduce unnecessary #include-ing.

Change-Id: I4a3d174bafc555d794bb75087c1f6b79745ae903
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-05-14 11:27:05 +02:00
Eskil Abrahamsen Blomfeldt
8e202bcad1 Make it possible to bundle Android builds
We need to adapt to the way the jar builds are split on Android,
into a jar file which can be bundled and one which can be distributed
and loaded on the classpath.

We also need to add meta-information about which plugins the
module depends on so that they can be bundled as well.

Task-number: QTBUG-30751
Change-Id: I5cca51c3732ce72985df29672a219c3fd4fe7bac
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-05-03 14:46:15 +02:00
Oswald Buddenhagen
73806b75a0 remove pointless code
qt_plugin.prf handles it all.

Change-Id: I689b68ee18d43723e2fa0d7c17b48a9dcac541aa
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-04-26 22:53:35 +02:00
Thomas McGuire
7b4c7bda73 Playbook: Work around failing screen_read_window()
Change-Id: Ie029585b3ac1420fe461523b67aa8b65193e23b0
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Mehdi Fekari <mfekari@rim.com>
2013-04-19 17:24:23 +02:00
Andrew den Exter
63f0fcb5d6 Fix crash on idle status change with 64 bit architectures.
bool and gboolean are not necessarily the same size on all
architectures, and if gboolean is larger than bool then passing it
as an argument to g_object_get can trash the stack.  In this case
overwriting some of the session pointer.

Change-Id: Iaa7be6a327e9f69212bd7d5bb372d33f2026db0f
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2013-04-17 10:09:07 +02:00
Andy Nichols
e728a61eb6 AVFoundation: Emit error when media fails to load
This also makes sure that if you attempt to load an invalid media file
while another file is playing that the old session is stopped.

Task-number: QTBUG-30411

Change-Id: Ied4dbaffeac50465112c1e94e7c69d1600a6de51
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Reviewed-by: Dan Winkler <dantwinkler@gmail.com>
2013-04-17 01:47:07 +02:00
Andy Nichols
ae042feed3 AVFoundation: Remove stray semicolon after condition
Change-Id: I1c9a822ee54e7c189fe8806a11334cd23cd79a31
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-04-16 15:20:26 +02:00
Friedemann Kleint
3d848f05ad Fix tr()-Context in BlackBerry-plugin.
Do not use QObject::tr().

Change-Id: I0444a0abb319d3ae7044c269d8f280ebf63128e3
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2013-04-15 11:53:43 +02:00
El Mehdi Fekari
06fe7e6ad7 Fix for build break on QNX
Disable the camera part as it's using APIs not supported for the PlayBook

Change-Id: I4e06a74e8a9e5a00e19e443b8aa304cf2bce2216
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2013-04-12 19:11:45 +02:00
Sze Howe Koh
ab54cc46c6 Doc: Fix minor typos
Task-number: QTWEBSITE-514
Change-Id: Ie8f3689d18d15fd0e88e0ada4a745d9994d9c2ae
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2013-04-10 13:20:46 +02:00
Thiago Macieira
7a4ea30350 Fix warnings in qtmultimedia
/camerabinresourcepolicy.cpp:100:42: error: unused variable 'oldSet' [-Werror=unused-variable]
camerabincontrol.cpp:167:54: error: 'resourceSet' may be used uninitialized in this function [-Werror=maybe-uninitialized]
qaudiooutput_pulse.cpp:416:20: error: unused variable 'bytesWritten' [-Werror=unused-variable]

Change-Id: Idafd85b7985673f1f22d868b5f1b1e46a60ada4a
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-04-03 20:21:02 +02:00
BogDan Vatra
8960e47c24 Install the jar file
Change-Id: Ife46aba11920c5109d974f9e388e49320bf1a95a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-04-02 10:35:30 +02:00
Andy Shaw
b7b9c1c1f6 Add support for m3u8 playlist formats
m3u8 is just a unicode version of m3u so we can already handle these
without any extra coding other than adding it as a format

Change-Id: Icec0f1844bd2b0a0ea3c39b98f7b06cc402a3309
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-03-24 15:42:59 +01:00
Frederik Gladhorn
954bb7b960 Merge remote-tracking branch 'origin/stable' into dev
Change-Id: Ifee8e5713e95d516081c4bc911e8f0bb6a169b13
2013-03-14 09:25:28 +01:00
Andy Nichols
04860b7a37 iOS: Fix build issues
This also prevents anything meaningful from working, but it is a
good starting point.

Change-Id: Idaf495ec29f611ee5342c79318bc3ace1d852747
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-03-11 13:09:17 +01:00
Tobias Koenig
6a83c20318 BlackBerry/QNX: Implement audio recording with QAudioInput
Change-Id: I62cad152a7b7fd92905744439de838306dc7a558
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-03-11 08:44:16 +01:00
Christian Strømme
909a09069f Android multimedia plug-in.
Adds MediaPlayer support for Android.

Change-Id: I4c7b1e19927b2e50b227f3a3b3f7ca2e99397618
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-03-06 00:23:50 +01:00
Yoann Lopes
e747d4c0cd GStreamer: fixed build when using GST_PHOTOGRAPHY.
CameraBinExposure was reimplementing the Qt4 version of
QCameraExposureControl instead of the refactored version of Qt5.
Zoom features were still handled in CameraBinFocus but these have been
moved to their own control in Qt5.

Task-number: QTBUG-29300

Change-Id: I0c71cac6011137bc5457f0d362da44c72039004a
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-02-28 16:50:37 +01:00
Tobias Koenig
68a38b151e BlackBerry: Mirror viewfinder for front camera
If the camera viewfinder shows the front camera
we mirror the image now to avoid that on rotation
of the device the image tilts to the wrong side.
The captured image however is not mirrored.

Change-Id: I6127b8ee6552553efe56ebec81991f0bd7597f47
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-26 13:32:18 +01:00
Kevin Ottens
fb6e49f33f BlackBerry/QNX: Add a new backend for Blackberry handling audio
For now it only implements the audio output part.
The plugin can be used on all QNX systems (including BB10) that
provide a libasound version < 1.0.10.

Change-Id: Ifcfd871558d5d2bfb9e8a5f5ef0cfe009c0a111d
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-25 11:15:53 +01:00
Tobias Koenig
1ddad9e0f4 Blackberry: Implement QVideoRendererControl for QMediaPlayer backend
If the application is not supposed to play back DRM secured media,
we grab the pixel data from the native mmrenderer window now
and make them available to the QAbstractVideoSurface of the
QVideoRendererControl. This allows the usage of all transformations
on video output inside QtQuick.

Change-Id: I73d05404b1ac9c5f74a234d9393b981a6fbcb317
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-22 16:17:44 +01:00
Tobias Koenig
31b454b8d6 Blackberry: Grab viewfinder frames from native window
Since the conversion from NV12 to RGB on the CPU does not scale
for larger photo/video resolutions, this patch uses a different
approach. It uses the low-level screen API to grab screenshots
of the native viewfinder window and provides them as QImage to
the QAbstractVideoSurface. Even for large resolutions this
is quite performant.

Change-Id: I59a7cbe6850b3b07575ea10026f3180cfd22e935
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-21 11:23:38 +01:00