Commit Graph

87 Commits

Author SHA1 Message Date
Yoann Lopes
ecc3c3507f GStreamer: fix artist-related metadata keys.
QMediaMetaData::AlbumArtist now maps to GST_TAG_ALBUM_ARTIST and
QMediaMetaData::ContributingArtist to GST_TAG_ARTIST.

Change-Id: Ifa2cb90ee8ae09beaee572ad113c05776e699432
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
2014-09-26 14:27:42 +02:00
Yoann Lopes
e97fc77890 GStreamer: fix QMediaPlayer metadata signals.
- metaDataAvailableChanged was never emitted
- metaDataChanged was not emitted when clearing the current media

Change-Id: Ide05056450171a87aeb018be7e0bdea136341946
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
2014-09-26 14:27:25 +02:00
Andrew den Exter
3b20608fe3 Ensure pre-roll frames are displayed when gstreamer backend is paused.
Perform a seek before transitioning from the stopped state to paused or
playing to force the pipeline to resupply the video sink with any
pre-roll buffer it may have previously ignored during loading.  And
don't assume showPrerollFrames to be true if the current state is not
stopped as the policy handling may have prevented an effectual state
change.

Change-Id: I288a70bc4da32f3534eab4b14702ca8f8fdb4222
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2014-09-12 14:32:42 +02:00
Antti Kokko
2732e23887 Update license headers and add new license files
- 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>
2014-08-24 17:30:13 +02:00
Frederik Gladhorn
074bd6ab37 Merge remote-tracking branch 'origin/5.3' into dev
Change-Id: I38ebcb3da0e4d2acc9e7108c9579ea98323864e0
2014-07-10 10:14:36 +02:00
Yoann Lopes
a7f924186c GStreamer: fix looping a media when it's loaded from qrc.
When playing a media for the second time, the backend resets the
the media by calling setMedia() with the same value.
The problem is that setMedia() clears the previous media, which is
a QFile in this case and is the one we are trying to set again...
The QFile was deleted, causing the current media to be a dangling
pointer.

Change-Id: I6854b40212fd084d1e31e756a040a02ad103b7ba
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-07-03 15:45:46 +02:00
Andrew den Exter
310402c6c1 Fix stuttering with RTSP streams.
Set the rtspsrc buffer-mode to 'slave' which is the default in
gstreamer 1.0 and doesn't cause the stuttering apparent with
the default buffer mode.

Change-Id: I4241fbe638c176ad93f441a3f76a1041ef1cb6bb
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2014-06-26 01:45:52 +02:00
Yoann Lopes
eadf1c8c41 Fix static initialization order fiasco in some plugins.
Some static variables were initialized using QMediaMetaData
values, which are also statically initialized.

Task-number: QTBUG-39202
Change-Id: Ibedc0a77d96cdfa575aad122c4ec654e6830e1f7
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
2014-06-06 11:12:21 +02:00
Yoann Lopes
101dce7a29 GStreamer: disable clock syncing in video sink for live sources.
Task-number: QTBUG-38465
Change-Id: Icdf2df36b9b3c09dd047e60ac24e221a3d233c6f
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-05-09 19:48:53 +02:00
Yoann Lopes
464ed66119 GStreamer: correctly get metadata from live sources.
For some unknown reason, "iradio-mode" was set to false on the
source element, which was preventing new metadata to be received
when playing live streams.

Task-number: QTBUG-37640
Change-Id: Ib90297e81e26a99c3dfc753bdcd5cbd1ee2f6764
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-04-09 13:43:42 +02:00
Yoann Lopes
d3ba2d6f3f GStreamer: cleanup system includes.
Replaced some linux includes with <private/qcore_unix_p.h> to be more
portable.
Use qt_safe_open() and qt_safe_close() instead of ::open() and
::close().

