| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| | |
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>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
src/plugins/directshow/player/directshowplayerservice.cpp
Change-Id: I482098bb3c3b5b291175ca798b0d6ba61ad87d86
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since starting the surface could be done after updating the geometry of
VideoOutput element (paint event is received),
and this leads setting invalid geometry to renderer and never updates by correct one.
Because the geometry is not "dirty" anymore, means already set.
Need just to update geometry when (or keep trying before) the surface is already started with
proper video surface format.
Change-Id: I338d7fe355c20f2027c6231241714376e9b569b2
Fixes: QTBUG-76205
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In case of clearing current playlist by passing nullptr to QMediaPlayer::setPlaylist, empty url is passed to a backend:
QMediaContent m(playlist, QUrl(), false);
setMedia(m);
The status should be updated by QMediaPlayer::NoMedia if empty url is
passed.
Fixes tst_QMediaPlayerBackend::playlistObject()
Task-number: QTBUG-65574
Change-Id: Iea03e3fcb8d74c9b1b482aa06b42686cf8c9e9a7
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Moved stream types to QGstCodecsInfo and added possibility to fetch audio
or video codecs by a container. Or fetch containers by audio or video codec.
It would allow to debug supported codecs and containers:
QGstCodecsInfo containers(QGstCodecsInfo::Muxer);
QGstCodecsInfo audioCodecs(QGstCodecsInfo::AudioEncoder);
for (auto &container: containers.supportedCodecs())
qDebug() << audioCodecs.supportedCodecs(containers.supportedStreamTypes(container));
Change-Id: I26bf5579db6974a166d408c4865a9ffe314e3e15
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I9f811b4d0aadb04d3552dcd1f26a1565dfc230e2
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I5c2dadfe1154961adcecf779126166aea4d32393
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ied89175c4b7f5df090deac174b1da1e8496ee533
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I9d74355fb800234d4fbd12235b89965921027223
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ie621069a6a069905ea40541c651de6e9e038994f
|
| |
| |
| |
| |
| | |
Change-Id: Ia50ce0d2c94b3b064e9cd571e598ecd37ee2b5e3
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\ \ |
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
Change-Id: Ic700bdddc5b4ae663af0daae54feb2420c8a1730
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
GetFrameRateList passes an unmanaged pointer to the caller which must be
manually freed with CoTaskMemFree. Additionally the Chromium project
notes that some drivers cause quirky return values which we would not
catch without stricter checks. See: https://chromium.googlesource.com/chromium/src/media/+/8cc93abd7339eeb9b7c2a12cca07b3dc245b2139/video/capture/win/video_capture_device_win.cc#484
Change-Id: I6aa4a6ea1ac0241e585e98cf9ff63240bacd3956
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Fixes: QTBUG-76816
Change-Id: I2909c2f2df91ac26b5104e24892310aa62cad172
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
QSample objects live and handled in loading thread (which uses QNetworkAccessManager).
When the app is finished and going to be destroyed, all static objects are destroying as well.
In case if static QNetworkConfigurationManagerPrivate (which is used by QNetworkAccessManager)
is destroyed before static QSampleCache, and loading of the resource is not finished yet
(still executing QNetworkAccessManager::get()), this produces a crash.
Since the loading thread is started only when loading of new QSample is requested,
(and all events are also handled by this thread)
proposing a fix to wait before loading thread is finished when a sample is requested to be released.
This postpones deleting of the QSample either when new sample is requested to load
or when QSampleCache is destroyed.
This makes sure that no loading thread exists when all QSoundEffects objects
and afterwards QNetworkConfigurationManagerPrivate are already deleted.
Change-Id: I55669ea4c2796a48cae4f0465f7f74d89e393675
Fixes: QTBUG-76090
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
With newer MinGW versions we have to link against libamstrmid for the
symbols IID_IMFTopologyServiceLookupClient, IID_IMFVideoDeviceID and
IID_IMFVideoPresenter.
Fixes: QTBUG-70655
Change-Id: Ib203d991d2bd8cd63193a7319c156f30f0e8826b
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
MEDIASUBTYPE_RGB24 inverts Red and Blue channels, i.e. on Little-Endian: BGR
and thus Format_BGR24 should be used instead of Format_RGB24.
To reproduce the bug:
QCameraViewfinderSettings settings;
settings.setPixelFormat(QVideoFrame::Format_RGB24);
camera->setViewfinderSettings(settings);
If the camera supports MEDIASUBTYPE_RGB24 it will show Red and Blue
channels inverted.
*NOTE*
This fix causes ignoring MEDIASUBTYPE_RGB24 format and using
MEDUASUBTYPE_RGB32 instead.
Because the video surfaces currently do not support QVideoFrame::Format_BGR32.
So it fixes the issue with inverted colors by ignoring RGB24 media type.
If there is a need to use RGB24, it would require to implement custom
surface which supports QVideoFrame::Format_BGR24 and swap colors
manually.
Change-Id: I0d77694ef688a05dc52d13f991a5088e00f72867
Fixes: QTBUG-75959
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|/ /
| |
| |
| |
| |
| | |
Task-number: QTBUG-74391
Change-Id: I7047254fb8695feabd08eaaf02bee21a1b805917
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
Change-Id: Ieed5727ca602712ac008a876333e36ebb3dcba30
|
| |
| |
| |
| |
| |
| |
| |
| | |
error: invalid use of incomplete type 'class QGLContext'
Change-Id: I4bc9bd4231e663b187d3cef917b7a551ba614ba9
Fixes: QTBUG-76405
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Doesn't seem to be used.
Task-number: QTBUG-76521
Change-Id: Ief874765cd7b43798de3fffd15a9f691e1ac078d
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ib819180a25ceedfb072362d55d30f94e40a44f9b
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the camera has been already opened, ioctl returns EBUSY,
and this camera is not listed in available cameras.
Change-Id: I1ee6e067a3d080fe82a528f576ba13e03d5f816e
Fixes: QTBUG-76236
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| |
| |
| |
| |
| |
| | |
Fixes: QTBUG-75623
Change-Id: I9a072d1d3056f58657b8b44e9350ae3506139117
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Need to send the state if it has been applied.
Currently it happens when Recording is requested.
If Stopped is requested, the state will be changed in handleRecordingFinished callback.
Change-Id: I6911f2cebb2d1cc8a08eee17e7b91654b5d6e4c7
Fixes: QTBUG-75287
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
src/plugins/directshow/player/directshowplayerservice.cpp
Change-Id: I6b7edc312ecfadf84653ce24321ec55da41e131a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since the video output could be set after doRender(), we do not report
an error in this case.
But need to report the error when the video output has not been submitted at all.
Otherwise it hides the error and not possible to determine playback issues.
Added a fix to remember an error while rendering without the video
output and handle it if playing is requested.
That means, if it is required, the video output must be set before play() is called.
Not all medias require valid video output, but if there is an error, we
need to report about it.
Fixes tst_QMediaPlayerBackend::playlist()
Task-number: QTBUG-65574
Change-Id: I9faae19c08ad0273545bb7617ea3a11539084f1f
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Sometimes it is needed to configure udpsrc element to play a stream,
means to set some caps to GstUDPSrc element.
But currently there are no any ways to pass such caps.
Added parsing of the requested url to find "udpsrc.caps" query item
and to use it as the caps for udpsrc source element.
It allows to show streams by passing caps within url.
E.g. if the stream is created using
$ gst-launch-1.0 v4l2src ! videoconvert ! video/x-raw,format=I420,width=800,height=600 ! \
jpegenc ! rtpjpegpay ! udpsink host=127.0.0.1 port=5001
it could be shown via QMediaPlayer like:
MediaPlayer {
source: "udp://127.0.0.1:5001/?udpsrc.caps=application/x-rtp,media=video,clock-rate=90000,encoding=JPEG,payload=26"
}
Change-Id: I6f9c20c6004a34bce5fd1d0073311b7c62a8010f
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Dump dot file on play only.
Change-Id: Ide7fe0cad56f06a89604cf40b59b858c9c9d09f2
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Called deleteLater() on the bus helper to ensure the cleanup is handled gracefully.
QGstreamerBusHelperPrivate::doProcessMessage is called on a message from gst,
which it calls QGstreamerPlayerSession::processBusMessage where new media is set
and current helper object is destroyed.
When for loop is ended in doProcessMessage, current object is freed and produces a crash.
Change-Id: Ic9cde97c284406450d4723f1f7f71fa1ea2c0648
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As CoInitialize() may have been called by something else beforehand then
it should only call CoUnitialize() if it returns S_OK which indicates it
was not already called. That ensures it is only uninitalized if it did
the initialization.
Change-Id: I1b723e0b69fe5f9ff7c2c6ef083e9196f21812b2
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If wrong url is passed, no need to try it again. But report an error
instead.
Also there cannot be empty url, because if an url is empty, NoMedia
should be emitted.
Fixes tst_QMediaPlayerBackend::playlistObject()
Task-number: QTBUG-65574
Change-Id: I658b16cfe7b96c202715651d6b20d01a9af6c746
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Introduced pushing buffers from QIODevice to appsrc gstreamer element:
player->setMedia("gst-pipeline: appsrc ! ...", io_device);
Also ported to gst 0.10.
Change-Id: I1a84d22c0d5c56fe433d494413c5ab23da7c6bf3
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If QPainterVideoSurface::setGLContext(QGLContext::currentContext()) is used
and no valid paint device has been provided to QGLContext, it fails to make the context current.
Thus there might be no available current context which might also produce crashes.
QGLContext::currentContext() creates QGLContext based on current QOpenGLContext instance,
and no paint device is available in QGLContext::device() in this case.
Currently QVideoWidget and QGraphicsVideoItem are effected.
It is relevant when a renderer calls currentContext->doneCurrent() before using the QPainterVideoSurface.
After this there is no any current context which could cause a crash, e.g. within compiling the shaders.
Task-number: QTBUG-74277
Change-Id: Ia28f4f6843a82a897399fd1ce2463e3b087b6437
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When new media is set to the player, updating of "show-preroll-frame" property from the video sink
is also requested:
g_object_set(G_OBJECT(m_videoSink), "show-preroll-frame", value, NULL);
This produces emitting of a signal:
g_signal_connect(G_OBJECT(sink), "notify::show-preroll-frame", G_CALLBACK(handleShowPrerollChange), sink);
Inside handleShowPrerollChange() the state of the video sink is requested with infinite timeout:
gst_element_get_state(GST_ELEMENT(sink), &state, NULL, GST_CLOCK_TIME_NONE);
In case if the video sink performed an ASYNC state change,
means changing of the state is pending and need to wait,
this function will block up for infinite timeout.
But probably changing of the state is requested (and should be performed) on the same thread
where it is waiting for this change, it produces a deadlock.
Changing timeout to 10ms to avoid this block.
Fixes: QTBUG-72468
Change-Id: I06235ccfb8f76423f65ed192d5e8de6e60723e72
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Due to unknown bug in IMFTransform->ProcessOutput() when after seeking
sample times are not set correctly to provided IMFSample.
This causes current playback position to be not respected in video samples.
Even if you seeked to higher/lower position, sample time is always counted
from beginning.
Which makes no sense to use this feature because video frame's sample times
are not related to current position.
To test it, need just seek to arbitrary position and check how startTime
is not correlated to new position.
Fixes tst_QMediaPlayerBackend::seekPauseSeek
Task-number: QTBUG-65574
Change-Id: I897d75c055347cdcca38a84dc18f91800d070c09
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The tests expect to see updated playback position together with QMediaPlayer::BufferedMedia.
But currently QMediaPlayer::BufferedMedia is emitted before updating the
position.
Removed updating the status if the graph is already loaded but a task is still pending.
Fixes tst_QMediaPlayerBackend::seekInStoppedState
Task-number: QTBUG-65574
Change-Id: I66d214312dbf31973a13b5154a52599aa517f38c
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fixes tst_QMediaPlayerBackend::playlistObject()
Actual (currentMediaSpy.count()): 2
Expected (1) : 1
.\tst_qmediaplayerbackend.cpp(1224) : failure location
Task-number: QTBUG-65574
Change-Id: Ia7cbcb4a22ee43df9e1efff065910b084bdbf00e
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I03225f5e980a69246b046351f7d7d8e84f102ca0
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Currently it is not able to start camera without viewfinder.
For this purpose there is QAndroidCameraDataVideoOutput with SurfaceView
in order to be able to start the camera preview.
Implemented dummy QAbstractVideoSurface to render to it when no video
output is provided before starting the preview.
Task-number: QTBUG-73582
Fixes: QTBUG-73237
Change-Id: Ic76d247b5d5352e8539ba61271484e56d3a40fbd
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The application should only have one Camera object active
at a time for a particular hardware camera.
Since there is no way to determine that the camera has been already opened by
the same application, added a fix to prevent opening the camera if it
was already opened and not released.
Task-number: QTBUG-73582
Change-Id: Ide9ddea0c32489d86a613846ecf2e91ef94a776c
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If eglfs is used, then there is valid current gl context
and it has OpenGL shader programs (QGLShaderProgram::hasOpenGLShaderPrograms).
This gl context makes QPainterVideoSurface to use QVideoSurfaceGlslPainter
instead of QVideoSurfaceGenericPainter.
QOpenGLCompositorBackingStore uses QImage as a QPaintDevice.
In this case QPainter::beginNativePainting does nothing because of QRasterPaintEngine.
Since QVideoSurfaceGlslPainter is supposed to work with a gl paint engine and not with a raster one,
this prevents rendering any video content.
To work this around, view->setViewport(new QOpenGLWidget) could be used,
where QOpenGL2PaintEngineEx will be taken into account.
If platform was not eglfs, QGLContext::currentContext() could be unavailable
which made QPainterVideoSurface to use QVideoSurfaceGenericPainter
and the video was rendered correctly.
QVideoSurfaceGenericPainter should be used when the paint engine is not gl based.
Task-number: QTBUG-57836
Change-Id: Id4839facddb2494ec5abf729ea80068eb5e2af1d
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In case of EOS the state of the pipeline currently is changed to GST_STATE_NULL,
which releases some resources and it might take some time to restart the playback.
If the media should be played few times, there could be a gap between EOS and new play which can be heard.
Suggesting to set the state to GST_STATE_PAUSED instead.
If there is a need to release resources, empty QMediaContent should be set to the media player.
Change-Id: Ifa5c886abfbea037fd395b7336a5590001d4a7f7
Fixes: QTBUG-75314
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Iedfcb12f51d26843d062d443d11eef5959d1c4bd
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Currently if the application is inactive,
the state is postponed to be set and processed when the app becomes active.
This also postpones stateChanged() signal and saving the state value,
while it should be set (but not processed) immediately as done in another backends.
Added a fix to store the state and emit stateChanged regardless of
activity of the application.
When the application becames available, the state will be processed.
In case of an error while opening the camera:
- UnloadedState is emitted
- CameraError
- UnloadedStatus
Change-Id: Ie376d29366168a6b15eccea884f385070f94fe35
Task-number: QTBUG-73582
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- GstTools has some (internal) documentation, but was causing a number of
warnings with QDoc's clang parser - exclude it from the documentation
build.
- Remove direct links from example documentation to individual example
files; they no longer work.
- Fix navigation for QML types; The main QML types pages did not list
types for QtAudioEngiine.
- Use \QtMinorVersion macro to make the documented import versions
follow the minor Qt version.
- Fix \since usage to be consistent throughout.
- Fix linking issues for QML properties/methods
- Minor language fixes
Change-Id: I735cd13fa6dedd6bf06d6b6ef50ce2e0d69a545b
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
This complements 7ca4b60ab4e .
Change-Id: I119b65a77270a653ca7be293c652acd4b9df2552
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\|
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
tests/auto/integration/qdeclarativevideooutput/tst_qdeclarativevideooutput.cpp
Done-with: Val Doroshchuk <valentyn.doroshchuk@qt.io>
Change-Id: I745dd948c1e98180115f85c17bef802351bbdb6b
|