Commit Graph

344 Commits

Author SHA1 Message Date
Tobias Koenig
1ddad9e0f4 Blackberry: Implement QVideoRendererControl for QMediaPlayer backend
If the application is not supposed to play back DRM secured media,
we grab the pixel data from the native mmrenderer window now
and make them available to the QAbstractVideoSurface of the
QVideoRendererControl. This allows the usage of all transformations
on video output inside QtQuick.

Change-Id: I73d05404b1ac9c5f74a234d9393b981a6fbcb317
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-22 16:17:44 +01:00
Tobias Koenig
31b454b8d6 Blackberry: Grab viewfinder frames from native window
Since the conversion from NV12 to RGB on the CPU does not scale
for larger photo/video resolutions, this patch uses a different
approach. It uses the low-level screen API to grab screenshots
of the native viewfinder window and provides them as QImage to
the QAbstractVideoSurface. Even for large resolutions this
is quite performant.

Change-Id: I59a7cbe6850b3b07575ea10026f3180cfd22e935
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-21 11:23:38 +01:00
Frederik Gladhorn
d396262bc9 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/multimedia/doc/qtmultimedia.qdocconf
	src/plugins/blackberry/mediaplayer/bbmetadata.cpp
	src/plugins/blackberry/mediaplayer/bbmetadata.h
	tests/auto/unit/qpaintervideosurface/tst_qpaintervideosurface.cpp

Change-Id: I447c297ea15a94d1d2feb0fb5f9edac8c5d4505a
2013-02-19 17:15:56 +01:00
Tobias Koenig
0ce2cb3ebe Blackberry: Add support for reading meta data in QMediaPlayer
Provide an implementation of QMetaDataReaderControl for the
QMediaPlayer.

Change-Id: I58c04e40ae3f07013450997410d0a379273c7bde
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-19 14:51:21 +01:00
Tobias Koenig
dbe69f38d0 Blackberry: Fix resolution selection for video recording
Fix the selection of the video viewfinder resolution depending
on the features provided by the camera. If the viewfinder is responsible
for encoding the video frames, the resolution of the viewfinder
and the video output must match. Otherwise only the ratio must match
and we can use a lower resolution for the viewfinder to improve
the performance of the NV12->RGB frame conversion.

Change-Id: I66ace84841a69be84f83bf9c5240cd23d96fbb76
Reviewed-by: Bernd Weimer <bweimer@rim.com>
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-19 14:41:47 +01:00
Yoann Lopes
2db2cde0d8 WMF: removed unnecessary dynamic_cast.
Task-number: QTBUG-29722

Change-Id: Ia0e5c8fb90b231a8d9764524709d5848397c2afb
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2013-02-19 14:22:38 +01:00
Friedemann Kleint
4fc974fdef Fix MinGW-warnings about mismatched types.
Change-Id: I6170e3aa49f5b60ba68c1ef5bb2c6c7ec6688060
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-02-14 13:25:04 +01:00
Friedemann Kleint
033d5859d2 DSVideoWidgetControl: Fix constructor order.
Change-Id: I804427867a0f400750ef1df423c89fb4948bb0a3
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-02-14 13:25:01 +01:00
Friedemann Kleint
41dc5467bf Fix warnings about unused variables.
Change-Id: I147ff8624faa98396d6c48801c41a731fd02ac10
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-02-14 13:24:58 +01:00
Friedemann Kleint
fc62718e98 Fix MinGW64-warnings about unknown pragmas.
Change-Id: I1bd2178f5986846aede371193e98b55e4bde6414
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-02-14 13:24:53 +01:00
Friedemann Kleint
21552ae9aa DSVideoWidgetSurface: Pass on parent to base class.
Change-Id: If4f2819a0767234e5fffeafe1ab038cbf13bdd2a
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-02-14 13:24:50 +01:00
Bernd Weimer
7df6aa0f65 BlackBerry: Fixed playback of streamed audio
Before audio is played we always seek to position 0. Unfortunately, due
to a recent change in mmrenderer, playback stopped working for
"non-seekable" media. There is a check now, whether the media is
seekable or not.

Change-Id: Ieafd8d1364f7ce0194f4fa17d3efe894aa1b289b
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-12 11:57:42 +01:00
Tobias Koenig
60607544e1 Blackberry: Fix orientation of taken photos
Ensure that the taken photos are always upright.
As long as the QCamera API does not provide information about
the native orientation of the camera, we have to do the rotation
inside the BBCamera plugin.

Change-Id: Iebb04a5417274c2baee5e944dadf10fc706484d9
Reviewed-by: Bernd Weimer <bweimer@rim.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2013-02-12 08:50:00 +01:00
Tobias Koenig
d2b0a345ab Blackberry: Restart camera viewfinder after standby
Listen to the CAMERA_STATUS_POWERUP signal, which is sent
after standby, and trigger a restart of the viewfinder
in this case.

Change-Id: I426f23657844bb270ddfd0e4bfb35880040aa583
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-11 08:57:38 +01:00
Tobias Koenig
b19ec14a62 Blackberry: Ensure that camera viewfinder texture is upright
Make sure that the texture is upright when the device is upright.
When rotating the device, it's the applications responsibility to
rotate the texture of the viewfinder (e.g. through the
QDeclarativeVideoOutput::orientation property).

