Correctly return the list of available metadata.
On Windows Vista and later, we now use shell properties to retrieve the
metadata. This allows us to get much more metadata properties.
Task-number: QTBUG-30776
Change-Id: If542756d08d832903984ef10d09c4caf410bdb1c
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
This allows to use the QAudioRecorder API on QNX (and Blackberry), using
the low-latency audio plugin as backend.
Change-Id: I9bed7c01948a40f931f2a6b29c0f5cbfc99635bd
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
When letting the plugin decide where to save the recorded media, doing
several recordings would always use the same output file instead of
creating a different one every time.
Change-Id: If352257d6c91ada8565c1463820321f84c9bb92f
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
- Possibility to select channel count
- Show audio level for unsigned integer samples
- Show audio level for each channel
- Correctly set output file location
- Update controls depending on the recorder status (rather than the state)
Change-Id: Ieb08c379bb01a11ce1aa52a9d92ea1f320c87d49
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
The title changed from Positional Audio to Qt Audio Engine.
Change-Id: Ie9901c7bc6c394c1c429a16a8a1b1c18b1a87f46
Reviewed-by: Martin Smith <martin.smith@digia.com>
-fixed \since to "\since 5.0" (Qt version 5.0)
-made a \qmlmodule page so the list of related classes are automatically
listed
-made changes in the Qt Multimedia documentation to link to the
Qt Audio Engine documentation
Change-Id: Ibdd3da02871648988a73172934e684840c4ce0ae
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
The version is not needed anymore and QDoc handles them as a different
module, causing errors.
Task-number: QTBUG-32172
Change-Id: I55054a6c7bce9e001ef03cce944b03375c851d15
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
-\qmlmodule denotes the import statement "QtMultimedia 5.0"
-\inqmlmodule shouldn't have the version number and this commits removes
it because it is confusing.
Task-number: QTBUG-32172
Change-Id: I76f58ddd5ea2d5ae51eaae83a8408fd67611838a
Reviewed-by: Martin Smith <martin.smith@digia.com>
We used to generate the capture preview from the video output, grabbing
the pixels of the last frame (in a FBO). This is not possible anymore,
we instead query the camera for a preview frame, which is in the NV21
format and needs to be converted to RGB.
Change-Id: I1c728b3a708a6f052a83aebf9f15f511eab7a02f
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Removed the overhead of having to create a shared OpenGL context in the GUI
thread and pre-render the frame into a FBO.
We now directly render the GL_TEXTURE_EXTERNAL_OES in the QtQuick render
thread, using an Android-specific QSGVideoNode.
We also use a callback from the render thread to create the texture from
there and not have to create a separate shared OpenGL context.
Change-Id: I6c8eb94b47d0a03329c912701b8af3fb5ebd1876
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Removed QGstreamerVideoOverlay and related classes. It was used as
'Window' control but performs worse than QGstreamerVideoWindow which
does basically the same thing using GStreamer ready-made components
instead.
Removed X11 dependencies and related configuration tests. It was only
needed for QGstreamerVideoOverlay.
Change-Id: I2ad2636ccf0060e56cd64f3d9e5b3c24dc75f5a3
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
This removes the Mac audio backend that was hardcoded into QtMultimedia
and adds a new audio plugin using the CoreAudio API.
Change-Id: Ib15291825f9452a3763e0eeb281d952deb0bad3d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
If an OpenGL error occurred before starting the video painter, it would
fail to do so. This patch simply makes sure the OpenGL error flag is
cleared before checking for GL errors that would occur in
QVideoSurfaceArbFpPainter's code.
Change-Id: I2eacf6db03cb290adf00a9faf11145c7a6ade565
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Those classes don't contain padding, they don't need to be packed. The
only reason to be packed was to deal with bad alignment of the WAV
file.
Since Q_PACKED wasn't present in all compilers, this might have been a
latent bug. If that was the case, then force it to happen with more
compilers.
Change-Id: I8449b6bab5d62c1b7e08b9bc205b4b149ed55e28
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
This patch includes all camera features: viewport, settings, image
capture, and video recording.
It also adds support for QAudioRecorder.
Change-Id: Ib962177cc8de4bac03f42a2bc0f534e03464bbfc
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Clang does complain about this member not being used.
Change-Id: I02919715be43486f4646ca75deea66fc8a6a2276
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
A signed 16 bit integer was being used to pack a normalised double into
half of a DWORD. It needed to be unsigned 16-bit to get the full range
of the Windows volume control.
Task-number: QTBUG-33160
Change-Id: Ic17f572a188401ee686c6e6af3984d52328ccda6
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
MM renderer expects (remote) URLs to be percent encoded.
Change-Id: Ib7429cbeb3b7aa6baba99419d8b101a712ab4881
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Enables basic software rendering support for iOS.
Change-Id: Icd29076ea627295819ede6d9680de576ba39b34e
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Previously a QGLWidget was used as a target for the
AVFVideoFrameRenderer. This was uncessary as it is possible to render
directly on top of the QWidget using the CoreAnimation Framework.
Change-Id: I08923c85fd56c8874c1d8c187ae5145e220fab92
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
This commit disables the video components of the AVFoundation
mediaplayer backend when building for iOS and enables the use of
QMediaPlayer with audio assets.
Change-Id: Iadd6f9c61ed1e656301326e90a22cbca6428b654
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
This was a leftover from Qt 4, as it is no longer possible to use the
CoreGraphics paint engine. Instead we should just use the logic in
QPainterVideoSurface render the QVideoFrame.
Change-Id: I7e97fe7c30fd478dcd405d300e0c3f70050ca25f
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
The QVideoFrame documentation explicitly says that the time is in
microseconds, however the GStreamer backend was setting the time in
milliseconds and the WMF backend in 100-nanosecond units.
With WMF, the time was missing from the QVideoFrame when presenting it to
the video surface.
Task-number: QTBUG-31731
Change-Id: I0638d2abf8eed25b3a531db67c19a18703e5b630
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
When the media is ready, the status should always transition to
LoadedMedia and then immediately to BufferingMedia or BufferedMedia.
Also, when the duration is queried before the media is ready but already
buffering, it should always return 0 to avoid errors from the Android
media player.
Task-number: QTBUG-32635
Change-Id: Ibcb9c23b4f64c4f9a1a8e0ef81989ae78cfb19ef
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Similar to de9092389f for qmlvideo.
Use QUrl::fromLocalFile() to get Windows drive handling
right. Emulate its behavior in QML code. Fix up() to terminate
correctly.
Task-number: QTBUG-32139
Change-Id: I36bafaa608ff054190dc76694f6254a74f3b513e
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
It was changing to EndOfMedia status and explicitly stopping playback
when receiving the MEEndOfPresentation event from the WMF session.
However, this event means that all data has bean read from the source but
not necessarily played yet. According to the documentation, playback is
done when the MESessionEnded event is sent. It now reports the EndOfMedia
status at that moment instead. stop() is not explicitly called anymore since
MESessionEnded also implies the session has stopped.
Task-number: QTBUG-30825
Change-Id: I6c6c09e736fe33f7cf17c75038ea7be1b5701a1c
Reviewed-by: Christian Stromme <christian.stromme@digia.com>