| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When stop is requested, the state becomes QMediaRecorder::StoppedState
and stateChanged() is sent immediately, also the status is changed from
QMediaRecorder::RecordingStatus to QMediaRecorder::FinalizingStatus.
But since stopping is asynchronous QMediaRecorder::StoppedState is sent before
recording has been fully finished.
When EOS is received from gstreamer and recording has been fully stopped,
the status will be changed from QMediaRecorder::FinalizingStatus to QMediaRecorder::LoadedStatus
and only in this case.
So fixed to send stateChanged(QMediaRecorder::StoppedState) right after LoadedStatus.
Task-number: QTBUG-69402
Change-Id: Ic7429a4bfea6b1f443a105a0540737072ad42de2
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\
| |
| |
| | |
Change-Id: I3a41fab753e5a06fc9f30464edf7d6626e7ae92a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
CameraBin creates default (application/ogg, video/x-theora) video profile
or sets custom defined one, but ONLY on GST_STATE_CHANGE_NULL_TO_READY.
If the camera is already loaded then it is not possible to change the video profile.
Since a video profile was never defined, video/x-theora was always used to record video.
Moved setting video profile before it gets to READY.
It fixes an issue with ignoring CameraBinRecorder::applySettings().
This also changes previous behavior when video/x-theora was always used.
To apply custom video settings it requires to use QMediaRecorder::setVideoSettings
before the camera enters the READY state.
Task-number: QTBUG-69895
Change-Id: I3afbf1f8e7c953e2e49e9cad7e96ea0b18a29d1a
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
gst_value_get_sample does not return a reference to the sample.
Should not call gst_sample_unref.
Change-Id: Ibf71e6844b5756d85aac541a68e4e4ae4eefe498
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
When either resolution or frame rates have been requested when
the camera is in unloaded state, caps might not have some values.
Change-Id: Ie935c62d02e10f762957ecd9f89255ad0e8fbd0b
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
Gstreamer implementation is located in a plugin.
In case if there is a need to use some internal features
QGstreamerPlayerControl and QGstreamerPlayerSession have been moved
from plugin to QtMultimediaGstTools library.
It allows to request media player control from QMediaService
and use it as QGstreamerPlayerControl.
Change-Id: I8e45480c4cd718b90b90d14a42bc56f6f924eae5
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
QT_GSTREAMER_CAMERABIN_VIDEOSRC can contain pipeline description
and not just one video source element.
QT_GSTREAMER_CAMERABIN_VIDEOSRC="nvcamerasrc ! nvvidconv" ./app
Task-number: QTBUG-60884
Change-Id: Iebf052a6669fd17139b78949ed0bb314f1faef65
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Need to show errors returned from QGstreamerRecorderControl.
Also if QGstreamerCaptureSession emits an error this error will be proxied to QGstreamerRecorderControl
and back to QGstreamerCaptureSession to show it.
Task-number: QTBUG-67706
Change-Id: I285a968b15a4cc8ab1e8e99e83f8dd7e2659a1d1
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Fetching caps from video source might take sometime and hang ui thread.
Currently the caps are fetched when the camera gets ready which produces a hang.
Proposed a fix to postpone fetching caps when requested and not when camera loaded.
Task-number: QTBUG-67920
Change-Id: I7734ef96c98b2c425714eacc1fd1222fd7ee5c44
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a camera is not started successfully error() signal has to be
emitted.
Added emitting an error from video source.
Emitted only first error to prevent multiple subsequent errors.
Added debug message.
Task-number: QTBUG-51825
Change-Id: I6ac936d2728213a4a64f3e4eb25ae2e2f109acca
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Actions intended to be performed by the unreachable code will never occur.
In CameraBinLocks::lockStatus(QCamera::LockType): Code block
is unreachable because of the syntactic structure of the code (CWE-561)
Coverity-Id: 188406
Change-Id: I55a7ef8e87673519ff4f1ad5677054b34bf66d17
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
| |
Change-Id: I74ffd5bafaef9ebbe7f12600ad831c8deb58ae64
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
Change-Id: I2af17ff905c26466fa1ea8b612dff3b505a3d33a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The timeout's time unit has changed between 0.10 and 1.0, from
microseconds to nanoseconds, but we were always passing the value in
microseconds. This would cause an UDP stream to always timeout with
GStreamer 1.0.
Change-Id: I69786480d29854d3a030f9dbea15c69ee89f3dd5
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\ \
| | |
| | |
| | | |
Change-Id: If65f60670bbfb011363a1b5230253805b3e63553
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This reverts commit 9caee039533168fbb546b563859770414e54fc94.
Reverted due to GST_STATE_PLAYING is never set.
Task-number: QTBUG-66196
Change-Id: I85cf47c747b1e153265f2eee6477124f4683a574
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\| |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
Change-Id: I5acdc7e0bd3729b80522dfff0f388cf2507fb111
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
Change-Id: I3d6e69f3f99b2f0a0e2c29ffdd02176e1f22304e
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Prevents building a camera source if no input device name is provided.
And emit an error immediately.
Task-number: QTBUG-64155
Change-Id: I509bee1df0acb372d26f45fd27057f8b7e141c2a
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: Icaf645e271b21320c4cb6269178d9e722092a263
|
| |\|
| | |
| | |
| | | |
Change-Id: I0e525d0cc7f4e4b776e5a536e2bf9b2c66be5429
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
|\| |
| | |
| | |
| | | |
Change-Id: Ib509a8c90dd6c7229510a400612cc27a4957d015
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
examples/multimedia/declarative-radio/view.qml
src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h
Change-Id: I97b507878b6de04ec38ddd13530e58b8f72390e4
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
|/ /
| |
| |
| |
| | |
Change-Id: I3b7601b4a97f8a2b1d2da6ef134f1577846ba713
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|/
|
|
|
|
|
|
|
|
| |
This patch moves the QGstTools lib to a private Qt module and marks
the needed classes and functions with Q_DECL*, to improve
cross-platform abilities. It's the first step to use the GStreamer
backend on macOS and Windows platform.
Change-Id: Idc23c72bcccb52dd501e169e9dfdc227856787fa
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\
| |
| |
| | |
Change-Id: I7cd203eec77f3b5689c14b81b0862c5b70bab1a6
|
| |
| |
| |
| |
| |
| |
| |
| | |
Add some common codec combinations such as MP4/H.264/AAC or with
alternative audio codecs such as MP3 or AC-3.
Change-Id: If67c68112d0f170a1391bef750e2bc8fc0d246de
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Return the duration when we're at the EndOfMedia
Task-number: QTBUG-59604
Change-Id: If057257a65d73aa456dd7dc52b6cb624dd4712d3
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Allows to set a custom audio sink to be used by the media player,
instead of the default 'autoaudiosink'.
Change-Id: I13ea93a787ba6412a42bf48ecf7d3a822060cbe4
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
src/plugins/gstreamer/camerabin/camerabincontainer.h
Change-Id: I4942d41d69112335fe0c994002f1b32ef3aad051
|
| |
| |
| |
| |
| | |
Change-Id: I2edc0a1a41d63a456ef2e87bdd1d0872dff0aee1
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
And remove many custom defines.
Change-Id: I658cc8430d1d99ed3c0aafe03a77adce76621a29
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
examples/multimediawidgets/videographicsitem/videoplayer.h
src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp
Change-Id: Id5ce05ffe2cd25657232157b162680b2e24a35ba
|
| |
| |
| |
| |
| |
| |
| |
| | |
cover art image uses "preview image". But "image" is better for
that. "preview image" will be used for thumbnail image.
Change-Id: Ic01f878f146b0369eb84e6b153fa68fbc6c54e57
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Each time a GStreamer session was created it would register the same
callback function, but each time with a new user data, which in our
case was a pointer to the session. The pointer would then be used
without verification of its validity. The problem with this is that
the typefind function is static and used for all sessions, making
multiple sessions impossible.
The documentation for gst_type_find_register() also clearly specifies
that the supplied user data needs to valid as long as the plugin is
loaded, which of course was not the case.
With this change only one callback function will be registered, and
each session will register itself with a typefind delegate, that will
keep track of sessions that are still alive.
Note: This only makes sure that the typefind function is called on
a valid session, it does not make sure that the type actually
belong to the session, which is a separate issue.
Task-number: QTBUG-50460
Change-Id: I20eeabfe4e85839e8845003298d6f64705c2e15e
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
A gchar* was never freed.
Change-Id: Ib28fee3d13839bf15a9216bdcd5da68b6d1f904c
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I61997676d7f002e769de499b19cbea3d96876480
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I17d716e366cd74226ac858669b10fa0ed28a2fad
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The typefind function was not well suited for our use-case, as it can't
be configured to work with multiple sessions. The detection of playlist
resources has also been moved into the abstraction layer; making this
implementation redundant.
Change-Id: Ife04ffe91707665a36706330f89401b49248bf91
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
src/plugins/gstreamer/mediacapture/qgstreameraudioencode.cpp
Change-Id: I7c30c2d13fdd07ee07e4449d5d3e256e988d3793
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The old check would have never triggered unless you compiled
with CONFIG+=mir by hand.
Change-Id: I1d418dce09adaedbdff366dfeb8f4036cac0f075
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I6c6f28084c6b030928eebc53c5d0009b168ede6a
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Use the new configuration system to define external
libraries, configure tests and features. Don't use
pkg-config outside of the configuration step. And
move all command line options over from qtbase, so
that we can remove them from there in a second step.
Change-Id: I1aa4b557a6aee17eeceb00602005a2d28b426a26
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
qtmultimedia.pro
src/multimedia/playback/qmediaplayer.cpp
src/plugins/directshow/directshow.pro
tests/auto/integration/qmediaplayerbackend/BLACKLIST
Change-Id: I6dacdcbb223c1d12dd72eb308a67170983c709b3
|
| | |\
| | | |
| | | |
| | | | |
Change-Id: Ib038c5e3ebb48c0e46569a35d530fa5ceaf06a32
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This makes sure all mediaStatus changes are emitted, even when some
action is done on the media player as a result of a state change.
Task-number: QTBUG-49578
Change-Id: I60153cd8e1d665797a25549ab81afcfb553ce2cc
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|