Commit Graph

314 Commits

Author SHA1 Message Date
Yoann Lopes
73200f5464 WMF: re-enabled video probes and made it more robust.
Fixed the way the custom MF Transform (getting the frames) works:
- Recreate it whenever we load a new media
- During media type negotiation between nodes, the MFT should support
  the same types as the video sink supports
- Allow input and output types to be changed as many times as needed,
  otherwise the topology cannot be resolved in some cases

Change-Id: I7ca77e1a3dee83643f1a97f2e6ada9c5c0e88309
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-01-07 04:57:20 +01:00
Mark Brand
1e0b3d8625 fix include statements
Names are case sensitive when cross bulding for mingw on unix.

Change-Id: I355b9388241c7c5fefb05b6f0c231efec4530c7e
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Jonas Rabbe <jonas.rabbe@gmail.com>
2012-12-24 12:39:38 +01:00
Yoann Lopes
d8426bbf71 WMF: Fixed incorrect QMediaPlayer volume reporting.
Task-number: QTBUG-26621
Change-Id: Id70a68ad61fd7d68f4ee277f33a54bd9c00c05d0
Reviewed-by: Jason Barron <jason@cutehacks.com>
2012-12-21 12:03:16 +01:00
Oswald Buddenhagen
87d6d6d3c2 remove obsolete DEPENDPATH assignments
qmake now add CONFIG+=depend_includepath by default, making manual
DEPENDPATH setup unnecessary.

Change-Id: Iffd78b4c7cf8d048a822b75c481ac380b3d8d0f4
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-12-16 22:08:01 +01:00
Oswald Buddenhagen
6fa2f5c4b1 remove some unnecessary CONFIG additions
qt is already added by spec_pre.prf, warn_on by default_pre.prf, and
no_private_qt_headers_warning by qt_build_config.prf.

Change-Id: Ia5cee420d577dd0ae0120cb2dd430d4ddd29ebcf
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-12-16 22:01:36 +01:00
Yoann Lopes
12bbd99047 WMF: Fixed crash when cancelling media loading.
Since media loading is asynchronous, cancelling could cause a crash when
done after the media is loaded but the callback hasn't been called yet.

Change-Id: I9c9b7bfaa495b9e75765111c15afb07e8b699488
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2012-12-11 18:13:03 +01:00
Yoann Lopes
3f84142aaa WMF: Improved error reporting.
When loading the source fails because the file format is not supported, we
now report a FormatError instead of a ResourceError.
When the file format is supported but the media cannot be played (topology
cannot be resolved), it is most likely caused by a missing codec and we
then report a FormatError.

Change-Id: I101a86c129a0c5dccb543fc1247cb741994684fd
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2012-12-11 17:13:02 +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
Yoann Lopes
06b63e99e4 WMF: Recreate the MFMediaSession when loading a new media.
MFMediaSession doesn't seem to handle correctly the change of media
source, causing the playback not to work afterwards.
A single MFMediaSession was created and used for every loaded media, we
now create a new one whenever we load a new media (releasing the old one
beforehand).

Task-number: QTBUG-26819

Change-Id: Id99c9dd54e161823d9580933e063f16240806529
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Reviewed-by: Jason Barron <jason@cutehacks.com>
2012-12-07 13:06:16 +01:00
Yoann Lopes
ad83534736 WMF: Fixed shutdown sequence.
A wrong shutdown sequence was causing a wait condition to never be met,
resulting in a 5 seconds hang on shutdown.
Also reduced the wait condition timeout to 100 ms.

Task-number: QTBUG-28432

Change-Id: Ib415bf66634603d839be3e34e497e3a3c5a19ad9
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Reviewed-by: Jason Barron <jason@cutehacks.com>
2012-12-07 13:04:12 +01:00
Shawn Rutledge
31fdbb1c22 Fix includes to build on case-sensitive filesystem
Change-Id: Ibd355256a5d2a60ee3a61ba2a2bf9f0f63c591cb
Reviewed-by: Jonas Rabbe <jonas.rabbe@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2012-12-07 02:24:47 +01:00
Joerg Bornemann
9f10ff8e9a fix build for standard DirectX install paths
Evaluate the environment variable DXSDK_DIR at qmake time.
This makes sure, the contents get properly quoted, even if the DirectX
SDK is installed into a path that contains spaces.

