| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Currently QAudioRecorder is implemented to find a codec and muxer that match some caps.
E.g. if we would want "audio/x-wav" container with PCM format, there is only one gst element
which supports it:
wavenc element accepts "audio/x-raw", "audio/x-alaw" or "audio/x-mulaw"
and provides buffers in "audio/x-wav" or "audio/x-rf64".
Next, we would need to find a codec which provides buffers in
"audio/x-raw", "audio/x-alaw" or "audio/x-mulaw". It might be mulawenc and alawenc.
And finally we combine them together to pipeline:
audio/x-raw -> mulawenc|alawenc -> wavenc -> audio/x-wav
And as a result there will be wav file and encoded in "audio/x-alaw" or "audio/x-mulaw"
and not in desired PCM format.
So suggesting to add audioconvert element to the audio encoders to allow to link
with various containers:
audio/x-raw -> audioconvert -> wavenc -> audio/x-wav
Change-Id: Icd77124267f5a0999625fa1fe4e3de3740218741
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-75943
Change-Id: I5fe32da3809c35e47b1244481dc1786e3a4a0a07
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
- Replace the usages of deprecated APIs by corresponding
alternatives.
- Made the tests for deprecated APIs to compile conditionally,
based on the deprecation version.
Task-number: QTBUG-76491
Task-number: QTBUG-76540
Task-number: QTBUG-76541
Change-Id: Ifd397dae9b3ebc2ba2504db7baa2d8ff21bfb3a7
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\ \ \ |
|
|/| | |
| |/ /
| | |
| | | |
Change-Id: Ibe09461a3c1541836cc3a766276114d4ac2a74d9
|
| |\ \ |
|