| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| | |
tqtc/lts-5.15-opensource
Change-Id: I6a330e383bb573bd7ba6cfea7e8bce3e88de2d7a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On macos13 new feature has been introduced:
possibility using a camera of paired iphone on macos.
The feature works but it's a bit buggy: AVCaptureDevice.hasFlash is true
but none of flash modes is supported.
Setting of not supported flash mode causes exception.
The exeptions happens when setting AVCaptureFlashModeOff, but,
in theory, it can occur in other corner cases.
Documentation recommentds to check if flash mode supported in order to
avoid exceptions.
So, what's done:
- checking of supported flash and torch modes before setting
- use captureDevice.isFlashAvailable not only for mac os since
ios camera can be paired
Task-number: QTBUG-108018
Change-Id: I42772edb4c26481283d1bd321914bf40284efde9
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|\|
| |
| |
| |
| |
| | |
tqtc/lts-5.15-opensource
Change-Id: Ibcb201720a2949a9c57d8bafc83afcaf5d8e20e5
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When updating the player item of the AVPlayer, make sure to remove
the video output (AVPlayerItemVideoOutput) from it. It will be
added again to the updated player item on the next call to
copyPixelBufferFromLayer.
This fixes issues where the last frame of the previous video source
was sometimes flashed before rendering the new one.
Fixes: QTBUG-87000
Change-Id: Iec66f0e27efe621d1992a2a0f9f5060aa51f7076
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This fixes rendering problems on M1 based Macs.
It also unifies the rendering pipeline between macOS and iOS as
much as possible, and avoids an intermediate copy to an FBO,
Since AVPlayerItemVideoOutput produces GL_TEXTURE_RECTANGLE
textures on macOS a new QAbstractVideoBuffer handle has been
added that explicitly maps to GL_TEXTURE_RECTANGLE.
We use this handle type internally in QSGVideoMaterial_Texture
where we know how to blit GL_TEXTURE_RECTANGLE textures.
To maintain compatibility for QAbstractVideoSurface consumers who
expect GL_TEXTURE_2D textures we blit the rectangle texture to
an FBO returned as QAbstractVideoBuffer::GLTextureHandle.
Fixes: QTBUG-89803
Done-with: Lars Knoll <lars.knoll@qt.io>
Change-Id: I36d22eafb63902ecc1097e138705812ef6a8cb71
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|\|
| |
| |
| |
| |
| | |
tqtc/lts-5.15-opensource
Change-Id: I6568139d7193f5b04b50f0f31ddff4d9bac8e65a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the video output is no longer attached then it will cause a crash
if you try to remove it, so we need to check it is attached before
removing.
Change-Id: I90a119ae8e605ee88740248c94c7cea03acf4d50
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 8b72da5f4b2d81444c731bc4e8eafca59e693bf6)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
CoreAnimation OpenGL renderer only has support for pre 3.0 profiles.
Changed CoreAnimation renderer to use a Metal texture for rendering
and use a pixel buffer to share the texture data with an OpenGL
texture, making it possible to render with 3.2+ profiles.
Fixes: QTBUG-51064
Fixes: QTBUG-62694
Change-Id: I48a4a6e0d8fbc48170dfe82d1e71cd265d70179a
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
(cherry picked from commit abab792c4f0977a4599e5b7b2e97a5ee586fe388)
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|/
|
|
|
|
|
|
|
|
|
| |
This reverts commit 80d46e3a5f64ff2456c40bdba63b6d5c69a32cdd.
Revert of commercial license headers is required for Qt 5.15.3
opensource release.
Task-number: QTBUG-91108
Change-Id: I5c64ffa120f916711e5cf01c828774f8456dec06
Reviewed-by: Akseli Salovaara <akseli.salovaara@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Updated header.COMM to files in tqtc-qtmultimedia. Examples,
tests or documentation files are not updated.
The commercial license header may contain some
additional lines so that its line count equals
with the earlier license header. Reaso for this
is that some autotests use hard coded line numbers
and a change in the line count causes failures in
tests.
Task-number: QTQAINFRA-4171
Change-Id: I86ebf7c3653b55983cefff246c0cb019cbcda8c4
Reviewed-by: Akseli Salovaara <akseli.salovaara@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Can be used like:
QCameraImageCapture->setCaptureDestination(
QCameraImageCapture::CaptureToBuffer | QCameraImageCapture::CaptureToFile);
Both CaptureToBuffer and CaptureToFile are supported.
If CaptureToBuffer is requested, then it sends imageAvailble signal
If CaptureToFile is requested, it sends imageSaved
imageCaptured is sent only if there is the video frame available.
(e.g. when abstract video surface is used as viewfinder)
Fixes: QTBUG-85470
Change-Id: If22281e4d0eacfb0d38f8b1c8b676191817f592e
Reviewed-by: Ihor Dutchak <ihor.youw@gmail.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit cdd87907722aff14c393dba02b7e43c924b60d06)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Used QUrl::toEncoded() instead of QUrl::toString().
Usage of QUrl::toString() leads to URLs which can contain spaces and as
result such URLs are not accepted by AVPlayer, and it remains in unknown
state because AVFMediaPlayerSession::processLoadStateChange() is not
called at all. And as result, QMediaPlayer waits media loading forever.
[ChangeLog][Platform Specific Changes][AVFoundation] Fixed playback of
files with spaces in their names.
Fixes: QTBUG-84585
Change-Id: I69e522d048d88310803a7040f114ee808c18720b
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
(cherry picked from commit 9c16be3d9d956f612dda431f4883eab3b09a8b67)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
| |
AVFCameraWindowControl is a renderer backend,
when QCamera viewfinder output set to QVideoWidget on macOS or iOS.
As it uses native API and lets the OS handle rendering pipeline,
it is an efficient alternative to default renderer backend.
Task-number: QTBUG-68779
Change-Id: I4d27022655a7d9f4ad7cf99c84b570a0c48cf10a
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\
| |
| |
| | |
Change-Id: I4ea49723c74c6dccf141b65f834b5d539d2ab9d7
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QAbstractVideoSurface is waiting for the video frames in supported
pixel formats. See QAbstractVideoSurface::supportedPixelFormats().
If the surface does not support device's pixel format,
don't show the camera's viewfinder and don't return video frames
in unsupported formats.
Task-number: QTBUG-82264
Change-Id: I084674f4b093a751bc4f4941047b979766880963
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When AVPlayerLayer as a backend for AVFVideoWindowControl being resized,
macOS adds animation that interferes with Qt resize routines.
Disabling animation fixes visual flicks.
Task-number: QTBUG-82542
Change-Id: I20a5699431369bcc2da8719b8c4a0151273f9973
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I04934575bd661b80b1f012a7e825dcd753d26908
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
AVPlayerLayer's bounds can be changed while resizing, and should not be
overridden by default/native size.
Fixes: QTBUG-65536
Change-Id: I771b13e58606663ded80df3665454007d28836b7
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
1. If a resolution of the viewfinder is requested to be changed,
it is not needed to check available formats for highResolutionStillImageDimensions
(since it is viewfinder resolution and not still images).
format.highResolutionStillImageDimensions returns the highest resolution still image
that can be produced by the format.
Using this format will cause wrong resolution in the viewfinder.
2. Seems iOS requires to call beginConfiguration/commitConfiguration to apply any changes.
commitConfiguration is currently called when the camera gets active.
In case if settings are changed after starting the camera, they will not be applied.
To fix that, added beginConfiguration/commitConfiguration.
Fixes: QTBUG-79935
Change-Id: I60b6e08887a82e4337a2a302b8e5513c65b26e61
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
AVAssetResourceLoaderDelegate allows to load custom resources.
Implemented resourceLoader:shouldWaitForLoadingOfRequestedResource to read data
from QIODevice.
The device should be seekable, and already should have all data available.
Since there is a need to know total size of the stream.
So the media player will wait for QIODevice::readyRead before loading the resource.
Also it requires to have url together with the stream:
QMediaPlayer->setMedia(QUrl("does_not_matter.mp3"), buffer);
Since the backend uses extension to determine type of the stream.
Fixes: QTBUG-69101
Change-Id: I8ab0b69f668ccd67c42a8e5d5c1ad518d3306cce
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ia0c325dc50b9a5a1cdd205609ba688ad9874f297
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When AVFoundation reports that the media is now buffered, we only
should resume the playback if the QMediaPlayer is in the according
state.
Fixes: QTBUG-81912
Change-Id: Idba30ecf6c9c7b87a1c67896d89faa9a1bceae10
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
AVPlayerItem::seekToTime::CMTime is deprecated since 10.13
Also fixed to use accurate seeking by passing a time value of
kCMTimeZero for both toleranceBefore and toleranceAfter.
Fixes: QTBUG-81804
Change-Id: Ifafeb1fb5ca66ecba14d77abf315ebe6ffd45eab
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ic6618a0d2e40f7008d766d861f4d2cb0190a94dd
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the viewfinder settings are valid, need to lock the capture device
to avoid reseting settings to default values.
See also a8123e737140719549252806e0e6a1c121359f79
Fixes: QTBUG-81048
Change-Id: I834815ef6c5ef28d8017d04bdb9d5256c02d1de7
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Supported formats might be changed, thus need to inform
the renderer control about this.
If gl textures are supported by the surface, the video frames
will be rendered to FBO instead of QImage, next time when
the update request will be received.
Change-Id: I7750def3e943ea2680bb8b83853cb987ab554f00
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ie511ad4ccac1b5bde6686bbe2c391dd175dd3274
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fixed a bug when the media status was changed and emitted, but the state
was kept old, this prevented to start playing again in a loop
if the loops were requested.
This is a regression since 9dbdd5d.
Fixes: QTBUG-81122
Change-Id: Id2c7d03a25cc22f7f45c6017d2da0af9bb52e528
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In macOS, a capture session can still automatically configure the capture
format after you make changes.
If frame rates are applied to the capture device and the camera
is still not active, these rates will be overridden by old values
when the capture session will be started.
For this purpose lockForConfiguration is currently used within startRunning method
of capture session. But in case if the settings are already applied to the capture device,
we don't call lockForConfiguration within starting of the capture session
(since it is needed to be called only when the settings have been changed).
Suggesting to postpone setting of the format (to the capture device) until
the camera is started.
This will lead to apply settings before startRunning method with proper configuration lock.
Fixes: QTBUG-81048
Change-Id: I04664e7b63474ce28571e888e524170b995a38d6
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ib250ceecd02291f752b7775f329f0f494c4aed38
|
| |\
| | |
| | |
| | | |
Change-Id: I5b99b3d05502e15373ebaedcad06d6ab4d25d387
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Interface in headers should not contain i-var declarations, these days
it must be in implementation part. Also, replace quite suspicious
'load' with 'loadAquire' to pair 'storeRelease'. Since I have QT_USE_NAMESPACE
in *.mm file, no need in ugly QT_PREPEND_NAMESPACE macro anymore.
Change-Id: Ia19e3c5b68687030c97e8e8e982ae89627e909f9
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
Change-Id: I255dc22dc21d3629a41a8c2ae2076c48b594e626
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since RestrictedBool conversion operator was introduced, objective-C
method calls require explicit .data() on our smart pointers.
Fixes: QTBUG-79686
Change-Id: Ie32ebf0442cd56a01466aa58b89651d7c293de6d
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since QVideoFrame::pixelFormat's do not 100% match QImage::Format's,
introducing converstion function.
Returns an image based on current frame.
Converts data if needed to supported QImage format.
Change-Id: I3331578c01cf9c999a380efc4a83bf9eddb07901
(cherry picked from commit 93f966335e1ed8ed47b7e8b32452d43c2f8a7bb1)
Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|\|
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/multimedia/video/qvideoframe.cpp
src/plugins/directshow/player/directshowplayercontrol.cpp
Change-Id: I00840245e35861cf4fe1d62789815ca125b2052a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If remote source is requested to play but there is a limitation in network bandwidth,
StalledMedia status is never emitted, also the playback is not resumed after buffer gets full again.
Based on AVPlayerItem.playbackLikelyToKeepUp introduced changing the media status
and resuming the playback.
Task-number: QTBUG-49806
Change-Id: If8aa10a1ea2cee2a40c679871b836d2dca622fcd
Reviewed-by: Ville Voutilainen <ville.voutilainen@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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
|\| |
| | |
| | |
| | | |
Change-Id: Ibe09461a3c1541836cc3a766276114d4ac2a74d9
|
| |\|
| | |
| | |
| | | |
Change-Id: Ic69cafce59e842ec05a90544e10c0bcebf5daeec
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
I might happen when shareContext remains the same but current context has been changed few times.
Change-Id: I55a7a9eab03776e3d1ca6d32117de6714692bbf0
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Patch content originally proposed by Alex Reche and Olivier Le Roux.
Fixes: QTBUG-67985
Change-Id: I3ec80c566bf7c67c50e3e7485248412c40bdf169
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Q_FOREACH is going to be deprecated, or at the very least banned from
use in Qt code.
All these are trivial in the sense that the loop body clearly doesn't
modify the container over which we iterate, and that the container is
const, or trivially marked as such.
In one case, replaced Q_FOREACH + delete + clear() with
qDeleteAll(qExchange()), in three others, replaced Qt containers with
statically-known content with plain C arrays.
Change-Id: I718821811370f0cfefac3893283572d39a7d957d
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: Ia427729f2b302854daa9f8259eae038498088b7e
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Doesn't seem to be used.
Task-number: QTBUG-76521
Change-Id: Ief874765cd7b43798de3fffd15a9f691e1ac078d
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: Ic3ac3515666576046ac1ec5342c5b06aadbc18ac
|
| |\|
| | |
| | |
| | | |
Change-Id: Ib819180a25ceedfb072362d55d30f94e40a44f9b
|