Commit Graph

121 Commits

Author SHA1 Message Date
Yoann Lopes
e747d4c0cd GStreamer: fixed build when using GST_PHOTOGRAPHY.
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>
2013-02-28 16:50:37 +01:00
Oswald Buddenhagen
4760e1fb02 make use of qtHaveModule()
Change-Id: I14da5455b7dd4681254e1652395df5f5c65746bd
Reviewed-by: Tasuku Suzuki <stasuku@gmail.com>
Reviewed-by: Jonas Rabbe <jonas.rabbe@gmail.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-01-11 15:15:05 +01: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
Romain Pokrzywka
4141cf2772 Fix gstreamer plugin build for platforms with qreal -> float
simple case of qFuzzyCompare with double and float.
I kept m_volume as double rather than changing it to float, to mimic
the behavior of the mute variable.

Change-Id: Ife2f58f60738215ebd430ba94bef885c09994e72
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@gmail.com>
2012-09-14 19:29:21 +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
Thiago Macieira
78f4577a2d Use QStandardPaths instead of QDesktopServices
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>
2012-08-02 07:28:40 +02:00
Dmytro Poplavskiy
ae728a4b1e Replaced endpoint control with audio input and output controls
Change-Id: I981aabe39d106ced4ee1240db9e5b653c6fa5e91
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-07-24 09:49:47 +02:00
Dmytro Poplavskiy
36ff2fe85e Added volume property to QMediaRecorder
Change-Id: I19f727107651c9f640ca1c010a3764f05aef8820
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-07-19 09:08:53 +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
Dmytro Poplavskiy
864ab3a39a Camerabin camera service: configure default video settings
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>
2012-07-16 07:18:15 +02:00
Dmytro Poplavskiy
b6a8c713bc Updated the camerabin2 based camera with QtMultimedia changes
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>
2012-07-16 07:18:12 +02:00
Dmytro Poplavskiy
ed7f02490d Gst capture: use QDesktopServices for default storage location
Change-Id: Icff46f2dc88572beab2eb835e24424f15ff05616
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-07-09 04:50:09 +02:00
Dmytro Poplavskiy
a3e9228ac4 Gst capture: report the actual media location to application
Change-Id: I2ebc7b9607fe499e2465428118bff3fe98e58672
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-07-04 07:21:05 +02:00
Dmytro Poplavskiy
8bdceb9357 Gst Capture: image capture fixes
Report camera is ready to capture only in image capture modes;
Emit capture failed if camera not configured for capture

Change-Id: Ia2b92e2f8c760db948185a29c3e5ceae81dd3af4
Reviewed-by: Lev Zelenskiy <lev.zelenskiy@nokia.com>
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2012-06-29 07:28:29 +02:00
Dmytro Poplavskiy
b3e8783334 Gst capture service: capture mode fixes
Fixed reporting the current capture mode
Set the correct default capture mode
Allow viewfinder only and Video+Image capture modes

Change-Id: Ib12504304bca22fe664631ff5ffbc0a392ba34a8
Reviewed-by: Ling Hu <ling.hu@nokia.com>
Reviewed-by: Lev Zelenskiy <lev.zelenskiy@nokia.com>
2012-06-29 07:28:22 +02:00
Dmytro Poplavskiy
799a33e34d Gst capture: don't wait for pipeline to stop
State changes to lower state are synchronous in gstreamer

Change-Id: Ib87eabfeee9ec100f24efbaa989ec909ac7f9a1b
Reviewed-by: Lev Zelenskiy <lev.zelenskiy@nokia.com>
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2012-06-29 07:28:19 +02:00
Dmytro Poplavskiy
b6848df7c2 Allow gst video capture startup without viewfinder attached.
Change-Id: I5f0b7dc12f4ee8e988d6107047d963949bcdb5bf
Reviewed-by: Lev Zelenskiy <lev.zelenskiy@nokia.com>
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2012-06-29 07:28:14 +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
Michael Goddard
bba28afe55 Rename a few controls.
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>
2012-06-29 02:47:29 +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
Oswald Buddenhagen
82ade38b11 switch to new-style configure tests
Change-Id: Ib56d0cb24065c1f990aee5d7f41bfedfe75332a1
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-25 10:40:03 +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
Dmytro Poplavskiy
62749d654d Removed encoding options from Audio/Video encoding controls
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>
2012-06-07 08:28:08 +02:00
Kent Hansen
71e25920da Avoid string-based, dynamic lookup of signals
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>
2012-06-05 04:20:47 +02:00
Johannes Zellner
a95de846d9 Add gstreamer.json to OTHER_FILES
Change-Id: Ic063a2bd96c9445b6d1af049df6cf3e33572d547
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
2012-06-01 00:10:47 +02:00
Johannes Zellner
2564dbec68 Fix compilation when appsrc is not available.
Change-Id: I96c9aad94b5eb0734854bc7cf0126cad6841c0cd
Reviewed-by: Jonas Rabbe <jonas.rabbe@gmail.com>
2012-05-21 20:28:56 +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
Thiago Macieira
b2b92dad82 Change uses of {to,from}Ascii to {to,from}Latin1
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>
2012-05-04 13:36:08 +02:00
Dmytro Poplavskiy
b36e2f5209 Replaced QMediaRecorderControl::play/stop/pause with setState
This allows to introduce new states without breaking BC.

Change-Id: I03c064cec92d6745b251a51cfb301e7f01f4b765
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2012-05-02 04:59:17 +02:00
Dmytro Poplavskiy
b7935a84d7 Added QMediaRecorder::status property
QMediaRecorder::state property represents the user request and
changed synchronously during record(), pause() or stop() calls.

Recorder status is changed asynchronously
and represents the actual status of media recorder.

This also makes API more consistent with QMediaPlayer and QCamera.

Change-Id: I80b4aaa70bb88e555c492908da8c29d0fc5ed5ea
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2012-05-02 03:15:01 +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
Thomas McGuire
7c84225cc8 Move QVideoWindowControl out of widgets.
There is no widget dependency in it, and this enables the QML
Video element to support video overlays later.

Change-Id: I7ebcde350f9595a9f7c319663ff745930535a8a7
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-04-25 04:02:15 +02:00
Lev Zelenskiy
1a71385d6a Emit connection-failed signal if gst_pad_alloc_buffer fails.
Buffer allocation might fail for requested format.
We need to emit connection-failed signal
and allow backend to insert colorspace transformation element.

Change-Id: I9a101bb3c027f150c68bbeaba8ab932deded47ea
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-04-20 08:47:03 +02:00