Commit Graph

477 Commits

Author SHA1 Message Date
Ling Hu
6ee1977d60 add Q_OBJECT to QMediaGaplessPlaybackControl
Change-Id: I010b14f7900bd168012bb876f708397eec4dfa4b
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-01-04 06:46:10 +01:00
Ling Hu
093a3efbf3 Add new gapless playback control interface
Change-Id: If14c20af6da81dd65177102c9b955e3ebd40c722
Reviewed-by: Mithra Pattison <mithra.pattison@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2012-01-04 03:43:32 +01:00
Mithra Pattison
f9ec11a25e Add new implementation of QSound class
Added a re-implementation of QSound, using functionality derived from
QSoundEffect. QSound API remains the same as the original 4.x version.

It offers both a static interface (with auto resource cleanup on sound
completion), as well as an object instance interface for more detailed
control.

Change-Id: I85c00dd88547f8dea9b1e1ef2da31d2f2e28a172
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-12-30 05:03:45 +01:00
Mithra Pattison
c13a13c486 Adding hasAudio and hasVideo properties to QML MediaPlayer
Adding hasAudio and hasVideo to MediaPlayer QML object to allow users
to determine whether the current media has audio and/or video
streams. Also adding notifies for when these properties change.

Change-Id: Ife7606e148f0c0ad558b4019c68c70973c199c08
Reviewed-by: Sergey Dubitskiy
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-12-29 04:54:38 +01:00
Angus Cummings
b094a91c9d Added Video.qml to QtMultimedia, Video component
Change-Id: I0f5707a7cae931988aaddced23ad157105d0643b
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-12-23 08:10:51 +01:00
Mithra Pattison
f33731fe5a Fix readyChanged signal emit in gstreamervideorenderer
Modified handling of source update in gstreamervideorenderer as
the existing logic meant that it would never emit the readyChanged
signal.

Change-Id: I0a1488cfc151388fe0145d231001e502e9f45f0e
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Mithra Pattison <mithra.pattison@nokia.com>
2011-12-21 07:36:27 +01:00
Michael Goddard
3d7dff4f61 Fix a compiler warning.
Change-Id: Ie53ebaecc14a5bd2baa609b7cae6f0ee59aa0fd2
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2011-12-21 03:56:55 +01:00
Jonas Rabbe
4f3294930a Fix X11 and QPA compilation problems
The X11 buffer pool was using outdated APIs, and as the 'qpa'
configuration value is being removed, it caused the X11 code
to be pulled in, and therefore cause compilation failures.

Change-Id: I5fdaed854c6525716fccca44b5fbd0b850880cb9
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-12-13 01:22:28 +01:00
Michael Goddard
9d526fca67 Remove the module prefix from a number of includes.
Since I get build failures due to other changes in lower modules.

Change-Id: Iac6a814071c019de25db52daf941185337fad14a
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-12-09 07:06:19 +01:00
Dmytro Poplavskiy
47ef58967b Registered CameraFlash qml type
Change-Id: I0d05006dcfd690b2246bc0ccfea468168b207333
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-12-08 21:27:06 +01:00
Friedemann Kleint
090e3efaeb QtMultiMedia: Fix warnings about missing return values.
In QDebug operator<< for enumerations.

Change-Id: I52309356f05a9520b7472a673450a224d7fa71d3
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-12-06 01:04:50 +01:00
Friedemann Kleint
a5d2b2ed60 QtMultimedia: Fix warnings about declarative/quick.
Change-Id: Ic9323b222641e41dae05cb4b0dccb6531e845676
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
2011-12-05 14:44:19 +01:00
Dmytro Poplavskiy
0034b177e2 Implemented QDeclarativeCameraCapture::setMetadata
QMetaDataWriterControl is used if it's available.

Change-Id: I18fd36c411b6d3c397ff22ebfea9b2c0e878cdeb
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2011-12-01 05:41:29 +01:00
Dmytro Poplavskiy
3319639a6f Allow nested read only maps of QVideoFrame.
It's useful when video frame is accessed from multiple places
like display and encoding.

Change-Id: I8af175c780783216d8b7717cdf0744ad9bc95348
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-11-28 11:56:42 +01:00
Michael Goddard
be7cc17cbf Add orientation support to VideoOutput.
Just uses an integer to represent the degrees rotation from standard.
Only supports multiples of 90 - other rotation can be done with
standard QML.