Task-number: QTBUG-38061
Change-Id: Idb3f50d070ec1701cafba98e79e2e85824653a3a
Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-04-07 11:50:29 +02:00
Yoann Lopes
3d51c9565d GStreamer: each QMediaPlayer now has its own volume by default.
We were using the volume property of GStreamer's playbin element to set
the volume. This could behave differently depending on the system
configuration; it could affect the system volume or the media player
own audio stream.
We now use a 'volume' element to do software attenuation on the audio
data sent to the audio sink, it allows each QMediaPlayer to always have
its own volume.
To preserve the previous behavior, developers can set the
QT_GSTREAMER_USE_PLAYBIN_VOLUME environment variable to true.

[ChangeLog][QtMultimedia][GStreamer] QMediaPlayer::setVolume() doesn't
change the system volume anymore (it could be the case before depending
on the system configuration). Set the QT_GSTREAMER_USE_PLAYBIN_VOLUME
environment variable to true to restore that behavior.

Task-number: QTBUG-30317
Task-number: QTBUG-36511

Change-Id: Ia0249962a74ac21fb110fcb634c08706f8d5767a
Reviewed-by: Wouter Huysentruit <wouter_huysentruit@hotmail.com>
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-04-03 12:59:59 +02:00
Zhang Xingtao
9a4dd5fe8e fix: 'm_state' was not declared in this scope
Error occurred when building with DEBUG_PLAYBIN defined.
It should be m_currentState from context.

Change-Id: Iad59966ca19c9d1b589fc8641599494436a0a5f3
Reviewed-by: Liang Qi <liang.qi@digia.com>
Reviewed-by: Jing Bai <doris.bai@gmail.com>
2014-03-28 11:22:19 +01:00
Yoann Lopes
023c6ebcb9 GStreamer: fix memory leaks.
Many GStreamer objects were not properly managed or never released.

Change-Id: I38b3854e8b9e2264b5b647f331d3bb16b886e2d6
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
2014-03-21 19:16:09 +01:00
Yoann Lopes
60ba0afbde GStreamer: don't try to seek when it's not supported.
This eliminates warnings on the console.

Change-Id: I6a0509dba4a0f7ec6fad33f8803be746f425a616
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2014-03-21 19:16:03 +01:00
Oswald Buddenhagen
5980bc41cf whitespace fixes
remove trailing spaces & expand tabs.

Change-Id: I05ef110abed90f13b47752760ffb4567a11a6a5e
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@digia.com>
2014-01-30 14:32:10 +01:00
Andrew den Exter
b27913b76d Fix playback with exotic gstreamer pipelines.
Extend the list of raw video formats, and allow the playbin flags to
be overridden by an environment variable when the default isn't
suitable for whatever reason.

Change-Id: I4c7d821b0ce29f5ad2dc0341e378ffd17c489e98
Reviewed-by: John Brooks <john.brooks@dereferenced.net>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2014-01-13 06:06:18 +01:00
Yoann Lopes
c3ca3a760e Some cleanup in the GStreamer plugin.
Removed QGstreamerVideoOverlay and related classes. It was used as
'Window' control but performs worse than QGstreamerVideoWindow which
does basically the same thing using GStreamer ready-made components
instead.
Removed X11 dependencies and related configuration tests. It was only
needed for QGstreamerVideoOverlay.

Change-Id: I2ad2636ccf0060e56cd64f3d9e5b3c24dc75f5a3
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2013-09-20 14:37:06 +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
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
Sergio Ahumada
399500f87e Update copyright year in Digia's license headers
Change-Id: Ia8c1c38aba1544603fada8c414cc856f365fd15b
Reviewed-by: Akseli Salovaara <akseli.salovaara@digia.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
2013-01-10 17:56:01 +01:00
Miikka Heikkinen
4b62c926b7 Add PLUGIN_CLASS_NAME to qtmultimedia plugins
Needed for automating static plugin loading.

