Commit Graph

91 Commits

Author SHA1 Message Date
Nodir Temirkhodjaev
b611490074 DirectShow: Avoid warning about unresolved error when file is missing.
AddSourceFilter() can return E_FAIL.

Change-Id: Idbd8ec5a4a3c9b9d8fef9ff690cc0169f4027666
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-11-11 09:05:26 +00:00
Yoann Lopes
12fba3bfb1 DirectShow: fix custom renderer reference counting.
Change-Id: Iadefd4d72bdafb982a79b99ee5880dba32f3e920
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-11-06 16:47:08 +00:00
Yoann Lopes
95bd9d58d8 DirectShow: use the EVR in the window control.
Reuse existing code from the WMF plugin, which already uses the EVR.
This enables HW-accelerated video decoding when using QMediaPlayer
with a QVideoWidget.

Task-number: QTBUG-45593
Change-Id: I757e4d53cd2c648aee6ba33a4851a8c6adc62843
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-11-05 11:34:55 +00:00
Yoann Lopes
3ef5831041 DirectShow: fix media player seeking.
Correctly handle seek requests happening when the media is not playing.

Change-Id: I82c508dae41792b75a26e86512da66a4871f6352
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-11-04 15:04:37 +00:00
Yoann Lopes
953a61e5fd DirectShow: fix some media player status issue.
Change the status to LoadedMedia if the media position is changed while
in the EndOfMedia status.

Change-Id: I6614fc184be80b11952b0e45af22ef030cfc36c5
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-11-04 15:04:30 +00:00
Yoann Lopes
556fa07121 DirectShow: clear current video frame when stopping.
Change-Id: I063d8a1b95f3d751f55dfce7fa2cb749177dc906
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-11-04 15:04:21 +00:00
Yoann Lopes
4c189b18c3 DirectShow: set timestamp on media player frames.
Change-Id: Ie3d395c7ac4a9c1f52c3dedfd5bc3993744aa503
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-11-04 15:04:14 +00:00
Yoann Lopes
1ed707deea DirectShow: fix setting volume when a media is not loaded.
Store the pending volume and apply it once the media is loaded.

Change-Id: I6998e9139aa3680220faa871b3116409855a1b35
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-11-04 15:04:08 +00:00
Yoann Lopes
13e40d522f Fix QCamera viewfinder capabilities functions..
- Filtering the results for a specific pixel aspect ratio would return
  wrong values.
- Correctly sort the frame rate ranges returned by
  supportedViewfinderFrameRateRanges().

Added missing auto-tests for all viewfinder capabilities functions.

Change-Id: Idfb40d4139cc48a5996ce2ddd98131a2f5be76bb
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-08-18 12:58:00 +00:00
Yoann Lopes
7f9beeaf9c Define QCamera::FrameRateRange as a struct.
Instead of an alias for QPair<qreal, qreal>.

Task-number: QTBUG-46563
Change-Id: I7e1ac68242810f7e5f7e161571a11f5de7850e29
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-06-11 05:16:23 +00:00
Liang Qi
1925bb404e Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts:
	src/multimedia/playback/playlistfileparser.cpp
	src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp

Change-Id: I52950def2b8283ae15797d05d4ead6a1256eba19
2015-04-15 09:26:14 +02:00
Yoann Lopes
f9145aca16 DirectShow: correctly update camera list.
8923c0ff fixed the list not being updated after plugging/unplugging a
camera from the system. However, it was only a partial fix affecting
only QCameraInfo::availableCameras(). DSVideoDeviceControl was still
internally keeping a list of cameras that was never updated, causing
the QCamera constructor to not take into account new or removed
cameras.

Change-Id: Ie5e79c46002017b1e85bfc53c6391a2a747361a0
Task-number: QTBUG-39708
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-04-14 14:49:56 +00:00
Konstantin Ritt
277d104faa [DirectShow] Fix potential memory access violation
Change-Id: I5da495d255e6fdd3a70c1ed486afb61f157c923e
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-04-13 09:58:28 +00:00
Konstantin Ritt
740f16ac60 [DirectShow] Fix potention undefined behavior on destruction
The exact warning is:
> deleting object of polymorphic class type which has non-virtual
  destructor might cause undefined behavior

Change-Id: I8f259def3f1f7f776fb31ace9dfcc7145426f5c0
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-04-13 09:58:12 +00:00
Yoann Lopes
63cff37741 QMediaPlayer: handle resource files in a cross-platform way.
It was the backend's responsibility to handle resource files in an
appropriate way. In practice, it was either not handled at all,
or implemented in an almost identical manner in every backend
that does handle it.
This is now dealt with in QMediaPlayer, always passing to the
backend something it will be able to play. If the backend has the
StreamPlayback capability, we pass a QFile from which it streams
the data. If it doesn't, we copy the resource to a temporary
file and pass its path to the backend.

