Port gstreamer capture plugins, video renderer.

As a side effect of not porting the same code two or three times over
this moves a lot of duplicated and often out of sync code to QGstUtils.
It also adds a new renderer plugin interface as the buffer allocation apis
have changed and aren't compatible with QGstBufferPoolInterface.

Change-Id: I0a86a5449600df8574eff6f831ce1591d8dd29db
Implement exposure and whitebalance lock for gstreamer camera.

Change-Id: I58277d69c18ad2e31cad719a2dd6361c0c2d7e98
Add additional exposure modes to QCameraExposure.

[ChangeLog][GStreamer][Android] Camera exposure mode extended to support
Action, Landscape, NightPortrait, Theatre, Sunset, SteadyPhoto,
Fireworks, Party, Candlelight, and Barcode modes.

Change-Id: I13d4bb042d27c0bd2ffcd369882b56bbabc84335
MER: Add packaging.
Allow gstreamer to supply the default volume and muting of a stream.

GStreamer's normal default volume is 1.0 and unmuted, so explicitly setting
these values in the normal case isn't necessary.  In some unusual cases
changing the volume properties may change the application or global volume
and in those circumastances it's better to not change the volume.

Change-Id: I66130421f6096e396b748fcc651af20dff197eda
MER: Add a sensor control which returns orientation information.

Change-Id: I7542cc54a253031b0692780f368cf31c65182d96
Implement customFocusPoint in camerabin backend.

Send a regions-of-interest event containing a rectangle surrounding the
focus point to the camera source when the camera's focusPointMode
is QCameraFocus::CustomFocusPoint.  Reset the regions-of-interest if the
focusPointMode changes to any other value.

[ChangeLog][QtMultimedia][GStreamer] Implement customFocusPoint in camerabin backend.

Change-Id: If75405733b18d476dff5467abae3f08271caf06a
Add a control which allows overriding the gstreamer video sink.

This enables applications to selectively use platform specific or
unusual (video4linux perhaps) gstreamer sink elements to render video.

Change-Id: Ife2c2f9b2149d6b598c69a78f1e116ba05b46e10
[qtmultimedia] Packaging: remove QtWidgets dependency
Handle resource requests through singleton.

Many applications have multiple objects dealing with audio, and each
needs to request audio resources from resource policy manager. Resource
policy manager handles audio resources per-manager. Each ResourceSet
instance creates new manager, which causes applications having multiple
audio objects to fight for the audio resources internally, even though
the streams are played from the same process id.

To overcome this in QtMultimedia applications, handle all ResourceSet
operations through singleton. This way one client has only one manager
id registered, and resource acquiring and releasing can be limited to
only when no resources are acquired or all resources are freed. To
reduce unnecessary noise from resource policy plugin to the clients,
keep track of client states and only notify clients which themselves
request for resources etc.
Implement more full resource policy features.

 * Handle released by manager properly.

Signal resourcesReleasedByManager is different from signal
handleResourcesLost and needs to be handled separately.
Signal handleResourcesLost means some other client has acquired the
resources, thus the resources are lost from us, but if the other client
frees the resources, we will automatically get the resources back.
With resourcesReleasedByManager we lose the resources, and resource
manager releases them as well (same as if client would call release()),
so only way to re-acquire resources in latter case is calling acquire()
again.

This distinction is useful for example in cases where user is listening
to music with headphones connected and removes the headphones, then the
music player shouldn't continue playback until user requests so. But if
user is listening to music when phone call is received, it is convenient
to resume the playback automatically after the call.

 * Implement availability changed.

Availability changed is information whether resources the client is
interested in are available (no higher priority resource classes have
acquired the resources).

 * Implement missing resources released.

Emit resourcesReleased signal when receiving corresponding signal from
libresource-qt.

 * Add mechanism to change used resource class.

Check for environment for special variable, and if the variable has
proper data, use that as the resource class. Can be set with for example
qputenv("NEMO_RESOURCE_CLASS_OVERRIDE", "game");
Resource policy for QAudioOutput.
Only call pa_cvolme set on stream creation if volume explicitly set.

Streams without a custom volume set use suitable volume selected
by the PulseAudio server. This is usually the correct choice, since then
stream-restore module can apply old volume to the stream. Also with
Sailfish explicitly setting the volume to streams breaks system volume.
Resource policy support for QSoundEffect.

Since sound effects are something short and mixed with other audio, do
not acquire resources explicitly. Follow the resources availability
information to determine when it is ok to play the sound effects.

When client has registered itself to resource manager, client's streams
are classified properly. If no higher priority client has acquired the
resources, isAvailable() is true, and sound effects can be played. We
do not explicitly acquire the resources, since then other clients with
the same resource class would lose the resources, thus not possible to
have second client play music with QMediaPlayer class while our client
would just want to play simple sound effects.
Set volume only if volume was explicitly set.
Add resource release timer when pausing or stopping media.

If media is paused, stopped, or end of media, if state hasn't changed to
playing state, release the resources. The idea with the timer is that if
for example media player is playing one song which ends, there won't be
release()/acquire() unnecessarily if next song is immediately set as
media and started playing.
Enable NEMO_AUDIO
[qtmultimedia] add qttest-devel to build dependencies
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>