Change-Id: Id22f56448eef4d392af77e97f46308f1b486c7c7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-12-06 11:48:26 +01:00
Erik Verbruggen
945e8c9f8e Fixed build on MacOS with clang in C++11 mode.
avfvideowidget.mm:120:9: error: non-constant-expression cannot be narrowed from type 'int' to 'GLfloat' (aka 'float') in initializer list [-Wc++11-narrowing]
        x1, y1, zValue,
                ^~

Change-Id: I5a08bf8b53cf029dbdfaeaa03f4babd6d49d62ad
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2012-12-06 10:24:05 +01:00
Yoann Lopes
6a6c9ca37c WMF: Disabled the video probe control.
Using the video probe cause unstability in the video playback.
Disabled for 5.0 release.
Should be fixed and re-enabled in the next version.

Change-Id: I274212a0943ac098194ad59d6e07bed7740bc8a3
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2012-11-30 16:55:35 +01:00
Oleg Shparber
cf8824c5d4 blackberry: fixed building without QtWidgets
Change-Id: I12103c5a4bd903b809e7db2ec8e1cbb60a37c429
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2012-11-29 17:46:54 +01:00
Friedemann Kleint
f26ae01ec4 tr()-Fixes.
Make WMF-player error message consistent (sentences,
no exclamation marks). Improve wording.

Change-Id: I876b26067fb374833037aa93dd9675ab556bf972
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2012-11-29 14:39:23 +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
Andy Nichols
00cf1f47c4 QT7: Remove usage of QMAKE_MAC_XARCH
Support for QMAKE_MAC_XARCH was removed in Qt 5.0, so it shouldn't be
used in the QT7 plugin, as it causes build failures.

Task-number: QTBUG-27180
Change-Id: I7d907a9afbcbc4989b794350c94d0f619e4d2b7d
Reviewed-by: Caroline Chao <caroline.chao@digia.com>
2012-11-23 15:28:01 +01:00
Andy Nichols
4c2346bbdd AVFoundation: Enable QImage based frame fallback
QGraphicsVideoItem was not working because the QPainterVideoSurface was
unable to paint BGR32 format OpenGL textures.  Now if the QGraphicsView
window has a QGLWidget viewport, we use the GLTextureHandle to render
the video, otherwise we fallback to the software QImage rendered case.

Task-number: QTBUG-28017
Change-Id: I9304e0a2536f15075ae34cdd509ef24fbc18604e
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2012-11-21 16:56:55 +01:00
Andy Nichols
748684b357 AVFoundation: Fix broken requestControl logic
AVFMediaPlayerService::requestControl was returning the video output
control after the video output was created, and this could result in
unexpected behavior, as well as prematurely calling releaseControl on
the video output.  This should fix the "player" example on OS X.

Change-Id: Ie23b1176272a1f9daa5edeec856141ac52a450c7
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2012-11-20 19:29:27 +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
Yoann Lopes
d64e246f33 WMF: Fixed color adjustment when using the EVR window control.
Change-Id: I007937b358f062cd9d3d3c02e3a0780d6b2539be
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2012-11-19 16:58:15 +01:00
Sze Howe Koh
47fe5f9b39 Enable the "#include <QMultimedia>" camel-case header
Rename qtmedianamespace.h/cpp -> qmultimedia.h/cpp, and have
sync.profile generate the camel-case header during compilation.

