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>
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>
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>
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>
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>
The running count was not updated with the new value.
Auto-test added and documentation updated to be more clear about this
behavior.
Task-number: QTBUG-36643
Change-Id: I29e98ca4679f950a75133b21873738bcb72d23d4
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Adding the CAMERA and RECORD_AUDIO permissions implicitely makes some
features a hard requirement for the app.
By adding these features in the .pro file, androiddeployqt will mark
them as unrequired in the final package.
Change-Id: Ie9357d05626cb12272001d63b04e230737fbf1bc
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Pass the top-level window's window group to mm-renderer,
as required by mmr.
Change-Id: I2a2e8b4aa48f5c2292b03593c6d528068f383b5c
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
When -no-opengl was used then it was not automatically pulling in the
needed Windows libraries as it was not loading opengl.prf to get them
from.
Change-Id: I9b73e5ee01da964a64c71b6261ff4ed98ce6f1a9
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
The test has been observed to fail sometimes, try to obtain values.
Change-Id: Id0374b7ad3d593c099500e771bc4d8cc50f26651
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
On imx6 there is a platform-specific API to implement
memory-mapping from gstreamer-buffer to opengl-texture.
This plugin uses this API to avoid CPU-based-memory-copy.
This allows fluid video-playback up to 1080p with very little CPU load.
Before even 720p used one cpu-core completely and wasn't fluid.
Change-Id: I0c33eb5d475393a65459291ce9290fa0753de4a5
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
This enables writing gps positioning information to captured images.
Change-Id: I663f7b94b5e6040865358df1ae45d67b73c54f92
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
GStreamer tags are typed and the correct type must be used when inserting
a value into a GstTagList or subsequent merges or data accesses can crash
because of invalid casts.
Found while adding additional mappings for GPS values.
Change-Id: I95ab40a480a4685bf4e69064315557faa9de288e
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Commit 773dd01 in qtbase introduced a general mingw platform scope, which
is cleaner and more flexible than matching the spec name.
(see 278152fff for a similar commit in qtbase).
Change-Id: Ib46b9e83f690b0b26933b73764c7d7d4b031d792
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Trying to heuristically guess this kind of thing is almost always a bad idea.
Expect the creator of the output to explicitly tell us the category instead
of guessing.
This fixes QAudioOutput not respecting system volume on Sailfish.
Change-Id: If1d05192f513eb54fdfbd1df217286f329b2bfe8
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Trying to heuristically guess this kind of thing is almost always a bad idea.
Expect the creator of the output to explicitly tell us the category instead
of guessing.
Change-Id: I5f2988e2456685f3622e0ab136951b1742215f71
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
When trying to play video in an overlay window, the video fails to
be displayed because everything that would cause updateGeometry to be
called on the backend has already occurred prior to the backend having
been created.
Change-Id: Ida3c8feea69b497a18e9f44d7143bed03380d6ae
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
The camera itself can have a mode set that causes the image to be flipped
so instead of always mirroring the image that is taken from the camera we
check for the supported modes first and then check the mode and only
mirror if it is set. Otherwise we assume that it does not need
horizontally flipping but that it needs vertically flipping which seems to
be the standard for cameras on Windows.
[ChangeLog][QtMultimedia][Windows] Fixed the incorrect mirroring of the
image from the camera
Task-number: QTBUG-30365
Change-Id: I166b1f354e8d91c9a6c64f64164d782b52df98d8
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Some old versions of Alsa crash when snd_device_name_hint(-1, ...) is
called. This patch works around the problem by iterating manually over all
the available sound cards.
Change-Id: Ic380a371acc15013d137553ff30d68bed5af664e
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
The number of bytes per line was missing.
Change-Id: I0afbdcfd6d7195b7beb3fd09f4ed262f756be848
Reviewed-by: Denis Kormalev <dkormalev@ics.com>
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Don't try to apply video recording settings until a camera is actually
started.
Change-Id: I5348b91669835b9d776f56a3f49e3f8a11533d15
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
qglobal.h(501) : warning C4804: '-' : unsafe use of type 'bool' in operation
global/qglobal.h(501) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
tst_qcamera.cpp(507) : see reference to function template instantiation 'T qAbs<bool>(const T &)' being compiled
Change-Id: Ifd467b5536a0d386f592ae339129b3ebfb7b8838
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
When streaming to gst a typefind operation
is performed which jumps around to find which
codec the file provides, this fix the call to
send an EOS before we try to read and not after
which causes confusion to gst.
Task-number: QTBUG-32963
Change-Id: I2658b6a4e960430c8ab422a3bee5e11956663116
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Fixes the "libqavfmediaplayer.dylib 0x0000000110fa7c8c -[AVFMediaPlayerSessionObserver unloadMedia]" crash on Macs.
The problem was: writing to memory that had already been released. If not sure, one should always check if the objects exist before deleting it.
Solution tested on OSX 10.7, 10.8, 10.9
[ChangeLog][qtmultimedia][avfmediaplayersession]
Task-number: QTBUG-34213
Change-Id: Iac108711851c348e96e73542b4e71653007eeb54
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
It seems all Android media players share the same video buffers, which
results in textures containing frames for the wrong media player.
When getting a new frame, we now copy it into a FBO in order to avoid
that another media player overwrites the frame being shown on screen.
Task-number: QTBUG-35868
Change-Id: I6701cf7368a3ef9e73d649c3ece1f206cafd5bb3
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Move QDeclarativeVideoOutput to the private QtMultimediaQuickTools
library to make the QDeclarativeVideoOutputBackend interface
implementable by a plugin.
Change-Id: I763c483a1fc9ec56dc7b8be0bc71523f029a36ee
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
The custom focus point passed to the camera was in viewport orientation
but should be in sensor orientation. The two might differ.
Task-number: QTBUG-36208
Change-Id: Id272402090c2814e02abc527c0f6a6e932a60081
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Now based on fixed-point arithmetic and uses pre-generated lookup tables
for YUV coefficients and RGB clamping.
The new implementation is on average 2x-3x faster than the previous one
(tested on the Samsung Galaxy S4).
Change-Id: I1daf12f7f9b2f2334e90e0ede79e6d83800f1db6
Reviewed-by: Denis Kormalev <dkormalev@ics.com>
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Don't set profiles if no settings are specified.
Apply all settings before starting a pipeline as the mode can switch
without being restarted and incompatible video recording settings can
prevent the pipeline starting even in image capture mode.
Set audio encoding settings and encoder profiles if they are supplied.
Change-Id: I06febf977c2cae306383f9dbaae0f81f531b4757
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Orientation tags need to be transformed from the string tag returned
by gstreamer to the orientation in degrees. Date tags need to be
inserted with gst_date_time_new_local_time. Finally setting a tag
value shouldn't clear all other tags.
Change-Id: I28922148251084c12cf6c93d9b097fa5df41da9d
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Reloading the capture pipeline before recording is unnecessary and
introduces a big pause. Don't do it.
https://bugzilla.gnome.org/show_bug.cgi?id=649832 was resolved in gstreamer 0.10.23
Change-Id: I0de02af52dcc193bce7a4e3e61407ae1c2d3818c
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Guessing badly prevents the camerabin pipeline from loading at all and
the fallbacks used are not representive of the capabilities of most
cameras. So either stay out of the process and let gstreamer negotiate
a resolution if it can, or use a resolution supplied through the viewfinder
settings control by someone hopefully better informed.
Task-number: QTBUG-30842
Change-Id: Iec2dcc2476f38822f9e0d02301e46a1f49b7c6da
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>