| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| | |
Change-Id: I70b363e614391ecce15ed55ef1267973c8b21355
|
| |
| |
| |
| |
| |
| |
| |
| | |
The lambda function is called even if the object is destroyed.
Task-number: QTBUG-70932
Change-Id: I070059bd61769a6864a2848f2b537609577769de
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Saved a copy of texture id in IMFSampleVIdeoBuffer and init it on first
call.
Task-number: QTBUG-70672
Change-Id: Iaf8ff4f3faa952846eca5a764c88e57807d4d211
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Later versions of the QNX 7.0.0 Multimedia component replace the top
level audio/video metadata with track specific audio/video metadata.
Change-Id: Ic88f23f8db9c06594da649d9e8fc4faf30acf1a0
Reviewed-by: Rafael Roquetto <rafael@roquetto.com>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-70672
Change-Id: I38c1e868dd05835489a49e6c29d9ad1a36a5f7a9
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ib2f799024b91131d33b9247dec167cae3e6adde9
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Only possible on Android API level 23 or higher.
Task-number: QTBUG-61115
Change-Id: I147575ed0a48f84d4208978a67e0856918e65b3d
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some formats or data might be unsupported and not possible to use them in glTexDirectVIVMap.
If glTexDirectVIVMap returns an error then need to upload data to memory
created by the driver using glTexDirectVIV.
If at least one such error has occurred, all next video frames will be copied via glTexDirectVIV
without trying to map again.
Task-number: QTBUG-50927
Change-Id: I0715d4b244139b8d3f49d8bd2fc905f3fd55556c
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Added camera image encoder control that
1. applies image encoder settings (resolution and codec) used to capture images
2. returns supported image codecs from
QImageWriter::supportedImageFormats
3. returns supported resolutions
Since DirectShow camera session uses QImage based on QVideoFrame
image encoder control returns viewfinder supported resolutions.
Not available if camera is not loaded.
Setting resolution via encoder control causes viewfinder resolution to be ignored.
Task-number: QTBUG-32743
Change-Id: I1de3ca9c6543937cb62f73cb64a81d23b0d5c4c9
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I0f5e9ae8180fa3492ce9002b75932c448f2c2b55
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Change state to PlayingState only when media content has been provided.
Task-number: QTBUG-70653
Task-number: QTBUG-68998
Change-Id: Iad8fc2c964ff22e90de6eb9b84c82a0950d0b1ac
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The positioning code seemed to be expecting that the video window is
created as an application window but mm-renderer creates the window
as a child when a group is specified. When the application window
isn't located in the top-left corner of the display, this
assumption produces incorrect positioning of the video window.
Contrary to what a comment in the code indicated, the video
window does not need to be parented to the application window.
Doing so just makes it difficult to determine the correct position
for the video window.
Also ensure that the video window is resized when the metadata
information doesn't contain width/height. On QNX 7.0.0, the
code may fail to resize the window because the metadata doesn't
contain the width/height information under the expected key. A
floating point divide by zero occurs with undefined results.
I'll adjust for the width/height move in a separate commit.
Change-Id: I540c1798a03b7c03a4438d0852c80e4d086009be
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Rafael Roquetto <rafael@roquetto.com>
|
|\|
| |
| |
| | |
Change-Id: I70d51b09681a77e72ecad764e37697d0a1bb85a5
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since reading from QIODevice can be reimplemented on user side,
it can call QAudioOutput::stop() which will free resources.
This will produce a crash in QPulseAudioOutput::userFeed() when it will attempt
to write buffers.
Task-number: QTBUG-69734
Change-Id: Ifa43ba52bb01bb40939730461615a9d182ffcc9b
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Fixed to provide QMediaPlayer::LoadedMedia media status
in case when play -> pause -> stop made.
- Fixed default duration -1 -> 0.
- Fixed a test because after pause() positionChanged is always emitted.
- Enabled the test.
- Increased gap between prev and curr position after pause.
Task-number: QTBUG-63517
Change-Id: I377f024d0a976f1ce802fe6740a771b7e0f2e8db
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fixed warning:
- 0 as nullptr constant
- missing override
- change of signedness
- non portable path to header file
Change-Id: I75a7d8de45099e39eb46feed2350117b2e1995c3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Unindent the code or replace by switch ()
- Smaller fixups when reindenting (nullptr, use QStringView for
comparison against wchar_t)
Change-Id: I249cb00b9ebe375b089d8d53b10c2d16d5771680
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
- Replace by range-based for
Change-Id: Ie73bf5b6e1ebd90e4db653af0791ec88b68ed883
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Replace by reinterpret_cast<>.
Change-Id: Iebcac7858d875e2d6f53db21489d86beb19ba947
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Use ' = default' for trivial constructors/destructors
- replace virtual by override or add override where applicable
- Replace trivial constructors by member initialization for simple structs
- Add Q_DISABLE_COPY where applicable
- Mark move assignment/move constructors as noexcept
- Remove unused member variables
Change-Id: I579fb69ebcd945b94de32b827d93e5a4dab4df97
Reviewed-by: Oliver Wolff <oliver.wolff@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>
|
|\|
| |
| |
| | |
Change-Id: I34d2aa9cb4a9105d5de1a3634d8282dc68ceefe1
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If play() is called before any media is set, don't change the current state
to PlayingState.
This was inconsistent with the other backends, and required an unneeded
call to stop() when a media later got set.
Task-number: QTBUG-68998
Change-Id: I8281c7bf83e36e9a80f2136ca9fc2430c55e8bd6
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I4f6a59c4b9af45bfc0a5aeec8092c0d4e8fd3b2e
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since few opengl contexts could be used at the same time,
CARenderer could use wrong context to render the video frame.
If the video surface contains an opengl context then need to use it as shared
regardless of existing of current context.
Change-Id: Ie7e87682c73c0fd341b40c05e3f3c4a70d563242
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If being used camera has been disconnected, state and status will
remain like it is still active. Also no events are sent.
Previously to fix this the camera needed to be unloaded and loaded again manually.
IMediaEvent provides an ability to catch device removal notification
with EC_DEVICE_LOST event.
Since ISampleGrabber is used to get buffers.
Added a fix to check if no buffers received for some time
afterwards check for EC_DEVICE_LOST event.
In case if the device is lost, the camera should be unloaded.
Change-Id: I3a5edf00ce8ee25d8b06800fdad833a722bdba0d
Task-number: QTBUG-68035
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Setting camera image processing parameters fails if the graph
builder is not ready.
We avoid this race condition by having a list of pending parameter
changes which is applied when graph builder has been created.
Task-number: QTBUG-69143
Change-Id: I5702ea5a2dceacff333fcf8dce05372a0208b8d9
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
A new environment variable QT_DIRECTSHOW_NO_EVR is introduced to
disable EVR, which is needed in some cases (see QTBUG-53019).
Task-number: QTBUG-53019
Change-Id: I8e39ad36d37f5e7c2da0d1fdc62dc95dda715ec0
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix compilation and link error when building the DirectShow plugin
without EVR support.
Change-Id: Ic14c4898e37739953c588e41c73e655350518457
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I9ffaa4e1a24b94196f147b94f5c0582a42829545
|
| |
| |
| |
| |
| |
| |
| |
| | |
Removed code to use AVFVideoRendererControl to avoid link error.
Task-number: QTBUG-69076
Change-Id: Iea87570fa6bb95541507d2ed84b6a1aa70984370
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
No need to configure anything if there is no video capture device.
Task-number: QTBUG-65740
Change-Id: I8de7dced14b00ab3eba560f395d7e1a4a5de1682
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I2442bd4b49e0a322c26d178fdb57d4a51b7a8835
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
By Resetting d->cameraSampleformat to Format_User when the selected
video device is changed we make QWinRTCameraVideoRendererControl
reobtain the camera sample format and size during the next call of
queueBuffer. This is needed as the new camera might have other values
for these, which might result in a white screen after a camera change.
Task-number: QTBUG-67417
Change-Id: I29e28ddf4fc278aff00ad824bda61aedad91471d
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The video output is set after it has handled this doRender() call which
means that it would report an error with the media, even though it was
renderable. This approach ensures that it does not report an error and
will correctly report as loaded in this case.
Change-Id: I6ec6abb82dcdd8f122e198ff6a765cf83931ee10
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@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>
|
|\|
| |
| |
| | |
Change-Id: If093dd2bc8e66b0ec219a3d060f227572ee8ee09
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Using apartmentthreaded model for static objects can cause not calling
destructors for global objects in shared libraries.
Task-number: QTBUG-67353
Change-Id: I1554203b1d7a48ff9f0c4d2f0d6246e445a07f46
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|\|
| |
| |
| | |
Change-Id: If607130a5ae7aaad3bd6323c2ba2beabaee4e096
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Using WAVE_MAPPER device id (which points to default device)
is not possible to get and initialize a mixer object to set volume.
Function mixerGetID() does not support WAVE_MAPPER as a device id yet.
Since we do not know device number anymore
needs to call waveInOpen() first and after that
initialize mixer controls using hWaveIn handler.
- Fixed default volume from 0.0f -> 1.0f.
- Before QWindowsAudioInput::start() is called, use cached volume.
- After QWindowsAudioInput::start(), mixer controls are initialized.
- QWindowsAudioInput::stop() deinitializes mixer controls.
Task-number: QTBUG-61920
Change-Id: I5a94dad282618fb4a2e0f75c34008ca002bd1aeb
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Seems waveOutWrite() requires WAVEHDR->dwBufferLength to be even number
otherwise some crackling might be heard while playing.
And looks like it is not related to QAudioFormat, any of it produces the
issue.
Task-number: QTBUG-64931
Change-Id: I87dbe165611325d9c0291a3bffdc091397b42741
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
The code that it was using to retrieve a parent window didn't always
get the right window. Using a private window prevents any confusion.
Change-Id: Ic368460c6bf150891ff51f1f3b00bbe93c6cf780
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: I0d6a2d60122f768b56980029b83e79f00cceb428
|