Added some playlist tests and edit some audio
Change-Id: I936ef4772be9aebe5baf8f755cedadc93107f9e4
Reviewed-by: Natalia Shubina <natalia.shubina@nokia.com>
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>
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>
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>
Otherwise the pulse client library dislikes having methods called
with a null context.
Change-Id: I96629065b7a0e36e0d10402526cb167e65458e27
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
This covers the potential crash reported by qfeedbackmmk test.
Change-Id: Ib533e80b25c4c7fb291527d62445aaa40960baa0
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
It's necessary to release video frames during media pipeline shutdown
or reconfiguration.
Change-Id: I386ad4d173b8731f257ec9272ef8c46a27769bd0
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
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>
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>
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>
(Cherry-picked from 663df44fc8563c548c26a7ae21927b09664c28f2)
Change-Id: I005071bc1a8b2eae4d0660042fc8986d61804c47
Reviewed-by: Michael Goddard
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
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>
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>
The SkipMode parameter has been removed from the API in qtbase, so it
must be in all calls to QSKIP.
Task-number: QTBUG-21851, QTBUG-21652
Change-Id: Ib6225572a46eac7881222fdce192750b8b13ee3b
Reviewed-by: Steve Schilz <sschilz@pasco.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Added some radio functionality to match the qlm radio example
Change-Id: Ie0358c3443121b638db406e095467b18b4d6b57c
Reviewed-by: Daron Andrew Edie
(cherry picked from commit 1e542df82fbcc4e3a8f75537af204f83827a4587)
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
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>
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>
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>
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>
Split them into unit and integration tests. Integration tests really
need to be run on the real platform (not in a VM etc) since they are
somewhat unstable or nonfunctional otherwise.
A few tests were previously broken by QUrl changes and they were repaired.
Removed one test since it was not providing a lot of value.
There are still a number of tests that rely on Q_AUTOTEST_EXPORT symbols.
Change-Id: Ic402abf0af946baa5945075d975b3f584f9ef280
Reviewed-by: Kalle Lehtonen <kalle.ju.lehtonen@nokia.com>
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>
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>
Prepare for removal of the -qpa configure option.
Change-Id: Ibf4be58231d29cd972eb765f32b410e1eb9d7fed
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Except a comment about it in the module overview.
Change-Id: I22d9111d7917d1a3259ee1e525fd52501733454e
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
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)
This replaces the qtmultimedia.git contents with qtmultimediakit.git's
contents (as a merge with -s ours, when run against qtmmk).
Change-Id: I940f84fb09285eb7e37d0aaac07ccc4f3165b04f
Using "this" in non member function, oops.
Change-Id: I7cda3eea755099af2ff2df7b777e3e228e53e325
Reviewed-by: Sergey Dubitskiy <sergey.dubitskiy@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
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>
Broken by qtbase dfa24768a3243eda68d91f573050bf23f96da2dd.
Change-Id: Ie0d79eaee5c6fedfaacae69800f6aec9190f83db
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
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>
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>
-Added targets so that "make docs" will generate the
documentation.
Change-Id: I16a74d7e15e12df16570f110c7e67a110d53afad
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
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>