Task-number: QTBUG-36175
Task-number: QTBUG-42263
Task-number: QTBUG-43839
Change-Id: I57b355c72692d02661baeaf74e66581ca0a0bd1d
Reviewed-by: Andrew Knight <qt@panimo.net>
Reviewed-by: Peng Wu <peng.wu@intopalo.com>
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-04-07 17:21:47 +00:00
Andy Shaw
72a43cee90 Fix compile issue when building with -no-widgets
Change-Id: I49a9aa684b0dfbe0e3d9e576aad06d65d6c3ecdd
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-04-07 13:28:16 +00:00
Yoann Lopes
5a0a3791a1 DirectShow: implemented QCameraViewfinderSettingsControl2.
Change-Id: I42ed49676e2fbc7207d8fe4579ad1fc0d62df138
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-02-26 15:56:27 +00:00
Frederik Gladhorn
f9014d136f Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: I5575a4ba13212c9bfe73a3de3ef17c6528beafc3
2015-02-13 13:10:48 +01:00
Antti Kokko
bbfccc7135 Update copyright headers
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.

Change-Id: I1c6faa4f59f8eca54f01ef20941fa60161dd7872
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-02-12 10:27:47 +00:00
Frederik Gladhorn
9e93612890 Merge remote-tracking branch 'origin/5.4.1' into 5.4
Change-Id: I4167d268505cbc0b7b57888928670ae05302f4cb
2015-02-10 10:34:52 +01:00
Sergio Martins
8923c0ff6b directshow: Fix plugging/unplugging a second camera
When having more than 1 camera (like one laptop integrated webcam
and a separate one) you had to restart the application for QCameraInfo::availableCameras()
to work.

Change-Id: I47cfa928cfd9500524b81a4bf8ec5ebff0b79879
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-02-05 13:42:10 +00:00
Andy Shaw
6b6cb2121f Ensure the system libraries are linked when -opengl dynamic is used
Task-number: QTBUG-43211
Change-Id: Id543c74233f547c61164b9d32a5f6a3f6d1bc1b3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-02-03 05:55:41 +00:00
Antti Kokko
2732e23887 Update license headers and add new license files
- Renamed LICENSE.LGPL to LICENSE.LGPLv21
- Added LICENSE.LGPLv3 & LICENSE.GPLv2
- Removed LICENSE.GPL

Change-Id: Ied06887225df341064c12bcc14c259ae74116f2e
Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
2014-08-24 17:30:13 +02:00
Andy Shaw
f31e186354 Ensure the system libraries are linked against when -no-opengl is used
Task-number: QTBUG-40406
Change-Id: I1e166a5003f524cdeb4a53d78a382a6b11719b6a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-07-24 13:59:12 +02:00
Yoann Lopes
389d66b3ed DirectShow: Refactor camera backend.
Almost entire rewrite of the camera backend. It doesn't provide new
features but is more stable and behave as it should.

- Correctly report camera state and status
- Correctly report if the camera is ready to capture
- Emit imageExposed() signal
- Save captured images in an appropriate directory
- Images can be captured even without a viewport
- Better error handling

Removed the custom QVideoWidgetControl as it doesn't provide anything more
than the QVideoWidget's renderer control fallback.

Task-number: QTBUG-33782
Change-Id: I9baf6f83e7c69619f20a101921f7865a1c90d5e4
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-07-11 18:47:12 +02:00
Yoann Lopes
eadf1c8c41 Fix static initialization order fiasco in some plugins.
Some static variables were initialized using QMediaMetaData
values, which are also statically initialized.

Task-number: QTBUG-39202
Change-Id: Ibedc0a77d96cdfa575aad122c4ec654e6830e1f7
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
2014-06-06 11:12:21 +02:00
Yoann Lopes
93e73fd8ee DirectShow: remove debug output.
Task-number: QTBUG-38924
Change-Id: Ibc08fd99f6eb10035e4d7da963d4d384012bbdbf
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-05-19 14:57:23 +02:00
Yoann Lopes
bfccbcfc4e DirectShow: fix media seeking while stopped.
When changing the position of a media player while stopped, playback
was automatically resuming. We now cache the value and actually set the
position only when starting playback.

Task-number: QTBUG-38068
Change-Id: Ib35302e01967d70350125f9ad920551df2a3c25b
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-04-07 11:51:22 +02:00
Yoann Lopes
b28ee24628 New QCameraInfo class.
The class allows to get the list of available cameras on the system as
well as getting some static information about them such as their unique
ID, display name, physical position and sensor orientation.

This makes QCamera::availableDevices() and QCamera::deviceDescription()
obsolete.

This patch contains the API, documentation and auto-tests but not the
actual implementation by each backend (except for retrieving the default
camera device).

[ChangeLog][QtMultimedia] Added new QCameraInfo class
[ChangeLog][QtMultimedia] QCamera: availableDevices() and
deviceDescription() are deprecated, use QCameraInfo instead

