Also, crop the screenshot image to not show any window decoration,
and fix the example \brief.
Change-Id: I86310bdc5a4f124180eac1a1d27064286ba34f59
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Added missing documentation for Camera.FlashVideoLight and corrected
it for Camera.FlashTorch.
Change-Id: Ib1823b6554bd2f9db92e047fd4755ae7fb3e0f96
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
fe13f5bb introduced a bug which could leave the active texture unit set
to GL_TEXTURE1 or GL_TEXTURE2. When the material is done updating its
state, it needs to make sure the active texture unit is reset to 0
since other materials might assume that's the current value.
Change-Id: I64a6a0cd9fcecdf0fa483909193f70045ff0e9fe
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
My last fix for iOS (4e07ff99) introduced this regression of passing
the outdated value to the native player object.
Change-Id: I01b0df8c7a0fe1382ef73b55d288a40daf024e3d
Reviewed-by: James Turner <james.turner@kdab.com>
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
In QAndroidCaptureSession::stop() we call restartViewFinder() which
eventually calls QAndroidCaptureSession::stop() again, but this time
the media recorder object is already released.
Task-number: QTBUG-45637
Change-Id: I943c423398a99d98ccda1063fc16e47cba470deb
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
- Load shader source from resource files.
- Correctly report material types: each material can use different
shaders depending on the video pixel format but it was reporting
a unique material type. This was causing the node to keep using
the same shader even if its pixel format changed.
Change-Id: Ib903ecd6e7dd1dd56d7cefe255ab7049933df17d
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
The microphone permission was always requested when using the camera,
even when not actually using the microphone, which can only happen when
recording a video. The permission request is triggered by adding an
audio AVCaptureDeviceInput to the AVCaptureSession, which was done when
setting the camera to LoadedState. This is now done when setting the
camera mode to CaptureVideo.
Task-number: QTBUG-45659
Change-Id: I3692797128cfb70ba5ccbc7a36b6955471039e80
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Use AVCaptureDevice::defaultDeviceWithMediaType instead of the first
device in the list of available devices.
Change-Id: I436921f99280a28d7158d345cd977a874cfb8968
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Replace sample buffer QVector with C array to avoid reallocations. The
resource needs to be protected, so use atomic indexes to prevent writing
into the same array element that is being read.
Task-number: QTBUG-45667
Change-Id: Ifd30dd128765ea4794fe8614f25ef596bba891ee
Reviewed-by: Andrew Knight <qt@panimo.net>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
gstreamer on Android is not supported, so we don't need to check for it.
Change-Id: I7ccde2b9878f9f435828195a5ac1b76a9a6985d1
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
The file was removed in 5c3a5cf810 but
left the description, documentation and parts of the functionality
unchanged. This change adds the camera functionality back into the
example.
Change-Id: I3bfdd95f8322796d446c571a4e074ce98e5443dd
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
Certain devices give black frames when blitting to the target texture for
image preview. However, a workaround has been found that simply mapping
the buffer forces the frames to be rendered properly. As this degrades
performance on devices with hardware buffers, a blacklist is introduced
to specify which devices require this workaround.
Task-number: QTBUG-44838
Change-Id: I137a1dc4e5126e7cf9ee00cb2d7e7722bf917efa
Reviewed-by: Andrew Knight <qt@panimo.net>
The two-state "isReady" is not enough for checking if loading was
already requested.
This also makes it abvious we're accepting load() after error.
Change-Id: I8181f99e8b36be484ec791862941b5b2ec78eb1f
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
8923c0ff fixed the list not being updated after plugging/unplugging a
camera from the system. However, it was only a partial fix affecting
only QCameraInfo::availableCameras(). DSVideoDeviceControl was still
internally keeping a list of cameras that was never updated, causing
the QCamera constructor to not take into account new or removed
cameras.
Change-Id: Ie5e79c46002017b1e85bfc53c6391a2a747361a0
Task-number: QTBUG-39708
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
QAudioDeviceInfo::isFormatSupported() now tries to open the device with
that format to theck if it is supported. We were before simply checking
that its parameters were included in the list of supported values,
which might be incomplete.
In addition, since the Windows API to check device capabilities is quite
limited, we now test additional common formats and add them to the
supported formats if the device can open them.
Task-number: QTBUG-42648
Change-Id: Idd0affbd6d91d4fd027a6a4c86c2f3fe008a118f
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Always report 8-bit PCM data as unsigned integer. Even though there's
no API to actually know that, it's standard on Windows. 8-bit is
unsigned and 16-bit is signed.
Task-number: QTBUG-45540
Change-Id: I4a3c09084de688ea7afc3bc147508184fb582224
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
The plugin was using some iOS 6 APIs, even though we're supposed to
support iOS 5.
Add version checks for all these APIs.
Task-number: QTBUG-44790
Change-Id: I9268963b7d3601222451ce0c948c2d024d37c86f
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
AVCaptureDevice has API to work with camera flash on both iOS and OS X
(quite limited on OS X though) - so camera flash control can be implemented
in AVFoundation plugin.
Task-number: QTBUG-37996
Change-Id: Ie9aaed09a709e7d09ccc1cedded93a69fea93975
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
m_sampleLoader must be destroyed AFTER releasing the buffers it holds.
Also properly release sample on error and be safer
while destroying the buffer.
Change-Id: I5e39c6c815b8760f72cc5fdc61fad020d3cd1cc1
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
Without mentioning the playType property, it is unclear for the user
not familiar with AudioEngine why there are several PlayVariation-s
binded to a single Sound element.
Also fix a simply typo.
Change-Id: Ie6b4bff759318c70c94e75797cc6991cb9b918ca
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
The exact warning is:
> deleting object of polymorphic class type which has non-virtual
destructor might cause undefined behavior
Change-Id: I8f259def3f1f7f776fb31ace9dfcc7145426f5c0
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
Maybe it's just me, but every time I try to read the "toggleMode" method
in the audio output example, I get confused on whether I'm switching to/
from push/pull mode, and even what pushing and pulling entails. The name
of the push timer also seemed backwards (which added to the confusion).
Change-Id: I5ff7d18f72490c22b91a948ad7513b402a01c5e4
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
Cameras can be dynamically added or removed on OS X. Make sure
the cache is updated often enough so QCameraInfo::availableCameras()
return an up to date list.
Task-number: QTBUG-39708
Change-Id: Id806d52278e1a29163fcc6707da7f86c0f3e7c0d
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
It was a QJSValue for the sake of being as lightweight as possible
and because we don't actually need any of the QObject features for that
type in its current state.
However, this implies that type information is not available at
runtime. This is a problem for qmlplugindump which currently crashes
because it always expects every QML type to have an associated meta
object.
We can safely make that type a QObject since it doesn't affect source
compatibility in any way. This type was bound to become a QObject at
some point anyway.
Task-number: QTBUG-44299
Change-Id: I2d9b874f15ffc94ed95ef74fadc3b1fd193fe1ef
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
It's supposed to be of type enumeration (Error) and not QString.
Change-Id: Ia3ce112efa3e87614c79b89d05313b0faa557289
Reviewed-by: Andrew Knight <qt@panimo.net>
It was the backend's responsibility to handle resource files in an
appropriate way. In practice, it was either not handled at all,
or implemented in an almost identical manner in every backend
that does handle it.
This is now dealt with in QMediaPlayer, always passing to the
backend something it will be able to play. If the backend has the
StreamPlayback capability, we pass a QFile from which it streams
the data. If it doesn't, we copy the resource to a temporary
file and pass its path to the backend.
Task-number: QTBUG-36175
Task-number: QTBUG-42263
Task-number: QTBUG-43839
Change-Id: I57b355c72692d02661baeaf74e66581ca0a0bd1d
Reviewed-by: Andrew Knight <qt@panimo.net>
Reviewed-by: Peng Wu <peng.wu@intopalo.com>
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
- Use QDebugStateSaver to restore space setting in stream operators
instead of returning dbg.space() which breaks formatting on streams
that already have nospace() set.
- Fix some single character string constants, streamline code.
Change-Id: I18ae7324b172ea801aa9b5fe56ddf6fe527fdde9
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
We need to do an early return when an AudioCategory is successfully
added to an AudioEngine, otherwise a warning is incorrectly shown.
Change-Id: If310c694a703242aff7f1c5ae04ad3e40c3f1acd
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Presenting a frame originates from a gstreamer thread, we block there
until the frame is actually presented in the main thread. The problem
is that it was presented over and over again until the gstreamer thread
was unblocked.
Make sure a given frame is presented only once.
Change-Id: I46f246740313968637add802f509ebffcc5c19b8
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
There's no good reason to do so. Backends can actually provide empty
frames, for example when flushing the pipeline or after stopping
playback.
Change-Id: I687c12b667e31b25e91c3201f59c52a8969d8e05
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
There are cases where blocking operations happening in the video sink
need to be unblocked, that's why GstBaseSink has an unlock() virtual
function. Since our custom video sink blocks when starting and when
rendering a frame (while waiting for the main thread to actually do
these operations), we need to implement the unlock() function in order
to unblock these operations when requested by GstBaseSink.
Change-Id: I5cb19ea689e655f572729d931cefec8a4266c94e
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>