New QCameraInfo class.

The class allows to get the list of available cameras on the system as
well as getting some static information about them such as their unique
ID, display name, physical position and sensor orientation.

This makes QCamera::availableDevices() and QCamera::deviceDescription()
obsolete.

This patch contains the API, documentation and auto-tests but not the
actual implementation by each backend (except for retrieving the default
camera device).

[ChangeLog][QtMultimedia] Added new QCameraInfo class
[ChangeLog][QtMultimedia] QCamera: availableDevices() and
deviceDescription() are deprecated, use QCameraInfo instead

Change-Id: I64fd65729ab26a789468979ed5444ee90bb82cd0
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
VideoOutput: fix autoOrientation with a camera source.

Don't assume the camera frames are always in the same orientation as the
display in its primary orientation. We now take into account the camera
sensor position and orientation to calculate the viewport orientation.

Change-Id: Ib333c87f1804d1010ada42cb757e4fab78d75a04
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Android: implement QCameraInfoControl.

VideoOutput will now take into account the camera sensor orientation to
adjust the viewport orientation, we don't need to apply a rotation on
the Android Camera anymore.

Change-Id: Ia7639f0a5711ab6cc6f80b9716bc1a6f389499b4
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Add missing virtual destructor for new class

qmediaserviceproviderplugin.h:166:28: error: ‘struct QMediaServiceCameraInfoInterface’ has virtual functions and accessible non-virtual destructor [-Werror=non-virtual-dtor]

Change-Id: I08c6718bfd87c5adeea9969afdd4766150163238
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Prefer to use normalised signal/slot signatures

Change-Id: I48ae4b46f7a0342a1436ba78958b057e919e3a8a
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
CoreAudio: Allow more flexability when specifying SampleRates

The available sample rates for a given device are the nominal sample
rates reported by the device.  It is possible to use other sample rates
and CoreAudio will take care of the conversion.  So what we will do is
report what rates are available for a device, but not explicitly require
those sample rates to have a valid format.

Task-number: QTBUG-36265
Change-Id: Idbbdeacbb6bc1fe434bcd8dec519ad70d4ccd545
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
AVFoundation: Improve config test

This should prevent the avfoundation plugin from being built on system
that can not support using it (ex. 32bit builds on OS X 10.7)

Task-number: QTBUG-36239
Change-Id: I9f861b7580b0e015ddbc1231440d677bf6eee1ec
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
CoreAudio: Make it possible to set volume on of QAudioOutput

QAudioOutput::setVolume stopped working for CoreAudio when it was ported
to live in it's own plugin.  This was because it was not possible to set
the volume of QAudioOutput in iOS.  Now the functionality has been
restored and added for iOS as well.  For OS X we use the old method of
setting the volume property of the AudioUnit.  On iOS it is not possible
to set the volume on a per AudioUnit basis, so we now manually modify
the buffer contents (the same we do for QAudioInput already).

Task-number: QTBUG-36756
Change-Id: I42b5892fe5534217043fa55e7b5b9a4ce824050d
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
CoreAudio: Use the real default audio device for QSoundEffect

There is an assumption in QtMultimedia that the first audio device
returned by QAudioDeviceInfo::availableDevices is the default device, so
we must make an effor to make sure this is true.  This commit should fix
the issue on OS X.

Task-number: QTBUG-36638
Change-Id: Id388d7218b465cb29d826f46ee825e982c5f7ffc
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
AVFoundation: Remove debug code

Some debug code made it into the released code, so each time you used
the QWidget based video player the terminal would print data about the
window frame size.

Change-Id: I86eb00ce5edb23b7a2abf6a63893cd17aaeb0ee3
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
AVFoundation: Fix y-inverted QML Videos

When the code that supports iOS was added, we introduced a bug where QML
videos would be played y-inverted on OS X.  This is because we made no
effort to y-invert the Framebuffer Object before rendering the texture
in the SceneGraph.  Now we render the video the the FBO y-inverted, so
there is no need to y-invert the resulting texture.

Task-number: QTBUG-35955
Change-Id: I41af1aaae57923b9972b5be5ec65f7d2a97d77c5
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
AVFoundation: Call stop() on VideoSurface when changing sources

Before we were reusing the active surface when we switched videos.  This
leads to an inconsitency in states, and the sourceRect property of the
video surface does not get updated.

Task-number: QTBUG-28655
Change-Id: Ie29bf1d9b1c11b6f51a869253c730202001c07cf
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
AVFoundation: implement QCameraInfoControl.

Change-Id: I05f3daa5c4acb90e046e26d6d577ae40dfed0e30
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
AVFoundation: Cleanup AVCaptureSession with proper reference counting

The reference counting was not being done for AVCaptureSession so it was
being destroyed before we got a chance to properly clean it up (which
lead to crashes).  We also make sure to remove any observers from
AVCaptureSession now before destroying it.

Task-number: QTBUG-37109
Task-number: QTBUG-29955
Change-Id: Ia9b49ad1eab01b4f7424e2a1c699d903cd9bf902
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
enable imx6 specific QSGVideoNode based on a config test

This way it also works custom mkspecs

Change-Id: I7414aac775b797da3487e9625c7212486118b532
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
videonode: imx6: cleanup pixel formats

All formats are now tested.

Also, don't use the alpha channel. This is not quite correct for formats
with alpha channel but for video probably a good idea.

Change-Id: I4a2404d7c96023bb1e3fca41e1f224d23347f290
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
videonode: imx6: clear texture cache when the format changes

The old textures won't match anyways. So there is no need to keep them.

Change-Id: Id3482333d10cf022d04076ec0f5c7df475c522ae
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>