| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Change-Id: I49eb4e04dd6d63a17d31fd0981be18f3b88fcc39
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Media type MEDIASUBTYPE_RGB32 is 32 bytes per pixel (like 0x00RRGGBB).
When MDI subwindows are overlapping
bottom window with QImage::Format_RGB32 requires 0xffRRGGBB.
If "not used byte" is not 0xFF rendering will not be correct
(0x00 produces empty image).
Changed samples to ARGB32 to provide alpha channel, which is 0xFF in
most cases.
If alpha channel is not set to 0xFF, the bottom window will still be
rendered incorrectly.
Task-number: QTBUG-51405
Change-Id: I69f15d3835f901a04bf39b079394c6292b793610
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
(cherry picked from commit b69259b65707acc9fc3c0818f6affe53938cebc3)
|
|
|
|
|
|
|
|
| |
Applied casting to keep precision.
Task-number: QTBUG-64044
Change-Id: If3cb29b5c049302de38e5417811792405c896334
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since CameraBinSession::setStateHelper() is supposed to handle
only pending states, added a fix to prevent calling it twice.
Otherwise CameraBinSession::load() can be called few times
which might lead an error from gstreamer.
Possible call stack:
CameraBinSession::setState()
CameraBinSession::setStateHelper()
CameraBinSession::load()
CameraBinSession::setStatus()
CameraBinSession::setStateHelper()
CameraBinSession::load() << gst_element_set_state is called also twice
Task-number: QTBUG-53204
Change-Id: I00c66f91cd3b885c70848245da725ff68943fad2
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Fixed memory leak when using Filter Graph Manager
by moving creation of the manager to worker thread
and changing threading model from shared
to application thread.
Task-number: QTBUG-52713
Change-Id: I7725697ced1992959d18588303c329b4dfd56b2e
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
| |
If qthread is being exited all objects that belong to it also should
be cleaned up.
Task-number: QTBUG-64407
Change-Id: Ida09fcfac7e1ee2741c6e1b76a672a7a5775addc
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since the information is not available as to what the orientation is
from the AVFoundation API then we need to rely on common sense. Since
the back facing camera is 270, then it stands to reason that the front
one would be 90. This has been tested on macOS and iOS and all three
cameras behave correctly.
Task-number: QTBUG-37955
Change-Id: I1ab079cb5d4337948541e58321df51efbadf3e39
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
The change causes the video output to be shown upside down.
This reverts commit 2ec485482d185f92e4de33f634bc3ef9dd6c9188.
Task-number: QTBUG-64764
Change-Id: I9d3e63d2c0cce17d945b62ffead38ab5f58ace7f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
(cherry picked from commit 3598915a360c596da48c9e7b00ba8469cba5249a)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When ANGLE is used and video frames have GLTextureHandle handle type
black screen is shown while audio is working correctly.
Fixed a bug when opengl texture has not been ever creating.
Fixed a crash when releasing resources due to empty QOpenGLContext.
Also moved gl initialization related code to OpenGLResources.
Task-number: QTBUG-61407
Change-Id: Ifc92a4a2fa2e769494ef962203446a9b3e7dd86d
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
| |
If waveInGetDevCaps or waveOutGetDevCaps returns MMSYSERR_NOERROR
it does not mean that there are supported formats in the dwFormats field.
Task-number: QTBUG-54242
Change-Id: I767ccc9570681685a27abd979ba9754034058e6f
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
| |
To terminate playback waveOutReset is already used.
Task-number: QTBUG-35916
Change-Id: I50d6c25c944b01d7dfe62b2f80ec153231818a33
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
| |
The COM library was not initialized on the calling thread before the COM
library calls were made.
Task-number: QTBUG-62598
Change-Id: Id6f4fc093a1ef72b6e0a3cd3a22c05cec7eaafa8
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Setting a new url while QMediaPlayer is in loading state
can result in a deadlock between the GUI and worker thread.
Because main thread is waiting when worker realeses m_graph
but worker cleared all pending tasks and is waiting for new tasks
from main thread.
Task-number: QTBUG-53534
Change-Id: I296ecdf866c5d85efc7121d3e7936334d6b700fd
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Since the native notify* methods for QtCameraListener.java are executed
on different thread, there is a potential for a race condition when the
applicationStateChanged is received before the notify* signals,
which leads to the camera being release before the slots are executed.
Task-number: QTBUG-52366
Change-Id: Ifc82f3a75a7e88e4e76fac3edbf16bb9f138fde7
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
| |
Created GstElement objects m_cameraSrc and m_videoSrc should be unrefed.
Task-number: QTBUG-53204
Change-Id: Ibbfd37d928fe87ea899549da7c12fa2386e214cc
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
| |
The memory in the GstMapInfo should be unmapped with gst_buffer_unmap()
after usage.
Task-number: QTBUG-62789
Change-Id: Iee080e597abc80aa28fd068e6f582a97987677e0
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
| |
All relevant properties from the surface are now copied
Task-number: QTBUG-53268
Change-Id: I7f18f0e6a623c8c7c5be68e912b298e0b4b130b7
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The switch is necessary because Multimedia for QNX 7.0.0 removes
support for PPS based retrieval. PPS itself is deprecated in QNX
7.0.0. QNX 6.6.0 is also switched to using event notification
since Multimedia for QNX 6.6.0 also supports it.
There's a slight change in when metadata first becomes available
because an event is used instead of file based retrieval. I think
it's a necessary change because there isn't actually any guarantee
that the metadata is complete at the time that the code used to
request it and the code may have missed changes because it never
read the information again.
[ChangeLog][QNX] Switch to mmr_event_t based metadata retrieval.
PPS based retrieval is not supported by Multimedia for QNX 7.0.0.
Change-Id: I2b70f05422ee03d25ed2446a0e30b56b03dd82c8
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
| |
The default value for QVideoSurfaceFormat is TopToBottom, so we need
to change it.
Task-number: QTBUG-51213
Change-Id: I47826a60fbae57f3d30d358a9ab8f05b784aeebd
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
|
|
|
|
| |
Change-Id: I3969c6e91438b9e411b8e93a304c666c2c36bf21
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
| |
Change-Id: I389c8eae55f6bded71978f3d275db419b9d32a2e
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
|
|
|
|
|
| |
Change-Id: I386d30a54819bae016cb50cf5892a5ac380288f9
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
|
|
|
|
|
| |
Change-Id: I9cd7043058352ba2aeded74f86d863fca29bd37d
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
|
|
|
|
|
|
|
|
|
| |
Fixed a case where it was not possible to load remote m3u files as the
parser would start, and fail, before the file was received.
Task-number: QTBUG-62255
Change-Id: If730539dbfd25c9ef2ab97a05af3a50c685a304b
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
The last ioctl argument expect a pointer to an integer, not the integer
value itself. Also, the ioctl call will return 0 on success, or ENOTTY
if the input can't be select, both indicating that the device is a
camera.
Task-number: QTBUG-62245
Change-Id: Ifcf2d30b11ae204036b43daae664f917aaed83ed
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
| |
The element name needs to be released when we're done with it.
Change-Id: I650671288bd143551188094b0d934e7da2028a2d
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
| |
Task-number: QTBUG-63308
Change-Id: Ic66d5d50b026350cf03afc19c58fc7c93029a69a
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
critical sections are really unpredictable when it
comes to order of activation. It was possible that
the loop in QWinRTAbstractVideoRendererControl's
syncAndRender blocked its setBlitMode for up to 30
seconds on application start. During this time the
camera screen just stayed black. The whole approach
seems to work a lot better when QMutexes are used.
Task-number: QTBUG-63015
Change-Id: Ib1b0fa1da35fe299896068146254e4cf1d9616fb
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a new frame is ready to be rendered, our gst sink waits until the
frame is actually processed in the GUI thread, but never more than 300
ms. The time limit is there to avoid potential dead locks in specific
situations. Before, if the wait would timeout, the sink would signal
that there was an error rendering the frame, which would in turn put
the pipeline in an error state and would stop processing any further
frame. We now simply skip the frame if the GUI thread is blocked for
too long and signal that everything went fine to the pipeline.
This was already the logic in place for GStreamer 0.10 (see
qvideosurfacegstsink.cpp).
Task-number: QTBUG-60509
Change-Id: I5173a15340c0e2065bb2fb5ca3bc045ac84ba7e1
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The switch is necessary because Multimedia for QNX 7.0.0 removes
support for PPS based monitoring. PPS itself is deprecated in QNX
7.0.0. QNX 6.6.0 is also switched to mmr_event_t based monitoring
since Multimedia for QNX 6.6.0 also supports that type of monitoring.
[ChangeLog][QNX] Switch to mmr_event_t based monitoring. PPS based
monitoring is not supported by Multimedia for QNX 7.0.0.
Change-Id: Id3ce1d8895e8ce492ecdd49cbe88ef5f0d6b0194
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
In QAlsaAudioInput::open(), one should check against the available
audio inputs and not the audio outputs.
Regression introduced in 5473621bde2be226f2f3687a80b4bfc93bbbe572.
Task-number: QTBUG-62435
Change-Id: I5db0a092a98c17964c55c9358ea1010ca05e9d6f
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Since the slot connected to the frameAvailable signal may be in another
thread there is a bigger risk of it being invalid by the time the slot
is invoked. Therefore we copy the data and emit with the copy to ensure
that we don't lose the data.
Task-number: QTBUG-61817
Change-Id: I2888661d8a7f97105a85f87b08cc9ec25f8ce8c7
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
| |
Change-Id: I979c7d8d01b00689269a7969b628864ca5eab991
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QSoundEffect (pulseaudio) uses a workaround for stability issues:
although the pulseaudio mainloop mutex is recursive, it utilizes a
separate lock counting. This is not the best solution, but it is a
part of a larger set of changes which improved the stability in CI
under heavy load.
QSoundEffect always calls pa_threaded_mainloop_lock/unlock() from the
same thread so the additional lock counting works in normal situation
even though it doesn't use atomic types.
However if pa_context_connect() fails, pa_threaded_mainloop_unlock()
is called without regard to current lock count. This leads to random
double-unlock aborts if pa_context_connect() fails more than once
(e.g. after the reconnect scheduled from onContextFailed()).
Fix this by always using the PulseDaemon wrappers around
pa_threaded_mainloop_lock/unlock().
Task-number: QTBUG-61725
Change-Id: I41eb9a76892a6646fd5620ef8f686473b339464f
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
We only need to wait for a new viewfinder frame if we have a
videorenderer control. If there's no videorender control, then there's
no preview set and we can therefore just save the capture image
immediately.
Task-number: QTBUG-60329
Change-Id: I9ba34919f7cd82258482507c65db6367e330e231
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's possible to initiate an asynchronous image capture
(via AVCaptureStillImageOutput object) and immediately
stop AVCaptureSession. In this case image capture's callback
can potentially block forever, waiting for a semaphore: (if)
no new frames arrive after 'stop' (on whatever thread
AVFoundation/GDC chooses), this semaphore is never released.
To avoid this we try to acquire a semaphore with a (reasonable)
timeout and report an error in case of failure. To make sure
we are not leaking a semaphore and not creating a danling pointer,
we use a QSharedPointer now.
Task-number: QTBUG-61367
Change-Id: I208cd463f843bc807b53b23ac9651aab0382775a
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes g++ warnings:
..\common\evr\evrhelpers.cpp: In function 'QVideoFrame::PixelFormat qt_evr_pixelFormatFromD3DFormat(D3DFORMAT)':
..\common\evr\evrhelpers.cpp:143:5: warning: case value '842094158' not in enumerated type 'D3DFORMAT {aka _D3DFORMAT}' [-Wswitch]
case D3DFMT_NV12:
..\common\evr\evrhelpers.cpp:145:5: warning: case value '842094169' not in enumerated type 'D3DFORMAT {aka _D3DFORMAT}' [-Wswitch]
case D3DFMT_YV12:
Change-Id: I11869144b34d848bd68434d3a062852608518978
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix g++ 7.1 warning:
player\directshowplayerservice.cpp:724:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
if (SUCCEEDED(DirectShowUtils::connectFilters(m_graph, m_source, m_videoSampleGrabber->filter(), true)))
player\directshowplayerservice.cpp:726:13: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
break;
Amends 8e4d966f4e5546787257de046d2c3af8a19214b4.
Change-Id: I491e14e0116140d2ebb870441c2f048a2d7ddc31
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
| |
Change-Id: I9f764077d257dadfe1641e9bd446b6939c381173
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
| |
Though it's a pointer.
Task-number: QTBUG-60464
Change-Id: Ia3e896da908f42939148fffd14c660fd8da43aa2
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
When m_loopCount is Infinite (i.e. -1) m_runningCount would go from -2
and down, eventuall wrapping and reaching 0 and thus stopping.
This is a theorical problem since even if we had a 1 second video it would
take lots of years to trigger but i guess it's better than
having the value of m_runningCount be unbounded
Change-Id: I340ec2157ece3334e58ab4afd77c34b478a256e9
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
| |
Sometimes m_format.bytesForDuration(delta) is larger than the QByteArray
containing the data. Therefore select the minimum of these.
Task-number: QTBUG-61085
Change-Id: I20a8ffb77095aecd2711f53d4c9fc7da7f9ae8e2
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Where possible, we should be emitting the stateChanged() signal to
StoppedState when we know the file is no longer being written to. The
finializing status can be used to indicate it is finishing and when it
is actually finished then StoppedState should be used.
Task-number: QTBUG-50588
Change-Id: Ie3ac1c5cd00a6a36978e72b5485622e3302054ce
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
| |
If a backend does not support streaming then playing from qrc is
impossible for -no-feature-temporaryfile case.
Change-Id: Ibb0518c4afe0598c6f3a1c03b75cc00e76b8eead
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
| |
take advantage of the system now supporting 'use' by exported name.
Change-Id: I7879d4c2e31b279bbbe17916e805ee60c108351d
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
|
|
|
|
|
|
|
| |
The interface is needed to implement Qt's camera control classes.
Change-Id: I468527dd1f5e9e7a0f8868f0b7addc3c069adf54
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|
|
|
|
| |
Change-Id: Ie1c39c26ae6dec288daafb24b5aa0b6cc2bdd218
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change enables the video and audio probe functionality, so it can
be used with the media player.
[ChangeLog][DirectShow] Added support for audio and video probes in
the mediaplayer.
Task-number: QTBUG-56415
Change-Id: If6f36a693b1d22372eab130df07d435c9df5a796
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|
|
|
|
|
|
|
|
| |
- Remove unused license files
- Switch old LGPLv21 license headers with LGPL one
Task-number: QTBUG-57147
Change-Id: If939b9a09e0cd5ccda7f12172363cbc8f78297e8
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Make sure that the frame being processed is still valid, that is, the
size is valid and correct, and that the frame buffer is accessible.
Task-number: QTBUG-60115
Change-Id: Ic64b6f7d45d92b7923d97d6ecdc630da31abee17
Reviewed-by: Michael Dippold <mike@dippold.com>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|