Change-Id: Id4013169c5d9da473b6e5be94ba341da21c2f2a3
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2011-11-25 08:30:55 +01:00
Toby Tomkins
581564c990 Fixed QtMultimedia core namespace compilation.
Change-Id: Ie276a7766bd26f3e49b2bc9c1a28ec96f1e3e4b0
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-11-25 06:52:21 +01:00
Dmytro Poplavskiy
b05819f939 Updated I420 video node to be consistent with RGB node implementation.
Don't keep the frame after it was uploaded to texture;
Upload frame data during rendering (in material shader updateState)
instead of updatePaintNode().

Change-Id: Ia6a4063bfa02d4d20f75735649fe4f777cf50494
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
2011-11-24 06:41:47 +01:00
Michael Goddard
0c7a747663 If we fail to connect to pulse, don't enumerate sinks or sources.
Otherwise the pulse client library dislikes having methods called
with a null context.

Change-Id: I96629065b7a0e36e0d10402526cb167e65458e27
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
2011-11-24 05:06:42 +01:00
Dmytro Poplavskiy
290523bc4c VideoOutput: release video frames when the video surface is stopped.
It's necessary to release video frames during media pipeline shutdown
or reconfiguration.

Change-Id: I386ad4d173b8731f257ec9272ef8c46a27769bd0
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-11-22 05:27:48 +01:00
Ling Hu
0e021ea4d1 Fix SoundEffect(pulseaudio) crash in qfeedbackmmk auto test
Task-Number: QTBUG-22779

Some pulseaudio callback may happen after SoundEffect was deleted,
thus the userdata(SoundEffect point) we passed previously may
result in potential crash with QMetaObject::invokeMethod to queue some event.

To solve this problem, the release mehtod is added to SoundEffectPrivate,
and instead of calling d->deleteLater in SoundEffect::dtor,
 d->release is called. So SoundEffectPrivate will no when it is going to
be deleted soon rather than handle everything in SoundEffectPrivate::dtor
which may be too late.

class RefObject is also added to be able to track the SoundEffectPrivate
status by pulseaduio callbacks. I thought this could be avoided by checking
the connection state of pulse stream. However, that doesn't work as expected,
stream state remains Ready when checked in callbacks even after disconnect
stream has been called. So RefObject is used instead and its lifecycle is
managed by an internal reference count.

When release is invoked,
m_ref->onDeleted is called first, this will mark SoundEffectPrivate as dead.
and then unloadPulseStream is called.
After those two invocations, we can be asured that:
1. if some pulse callbacks has been called without knowing
 SoundEffectPrivate dead, the queued invocation on SoundEffectPrivate
would be safe, since SoundEffectPrivate::deleteLater would
 be called after them.

2. Since on pulse callbacks would be executed when unloadPulseStream is called,
then at this moment if some pulse callbacks is called again, it would certainly
knows that SoundEffectPrivate is marked as dead and would not queue and
event on SoundEffectPrivate.

Now, the deleteLater can be safely called.

Change-Id: I807f29cddb677d1f4bc078fd306ed0d83d6f7dc4
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2011-11-21 10:01:11 +01:00
Toby Tomkins
cc61a0a8c7 Fixed qtmultimedia imports -qtnamespace issues.
Change-Id: Ie7896faf92b3cc5fdf2b6dbe885913c2669e6e36
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
2011-11-21 08:52:42 +01:00
Michael Goddard
b279b5e280 If the sample hasn't been loaded, don't try and delete things.
Causes entirely reasonable warnings from QCoreApplication::postEvents,
when calling deleteLater on a null pointer.

Change-Id: I5f1fa526b2d57844b9c0d2e634d434e2f7867bdf
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2011-11-18 05:54:06 +01:00
Jonas Rabbe
ace3d92006 Export QMediaPluginLoader so it can be used by libqgsttools_p.
Change-Id: I2af6a68646cccaa92ae8b85b67e2095dcfee485e
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2011-11-18 03:40:27 +01:00
Michael Goddard
6ea8d63729 If Pulse isn't ready, don't crash when trying to play.
Change-Id: I996581e4492004f716d44a39fb5f74c26c9f9ac2
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2011-11-17 08:33:24 +01:00
Ling Hu
c814062dff Fix volume change error on mono stream for soundeffect(pulseaudio)
(Cherry-picked from 663df44fc8563c548c26a7ae21927b09664c28f2)

