| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| | |
Change-Id: Ib4a7640e12319d78ea5ae8f58d79c9fab8d0ea60
|
| |
| |
| |
| |
| |
| | |
Change-Id: Ic6dc2eb6acbd0f5167aa4bad9af08ce8aa5a456b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Android API level 16 added SurfaceTexture::attachToGLContext(). This
allows to create the OpenGL texture when the first video frame is
available, rather than at initialization. This means we can do without
the ugly hack that makes the render thread call us back through some
custom property.
Additionally, it allows to recreate a new OpenGL texture every time
the SurfaceTexture is reset.
Task-number: QTBUG-51911
Change-Id: I17b04524d426c42ef8aa0288b0731597bc9eba62
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Compile fix: FreeBSD uses <sys/types.h> instead of the linux version <linux/types.h>, so this patch
changes the include by Q_OS_FREEBSD define.
Change-Id: Iafe18614ad2360dce9858039b22f9b6c2dd9caaa
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Don't render the frame if the SurfaceTexture has been released or
if the render size is invalid.
Change-Id: I6b8bf14e023ff54a560b0a9e6027ef9d7d06ab6a
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some sections were not protected by the mutex, even though they should
have been. An example of problem that could happen because of this was
if the SurfaceTexture was reset while the render thread was rendering
that texture.
Change-Id: Ie95860fd4eb722bbac04cccc430cc1a8abf1df4d
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
|
|/
|
|
|
|
|
|
|
|
|
| |
Some cameras return video properties when querying for
MediaStreamType_Photo, ie. Surface Book. This caused an assert.
Instead when asking for photo resolutions, only query the available
image resolutions and skip results not of type image.
Change-Id: Ia1886a11f47676d6713eec86f3a80c664871a968
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
When possible, convert the URL to a local file name with native separators.
The method seems to accept URLs with file scheme, but fails when passing
UNC paths.
Task-number: QTBUG-53114
Change-Id: Ib7418090080be8c1b8472e77541e686adaa3a18a
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- return m_cameraSrc for function cameraSource() instead of m_videoSrc.
m_videoSrc is not always assigned(default 0), it will crash on:
if (g_object_class_find_property(
G_OBJECT_GET_CLASS(m_session->cameraSource()), "exposure-mode")) {
And as the function name says, it would be better to return the
value m_cameraSrc.
- make sure pointers are not NULL before using them.
Change-Id: I8a56db34a805724b428409b87de7d072ee7bfa57
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
OS X 10.11 generates a warning when the code uses the Carbon Component
Manager to locate audio devices. The new AudioComponent interface has
been available since 10.7.
Change-Id: I46ecbcd62871ecc46ce3ebd9ea2a37a9e1342f41
Task-number: QTBUG-48828
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous code would capture frames with a 60Hz timer
into two pixmaps alternating pixmaps with each successive
frame. Rendering was somewhat disconnected from this, if
rendering was unable to occur at 60fps, multiple frames
might be copied for each frame rendered. This meant that
it might try copying a video frame into a pixmap that was
currently being used by the GPU with bad effects. The
primary effect being severe flicker on i.mx6 targets.
The change is to ensure that we don't read the window data
until we're just about to make use of it. This means we
don't ever get ahead of ourselves and read the video window
once for every frame rendered.
The code has been significantly refactored. There is now
a class that manages the pixmaps and egl images. This is
created on demand and the images are created and destroyed
when sizes change. Since this all now occurs in the proper
thread, much of the nonsense of setting _q_GLThreadCallback
to arrange a call from the render thread is avoided.
Remove BlackBerry ifdefs that are no longer used.
Change-Id: I4bf5efa4c39c8170e3f55499c167ee10e521e100
Reviewed-by: James McDonnell <jmcdonnell@qnx.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
|
|
|
|
|
|
|
| |
- warning: unused variable 'm_renderer' [-Wunused-variable]
Change-Id: Ie7d8ebe35a3ab0beb66cda3448595ed952f7dea4
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Camera control reacts to an application becoming inactive and turns off
the camera. However, when debugging or watching internals inside an IDE
this feature breaks the state of the application as the IDE gets focus
and hence camera is turned off.
Change-Id: I6f80476592c0faa32e9da11401f699c6211d226a
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
When device watcher has been started it can have the enumerationComplete
state in addition to started. Hence only start the watcher if none of
those two states is present. This fixes an assert where starting an
already started watcher failed.
Change-Id: Idc3af256845f0993a26e8d186b499ef1c7e7dacc
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Camera control management has to happen inside the xaml thread,
otherwise the behavior is undefined. This results in ie. the first
capture not working due to synchronization issues.
When (de-)activating the videoRenderer we have to switch to the UI
thread first.
In addition add focus for Windows 10 (Mobile), previously it was compiled
for Windows Phone 8.1 only. On desktop this might return no focus mode
to be supported, but API-wise this is available.
Task-number: QTBUG-47803
Change-Id: I9b345ebc82502fc6e00aede43b9096893cd0ad53
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
| |
Change-Id: I6d823ac07950212d766905c9409469f2b1b84954
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|
|
|
|
|
|
| |
Just forwarding the content of a ComPtr is potentially dangerous.
Change-Id: I4f3dfa04a5844d299a5653e31a4a0d1e1b86f9b5
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. m_writerQueue is now shared by recorder control and asset writer
to ensure it lives long enough.
2. m_delegate->method() calls from async block can be dangerous, since by the time
this block is actually executed, delegate can be deleted already. This fix uses
Q_INVOKABLE and invokeMethod with QueuedConnection instead.
3. -finishWritingWithCompletionHandler: is async and when the block finally gets
executed, lock and 'if aborted' test are still needed.
4. Simplify the logic and reduce locking.
Change-Id: If23daf2fe22043244033427a7f6517a0fe3f23d1
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|
|
|
|
|
|
|
|
| |
__weak previously was a simple noop, but now it ends up in a compilation
error in non-ARC'ed source code ('declaration uses __weak, but ARC is disabled').
Task-number: QTBUG-52671
Change-Id: I574519f892ba1d5f71488c5cc26423d04d5e02cf
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The ALSA plugin previously didn't suspend the ALSA device when the
::suspend() method is called. This results in underrun errors when
it's resumed.
In ALSA, stopping a pcm doesn't close it, so the ALSA stop/start
functions map to the QAudioInput suspend/resume functions.
Change-Id: I2507065a1b7472af29eef70c531b9f6e8e5b3072
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
|
|
|
|
|
|
|
|
| |
It would reset the active format on the capture device. The patch
prevents that.
Change-Id: I97c192c064bf3c6ed4ba1f8d78768196927819a7
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
|
|
|
|
|
|
|
| |
When the camera is unloaded, return the requested settings.
Change-Id: If39e158cd8d0fd8d4bbd7cf6cd48226cdefc1272
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
|
|
|
|
|
|
|
|
| |
It turned out in my previous tests, that the codec which I used is
buggy and does not play well with this documented behavior.
Change-Id: I8aff9f68d449da10de4fa33073d5d5cbe9b2a281
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
When disconnecting the graph we need to make sure that all the filters
in the graph are released, even the ones that are automatically added.
Since we can't know in advance which filters the graph consists of, we
need release them one by one.
Task-number: QTBUG-49281
Change-Id: Ifdf2fb6fe1c90ab85b47565c5fe82b6ebe55b183
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
| |
Mark eglImage as not supported on VMWare since that path requires
that the image data be in GPU accessible memory which is not the
case for video
Change-Id: I2ea1ec52842adf0bc1ca39c882e6771e6a992c65
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use a switch on int instead of else if.
common\evr\evrcustompresenter.cpp: In member function 'virtual bool EVRCustomPresenter::event(QEvent*)':
common\evr\evrcustompresenter.cpp:1882:22: warning: comparison between 'enum QEvent::Type' and 'enum EVRCustomPresenter::PresenterEvents' [-Wenum-compare]
if (e->type() == StartSurface) {
^
common\evr\evrcustompresenter.cpp:1885:29: warning: comparison between 'enum QEvent::Type' and 'enum EVRCustomPresenter::PresenterEvents' [-Wenum-compare]
} else if (e->type() == StopSurface) {
^
common\evr\evrcustompresenter.cpp:1888:29: warning: comparison between 'enum QEvent::Type' and 'enum EVRCustomPresenter::PresenterEvents' [-Wenum-compare]
} else if (e->type() == PresentSample) {
Change-Id: I8533e2c6d9b0a01b7b95e1d8bb119b50d4aabd25
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
|
|
|
|
|
|
|
|
|
|
|
| |
Windowgrabber would catch events from windows that were not related to
Qt Media Playback. Now there is a check to ensure the window id to
compare against is set before assigning the window to the Windowgrabber.
Change-Id: Ic85198de5fdb05e9fa740fc7b3b81f3bdffd631d
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: James McDonnell <jmcdonnell@qnx.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
|
|
|
|
|
|
|
|
|
| |
Cross-compiling for mingw requires lowercase filenames.
Change-Id: I135deca455ca2ff6bb3969aca990fe9d1c2dd345
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
|
|\
| |
| |
| | |
Change-Id: I91fb2886b4ab8f0b9e2e28329cec69dfa2cb5435
|
| |
| |
| |
| |
| | |
Change-Id: Idb9a995c90e6e0e8be392022e2a76b4d8fea853a
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We used to change the PulseAudio sink input volume. Doing so had
some potential unwanted side effects depending on the PulseAudio server
configuration. When flat volumes were enabled, it would affect the
global system volume. It could also affect the volume of other streams
having the same audio role.
Volumes in Qt Multimedia are supposed to be relative to the application
volume and should not affect anything else than the object on which it
was changed. To guarantee that, PulseAudio volume APIs are not used
anymore. Instead, software-based volume attenuation is applied on the
audio samples before being passed to PulseAudio.
Applies to QSoundEffect, QAudioOutput and QAudioInput.
Task-number: QTBUG-40823
Task-number: QTBUG-49461
Change-Id: I690716976bda8fe666969ca2cbdf6d8d0b419733
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The QAbstractVideoSurface was started only when calling play(), causing
frames received before (e.g. when pausing from stopped state) to not
be rendered.
The surface is now started as soon as a media type is agreed between
the EVR and the upstream element. Conversely, the surface is stopped
whenever the media type is cleared.
Change-Id: Ia96a07dbd277adce67de5a9cfbf9acc0d33b6497
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Make use of SND_LIB_VERSION instead of SND_LIB_[MAJOR MINOR SUBMINOR]
in order to simplify the tests.
Task-number: QTBUG-51681
Change-Id: Ib9f28ff15ddc643cc426ded3a5779fb4ff651139
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
dshow.h needs to be included before Qt headers as they include the
windows header with NOMINMAX macro set. DirectShow header needs min/max
macro definition to compile. The min/max macro then conflicts with
QDateTime header, hence needs to be undefined again for some occasions.
Windows Embedded Compact then defines INTERFACE as macro, which conflicts.
Windows Embedded Compact does not support audio end point selection.
Feature has been disabled for this platform.
Windows Embedded Compact does not support setting meta data, control has
been disabled.
Windows Embedded Compact does not support VMR, feature was disabled.
Direct Show renders always top to buttom.
Change-Id: Id17700835e2105fb127b12e3448bea16e3b52546
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
The QAudio::UnderrunError is a normal error and is already reported
to the user.
Change-Id: I0ee5d827666fb08b5eb199255b3b3c5610f743c2
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the provided stream's length is shorter than the stream prebuf
attribute, the stream will never play. We adjust the prebuf attribute
in this case.
Change-Id: Ia397ac967ad2fa357a7aba137fbb78de272440ed
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|
| |
| |
| |
| |
| | |
Change-Id: I96bbe1343eedbad6b48579d700bbb6b5b80d69f1
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- TARGET is unnecessary if it matches the project file's basename
- CONFIG+=no_private_qt_headers_warning is added by qt_build_config.prf
- load(qt_build_config) is done by .qmake.conf
Change-Id: I3eb45a758dfee34be3c78fc13d996780741c95e9
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|
|/
|
|
|
|
|
|
| |
this fixes static builds by ensuring that all dependencies are exported.
Task-number: QTBUG-51071
Change-Id: I8e1554b648327ea2fb342b882ce8e439bd6f271d
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|
|
|
|
|
|
|
| |
Do not build audiocapture and windowsaudio for wince.
Change-Id: I2cbc7743e8f88c74be49ce85a41909653816aca7
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
|
|
|
|
|
|
|
| |
This was causing QMediaPlayer to never go into the EndOfMedia state.
Task-number: QTBUG-50814
Change-Id: I8920cf93db37a834f67b9e0b4abcf5a4934dfe0e
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
|
|\
| |
| |
| | |
Change-Id: I6d88b17f44479a522d181374023648dd007112bd
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In push mode, the state must be IdleState after resume(), and only
change to ActiveState once it receives some data.
Task-number: QTBUG-50390
Change-Id: Iaf47363196ee94b80ac4ebe58a588929af8d3fad
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In push mode, the state must be IdleState after resume(), and only
change to ActiveState once it receives some data.
Task-number: QTBUG-50390
Change-Id: Idd08d8826f00d943b3bf750524f811874e010149
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In push mode, the state must be IdleState after resume(), and only
change to ActiveState once it receives some data.
Change-Id: I8caff011f517e91629abf45af51580f24136bcea
Task-number: QTBUG-50390
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In push mode, the state must be IdleState after resume(), and only
change to ActiveState once it receives some data.
Task-number: QTBUG-50390
Change-Id: I4a38aa84a55e90d7a2db3e1d504674b2a688bbde
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In push mode, the state must be IdleState after resume(), and only
change to ActiveState once it receives some data.
Task-number: QTBUG-50390
Change-Id: I0e12f4eaff350b9423e44779f229e0e1061cf576
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Allow our GstAppSrc wrapper to be reconfigured with a new GstAppSrc
object. This is necessary because that object changes every time
playback is restarted, even for the same source. The consequence of
not allowing the reconfigure was that playback for a given qrc media
would only work the first time; any subsequent calls to play() would
not work since our wrapper wouldn't know about the new GstAppSrc object
and therefore wouldn't be able to produce any data.
Also improved management of the wrapper lifecycle.
Task-number: QTBUG-49531
Change-Id: I905afb6848cc7e9a563b4edc2c5875cdd7e53d21
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
|
|\|
| |
| |
| | |
Change-Id: I01940fe4f3d059fbb425492a1748e2b5d9b6804b
|
| |
| |
| |
| |
| |
| | |
Change-Id: I8b47d49f7a83a71a1b90ab57ee7bc3791ef59667
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|