Task-number: QTBUG-28131
Change-Id: Ia392b112fc46dedd34c9ffdbd6e874dbbfeaef83
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-12-10 15:32:49 +01:00
Andras Becsi
25fd41373a Fix QGstreamerPlayerSession::availablePlaybackRanges()
Since buffering information through buffering queries is only valid if
progressive download buffering (on-disk caching) is enabled or local
media is played and we explicitly disable on-disk buffering because of
cleanup issues with gstreamer availablePlaybackRanges() always returns
an empty range for online media.
Seeking is also possible using http range requests therefore if valid
playback ranges could not be determined we should return the [0..duration]
range unless the source is a live stream or the duration is unknown.

Change-Id: Idbebc0fdde5053c6f9c0b3794c6d122492c6239c
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Reviewed-by: Andras Becsi <andras.becsi@digia.com>
2012-11-28 17:32:06 +01:00
Andras Becsi
78ce69d3dd Remove nonfunctional mediaDownloadEnabled property
I suppose this was introduced after an API freeze to try
to support on-disk buffering but since the code does not
set the GST_PLAY_FLAG_DOWNLOAD flag on the player element
the feature is not only undocumented but also nonfunctional.

If on-disk buffering is needed we should add proper
API to enable/disable it for all backends which might
be possible with Qt 5.1 the earliest.

Change-Id: I6b42a06166509db0023a3e0263ecc3a36f0d2bdb
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
2012-11-20 16:26:21 +01:00
Andras Becsi
1761c93ea8 Clean up QGstreamerPlayerSession
Remove dead code and fix compiler warnings about unused
and uninitialized variables.

Change-Id: I809d905e13234db1dbc1b9c2a0ac887c5c712fc7
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2012-11-20 11:54:49 +01:00
Andras Becsi
30bfb777f9 Media is always set to be seekable with the gstreamer backend
Since the used mechanism for querying whether the media is seekable
was unreliable the code has been commented out and the media always
set to be seekable.
Query for seeking capabilities after the duration is known in
updateDuration() which retries to determine the duration multiple
times if unsuccessful and use gst_query_parse_seeking to check
if the media is seekable or not.

Change-Id: I141dfb1616dc59f8c92a698ddb2867f63a2656b9
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2012-11-20 11:54:49 +01:00
Sze Howe Koh
832c3929f2 Rename namespace QtMultimedia -> QMultimedia
Main code, examples, tests and docs updated. Method:
1. Mass find+replace "QtMultimedia::" -> "QMultimedia::"
2. Hand-modified declaration in qtmedianamespace.h/cpp

For consistency (with minimal disruption), namespaces with a "Qt" prefix
will be renamed.