Change-Id: I005071bc1a8b2eae4d0660042fc8986d61804c47
Reviewed-by: Michael Goddard
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-11-17 06:47:27 +01:00
Ling Hu
d0655b3ced Add cap on internal read/write buffer for QAudioOuput(PA)
cap set to no more than 5x period size

Change-Id: If3ae244993a8929832f6724c386dac6f12ef0f03
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-11-15 07:17:23 +01:00
Dmytro Poplavskiy
434075645a Added support for non QMediaObject based VideoOutput sources.
VideoOutput element checks first for mediaObject property of
source object and if it's not available it checks
for videoSurface property.

It allows to implement video frames generator and connect it
to optimized VideoOutput QML element.

Change-Id: I8ee618cf61b9d9100f25e742c631ea8724c188dc
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
2011-11-15 02:28:02 +01:00
Ling Hu
d6c5d9faa6 Add additional protection on the write size in QAudioOuput(pulseaudio)
Check and cap the write size in pull mode to handle the case
where user returned an invalid write size through QIODevice

Change-Id: Ie0610a63f1d5400fba87f32a99bdc38479e0e7e8
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
2011-11-14 10:44:04 +01:00
Jonas Rabbe
956526a9fb Changed QVideoSurfaceGstSink to take pools from plugins
Change-Id: Iec743efc52513e2000276b9a18d1d9639c270699
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2011-11-14 07:59:19 +01:00
Michael Goddard
8ff4148342 Add qRegisterMetaTypes for the public Q_DECLARE_METATYPEs.
Also turned qtmedianamespace.qdoc into a cpp file so I
could stick the qRegisterMetaTypes into it.

Change-Id: Idd6d3e2f348f1ed45b0a35ce180d023a170e8625
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
2011-11-09 01:24:18 +01:00
Ling Hu
a8be7b6053 Fix pullmode data lost problem in QAudioOutput(pulseaudio)
At each userFeed, m_bytesAvailable is not updated properly in pullmode,
so the pull data size become irrelevent to the size we can actually write.
This problem is fixed by checking the actual writable size each time
before pulling the data and limit the size of the pulled and written data.

Change-Id: I6f53e6348693ddf4e3c79e90d3c3d0c1ffc713aa
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-11-09 01:24:14 +01:00
Michael Goddard
9eeb1389f5 Change the order textures are bound.
Leave texture unit 0 active at the end, since the active texture unit
is not restored by SG itself.

Change-Id: I4970a955fea5c9342cc93c1d1b07ffbfb71e5f04
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2011-11-08 08:06:50 +01:00
Jonas Rabbe
0a95ccb8f4 Added qRegisterMetatype for QVideoSurfaceFormat.
Change-Id: I7dbae1dde2f24db89479dcb23ef6fc5e29377f25
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2011-11-08 05:24:04 +01:00
Bradley T. Hughes
fbac3a0647 Use QAtomicInt::load() and ::store()
The operator=(int) and implicit int cast operators are deprecated
and will be removed.

Change-Id: I5091d705fba45195239c901f210355e09e123faa
Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
2011-11-07 16:32:32 +01:00
Michael Goddard
7dfb883df6 Declare more metatypes and debug operators.
Nearly all of the multimedia metatypes used in the auto tests are
now declared properly, and a large number of the types have debug
operators as well.

Removed the superfluous decls as well.

Change-Id: I42cfe37562db0c71d9811b4577fc326a3326ccc9
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
2011-11-02 02:38:02 +01:00
Michael Goddard
6a3a442ea6 Add a private class, since we now can.
This was a XXX Qt5 thing for binary compatibility. We could also
now use QObjectPrivate if we wanted to.

Change-Id: I7d95e3adf7b0725e91e1e229646a453863e989ed
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2011-11-01 10:29:00 +01:00
Friedemann Kleint
6703ebf362 QtMultimedia: Remove qpa-sections from .profiles.
Prepare for removal of the -qpa configure option.

Change-Id: Ibf4be58231d29cd972eb765f32b410e1eb9d7fed
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
2011-11-01 01:40:47 +01:00
Kent Hansen
18dc690a19 Fix logic in QAudioDeviceInfoInternal::updateLists()
Task-number: QTBUG-20482