Part of the Header Consistency Project
(http://lists.qt-project.org/pipermail/development/2012-October/007570.html)

Change-Id: Iade9ee6538970b4b9935f169eb2d9a0ea6949a95
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-11-06 18:20:09 +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
Maurice Kalinowski
371292f288 add install path to rule
fix installation into prefix directory.

Change-Id: I6838589e2e186d4f23d240e0e7c2772a46af3a9d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2012-10-22 08:55:39 +02:00
Caroline Chao
8907cecc0d Fix for QuickTime 7 media player backend
Fix build on Mac 10.6 (32bits)

Task-number: QTBUG-27179

Change-Id: If0b83605650966bf801b5fbb06d02c113d0b4214
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2012-10-19 15:45:36 +02:00
Andy Nichols
700b4cdf42 Add MediaPlayer support to AVFoundation plugin
This plugin would be used on Mac 10.7+ where without the QuickTime C API
our QT7 media player performance was crippled.

Change-Id: Iaadb1990a8f63393c4cd02d096624e0fed42b40f
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Jason Barron <jason.barron@digia.com>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2012-10-19 14:54:27 +02: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
Friedemann Kleint
bce5525cbb QtMultimedia: Fix compiler warnings.
Change-Id: I5783b1f6dce645fb473e7d3da0911dbb40e3951b
Reviewed-by: Jonathan Liu <net147@gmail.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2012-10-17 13:40:18 +02:00
Dmytro Poplavskiy
ce135bff83 Fixed AVF camera backend build with namespaced Qt
Objective-C declarations may only appear in global
scope, moved them out of Qt namespace

Change-Id: Icb136be75f544e5929ac28f0ba0681211b81a983
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2012-10-09 10:50:32 +02:00
Kevin Ottens
690b4c4978 Blackberry: Move the mediaservice plugin in a subdirectory
Move the current platform plugin content in a subdir in order to make
room for several plugins (at least an extra one will be needed for the
audio type).

Change-Id: If17d6a464e36014fbefda52ddb0e8f8a58697f48
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2012-10-08 08:37:22 +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
946ff68c42 remove references to qMemSet & qMemCopy
Change-Id: Ie6e24798368305fb1eaa01d0e5fccdb5bb5aa33b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-09-12 12:37:46 +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
Thomas McGuire
d62b1c5213 Blackberry: Add Q_DECL_OVERRIDE keywords
Change-Id: Ibd6cf76ac41e16cbf65182994d68eb81c315f0af
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2012-09-06 14:56:40 +02:00
Thomas McGuire
bce8b5486d Hide the video overlay when the QML element is hidden
An display invalid rect is used for invisible QML
items.

Change-Id: Ifb2a25f1c5387ab8cef1359ac6c3e2f90a42cd10
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@gmail.com>
2012-09-06 14:56:34 +02:00
Thomas McGuire
06302999da Blackberry: Use debug output for errors by default
This makes diagnosing problems remotely a lot easier.

Change-Id: I23434af5e88fb8dcdb154be34f12276eba652d4f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2012-09-05 13:53:07 +02:00
Jason Barron
bc2bce3629 WMF Backend: Fix crash in MFPlayerService::releaseControl.
When releasing a video render control or a video window control, we
were deleting the object pointed to by the 'control' pointer, but
were not setting this pointer to 0 which left it dangling. Shortly
after we tried to cast this dangling pointer to another type which
crashed. The solution is just to return after deleting the control.

Change-Id: I9ab672c8b86a13af889d87c76141e6b8db5b74a7
Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
2012-09-04 11:31:16 +02:00
Dmytro Poplavskiy
37b872da9e Initial implementation of Mac camera backend
Based on AVFoundation framework

Change-Id: If4cfd105a592f50b42606624548b9ffc870e3e47
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
2012-08-27 09:11:06 +02:00
Dmytro Poplavskiy
09a7fda971 Re-enabled CIImage based gfx video item on Mac
Also prefer CoreImageHandle to GLTextureHandle
in QuickTime player backend, to avoid unnecessary
copy via FBO.

Change-Id: Id5aa039c438378b7bbf816b7845b05574683c471
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
2012-08-27 07:59:42 +02:00
Oswald Buddenhagen
921397e695 qt_module is deprecated, use qt_build_config
Change-Id: Idbc3c1d35b859317ac1128c4dc3754996e816911
Reviewed-by: Laszlo Papp <lpapp@kde.org>
Reviewed-by: Jonas Rabbe <jonas.rabbe@gmail.com>
2012-08-06 04:02:29 +02:00
Lev Zelenskiy
eedfcdacce Change the way camera format is selected.
Build list of supported formats before starting directshow graph.
Select first available format supported by both device and surface.
Force DirectShow to do color space conversion instead of using QImage.

Change-Id: I8f946cc7c2693eea0135981e899003b453bd8784
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Jonas Rabbe <jonas.rabbe@gmail.com>
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
2012-08-06 04:02:04 +02:00
Lev Zelenskiy
42cdb92543 Use moniker display name for device string.
Moniker names are unique, while device friendly names are not.

Change-Id: Ic3e842e49d04c502cf5ad1fc40f89db657f0401a
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Ling Hu <ling.hu@nokia.com>
2012-08-03 06:01:13 +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
Thomas McGuire
cfa44b12be Blackberry: Assert that we are in detached state
Change-Id: I744d542374c72318b548407cd3da084449822e92
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2012-07-30 15:28:36 +02:00