Part of the Header Consistency Project
(http://lists.qt-project.org/pipermail/development/2012-October/007570.html)

Change-Id: I1fbc43a1aa91d996aa61869fcd8d05186bf7cf6d
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-11-06 18:20:06 +01:00
Sze Howe Koh
00d7092163 Rename namespace QtMultimedia::MetaData -> QMediaMetaData
Main code, examples, tests and docs updated. Method:
1. Remove unused forward-declarations, "class QMediaMetaData"
2. Mass find+replace "QtMultimedia::MetaData" -> "QMediaMetaData"
3. Un-nest from the QtMultimedia namespace in qtmedianamespace.h

For consistency (with minimal disruption), namespaces with a "Qt" prefix
will be renamed. Also, Qt guidelines don't include nested namespaces
(http://lists.qt-project.org/pipermail/development/2012-October/006756.html)

Part of the Header Consistency Project
(http://lists.qt-project.org/pipermail/development/2012-October/007570.html)

Change-Id: I40e59c1cf58c1792725e735e9285c51bc5f226b1
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-11-06 18:19:57 +01:00
Oswald Buddenhagen
0affd9023f adjust to qt_plugin.prf changes
DESTDIR and INSTALLS+=target are set up automatically now. note that in
the qmediaserviceprovider test we must override that.
also, TARGET munging is done automatically.

Change-Id: Ida5d5601e22b099134d1ec07ace713e0d0986bd6
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-11-05 14:01:31 +01:00
Yoann Lopes
abcc107731 Make QGstreamerPlayerSession 'VAAPI-aware'.
At the moment the GStreamer player pipeline is not setup properly when
the VAAPI plugin is available, resulting in no video being shown.

Added 'video/x-surface' as one of the default raw formats for the
decodebin.
Don't use vaapidecode when the video sink is not compatible.

This is a preliminary patch to support VAAPI. In the current state
vaapidecode will never be used as none of our video sinks support the
video/x-surface format.

Change-Id: I39f339b483d4052dd1e29c2b0ef06343d5670224
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2012-10-17 15:28:16 +02:00
Iikka Eklund
dcbbad869e Change copyrights from Nokia to Digia
Change copyrights and license headers from Nokia to Digia

Change-Id: Id77334cfb15de096941c88e32d04ca07b4eb4709
Reviewed-by: Janne Anttila <janne.anttila@digia.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2012-09-24 09:05:51 +02:00
Oswald Buddenhagen
83b79659b6 centralize load(qt_build_config)s in .qmake.conf
Change-Id: Ie07a32729ec8679f799613f8f6ccdd9c1b6bf7c9
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-09-12 12:37:43 +02:00
Dmytro Poplavskiy
f844d6d9da Gst player backend: removed fifo based stream playback fallback
It was used on systems without appsrc element support,
but since the appsrc is part of base elements for a long,
thre is a very little value in fifo based fallback.

Change-Id: I162233cbb55821443c892f00ebd29c0498ae7152
Reviewed-by: Ling Hu <ling.hu@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-07-19 09:08:50 +02:00
Michael Goddard
b0809c027c Rename availabilityError to availability.
It's perhaps clearer in the usual case.

Change-Id: Id3cef82ac83f8c9b538b3315281664ce1c6a2b96
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2012-06-29 02:47:41 +02:00
Oswald Buddenhagen
b1a4d7f9fc build system cleanups
- load(qt_module) => load(qt_build_config)
- remove:
  - CONFIG+=module (obsolete)
  - code relating to module version headers (automated now)
  - %mastercontent assignment (automated now)
  - QT_BUILD_*_LIB defines (automated now)
  - pointless QPRO_PWD assignments
  - pointless DEFINES+=QT_MAKEDLL
  - pointless and commented out include and depend paths
  - qmake -project boilerplate

Change-Id: I8f4586403848fe8f2dff4e889b389956ffcdea59
Reviewed-by: Jonas Rabbe <jonas.rabbe@gmail.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-06-25 11:44:40 +02:00
Toby Tomkins
6d301388e1 Fix namespace compilation.
Change-Id: Id8d71a48df20da16647834e8f9732012f26f928f
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-06-25 06:39:04 +02:00
Ling Hu
931c2d3ffe Enable auto resume of playback for gstreamer mediaplayer
The resource policy now supports implicit auto-resume,
so it is better to cooperate with that in mediaplayer
to enable auto resume playback after resource lost.

Change-Id: Iba0d28e64fa864dd6332a62e915316d48a12a533
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2012-06-12 06:33:09 +02:00
Lev Zelenskiy
8ce488249e GStreamer player session: remove code for old playbin.
We only support 'playbin2'.

Change-Id: Ibe35f71377862cb83742c2f9b606c5e2fdd5199d
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2012-05-14 05:37:09 +02:00
Lev Zelenskiy
da12ea2e80 Update duration information after switching to PLAYING state.
For rtsp streams duration information might not be available
until playback starts.

Change-Id: Id8829408a4bd2c0fc6a89f2d059d23a5a95d940e
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2012-05-11 07:10:27 +02:00
Lev Zelenskiy
26e4c8cff7 When resource is lost pause the pipeline instead of stopping it.
Change-Id: Iccbf2f820ec6373d5853accc064dad659858514c
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2012-05-11 07:09:49 +02:00
Lev Zelenskiy
3d0dc61b9f QGStreamerPlayerSession: unref pads after using them.
Change-Id: I3eec73eca5c2da3c449f362da8639a6dfb52a9e9
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2012-05-11 04:42:39 +02:00
Lev Zelenskiy
4bb755598b QGstreamerMetaDataProvider: fix keys not mapped properly.
Add a key which is mapped against the QGstreamerMetaDataKeyLookup,
not the original Gstreamer key.

Change-Id: I2e20b102e97b9a3a7909ff925f195cd0bdff1775
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2012-05-11 04:40:55 +02:00
Dmytro Poplavskiy
69c1ecbffd Gst played: removed GST_SEEK_FLAG_ACCURATE flag
Forcing accurate seeking may be very slow for some files,
it's not intended to be used with media players.

Change-Id: I9fe759f6effa447a800aeea321cc46617c64866f
Reviewed-by: Lev Zelenskiy <lev.zelenskiy@nokia.com>
Reviewed-by: Mithra Pattison <mithra.pattison@nokia.com>
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2012-05-10 05:44:46 +02:00
Jonas Rabbe
a3b6eabd45 Split gstreamer plugin into smaller plugins providing fewer services
The gstreamer blob has been split into four plugins: audiodecoder,
camerabin, mediacapture, and mediaplayer.
Note: camerabin is still disabled because it is untested camerabin2
implementation.
A new qmake configuration use_gstreamer_camera has been introduced
and is needed for the mediacapture plugin to expose the camera
service. This configuration has been disabled by default.
Shared functionality has been moved to the internal gsttools library.

Change-Id: Ifb2604f440cfa97513d39f5d7978766c88eaec45
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-04-27 09:22:09 +02:00
Michael Goddard
2a7c2e695b Make sure the audio/video availability information changes atomically.
So there's a consistent picture of the stream availability.

Change-Id: Id7ea166353c0151fcc11105a1e233e9fe8df9cc6
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2012-04-27 05:05:30 +02:00
Lev Zelenskiy
2acb594de2 GStreamer backend: set initial volume and mute values.
For each stream set initial volume to 100 and mute state to FALSE.

Change-Id: I529a82c12f0fd65277f97193b3feed7f9782e4c0
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-04-05 05:52:19 +02:00
Lev Zelenskiy
cc33b63fa5 Reset playbin state to NULL on end of stream signal.
According to GStreamer documentation "playbin should be set
back to READY or NULL state, then the "uri" property should be set
to the new location and then playbin be set to PLAYING state again."
We reset playbin to NULL state and then call setMedia() again
in case playback is restarted.

Change-Id: If7efbf8d88e0aad461c3d1d8b802c6621af221f7
Reviewed-by: Mithra Pattison <mithra.pattison@nokia.com>
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2012-04-05 02:40:17 +02:00
bigbearzhu
df3f5d790f Fixed major mem leak of unfreed GstTagList when playing ogg files.
Could cause serious leak if ogg files contain coverart image.
Should use gst_tag_list_fee to free the used taglist.

Change-Id: I8f7b799729b84ad9a2ca45bc3e31f37a987a5885
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-04-04 02:46:58 +02:00
Lev Zelenskiy
d8b688f8af Fixed: Streams information is not updated properly for RTSP streams.
Changes to QGstreamerPlayerSession:
Handle video-changed, audio-changed, and text-changed signals.
Call getStreamsInfo() to update streams information.

Change-Id: I8bfead3268771245635424b5f1debff624bbe038
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Reviewed-by: Ling Hu <ling.hu@nokia.com>
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2012-03-28 08:09:58 +02:00
Ling Hu
6e177b4dce Minor improvements on resource-policy interfaces
Change-Id: I3e9c7c4d1fca90e0fb97b0058e9b5a5e34940025
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
2012-03-26 09:14:30 +02:00