Change-Id: I64fd65729ab26a789468979ed5444ee90bb82cd0
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-02-28 14:10:00 +01:00
Frederik Gladhorn
c6ec402d25 Merge remote-tracking branch 'origin/stable' into dev
Change-Id: Ie93615076177662e75d46f3d13beeb88d424b4a6
2014-02-12 14:11:35 +01:00
Kai Koehne
7a02bcaad1 Replace win32-g++ with mingw scope
Commit 773dd01 in qtbase introduced a general mingw platform scope, which
is cleaner and more flexible than matching the spec name.

(see 278152fff for a similar commit in qtbase).

Change-Id: Ib46b9e83f690b0b26933b73764c7d7d4b031d792
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2014-02-07 14:22:26 +01:00
Thiago Macieira
e4035bf6d0 Normalize signal & slot signatures in connection
Profiling shows Qt Creator spends 2% of its load time normalizing

Change-Id: I1a4bef16be79ced35c47da865153ebe1bee22f9c
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2014-02-03 20:12:35 +01:00
Andy Shaw
9a16423610 Don't mirror the image from the camera unless it has been flipped
The camera itself can have a mode set that causes the image to be flipped
so instead of always mirroring the image that is taken from the camera we
check for the supported modes first and then check the mode and only
mirror if it is set. Otherwise we assume that it does not need
horizontally flipping but that it needs vertically flipping which seems to
be the standard for cameras on Windows.

[ChangeLog][QtMultimedia][Windows] Fixed the incorrect mirroring of the
image from the camera
Task-number: QTBUG-30365

Change-Id: I166b1f354e8d91c9a6c64f64164d782b52df98d8
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2014-02-03 16:54:28 +01:00
Oswald Buddenhagen
5980bc41cf whitespace fixes
remove trailing spaces & expand tabs.

Change-Id: I05ef110abed90f13b47752760ffb4567a11a6a5e
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@digia.com>
2014-01-30 14:32:10 +01:00
Yoann Lopes
4edc0cc3b9 DirectShow: fix compilation with MSVC 2008.
Task-number: QTBUG-34479
Change-Id: I48ab0760273e08678be5f057e2b39db8cbe10cff
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-10-31 12:46:08 +01:00
Yoann Lopes
7d24543c27 DirectShow: improve metadata support.
Correctly return the list of available metadata.
On Windows Vista and later, we now use shell properties to retrieve the
metadata. This allows us to get much more metadata properties.

Task-number: QTBUG-30776
Change-Id: If542756d08d832903984ef10d09c4caf410bdb1c
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-10-11 14:21:48 +02:00
Yoann Lopes
c74b544610 DirectShow: avoid unnecessary RGB32 -> BGR32 conversion.
Frames in the RGB32 format are actually using the BGR byte order, no need
to do the conversion.

Task-number: QTBUG-29206
Change-Id: I13527bd9dacc8330df78beb0965b31469c1d7a87
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-07-19 14:43:26 +02:00
Yoann Lopes
d8e56bc4b8 DirectShow: Don't create the widget and renderer controls until requested.
Task-number: QTBUG-32282
Change-Id: If37ed4c35bcc2cc879f50d3b2ea3720b90603e9a
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-07-19 12:35:20 +02:00
tommyadam
1eb77d3782 Fix resource leak in directshow plugin.
Add two missing release calls to free file handles.

Task-number: QTBUG-23822
Change-Id: I8f5b6d0dcf9ad66bdaa2f378c0d3e401388d7add
Reviewed-by: Wouter Huysentruit <wouter.huysentruit@dzine.be>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-07-04 15:49:35 +02:00
Yoann Lopes
e25db62a59 Multimedia plugins now have a unique JSON metadata 'Keys' property.
They previously had the multimedia services they provided as keys. This
was a problem when several plugins were available on the same platform,
providing the same multimedia service, but with different features or
capabilities. Since they had the same key, only the first plugin in the
directory was loaded.

Nevertheless, it was actually working until commit 732dcfe7 in qtbase,
as all plugins were loaded even when sharing the same key.

The services a multimedia plugin provides are now declared in the
'Services' property. To preserve compatibility with third-party plugins,
if that new property doesn't exist it falls back to the 'Keys' property.

Task-number: QTBUG-31868
Task-number: QTBUG-31476
Change-Id: Ic3ba32eeef21b69b922bd3d4feb111101559d132
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-06-21 12:07:00 +02:00
Friedemann Kleint
b604d96ba8 Make directshow-plugin available.
No longer include <qedit.h> in directshow-plugin,
which no longer ships in newer SDKs.

Ensure it only provides the camera service if the
WMF-plugin is built by using a different .json-file.

Adapt qcamerabackend-test to use widgets.

Task-number: QTBUG-28047

Change-Id: I22ea441b9edb56ff55bc275dba37c01c77d8dd90
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-05-15 12:43:08 +02:00
Sze Howe Koh
f4348fe3ae Decouple qmediametadata.h from qmultimedia.h
qmultimedia.h is included in more places, but qmediametadata.h is
larger. This patch should reduce unnecessary #include-ing.

Change-Id: I4a3d174bafc555d794bb75087c1f6b79745ae903
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-05-14 11:27:05 +02: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
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
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
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