| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
[ChangeLog][DirectShow] Do not convert QCamera video frames to RGB32
if provided QAbstractVideoSurface supports frame pixel format,
requested by QCameraViewfinderSettings.
Task-number: QTBUG-68768
Change-Id: I78d0aaf6c22c4bfee2b17f78a3709d7ba9a8b4fa
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Additionally to custom error messages it needs to show standard ones with
error codes.
Task-number: QTBUG-71851
Change-Id: I6504ec2417b0f686ab4e1a6902c4f00eeefcbbf2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Commit 6b19a24b581c9c changed the way that the file name is composed
for a video recording, so that a suggested extension for the given
media format is appended to the file name. That introduced a bug
in the case where the correct extension was already part of the
output location (filename) set for the sink, by causing a second
(and possibly incorrect) extension to be appended to the filename.
This commit ensures that if the filename already has a suffix, no
suggested extension is appended.
Task-number: QTBUG-65402
Change-Id: I0bedf178b7a2aeec89aeb47002e2bae563ed44cd
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Introduced QT_PA_CHANNEL_MAP env var to define one of channel mapping definitions:
ALSA = PA_CHANNEL_MAP_ALSA
AUX = PA_CHANNEL_MAP_AUX
WAVEEX = PA_CHANNEL_MAP_WAVEEX
OSS = PA_CHANNEL_MAP_OSS
and PA_CHANNEL_MAP_DEFAULT as default
Usage QT_PA_CHANNEL_MAP=AUX ./app
Also fixed a crash when the number of the channels is too high.
Task-number: QTBUG-71710
Change-Id: I45f7f7499cb7db218d5dc7d2eb7764c835abf8f7
Reviewed-by: Otto Ryynänen <otto.ryynanen@qt.io>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since bytes per line can vary and be more than width * bytes in pixel,
it should be respected in the conversion.
This issue could be observed with ANGLE and IDirect3DSurface9 surfaces.
Where IDirect3DSurface9::LockRect returns D3DLOCKED_RECT with Pitch
(number bytes in the row) higher than width * bytes in pixel.
Task-number: QTBUG-71610
Change-Id: Ic62c50382d9006b0f214626f34f2eb4fd70e8377
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Flush video frame is used to be shown when flush or stop is requested.
In case if the video frame is gl texture based just copying handle will
not copy actual data and flush frame will be always the last seen frame.
Needs to convert gl based frame to QImage and keep it in within
QVideoFrame.
Task-number: QTBUG-71610
Change-Id: I3e5aa1deb56313e6c6b97cde3e94dead6dec1b76
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since parsing of the metadata from file might take some time, and no need to block gui thread
because of it, moved the parsing to worker thread.
Also there is no need to use a synchronization in
DirectShowMetaDataControl because reading/writing of the metadata is
handled only from main thread.
In case if new media is set (from main thread) during parsing the
metadata (worker thread), it will still block the main thread before
previous parsing is finished.
Task-number: QTBUG-66526
Change-Id: Iffb23c6436639039365596725ddb54d2510d9c83
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|\| | |
| | | |
| | | |
| | | | |
Change-Id: Iab78b2e3bac2b107273068dca2d9130133486b62
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This establishes compatibility with MinGW-w64 headers 6.0
where MFVideoNormalizedRect has been added to evr.h.
Task-number: QTBUG-70630
Change-Id: I49ac49bf9eda8ea281d9da799785e56373ae8f01
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
Reviewed-by: Marius Kittler <mariuskittler@gmx.de>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Surface should be stopped to flush video frame.
Task-number: QTBUG-71610
Change-Id: I1d7b4e0c1c04ebfbf764ffc8621a7028dd88f22d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|\| | |
| | | |
| | | |
| | | | |
Change-Id: Iaf74b2b0f03af46942beaa5aa1fc61296a66ec47
|
| |\ \ \
| | | |/
| | |/|
| | | |
| | | |
| | | |
| | | | |
Conflicts:
.qmake.conf
Change-Id: I37a3664d18702159d1db44012676efd6095c7c2d
|
| | | |
| | | |
| | | |
| | | | |
Change-Id: Idd1292bc20615d2e3ad4eef6487f24c2f242c8d2
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since suddenly stopping the playback might cause popping/clicking noise,
added decreasing volume when the stop is already requested but
buffers are still available.
Task-number: QTBUG-63492
Change-Id: Id6509faeab7fef445b13c45c7f424afa65efd1ab
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Fix:
player\directshowiosource.cpp:100:22: warning: unused variable 'count' [-Wunused-variable]
static const int count = sizeof(directshow_subtypes) / sizeof(GUID);
player\directshowplayerservice.cpp: In member function 'virtual QMediaControl* DirectShowPlayerService::requestControl(const char*)':
player\directshowplayerservice.cpp:237:27: warning: 'filter' may be used uninitialized in this function [-Wmaybe-uninitialized]
setVideoOutput(filter);
Change-Id: I0a9098db182d3954d50d5b23ca00424ee691f60d
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since camerabin2 requires not empty caps (format) in gst_encoding_video_profile.
Change-Id: Iba073138321635a51c9364d54ec95707ccbc7445
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When either QSoundEffect::loadedChanged or QSoundEffect::statusChanged is emitted
QSoundEffect::play() can be called which results to call QAudioOutput::start() twice.
Added a fix to call QAudioOutput::start() only if QAudioOutput::state() is QAudio::StoppedState.
Flow trace:
1. PrivateSoundSource::sampleReady()
2. QSoundEffectPrivate::setStatus(QSoundEffect::Ready)
and emits statusChanged() or loadedChanged()
3. If there is a connection to QSoundEffect::loadedChanged/statusChanged
and QSoundEffect::play() is called there.
4. QSoundEffect::play() calls QAudioOutput::start() because sample is ready
5. QAudioOutput::start() is called again within PrivateSoundSource::sampleReady()
when QSoundEffectPrivate::setStatus exited.
Change-Id: I7ad8e9126b6006e1972356c80a7fd2e5c6a5ea04
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
GST_VIDEO_REGION_OF_INTEREST_META_INFO is available from 1.1.3
Task-number: QTBUG-64178
Change-Id: I70e99775bfa51679df387738924b7b8fabedaae0
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
To apply custom video settings it requires to reload the camera.
Task-number: QTBUG-51769
Task-number: QTBUG-69895
Change-Id: Ib01cbe8bb1d022a66c57b7f8fb9bd06ebb0393c8
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-69968
Change-Id: I241978969b655b3e716fa9cf5a91fe17f266032f
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Added flushMode property to QML VideoOutput element to define
what should be shown when flush is requested.
Takes affect only for QDeclarativeVideoRendererBackend
and when QSGVideoItemSurface is already started.
Flushing (passing empty video frame to the surface) is usually performed
when EndOfMedia or playback is stopped.
Which caused disappearing the content and blinking if playlist is used.
Using this property now possible to define
what frame (last, first or empty) should be shown when playback is stopped or finished.
By default shows empty frame (clears the video output).
To show a frame it requires to keep QVideoFrame and thus its data.
Task-number: QTBUG-37301
Task-number: QTBUG-49446
Change-Id: I3be5309217b9f543da804e3b616dee9d97fba65f
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
QMediaResource class is now deprecated and should not be used.
Task-number: QTBUG-28850
Change-Id: Ia0ed5937c548d842eb4bf686da2c24db8b100a9d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The QSoundEffect can be forced to use a specific audio output device.
This is useful on a system with multiple output devices as individual
QSoundeffects can use separate output devices.
Due to way QAudioOutput (alternate implementation behind QSoundEffect)
is implemented, QAudioDeviceInfo is used as a method of defining
the output device to be used.
Task-number: QTBUG-63596
Change-Id: Ibfb9894fec914726faee4e31c42ab08832693cf6
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: Id4521553c437efa66ad52b2e419b446184a0ec11
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Currently by default 5 wave buffers are created where each buffer
contains buffer_size/5 bytes.
If total buffer size is small enough, playing of these wave buffers might be
finished before refilling them.
Which leads crackling and another noise.
Introduced QT_WAVE_BUFFERS env var which contains number of wave
buffers. Must not be less than 5.
If number of wave buffers is big enough, it ensures that there is
always data to play.
Task-number: QTBUG-45174
Change-Id: I66bf997411f858fbff822394bb748dea2086060e
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |\|
| | |
| | |
| | | |
Change-Id: Ic398983a0a680738487476150e28593665db3fb2
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The setDataSource(Context, Uri) is used for passing a Uri that refers
to data in a content provider. Whereas the path passed here is going to
be http/rtsp instead. This fixes the warning that comes up about it not
being able to open the path provided.
Task-number: QTBUG-50539
Change-Id: I79882fb6d6a5683b6b95f8f9d4e2af86ea916831
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |\|
| | |
| | |
| | | |
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: I5c9d59ac279bb52686b4226e95131276ca5248db
|
|\| |
| | |
| | |
| | | |
Change-Id: I600b0532f154dc885913f14a5d24261c0de93893
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Qt Multimedia depends on Qt Network.
Change-Id: I5ff679bef22e1143369e3c75aa508da82fe6af9a
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Do not convert ARG32 to premultiplied. Rather interpret it as
premultiplied.
Should be better even if SSE2 is disabled.
Task-number: QTBUG-52114
Change-Id: Ic63f59dc8a940d6d73c618ef3a75b47a0950fff3
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>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-70465
Change-Id: I6af46cb8de0b40dc41aaa0b999faf68d102c7b48
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When mapping video frame, data will be downloaded to QImage from frame buffer
with QImage::Format_RGBX8888 which is XBGR32 in Little Endian.
Thus added new pixel format QVideoFrame::Format_ABGR32.
Changed QVideoFrame::Format_BGR32 to QVideoFrame::Format_ABGR32.
Task-number: QTBUG-69968
Change-Id: I0f58d1a5b5cbdb5ab48ee5ad4d75f9b62f516333
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: I7f9e1d176d5eda505b732ad02ae2126f55ec9975
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-70264
Change-Id: I41144db999c4d68c12ba8ded21092bea8b59f20e
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |\|
| | |
| | |
| | | |
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>
|