Cleans up duplicate device enumeration code so the devices listed by
the QMediaServiceProviderPlugin are the same as those in the
QVideoInputDeviceControl and includes face and orientation information
if available.
Change-Id: Iaa4c303c973bcf3e0f7c8c2fd7a7de629bccec86
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
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][GStreamer] Implement customFocusPoint in camerabin backend.
Change-Id: If75405733b18d476dff5467abae3f08271caf06a
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
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>
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>
Many GStreamer objects were not properly managed or never released.
Change-Id: I38b3854e8b9e2264b5b647f331d3bb16b886e2d6
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
Clear the tag list before syncing with reference set so old values
are removed and explicitly remove invalid QVariants from the reference
set so that the type correction doesn't result in invalid values being
written instead.
Change-Id: I7d1bdc95cd2a2d601720db84c9b3ef629477bc99
Reviewed-by: Yoann Lopes <yoann.lopes@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>
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>
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>
That way we reduce count of temporary QString instances.
Change-Id: Id806c68ea616828c2355c07b8576616fa6a8da17
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Make resources required for capture optional and disable just the
capture features if they are not available, so the camera viewfinder
can be displayed and images captured without blocking the music
playback and the other way around.
Change-Id: Ic9692195156d994ccd4a911ae41d2242a00d575b
Reviewed-by: John Brooks <john.brooks@dereferenced.net>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Enable gstphotography interfaces if the compile check passes, and
implement missing pieces of whitebalance and focus configuration.
Change-Id: Icd24dfd148204f8d8218176593c3120427a13e1e
Reviewed-by: John Brooks <john.brooks@dereferenced.net>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Prefer the default camera-source element if there is one or an element
identified by an environment variable to a static list of possible
elements which may not be appropriate for the target environment.
Change-Id: I53816c949307953780f9046eb11e09effe059be0
Reviewed-by: John Brooks <john.brooks@dereferenced.net>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
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>
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>
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>
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>
/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>
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>
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>
The use of QDesktopServices for getting paths is deprecated in favour
of QStandardPaths.
Change-Id: I93c4a15dd65962d668c90e78f3f33f357e2450bb
Reviewed-by: David Faure <faure@kde.org>
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
encodebin doesn't like the encoding profile with ANY
container caps, if container and codecs are not specified
try to find a commonly used supported combination
Change-Id: Icbde042bd17d9682112fb8bbb8f0d506f6ddebe1
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Moved it to the separate plugin as the rest of gstreamer based services;
Updated with libqgsttools_p changes;
Implemented QMediaRecorder::status property;
Made gst_photography dependency optional,
it's not always available on desktop;
Added video recording case to auto integration test;
Moved backend implementation into qt namespace
Task-number: QTBUG-26046
Change-Id: Iacfc1a6e263a4c0201d5eb28d04c960b87a230c0
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
The encoder controls could be confused with actual encoding, so make
clear they are just settings. Also, the end point selector controls
were not named very well.
Change-Id: I27f8bf9c865c5f295abad97c01ef98752af42613
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Reviewed-by: Ling Hu <ling.hu@nokia.com>
They are replaced with encoding options from
QAudio/Video/ImageEncoderSettings.
This also allows to specify options without
requesting controls.
Change-Id: I507e68cdb8cb46325689804d27c6d0561cada50b
Reviewed-by: Lev Zelenskiy <lev.zelenskiy@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Qt5 has a new function QMetaMethod::fromSignal() for obtaining
the meta-method that corresponds to a particular signal (member
function).
This also avoids calling the virtual metaObject() function to
resolve the meta-method every time the signal is emitted; it is
known at compile-time which class the signals are defined in,
so it's safe to retain the meta-methods across calls.
Change-Id: I47328ec2dfc335c570fb18bcd304a2ee405bfd6e
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
This operation should be a no-op anyway, since at this point in time,
the fromAscii and toAscii functions simply call their fromLatin1 and
toLatin1 counterparts.
Task-number: QTBUG-21872
Change-Id: Ic591779a3431999c007fb0ff362c7e25ce54097e
Reviewed-by: Jonas Rabbe <jonas.rabbe@gmail.com>
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>
As in the past, to avoid rewriting various autotests that contain
line-number information, an extra blank line has been inserted at the
end of the license text to ensure that this commit does not change the
total number of lines in the license header.
Change-Id: I20e5215108c6ebd5f8474fed5c3665118e4791e6
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>