Change-Id: I6e453ce9bdde5197104533f844b1079b3c3db908
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-08 13:35:05 +01:00
Tobias Koenig
36655ccdfb Blackberry: Add camera support for BB10 platform
Reimplement all camera related controls as they are supported by the
BB10 camera API.

Change-Id: Ie7d2258be22c1c1821489bd7074b80cff4242afa
Reviewed-by: Bernd Weimer <bweimer@rim.com>
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-02-06 18:17:18 +01:00
Thomas McGuire
7c1d490d1a Blackberry: Fix warning about unsigned integer comparison
Change-Id: I00592dd078e85497589156e156e7a665f935d325
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2013-01-31 17:32:39 +01:00
Tobias Koenig
a0707d50cd Blackberry: Refactor plugin directory structure
Move the mediaplayer related code in its own subdirectory.
This is a preparation for adding camera support in the future.

Change-Id: I880ff90e154165c2a3a31fd2b51e1dd224fea8fd
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-01-31 11:03:52 +01:00
Sze Howe Koh
28ee5b12ff Doc: Fix module name format
Follow the conventions at
http://qt-project.org/wiki/Spelling_Module_Names_in_Qt_Documentation

QtMultimedia -> Qt Multimedia

(Also, QtMultimediaKit has been merged into Qt Multimedia in Qt 5)

Change-Id: I3c23435d5eceb946ea320756b835da937726db24
Reviewed-by: Laszlo Papp <lpapp@kde.org>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2013-01-29 01:28:50 +01:00
Sergio Ahumada
157f4f982b Remove QT_{BEGIN,END}_HEADER macro usage
The macro was made empty in qtbase/ba3dc5f3b56d1fab6fe37fe7ae08096d7dc68bcb
and is no longer necessary or used.

Discussed-on: http://lists.qt-project.org/pipermail/development/2013-January/009284.html
Change-Id: Id95d10f5d9c146d9eb496119af6a8b8501ffcb17
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2013-01-28 23:21:21 +01:00
Yoann Lopes
101c78983a WMF: enabled HW-accelerated video decoding for the QML video item.
It also applies to QGraphicsVideoItem when used on a GL viewport.
We now have a new video sink that is based on Microsoft's EVR sink, we just
replace the default Presenter with our own. Frames are rendered into D3D
surfaces using DXVA, then copied into a shared D3D/EGL surface and finally
bound to a GL texture to be used by the video surface.
The shared D3D/EGL surface is a feature provided by ANGLE and therefore Qt
must be compiled with ANGLE for this new video sink to be compiled and
used.

Change-Id: I0b7b9968eed5488f9ef1a2dcca5213bd0af232ab
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-01-23 22:34:07 +01:00
Yoann Lopes
02add40392 WMF: fixed unresolved topologies when using the custom MediaSink.
When using our custom MediaSink with RGB formats, Media Foundation fails
sometimes to resolve the topology. Inserting ourselves a ColorConverter
transform in the topology resolves the problem.

The ColorConverter transform cannot handle dynamic frame size changes
(this can happen with H264 videos for example) so we also need to insert a
Resizer transform to handle transparently frame size changes.

Change-Id: Id7f37a0af65f142fbe6d420ad7b2c1ac2156c21b
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-01-23 18:31:54 +01:00
Yoann Lopes
381bfe879c WMF: fixed scrubbing and changing rate to 0 or negative values.
Task-number: QTBUG-29147
Change-Id: I3e32e520d676d120d60bcd07d122006c1346eb0d
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-01-23 17:58:14 +01:00
Wouter Huysentruit
da55ada028 Fix: Bug fix in determination of scanline direction
YUV and other compressed frame formats are always TopToBottom. Only for uncompressed RGB formats the sign of their height is used to indicate the scanline direction.

Change-Id: I6474783583672861eeeb538b79d14ee3d6995f59
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@gmail.com>
2013-01-14 09:05:20 +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
Yoann Lopes
2d54a14ac1 WMF: added more metadata keys (on Windows 7 and later).
Change-Id: I01eebd0582d33eb3d581176bba2a84fa75db2463
Reviewed-by: Jason Barron <jason@cutehacks.com>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-01-08 19:56:43 +01:00
Morten Johan Sørvig
77494db8d2 Compile in 32-bit mode.
CGRect == NSRect only in 64-bit mode.

Don't add -framework QuickTime based on the host arch,
use QT_ARCH instead.

Change-Id: I829bc1bcfe37f70a07e8c55a5bc7dee90aaa981a
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2013-01-08 14:44:41 +01:00
Yoann Lopes
60eb27dfef WMF: release video controls before releasing the session
For the VideoRendererControl, also stop the video surface at the same
time.
This fixes a crash when changing video.

Change-Id: I49484f8b277c345dafb3e5947cf5d23df15546f3
Reviewed-by: Jason Barron <jason@cutehacks.com>
2013-01-07 09:34:43 +01:00
Yoann Lopes
6eb192f047 WMF: Fixed uninitialized member variable.
Change-Id: Iee60d6eee7bbf9dd7804216f4a49c4549f41ba5a
Reviewed-by: Jason Barron <jason@cutehacks.com>
2013-01-07 04:57:50 +01:00
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