Change-Id: I0dd59a0388965726eb8cfd36a8549250916d999a
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-10-31 05:55:16 +01:00
Michael Goddard
0ba1c8f4f6 Remove the last bits of QtMultimediaKit (*).
Except a comment about it in the module overview.

Change-Id: I22d9111d7917d1a3259ee1e525fd52501733454e
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-10-27 03:09:27 +02:00
Michael Goddard
d3ceea30f8 Use deleteLater when called on a decoder error.
Since we cleanup the decoder itself, it can crash when the stack
unwinds back into the decoder code.  Similarly on a network error.

Change-Id: Ice36a3008359565f186406945973747b3134d296
Reviewed-by: Ling Hu <ling.hu@nokia.com>
(cherry picked from commit fb10bcf6cea520e1c43a77b6b88cf01ae9dc74ad)
2011-10-27 03:07:26 +02:00
Rohan McGovern
1718443801 Don't ignore debug plugins on Mac when release plugins aren't available
Previously, we unconditionally ignored any plugins whose names ended
with _debug.dylib.  This makes the mediaservice plugins unusable on Mac
if Qt is configured to build plugins as debug-only (which is
incidentally the default).

Change-Id: I5a8981b2251e803fa233b74c968f6eaa452d367c
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-10-25 06:15:12 +02:00
Michael Goddard
ab52443dc5 We already have a mock backend.
Change-Id: Ic4f9277c4c4bff225ac6cd70d28b495a42435e35
Reviewed-by: Sergey Dubitskiy <sergey.dubitskiy@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-10-25 06:15:09 +02:00
Michael Goddard
89b6bcbd96 Declare these metatypes.
Change-Id: I5b10669f2b17f67d95469dc28e99822d7f08280c
Reviewed-by: derick hawcroft <derick.hawcroft@nokia.com>
2011-10-25 06:15:06 +02:00
Kent Hansen
711f49efea Adapt to QtDeclarative api renaming (QSG --> QQuick)
Change-Id: Iefee24c6262679263caef1976d0d9af541834ea0
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-10-24 05:59:53 +02:00
Rohan McGovern
df19dfcb56 Fixed compile; QDesktopServices -> QStandardPaths
Broken by qtbase dfa24768a3243eda68d91f573050bf23f96da2dd.

Change-Id: Ie0d79eaee5c6fedfaacae69800f6aec9190f83db
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-10-24 05:59:41 +02:00
Sami Nurmenniemi
6aea1a22ee Added RDS functionality to the QRadioTuner/QDeclarativeRadio
Change-Id: I865e3caba82977002cf1f01f1d64ee0a42de77c6
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
2011-10-21 03:40:14 +02:00
Michael Goddard
cbb21e30d5 Limit the sequential bytes skipping to a max 16kB at a time.
Otherwise QIODevice::read will try and allocate whatever junk is
passed in, so a corrupt chunk can result in 1GB+ allocations which
are never actually used.

Change-Id: I1ea4a5c1a5d21b1ee6f7e428105c52c0ee6ca7f7
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
2011-10-21 03:39:15 +02:00
Jonas Rabbe
9deb0512a6 Fixed build problems with Quicktime
Because the Q_WS_* defines were removed, the Quicktime backend
stopped working. Replacing them with Q_OS_* works. Additionally,
the Quicktimer Player Service has to depend on QtWidgets.

Change-Id: I687b352191c38a91edaaf2a687ac13ed118fcf88
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2011-10-20 05:02:13 +02:00
Ling Hu
9011296e65 Init mediaobject at classBegin rather than componentComplete
Since we use an explicit backgroundaudio class,
there is no need to wait for other property to determine
the mediaobject type. So it is better to init the mediaobject
at classBegin to prevent being accessed before mediaobject initialized.

Change-Id: Ia55b8b4c1ab70cc0acbf6f49bcb3e20bdb813a88
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2011-10-17 06:02:10 +02:00
Michael Goddard
d414247afe Make the C++ API of QSoundEffect public.
The QML API already was.  The C++ API still needs good documentation,
though.

Change-Id: I669f5ec7dd17d616788d71d77dc906acc0c0279f
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2011-10-17 05:10:21 +02:00