| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
After commit 4d289edb14aeb4976218cc306bfc514e37521b82 in qtbase, MinGW
is not building with debug-and-release anymore. So similar to the change
in qtbase, the .pro files need adjusting for the placement of the
plugins to be scoped to debug-and-release configurations.
Task-number: QTBUG-78561
Change-Id: I0a5fc029307ba48c8f40f7553a7f583450337690
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
|\ |
|
|/|
| |
| |
| | |
Change-Id: I2ba97d82a57172656f6549f368ee51f718f9cdf8
|
| |
| |
| |
| |
| | |
Change-Id: I0069b96f00830cd441b60bef5847b1543ba2c1af
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Only the Q_PRIVATE_SLOTs remain.
Change-Id: Id3daf8275e8510a99a7089d4a537d06a123b6a27
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Adding the code to a snippet file
Change-Id: Iee3a24a1d2f28bc8863cf321b0b55c0459708995
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I690fa71f171b821098d33ce5482c9de467b645d5
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
|
|\ \ |
|
|/| |
| |/
| |
| |
| |
| |
| |
| | |
Conflicts:
src/gsttools/qgstvideorenderersink.cpp
src/gsttools/qgstvideorenderersink_p.h
Change-Id: I7fe29161d568fa3f7688abfd2f993d1b16ac3fb9
|
| |
| |
| |
| |
| |
| | |
Change-Id: I96026828c357677c84e880ea85e6e82b8c0495c7
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since using of any COM objects must be only after CoInitialize(),
otherwise CoCreateInstance() returns nothing which causes a crash.
If QMediaPlayer is moved to another thread, loading of any content will
also cause a crash because of COM is not initialized.
Proposing to use thread_local ref counter to keep each thread
initialized and avoid double initialization.
Fixes: QTBUG-77163
Change-Id: I81c67d6407b853c824edd3b42454fddf792fd90c
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| | |
Fixes: QTBUG-76574
Change-Id: I69ef47bbd01967c3d7a0c5d1554fcdd29619ebfa
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |\ |
|
| |/|
| | |
| | |
| | | |
Change-Id: Idc377c82cc1d2bd53069babc7f14618ef46dc67b
|
| | |\ |
|
| | |/|
| | | |
| | | |
| | | | |
Change-Id: I6137c73fe14e171aaa184e25ebc3a8374e4d91e2
|
| | | |\
| | | | |
| | | | |
| | | | | |
Change-Id: If27d8e3bb898607c5bf07dbfc97476859ae24646
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Change-Id: I282469f6c634283cec565b692b29b16cf0fdbea4
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
If the application seeks to a new position, the Media Session restarts
the presentation clock at the specified seek time.
The media source might deliver samples with a slightly earlier time stamp
if the seek time does not fall on a key-frame boundary.
And IMFSample->GetSampleTime will return time that is related to
a position when the clock has been restarted, and can be also negative.
So if it needs to have times from the beginning, it would require to add seeked position
to times from IMFSample.
It also reverts c4de056a6aa44567cdbf2ce91a464e597ad4af8f
Fixes: QTBUG-77849
Change-Id: I1a7cb7bd18aee73087a61d2ed2c3d644ad0fbd50
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| | | |/
| | |/|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When QDeclarativeRendererBackend is being destroyed, it clears the
surface and postpones releasing IMediaControl, which is done on worker
thread. It also calls flush() where null surface is used.
Fixes: QTBUG-77829
Change-Id: I327583c1f8fb7585dbec3c3fb7e80d0155cc4819
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |\ \ \ |
|
| |/| | |
| | | | |
| | | | |
| | | | | |
Change-Id: Ibccd00bdb62b0cce00882bafa602d1cef8051aeb
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Change-Id: I57e7aa684f589159f7957d68122c0ae983b2a70c
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When the playback is stopped, QAbstractVideoSurface::stop is called
where current surface format is reset.
And when sourceRect is requested before QAbstractVideoSurface::surfaceFormatChanged()
is handled, it produces an ASSERT.
Suggesting to use cached surfaceFormat instead of removing the ASSERT.
To reproduce:
MediaPlayer {
onStatusChanged: console.log(output.sourceRect)
}
Change-Id: I73ad72f1e4968fe45266827ec5c7e3b36333ee30
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |\ \ \ \ |
|
| |/| | | |
| | | |/ /
| | |/| |
| | | | | |
Change-Id: I896f59dcbad36c6cebf328a2799b9fe94e72f3d2
|
| | | |/
| | |/|
| | | |
| | | |
| | | | |
Change-Id: I1ed22d646c2ff230217e1ecefaf37a0a45fa4b54
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Reverts c018d5affdfca9c94a9797894c4092db53b7b101
[ChangeLog] QMediaServiceProviderHint, QMediaServiceProvider,
QMediaServiceProviderPlugin, QMediaServiceSupportedFormatsInterface,
QMediaServiceSupportedDevicesInterface,QMediaServiceDefaultDeviceInterface,
QMediaServiceCameraInfoInterface, QMediaServiceFeaturesInterface
classes are now deprecated.
Task-number: QTBUG-75943
Change-Id: I3e19166e3c7405beee1d93546d8982981e14cedb
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
|\ \ \ \ |
|
|/| | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This replicates the effects of the fast-forward merge that should have
been pushed on 2019-08-27 as the final down-merge from dev to 5.14.
Task-number: QTBUG-78019
Change-Id: I999b90d6b89b967c7cc94b7d0259b0ecda5de7ae
|
| |\ \ \ \ |
|
| |/| | | |
| | |/ / /
| | | | |
| | | | | |
Change-Id: Ib6eaf2363bfd7d9db7bce7543cb9a8dd86e850ae
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Since QMediaObject is QObject, and it uses d_ptr,
it is sane to move QMediaObjectPrivate to QObjectPrivate
and use standard way of using private impl.
NOTE : If some users inherit from QMediaObjectPrivate in their code,
they probably initialize and delete d_ptr manually
which would cause a crash now.
But using QMediaObjectPrivate without QMediaObject should be considered
as incorrect usage.
Task-number: QTBUG-77630
Change-Id: I147e3b3dc67a8c2765b28f752db196b4d7fca224
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Currently QMediaService contains d_ptr, which is not QObjectPrivate,
but QMediaService is QObject.
Task-number: QTBUG-77630
Change-Id: I1db0fd188bcc1a196e6f981b4410a6a1f57e88d5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Task-number: QTBUG-75943
Change-Id: Iee26ebb4992beb6c8cface372eb485321f391ab6
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
|
|/| | | |
| |/ / /
| | | |
| | | | |
Change-Id: Ic16cafaf6df356e430db4d60ad95610c855e1042
|
| |\ \ \ |
|
| |/| | |
| | |/ /
| | | |
| | | | |
Change-Id: Ic46475146abe7b8493ae343e8332736fa6dcc3af
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The feature was added in 5.12.2.
And it is relevant only for GStreamer backend.
Change-Id: I87e22e506158dc61bb7f111e74806e7eb8c28d7a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|\ \ \ \ |
|
|/| | | |
| |/ / /
| | | |
| | | | |
Change-Id: I09f511d894db5e9987ac2b9e42266bb87ef0161d
|
| |\ \ \
| | |_|/
| |/| | |
|
| |/| |
| | |/
| | |
| | | |
Change-Id: I428528333e89214d96acef5c2ba8ea832b2b145f
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
ResolutionPredicate defines an order on the resolutions (expressed as
QSize) of AVCaptureDeviceFormats, from smallest (width as primary,
height as secondary sort key) to largest, as the lexicographical
less-than of width and height. A a lexicographical order over Strict
Weak Orders is a Strict Weak Order of the product type. So far, so
good.
The logical negation of a Stict Weak Order is, however, not a Strict
Weak Order (not-less-than is greater-or-equal, not greater-than), so
it cannot be used as the predicate in std::sort.
Rewrite the ResolutionPredicate as an adapter that can be used with
std::less _or_ std::greater (or even std::equal_to), piggy-backing on
std::tuple to implement the lexicographical sort for us, then replace
not2(ResolutionPredicate) with ResolutionPredicate<std::greater>.
Rename the predicate to something more apt.
This also solves the use of deprecated (and in C++20, removed)
std::not2.
Change-Id: I6f81b149e53a5b4299b188bf3ce996f638bf3334
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ie1c77fa373d37979e69c08ab4a959c18efc9599e
Fixes: QTBUG-76135
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We promised to not provide any video frames before pause() or play() is called.
Regardless the media is loaded or not.
It should work like following:
setMedia(new)
// ...
// no video frames returned yet
pause()
// prerolled frame should be shown
To implement this, i.e. showing the prerolled frame after pause, we do seeking to the beginning.
But it is totally not necessarily when play() is requested,
since here is new media and playback will start from the beginning anyway.
This also produces a hang/stuck on some embedded systems with custom pipelines or playing from qrc.
So decided to show prerolled frame and this means to seek to the beginning only when pause() is called.
Task-number: QTBUG-65399
Change-Id: I9b3dc632fa0df4a1115d852c2d480fd5c7fd9ee5
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: I8b6b0f9b278ebb4b3eff0caaedab62cebfe9a695
Fixes: QTBUG-77097
Reviewed-by: Rolf Eike Beer <eb@emlix.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
qtvideosink element is available in pipelines only if QVideoRendererControl
is used, because it requires a video surface.
So if qtvideosink is used inside pipeline but a surface is not available,
created null/dummy surface to render video frames to and show
a warning about this.
Change-Id: I924d3baca994363550b7920176e29e9cd0c4dd1f
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
CARenderer was not re-created so black frames were rendered in video if current OpenGL context changed.
Task-number: QTBUG-77270
Change-Id: I8df423aaa9239c938363141cca1ae4136cde839b
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|