From 271f5aa2df673fb5b353230b6e64e42002ace660 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sun, 22 Sep 2013 19:44:39 -0700 Subject: [PATCH 01/18] Bump qtmultimedia version to 5.3.0 Change-Id: I7a844aebaea0a82ee22e85df97d785929b996ef9 Reviewed-by: Sergio Ahumada --- .qmake.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.qmake.conf b/.qmake.conf index 4baafa83..efd0e68f 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -1,4 +1,4 @@ load(qt_build_config) CONFIG += qt_example_installs -MODULE_VERSION = 5.2.0 +MODULE_VERSION = 5.3.0 From 957084ac1b1a1e144ce24d3884c3b01320e92fca Mon Sep 17 00:00:00 2001 From: Bernd Weimer Date: Mon, 30 Sep 2013 17:28:51 +0200 Subject: [PATCH 02/18] Added missing camera error strings On BlackBerry some camera error codes were not mapped to corresponding strings. Change-Id: I3c26f07eccc7204b89a387e83d342f6821773a1b Reviewed-by: Rafael Roquetto --- src/plugins/blackberry/camera/bbcamerasession.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/plugins/blackberry/camera/bbcamerasession.cpp b/src/plugins/blackberry/camera/bbcamerasession.cpp index 24e0a379..e7f82d5c 100644 --- a/src/plugins/blackberry/camera/bbcamerasession.cpp +++ b/src/plugins/blackberry/camera/bbcamerasession.cpp @@ -75,6 +75,8 @@ static QString errorToString(camera_error_t error) return QLatin1String("No permission"); case CAMERA_EBADR: return QLatin1String("Invalid file descriptor"); + case CAMERA_ENODATA: + return QLatin1String("Data does not exist"); case CAMERA_ENOENT: return QLatin1String("File or directory does not exists"); case CAMERA_ENOMEM: @@ -85,6 +87,8 @@ static QString errorToString(camera_error_t error) return QLatin1String("Communication timeout"); case CAMERA_EALREADY: return QLatin1String("Operation already in progress"); + case CAMERA_EBUSY: + return QLatin1String("Camera busy"); case CAMERA_ENOSPC: return QLatin1String("Disk is full"); case CAMERA_EUNINIT: @@ -95,6 +99,12 @@ static QString errorToString(camera_error_t error) return QLatin1String("Microphone in use already"); case CAMERA_EDESKTOPCAMERAINUSE: return QLatin1String("Desktop camera in use already"); + case CAMERA_EPOWERDOWN: + return QLatin1String("Camera in power down state"); + case CAMERA_3ALOCKED: + return QLatin1String("3A have been locked"); + case CAMERA_EVIEWFINDERFROZEN: + return QLatin1String("Freeze flag set"); default: return QLatin1String("Unknown error"); } From 1b563aca1a98760c9dded9e8a3d4eb726abb0ae2 Mon Sep 17 00:00:00 2001 From: Bernd Weimer Date: Tue, 15 Oct 2013 14:26:29 +0200 Subject: [PATCH 03/18] Removed camera error code Removed mapping of one camera error code to a string, because the code is not available yet in the BlackBerry NDK version 10.2. Change-Id: I91a8adc8d915e065daccb665ce7a57236b9d1545 Reviewed-by: Wolfgang Bremer Reviewed-by: Rafael Roquetto Reviewed-by: Thomas McGuire --- src/plugins/blackberry/camera/bbcamerasession.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/blackberry/camera/bbcamerasession.cpp b/src/plugins/blackberry/camera/bbcamerasession.cpp index 64a075cb..ca77138b 100644 --- a/src/plugins/blackberry/camera/bbcamerasession.cpp +++ b/src/plugins/blackberry/camera/bbcamerasession.cpp @@ -104,8 +104,8 @@ static QString errorToString(camera_error_t error) return QLatin1String("Camera in power down state"); case CAMERA_3ALOCKED: return QLatin1String("3A have been locked"); - case CAMERA_EVIEWFINDERFROZEN: - return QLatin1String("Freeze flag set"); +// case CAMERA_EVIEWFINDERFROZEN: // not yet available in 10.2 NDK +// return QLatin1String("Freeze flag set"); #endif default: return QLatin1String("Unknown error"); From 4050cdf66d06c5492f3459f8cd4defa1bf434f7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= Date: Fri, 3 Jan 2014 16:43:55 +0100 Subject: [PATCH 04/18] Fix whitespace issue in the QVideoFrame auto test. The test was failing because it was expecting a trailing whitespace directly after the serialization of the meta-data map. Change-Id: I62aa022492c721d408d23a98e8a3cfa173f45e68 Reviewed-by: Yoann Lopes --- tests/auto/unit/qvideoframe/tst_qvideoframe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/unit/qvideoframe/tst_qvideoframe.cpp b/tests/auto/unit/qvideoframe/tst_qvideoframe.cpp index 5523f297..c7dbfbe5 100644 --- a/tests/auto/unit/qvideoframe/tst_qvideoframe.cpp +++ b/tests/auto/unit/qvideoframe/tst_qvideoframe.cpp @@ -1108,7 +1108,7 @@ void tst_QVideoFrame::debug_data() QVideoFrame g7(0, QSize(320,240), 640, QVideoFrame::Format_ARGB32); g7.setStartTime(9000000000LL); g7.setMetaData("bar", 42); - QTest::newRow("more valid for long forever + metadata") << g7 << QString::fromLatin1("QVideoFrame(QSize(320, 240) , Format_ARGB32, NoHandle, NotMapped, 2:30:00.00 - forever, metaData: QMap((\"bar\", QVariant(int, 42) ) ) )"); + QTest::newRow("more valid for long forever + metadata") << g7 << QString::fromLatin1("QVideoFrame(QSize(320, 240) , Format_ARGB32, NoHandle, NotMapped, 2:30:00.00 - forever, metaData: QMap((\"bar\", QVariant(int, 42) ) ) )"); } void tst_QVideoFrame::debug() From 16aadf964dcdb71733414afdc7a548ca1ac58f97 Mon Sep 17 00:00:00 2001 From: Bernd Weimer Date: Fri, 10 Jan 2014 10:32:22 +0100 Subject: [PATCH 05/18] BlackBerry: Changed documentation Changed platform notes title to be able to reference it from elsewhere. Change-Id: I0edcebc6aa04e7a063cbe8b386ca8b38e0ae22a9 Reviewed-by: Thomas McGuire --- src/multimedia/doc/src/blackberry.qdoc | 2 +- src/multimedia/doc/src/qtmultimedia-index.qdoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/multimedia/doc/src/blackberry.qdoc b/src/multimedia/doc/src/blackberry.qdoc index 5af06365..48616a27 100644 --- a/src/multimedia/doc/src/blackberry.qdoc +++ b/src/multimedia/doc/src/blackberry.qdoc @@ -27,7 +27,7 @@ /*! \page blackberry.html -\title BlackBerry +\title Qt Multimedia on BlackBerry \brief Platform notes for the BlackBerry Platform Qt Multimedia supports BlackBerry devices that run the BB10 operating system. diff --git a/src/multimedia/doc/src/qtmultimedia-index.qdoc b/src/multimedia/doc/src/qtmultimedia-index.qdoc index 140594de..3b74b7a3 100644 --- a/src/multimedia/doc/src/qtmultimedia-index.qdoc +++ b/src/multimedia/doc/src/qtmultimedia-index.qdoc @@ -131,7 +131,7 @@ \section2 Platform Notes \list - \li \l{BlackBerry} + \li \l{Qt Multimedia on BlackBerry}{BlackBerry} \li \l{Qt Multimedia on Windows}{Windows} \endlist From 8bfd49d40fc4739be91cbe107aff9bb4c4c217af Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 24 Jan 2014 14:44:20 +0100 Subject: [PATCH 06/18] Fix MSVC-warnings about unused variable meta in tst_qdeclarativevideooutput.cpp. Change-Id: If324fd2e65acb7650b1d8dee4964a2c2bb17f876 Reviewed-by: Yoann Lopes --- .../qdeclarativevideooutput/tst_qdeclarativevideooutput.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/auto/integration/qdeclarativevideooutput/tst_qdeclarativevideooutput.cpp b/tests/auto/integration/qdeclarativevideooutput/tst_qdeclarativevideooutput.cpp index 05c507f2..fc8de1b6 100644 --- a/tests/auto/integration/qdeclarativevideooutput/tst_qdeclarativevideooutput.cpp +++ b/tests/auto/integration/qdeclarativevideooutput/tst_qdeclarativevideooutput.cpp @@ -694,16 +694,14 @@ void tst_QDeclarativeVideoOutput::contentRect_data() QRectF tst_QDeclarativeVideoOutput::invokeR2R(QObject *object, const char *signature, const QRectF &rect) { QRectF r; - const QMetaObject *meta = object->metaObject(); - meta->invokeMethod(object, signature, Q_RETURN_ARG(QRectF, r), Q_ARG(QRectF, rect)); + QMetaObject::invokeMethod(object, signature, Q_RETURN_ARG(QRectF, r), Q_ARG(QRectF, rect)); return r; } QPointF tst_QDeclarativeVideoOutput::invokeP2P(QObject *object, const char *signature, const QPointF &point) { QPointF p; - const QMetaObject *meta = object->metaObject(); - meta->invokeMethod(object, signature, Q_RETURN_ARG(QPointF, p), Q_ARG(QPointF, point)); + QMetaObject::invokeMethod(object, signature, Q_RETURN_ARG(QPointF, p), Q_ARG(QPointF, point)); return p; } From 04b7e053752be754676c2ede21f70f7a8caed0a7 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 24 Jan 2014 14:49:08 +0100 Subject: [PATCH 07/18] Fix MSVC-warnings about unsafe bool operations in tst_qcamera.cpp. qglobal.h(501) : warning C4804: '-' : unsafe use of type 'bool' in operation global/qglobal.h(501) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) tst_qcamera.cpp(507) : see reference to function template instantiation 'T qAbs(const T &)' being compiled Change-Id: Ifd467b5536a0d386f592ae339129b3ebfb7b8838 Reviewed-by: Yoann Lopes --- tests/auto/unit/qcamera/tst_qcamera.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/auto/unit/qcamera/tst_qcamera.cpp b/tests/auto/unit/qcamera/tst_qcamera.cpp index fdd282ca..248f80cc 100644 --- a/tests/auto/unit/qcamera/tst_qcamera.cpp +++ b/tests/auto/unit/qcamera/tst_qcamera.cpp @@ -504,7 +504,8 @@ void tst_QCamera::testCameraCaptureMetadata() QCOMPARE(metadata[0].toInt(), id); QCOMPARE(metadata[1].toString(), QMediaMetaData::DateTimeOriginal); QDateTime captureTime = metadata[2].value().value(); - QVERIFY(qAbs(captureTime.secsTo(QDateTime::currentDateTime()) < 5)); //it should not takes more than 5 seconds for signal to arrive here + const qint64 dt = captureTime.secsTo(QDateTime::currentDateTime()); + QVERIFY2(qAbs(dt) < 5, QByteArray::number(dt).constData()); // it should not take more than 5 seconds for signal to arrive here metadata = metadataSignal[2]; QCOMPARE(metadata[0].toInt(), id); From deaeb676eb53100c1b44f720791ed52145016b0c Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 24 Jan 2014 14:53:06 +0100 Subject: [PATCH 08/18] Fix MSVC-warning about truncation of constant in tst_qaudiobuffer.cpp. Change-Id: If9e239be38f8d15542ab9bf3a74bccf0a43b4e69 Reviewed-by: Yoann Lopes --- tests/auto/unit/qaudiobuffer/tst_qaudiobuffer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/unit/qaudiobuffer/tst_qaudiobuffer.cpp b/tests/auto/unit/qaudiobuffer/tst_qaudiobuffer.cpp index 5fbdffbc..d5e284e8 100644 --- a/tests/auto/unit/qaudiobuffer/tst_qaudiobuffer.cpp +++ b/tests/auto/unit/qaudiobuffer/tst_qaudiobuffer.cpp @@ -78,7 +78,7 @@ tst_QAudioBuffer::tst_QAudioBuffer() mFormat.setSampleRate(10000); mFormat.setCodec("audio/pcm"); - QByteArray b(4000, 0x80); + QByteArray b(4000, char(0x80)); mNull = new QAudioBuffer; mEmpty = new QAudioBuffer(500, mFormat); // 500 stereo frames of 16 bits -> 2KB mFromArray = new QAudioBuffer(b, mFormat); From b690a4d90282d2cae5d7a10739d726594d036dde Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Tue, 21 Jan 2014 16:23:41 +0100 Subject: [PATCH 09/18] Android: fix crash in QAndroidCaptureSession. Don't try to apply video recording settings until a camera is actually started. Change-Id: I5348b91669835b9d776f56a3f49e3f8a11533d15 Reviewed-by: Christian Stromme --- .../android/src/mediacapture/qandroidcapturesession.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp index 3962baba..f40ec249 100644 --- a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp +++ b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp @@ -389,7 +389,7 @@ void QAndroidCaptureSession::applySettings() } // video settings - if (m_cameraSession && m_videoSettingsDirty) { + if (m_cameraSession && m_cameraSession->camera() && m_videoSettingsDirty) { if (m_videoSettings.resolution().isEmpty()) { m_videoSettings.setResolution(m_defaultSettings.videoResolution); m_resolutionDirty = true; @@ -466,6 +466,8 @@ void QAndroidCaptureSession::onCameraOpened() qSort(m_supportedResolutions.begin(), m_supportedResolutions.end(), qt_sizeLessThan); qSort(m_supportedFramerates.begin(), m_supportedFramerates.end()); + + applySettings(); } QAndroidCaptureSession::CaptureProfile QAndroidCaptureSession::getProfile(int id) From 5980bc41cf55073e63236467466a59577d406937 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 17 Jan 2014 19:27:51 +0100 Subject: [PATCH 10/18] whitespace fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit remove trailing spaces & expand tabs. Change-Id: I05ef110abed90f13b47752760ffb4567a11a6a5e Reviewed-by: Yoann Lopes Reviewed-by: Tony Sarajärvi --- .../audiorecorder/audiorecorder.pro | 2 +- examples/multimediawidgets/camera/camera.cpp | 4 +- .../player/doc/src/player.qdoc | 16 +++--- examples/multimediawidgets/player/player.cpp | 2 +- .../videographicsitem/main.cpp | 2 +- src/gsttools/qgstreamervideowidget.cpp | 2 +- .../audio/qaudiodeviceinfo_alsa_p.cpp | 4 +- .../audio/qaudiodeviceinfo_win32_p.cpp | 24 ++++----- src/multimedia/audio/qaudioinput_win32_p.cpp | 12 ++--- src/multimedia/audio/qaudiooutput_alsa_p.cpp | 4 +- src/multimedia/audio/qaudiooutput_win32_p.cpp | 32 ++++++------ src/multimedia/controls/qcameraflashcontrol.h | 2 +- src/multimedia/controls/qcameralockscontrol.h | 2 +- .../controls/qimageencodercontrol.h | 2 +- src/multimedia/doc/src/classic.css | 50 +++++++++---------- .../qgstreamervideorenderer_p.h | 4 +- src/multimedia/playback/qmediaplayer.h | 2 +- src/multimediawidgets/qgraphicsvideoitem.h | 2 +- .../qpaintervideosurface.cpp | 2 +- src/multimediawidgets/qvideowidget.h | 4 +- src/multimediawidgets/qvideowidget_p.h | 2 +- .../directshow/camera/dscamerasession.cpp | 10 ++-- .../camera/dsvideowidgetcontrol.cpp | 4 +- .../directshow/camera/dsvideowidgetcontrol.h | 12 ++--- .../directshow/player/directshoweventloop.cpp | 2 +- .../directshow/player/directshowglobal.h | 10 ++-- .../directshow/player/directshowioreader.cpp | 2 +- .../directshow/player/directshowiosource.cpp | 6 +-- .../player/directshowmetadatacontrol.cpp | 2 +- .../player/directshowplayercontrol.h | 4 +- .../player/directshowplayerservice.cpp | 8 +-- .../player/directshowsamplescheduler.cpp | 6 +-- .../directshow/player/videosurfacefilter.cpp | 2 +- .../gstreamer/camerabin/camerabinflash.h | 2 +- .../gstreamer/camerabin/camerabinsession.h | 2 +- .../camerabin/camerabuttonlistener_meego.cpp | 2 +- .../mediaplayer/qgstreamerplayersession.cpp | 4 +- .../qt7/mediaplayer/qt7playercontrol.mm | 2 +- src/plugins/qt7/qcvdisplaylink.h | 2 +- src/plugins/qt7/qt7movierenderer.h | 4 +- src/plugins/qt7/qt7movievideowidget.h | 4 +- src/plugins/qt7/qt7movievideowidget.mm | 14 +++--- src/plugins/qt7/qt7movieviewoutput.h | 2 +- src/plugins/qt7/qt7movieviewoutput.mm | 2 +- src/plugins/qt7/qt7movieviewrenderer.mm | 2 +- src/plugins/qt7/qt7videooutput.mm | 4 +- tests/auto/unit/qcamera/tst_qcamera.cpp | 6 +-- .../tst_qgraphicsvideoitem.cpp | 6 +-- .../qmediaplaylist/tst_qmediaplaylist.cpp | 2 +- .../tst_qmediaserviceprovider.cpp | 2 +- .../qmediatimerange/tst_qmediatimerange.cpp | 4 +- .../tst_qpaintervideosurface.cpp | 6 +-- .../auto/unit/qradiotuner/tst_qradiotuner.cpp | 2 +- .../unit/qvideowidget/tst_qvideowidget.cpp | 2 +- 54 files changed, 160 insertions(+), 160 deletions(-) diff --git a/examples/multimedia/audiorecorder/audiorecorder.pro b/examples/multimedia/audiorecorder/audiorecorder.pro index 6fdc4b13..7ea4c6fe 100644 --- a/examples/multimedia/audiorecorder/audiorecorder.pro +++ b/examples/multimedia/audiorecorder/audiorecorder.pro @@ -8,7 +8,7 @@ win32:INCLUDEPATH += $$PWD HEADERS = \ audiorecorder.h \ qaudiolevel.h - + SOURCES = \ main.cpp \ audiorecorder.cpp \ diff --git a/examples/multimediawidgets/camera/camera.cpp b/examples/multimediawidgets/camera/camera.cpp index bd0644db..adb54ef5 100644 --- a/examples/multimediawidgets/camera/camera.cpp +++ b/examples/multimediawidgets/camera/camera.cpp @@ -301,7 +301,7 @@ void Camera::updateLockStatus(QCamera::LockStatus status, QCamera::LockChangeRea ui->lockButton->setText(tr("Focusing...")); break; case QCamera::Locked: - indicationColor = Qt::darkGreen; + indicationColor = Qt::darkGreen; ui->lockButton->setText(tr("Unlock")); ui->statusbar->showMessage(tr("Focused"), 2000); break; @@ -352,7 +352,7 @@ void Camera::updateCaptureMode() void Camera::updateCameraState(QCamera::State state) { - switch (state) { + switch (state) { case QCamera::ActiveState: ui->actionStartCamera->setEnabled(false); ui->actionStopCamera->setEnabled(true); diff --git a/examples/multimediawidgets/player/doc/src/player.qdoc b/examples/multimediawidgets/player/doc/src/player.qdoc index 7a723091..2dfb7c3d 100644 --- a/examples/multimediawidgets/player/doc/src/player.qdoc +++ b/examples/multimediawidgets/player/doc/src/player.qdoc @@ -71,24 +71,24 @@ slider) or the QVideoWidget object will update the other object. \code - connect(brightnessSlider, SIGNAL(sliderMoved(int)), videoWidget, + connect(brightnessSlider, SIGNAL(sliderMoved(int)), videoWidget, SLOT(setBrightness(int))); - connect(videoWidget, SIGNAL(brightnessChanged(int)), + connect(videoWidget, SIGNAL(brightnessChanged(int)), brightnessSlider, SLOT(setValue(int))); - connect(contrastSlider, SIGNAL(sliderMoved(int)), videoWidget, + connect(contrastSlider, SIGNAL(sliderMoved(int)), videoWidget, SLOT(setContrast(int))); - connect(videoWidget, SIGNAL(contrastChanged(int)), contrastSlider, + connect(videoWidget, SIGNAL(contrastChanged(int)), contrastSlider, SLOT(setValue(int))); - connect(hueSlider, SIGNAL(sliderMoved(int)), videoWidget, + connect(hueSlider, SIGNAL(sliderMoved(int)), videoWidget, SLOT(setHue(int))); - connect(videoWidget, SIGNAL(hueChanged(int)), hueSlider, + connect(videoWidget, SIGNAL(hueChanged(int)), hueSlider, SLOT(setValue(int))); - connect(saturationSlider, SIGNAL(sliderMoved(int)), videoWidget, + connect(saturationSlider, SIGNAL(sliderMoved(int)), videoWidget, SLOT(setSaturation(int))); - connect(videoWidget, SIGNAL(saturationChanged(int)), + connect(videoWidget, SIGNAL(saturationChanged(int)), saturationSlider, SLOT(setValue(int))); \endcode diff --git a/examples/multimediawidgets/player/player.cpp b/examples/multimediawidgets/player/player.cpp index 377a0ffb..843b9ecb 100644 --- a/examples/multimediawidgets/player/player.cpp +++ b/examples/multimediawidgets/player/player.cpp @@ -95,7 +95,7 @@ Player::Player(QWidget *parent) labelDuration = new QLabel(this); connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(seek(int))); - + labelHistogram = new QLabel(this); labelHistogram->setText("Histogram:"); histogram = new HistogramWidget(this); diff --git a/examples/multimediawidgets/videographicsitem/main.cpp b/examples/multimediawidgets/videographicsitem/main.cpp index 92c0b066..159ca02e 100644 --- a/examples/multimediawidgets/videographicsitem/main.cpp +++ b/examples/multimediawidgets/videographicsitem/main.cpp @@ -49,6 +49,6 @@ int main(int argc, char **argv) VideoPlayer player; player.show(); - return app.exec(); + return app.exec(); } diff --git a/src/gsttools/qgstreamervideowidget.cpp b/src/gsttools/qgstreamervideowidget.cpp index cf3bc1af..8297040c 100644 --- a/src/gsttools/qgstreamervideowidget.cpp +++ b/src/gsttools/qgstreamervideowidget.cpp @@ -100,7 +100,7 @@ QGstreamerVideoWidgetControl::QGstreamerVideoWidgetControl(QObject *parent) , m_videoSink(0) , m_widget(0) , m_fullScreen(false) -{ +{ } QGstreamerVideoWidgetControl::~QGstreamerVideoWidgetControl() diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp index d2a4eea3..bc992029 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp +++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp @@ -166,11 +166,11 @@ bool QAudioDeviceInfoInternal::open() QString shortName = device.mid(device.indexOf(QLatin1String("="),0)+1); - while(snd_card_get_name(idx,&name) == 0) { + while (snd_card_get_name(idx,&name) == 0) { if(dev.contains(QLatin1String(name))) break; idx++; - } + } dev = QString(QLatin1String("hw:%1,0")).arg(idx); #endif } diff --git a/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp index e9503d4c..548a0e9e 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp +++ b/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp @@ -344,7 +344,7 @@ void QAudioDeviceInfoInternal::updateLists() || (fmt & WAVE_FORMAT_96S08) ) { sizez.append(8); - } + } if ((fmt & WAVE_FORMAT_1M16) || (fmt & WAVE_FORMAT_1S16) || (fmt & WAVE_FORMAT_2M16) @@ -357,51 +357,51 @@ void QAudioDeviceInfoInternal::updateLists() || (fmt & WAVE_FORMAT_96S16) ) { sizez.append(16); - } + } if ((fmt & WAVE_FORMAT_1M08) || (fmt & WAVE_FORMAT_1S08) || (fmt & WAVE_FORMAT_1M16) || (fmt & WAVE_FORMAT_1S16)) { sampleRatez.append(11025); - } + } if ((fmt & WAVE_FORMAT_2M08) || (fmt & WAVE_FORMAT_2S08) || (fmt & WAVE_FORMAT_2M16) || (fmt & WAVE_FORMAT_2S16)) { sampleRatez.append(22050); - } + } if ((fmt & WAVE_FORMAT_4M08) || (fmt & WAVE_FORMAT_4S08) || (fmt & WAVE_FORMAT_4M16) || (fmt & WAVE_FORMAT_4S16)) { sampleRatez.append(44100); - } + } if ((fmt & WAVE_FORMAT_48M08) || (fmt & WAVE_FORMAT_48S08) || (fmt & WAVE_FORMAT_48M16) || (fmt & WAVE_FORMAT_48S16)) { sampleRatez.append(48000); - } + } if ((fmt & WAVE_FORMAT_96M08) || (fmt & WAVE_FORMAT_96S08) || (fmt & WAVE_FORMAT_96M16) || (fmt & WAVE_FORMAT_96S16)) { sampleRatez.append(96000); } - channelz.append(1); - channelz.append(2); + channelz.append(1); + channelz.append(2); if (mode == QAudio::AudioOutput) { channelz.append(4); channelz.append(6); channelz.append(8); } - byteOrderz.append(QAudioFormat::LittleEndian); + byteOrderz.append(QAudioFormat::LittleEndian); - typez.append(QAudioFormat::SignedInt); - typez.append(QAudioFormat::UnSignedInt); + typez.append(QAudioFormat::SignedInt); + typez.append(QAudioFormat::UnSignedInt); - codecz.append(QLatin1String("audio/pcm")); + codecz.append(QLatin1String("audio/pcm")); } if (sampleRatez.count() > 0) sampleRatez.prepend(8000); diff --git a/src/multimedia/audio/qaudioinput_win32_p.cpp b/src/multimedia/audio/qaudioinput_win32_p.cpp index 6db34adf..47818f28 100644 --- a/src/multimedia/audio/qaudioinput_win32_p.cpp +++ b/src/multimedia/audio/qaudioinput_win32_p.cpp @@ -505,7 +505,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len) deviceState = QAudio::ActiveState; emit stateChanged(deviceState); } - resuming = false; + resuming = false; } } else { l = qMin(len, waveBlocks[header].dwBytesRecorded - waveBlockOffset); @@ -523,7 +523,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len) deviceState = QAudio::ActiveState; emit stateChanged(deviceState); } - resuming = false; + resuming = false; } } else { //no data, not ready yet, next time @@ -583,7 +583,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len) mutex.unlock(); } - written+=l; + written+=l; } #ifdef DEBUG_AUDIO qDebug()<<"read in len="<(audioSource); - a->trigger(); + InputPrivate* a = qobject_cast(audioSource); + a->trigger(); } if(intervalTime && (timeStamp.elapsed() + elapsedTimeOffset) > intervalTime) { diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.cpp b/src/multimedia/audio/qaudiooutput_alsa_p.cpp index 3a779f32..c1eeaec4 100644 --- a/src/multimedia/audio/qaudiooutput_alsa_p.cpp +++ b/src/multimedia/audio/qaudiooutput_alsa_p.cpp @@ -343,11 +343,11 @@ bool QAudioOutputPrivate::open() QString shortName = QLatin1String(m_device.mid(m_device.indexOf('=',0)+1).constData()); - while(snd_card_get_name(idx,&name) == 0) { + while (snd_card_get_name(idx,&name) == 0) { if(qstrncmp(shortName.toLocal8Bit().constData(),name,shortName.length()) == 0) break; idx++; - } + } dev = QString(QLatin1String("hw:%1,0")).arg(idx); #endif } diff --git a/src/multimedia/audio/qaudiooutput_win32_p.cpp b/src/multimedia/audio/qaudiooutput_win32_p.cpp index 286cecba..dbc46fb8 100644 --- a/src/multimedia/audio/qaudiooutput_win32_p.cpp +++ b/src/multimedia/audio/qaudiooutput_win32_p.cpp @@ -153,7 +153,7 @@ void CALLBACK QAudioOutputPrivate::waveOutProc( HWAVEOUT hWaveOut, UINT uMsg, case WOM_DONE: if(qAudio->finished || qAudio->buffer_size == 0 || qAudio->period_size == 0) { return; - } + } qAudio->waveFreeBlockCount++; if(qAudio->waveFreeBlockCount >= qAudio->buffer_size/qAudio->period_size) qAudio->waveFreeBlockCount = qAudio->buffer_size/qAudio->period_size; @@ -590,28 +590,28 @@ bool QAudioOutputPrivate::deviceReady() #endif bool startup = false; if(totalTimeValue == 0) - startup = true; + startup = true; - bool full=false; + bool full=false; mutex.lock(); - if(waveFreeBlockCount==0) full = true; + if (waveFreeBlockCount==0) full = true; mutex.unlock(); - if (full){ + if (full) { #ifdef DEBUG_AUDIO qDebug() << "Skipping data as unable to write"; #endif - if((timeStamp.elapsed() + elapsedTimeOffset) > intervalTime ) { + if ((timeStamp.elapsed() + elapsedTimeOffset) > intervalTime) { emit notify(); - elapsedTimeOffset = timeStamp.elapsed() + elapsedTimeOffset - intervalTime; - timeStamp.restart(); - } - return true; - } + elapsedTimeOffset = timeStamp.elapsed() + elapsedTimeOffset - intervalTime; + timeStamp.restart(); + } + return true; + } if(startup) - waveOutPause(hWaveOut); + waveOutPause(hWaveOut); int input = period_size*chunks; int l = audioSource->read(audioBuffer,input); if(l > 0) { @@ -626,8 +626,8 @@ bool QAudioOutputPrivate::deviceReady() // Didn't write all data audioSource->seek(audioSource->pos()-(l-out)); } - if(startup) - waveOutRestart(hWaveOut); + if (startup) + waveOutRestart(hWaveOut); } else if(l == 0) { bytesAvailable = bytesFree(); @@ -654,7 +654,7 @@ bool QAudioOutputPrivate::deviceReady() int buffered; mutex.lock(); - buffered = waveFreeBlockCount; + buffered = waveFreeBlockCount; mutex.unlock(); if (buffered >= buffer_size/period_size && deviceState == QAudio::ActiveState) { @@ -670,7 +670,7 @@ bool QAudioOutputPrivate::deviceReady() if(intervalTime && (timeStamp.elapsed() + elapsedTimeOffset) > intervalTime) { emit notify(); - elapsedTimeOffset = timeStamp.elapsed() + elapsedTimeOffset - intervalTime; + elapsedTimeOffset = timeStamp.elapsed() + elapsedTimeOffset - intervalTime; timeStamp.restart(); } diff --git a/src/multimedia/controls/qcameraflashcontrol.h b/src/multimedia/controls/qcameraflashcontrol.h index c09c434f..67108b94 100644 --- a/src/multimedia/controls/qcameraflashcontrol.h +++ b/src/multimedia/controls/qcameraflashcontrol.h @@ -59,7 +59,7 @@ class Q_MULTIMEDIA_EXPORT QCameraFlashControl : public QMediaControl public: ~QCameraFlashControl(); - + virtual QCameraExposure::FlashModes flashMode() const = 0; virtual void setFlashMode(QCameraExposure::FlashModes mode) = 0; virtual bool isFlashModeSupported(QCameraExposure::FlashModes mode) const = 0; diff --git a/src/multimedia/controls/qcameralockscontrol.h b/src/multimedia/controls/qcameralockscontrol.h index 33edeb09..b03ba375 100644 --- a/src/multimedia/controls/qcameralockscontrol.h +++ b/src/multimedia/controls/qcameralockscontrol.h @@ -57,7 +57,7 @@ class Q_MULTIMEDIA_EXPORT QCameraLocksControl : public QMediaControl Q_OBJECT public: ~QCameraLocksControl(); - + virtual QCamera::LockTypes supportedLocks() const = 0; virtual QCamera::LockStatus lockStatus(QCamera::LockType lock) const = 0; diff --git a/src/multimedia/controls/qimageencodercontrol.h b/src/multimedia/controls/qimageencodercontrol.h index 1ed76fb3..6c31dbc3 100644 --- a/src/multimedia/controls/qimageencodercontrol.h +++ b/src/multimedia/controls/qimageencodercontrol.h @@ -64,7 +64,7 @@ class Q_MULTIMEDIA_EXPORT QImageEncoderControl : public QMediaControl Q_OBJECT public: - virtual ~QImageEncoderControl(); + virtual ~QImageEncoderControl(); virtual QStringList supportedImageCodecs() const = 0; virtual QString imageCodecDescription(const QString &codecName) const = 0; diff --git a/src/multimedia/doc/src/classic.css b/src/multimedia/doc/src/classic.css index b8cae8e1..59fa9dc3 100644 --- a/src/multimedia/doc/src/classic.css +++ b/src/multimedia/doc/src/classic.css @@ -34,44 +34,44 @@ hr { } table.valuelist { - border-width: 1px 1px 1px 1px; - border-style: solid; - border-color: #dddddd; - border-collapse: collapse; - background-color: #f0f0f0; + border-width: 1px 1px 1px 1px; + border-style: solid; + border-color: #dddddd; + border-collapse: collapse; + background-color: #f0f0f0; } table.indextable { - border-width: 1px 1px 1px 1px; - border-style: solid; - border-collapse: collapse; - background-color: #f0f0f0; + border-width: 1px 1px 1px 1px; + border-style: solid; + border-collapse: collapse; + background-color: #f0f0f0; border-color:#555; font-size: 100%; } table td.largeindex { - border-width: 1px 1px 1px 1px; - border-collapse: collapse; - background-color: #f0f0f0; + border-width: 1px 1px 1px 1px; + border-collapse: collapse; + background-color: #f0f0f0; border-color:#555; font-size: 120%; } table.valuelist th { - border-width: 1px 1px 1px 2px; - padding: 4px; - border-style: solid; - border-color: #666; + border-width: 1px 1px 1px 2px; + padding: 4px; + border-style: solid; + border-color: #666; color:white; background-color:#666; } th.titleheader { - border-width: 1px 0px 1px 0px; - padding: 2px; - border-style: solid; - border-color: #666; + border-width: 1px 0px 1px 0px; + padding: 2px; + border-style: solid; + border-color: #666; color:white; background-color:#555; background-image:url('images/gradient.png')}; @@ -81,10 +81,10 @@ th.titleheader { th.largeheader { - border-width: 1px 0px 1px 0px; - padding: 4px; - border-style: solid; - border-color: #444; + border-width: 1px 0px 1px 0px; + padding: 4px; + border-style: solid; + border-color: #444; color:white; background-color:#555555; font-size: 120%; @@ -143,7 +143,7 @@ table.generic, table.annotated { border-width: 1px; border-color:#bbb; - border-style:solid; + border-style:solid; border-collapse:collapse; } diff --git a/src/multimedia/gsttools_headers/qgstreamervideorenderer_p.h b/src/multimedia/gsttools_headers/qgstreamervideorenderer_p.h index 42ce913e..f09bdbd1 100644 --- a/src/multimedia/gsttools_headers/qgstreamervideorenderer_p.h +++ b/src/multimedia/gsttools_headers/qgstreamervideorenderer_p.h @@ -57,7 +57,7 @@ class QGstreamerVideoRenderer : public QVideoRendererControl, public QGstreamerV public: QGstreamerVideoRenderer(QObject *parent = 0); virtual ~QGstreamerVideoRenderer(); - + QAbstractVideoSurface *surface() const; void setSurface(QAbstractVideoSurface *surface); @@ -73,7 +73,7 @@ signals: private slots: void handleFormatChange(); -private: +private: QVideoSurfaceGstSink *m_videoSink; QPointer m_surface; }; diff --git a/src/multimedia/playback/qmediaplayer.h b/src/multimedia/playback/qmediaplayer.h index 3195ae06..454b0f17 100644 --- a/src/multimedia/playback/qmediaplayer.h +++ b/src/multimedia/playback/qmediaplayer.h @@ -150,7 +150,7 @@ public: int bufferStatus() const; bool isSeekable() const; - qreal playbackRate() const; + qreal playbackRate() const; Error error() const; QString errorString() const; diff --git a/src/multimediawidgets/qgraphicsvideoitem.h b/src/multimediawidgets/qgraphicsvideoitem.h index 6db81a55..24128d2e 100644 --- a/src/multimediawidgets/qgraphicsvideoitem.h +++ b/src/multimediawidgets/qgraphicsvideoitem.h @@ -68,7 +68,7 @@ public: QGraphicsVideoItem(QGraphicsItem *parent = 0); ~QGraphicsVideoItem(); - QMediaObject *mediaObject() const; + QMediaObject *mediaObject() const; Qt::AspectRatioMode aspectRatioMode() const; void setAspectRatioMode(Qt::AspectRatioMode mode); diff --git a/src/multimediawidgets/qpaintervideosurface.cpp b/src/multimediawidgets/qpaintervideosurface.cpp index 30ebbded..87757914 100644 --- a/src/multimediawidgets/qpaintervideosurface.cpp +++ b/src/multimediawidgets/qpaintervideosurface.cpp @@ -841,7 +841,7 @@ QAbstractVideoSurface::Error QVideoSurfaceArbFpPainter::paint( painter->fillRect(target, Qt::black); return QAbstractVideoSurface::NoError; } - + const QAbstractVideoBuffer::HandleType h = m_frame.handleType(); if (h == QAbstractVideoBuffer::NoHandle || h == QAbstractVideoBuffer::GLTextureHandle) { bool stencilTestEnabled = glIsEnabled(GL_STENCIL_TEST); diff --git a/src/multimediawidgets/qvideowidget.h b/src/multimediawidgets/qvideowidget.h index ec71bb6c..77e9d75d 100644 --- a/src/multimediawidgets/qvideowidget.h +++ b/src/multimediawidgets/qvideowidget.h @@ -67,9 +67,9 @@ class Q_MULTIMEDIAWIDGETS_EXPORT QVideoWidget : public QWidget, public QMediaBin public: QVideoWidget(QWidget *parent = 0); - ~QVideoWidget(); + ~QVideoWidget(); - QMediaObject *mediaObject() const; + QMediaObject *mediaObject() const; #ifdef Q_QDOC bool isFullScreen() const; diff --git a/src/multimediawidgets/qvideowidget_p.h b/src/multimediawidgets/qvideowidget_p.h index a7412202..b6023599 100644 --- a/src/multimediawidgets/qvideowidget_p.h +++ b/src/multimediawidgets/qvideowidget_p.h @@ -230,7 +230,7 @@ public: QVideoWidgetPrivate() : q_ptr(0) , mediaObject(0) - , service(0) + , service(0) , widgetBackend(0) , windowBackend(0) , rendererBackend(0) diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp index cc1594fe..6b474e89 100644 --- a/src/plugins/directshow/camera/dscamerasession.cpp +++ b/src/plugins/directshow/camera/dscamerasession.cpp @@ -81,7 +81,7 @@ public: STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) { - if (NULL == ppvObject) + if (NULL == ppvObject) return E_POINTER; if (riid == IID_IUnknown /*__uuidof(IUnknown) */ ) { *ppvObject = static_cast(this); @@ -380,9 +380,9 @@ QSize DSCameraSession::frameSize() const void DSCameraSession::setFrameSize(const QSize& s) { - if (supportedResolutions(pixelF).contains(s)) + if (supportedResolutions(pixelF).contains(s)) m_windowSize = s; - else + else qWarning() << "frame size if not supported for current pixel format, no change"; } @@ -465,8 +465,8 @@ void DSCameraSession::setPixelFormat(QVideoFrame::PixelFormat fmt) QList DSCameraSession::supportedResolutions(QVideoFrame::PixelFormat format) { - if (!resolutions.contains(format)) - return QList(); + if (!resolutions.contains(format)) + return QList(); return resolutions.value(format); } diff --git a/src/plugins/directshow/camera/dsvideowidgetcontrol.cpp b/src/plugins/directshow/camera/dsvideowidgetcontrol.cpp index fde9f554..35b79554 100644 --- a/src/plugins/directshow/camera/dsvideowidgetcontrol.cpp +++ b/src/plugins/directshow/camera/dsvideowidgetcontrol.cpp @@ -120,7 +120,7 @@ DSVideoWidgetControl::DSVideoWidgetControl(DSCameraSession* session, QObject *pa m_widget->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); m_widget->setAlignment(Qt::AlignCenter); m_widget->setAttribute(Qt::WA_NoSystemBackground, true); - + surface = new DSVideoWidgetSurface(m_widget); QPalette palette; @@ -157,7 +157,7 @@ bool DSVideoWidgetControl::eventFilter(QObject *object, QEvent *e) case QEvent::PolishRequest: m_widget->ensurePolished(); break; - + default: // Do nothing break; diff --git a/src/plugins/directshow/camera/dsvideowidgetcontrol.h b/src/plugins/directshow/camera/dsvideowidgetcontrol.h index ac40fbd7..2a8775ae 100644 --- a/src/plugins/directshow/camera/dsvideowidgetcontrol.h +++ b/src/plugins/directshow/camera/dsvideowidgetcontrol.h @@ -82,15 +82,15 @@ class DSVideoWidgetSurface : public QAbstractVideoSurface class DSVideoWidgetControl : public QVideoWidgetControl { Q_OBJECT - + DSVideoWidgetSurface* surface; public: // Constructor & Destructor - + DSVideoWidgetControl(DSCameraSession* session, QObject *parent = 0); virtual ~DSVideoWidgetControl(); public: // QVideoWidgetControl - + QWidget *videoWidget(); // Aspect Ratio @@ -118,10 +118,10 @@ public: // QVideoWidgetControl void setSaturation(int saturation); public: // Internal - + bool eventFilter(QObject *object, QEvent *event); - -/* + +/* Q_SIGNALS: // QVideoWidgetControl void fullScreenChanged(bool fullScreen); diff --git a/src/plugins/directshow/player/directshoweventloop.cpp b/src/plugins/directshow/player/directshoweventloop.cpp index 74f210b9..a8726edd 100644 --- a/src/plugins/directshow/player/directshoweventloop.cpp +++ b/src/plugins/directshow/player/directshoweventloop.cpp @@ -94,7 +94,7 @@ void DirectShowEventLoop::wait(QMutex *mutex) HANDLE handles[] = { m_eventHandle, m_waitHandle }; while (::WaitForMultipleObjects(2, handles, false, INFINITE) == WAIT_OBJECT_0) processEvents(); - + mutex->lock(); } diff --git a/src/plugins/directshow/player/directshowglobal.h b/src/plugins/directshow/player/directshowglobal.h index b604a8d0..f2a7fef0 100644 --- a/src/plugins/directshow/player/directshowglobal.h +++ b/src/plugins/directshow/player/directshowglobal.h @@ -76,7 +76,7 @@ DECLARE_INTERFACE_(IFilterGraph2 ,IGraphBuilder) STDMETHOD(ReconnectEx)(THIS_ IPin *, const AM_MEDIA_TYPE *) PURE; STDMETHOD(RenderEx)(IPin *, DWORD, DWORD *) PURE; }; -#undef INTERFACE +#undef INTERFACE #endif #ifndef __IAMFilterMiscFlags_INTERFACE_DEFINED__ @@ -89,7 +89,7 @@ DECLARE_INTERFACE_(IAMFilterMiscFlags ,IUnknown) STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD_(ULONG,GetMiscFlags)(THIS) PURE; }; -#undef INTERFACE +#undef INTERFACE #endif #ifndef __IFileSourceFilter_INTERFACE_DEFINED__ @@ -103,7 +103,7 @@ DECLARE_INTERFACE_(IFileSourceFilter ,IUnknown) STDMETHOD(Load)(THIS_ LPCOLESTR, const AM_MEDIA_TYPE *) PURE; STDMETHOD(GetCurFile)(THIS_ LPOLESTR *ppszFileName, AM_MEDIA_TYPE *) PURE; }; -#undef INTERFACE +#undef INTERFACE #endif #ifndef __IAMOpenProgress_INTERFACE_DEFINED__ @@ -117,7 +117,7 @@ DECLARE_INTERFACE_(IAMOpenProgress ,IUnknown) STDMETHOD(QueryProgress)(THIS_ LONGLONG *, LONGLONG *) PURE; STDMETHOD(AbortOperation)(THIS) PURE; }; -#undef INTERFACE +#undef INTERFACE #endif #ifndef __IFilterChain_INTERFACE_DEFINED__ @@ -133,7 +133,7 @@ DECLARE_INTERFACE_(IFilterChain ,IUnknown) STDMETHOD(StopChain)(IBaseFilter *, IBaseFilter *) PURE; STDMETHOD(RemoveChain)(IBaseFilter *, IBaseFilter *) PURE; }; -#undef INTERFACE +#undef INTERFACE #endif #endif diff --git a/src/plugins/directshow/player/directshowioreader.cpp b/src/plugins/directshow/player/directshowioreader.cpp index c0ea4ebb..38928f1a 100644 --- a/src/plugins/directshow/player/directshowioreader.cpp +++ b/src/plugins/directshow/player/directshowioreader.cpp @@ -259,7 +259,7 @@ HRESULT DirectShowIOReader::SyncReadAligned(IMediaSample *pSample) if (SUCCEEDED(hr)) pSample->SetActualDataLength(bytesRead); - + return hr; } else { m_synchronousPosition = position; diff --git a/src/plugins/directshow/player/directshowiosource.cpp b/src/plugins/directshow/player/directshowiosource.cpp index f382b3b9..acce1de2 100644 --- a/src/plugins/directshow/player/directshowiosource.cpp +++ b/src/plugins/directshow/player/directshowiosource.cpp @@ -336,7 +336,7 @@ HRESULT DirectShowIOSource::Connect(IPin *pReceivePin, const AM_MEDIA_TYPE *pmt) return VFW_E_NOT_STOPPED; } else if (m_peerPin) { return VFW_E_ALREADY_CONNECTED; - } else { + } else { HRESULT hr = VFW_E_TYPE_NOT_ACCEPTED; m_peerPin = pReceivePin; @@ -424,7 +424,7 @@ HRESULT DirectShowIOSource::tryConnect(IPin *pin, const AM_MEDIA_TYPE *type) || m_allocator->GetProperties(&properties) == S_OK) { if (properties.cbAlign == 0) properties.cbAlign = 1; - + ALLOCATOR_PROPERTIES actualProperties; if (SUCCEEDED(hr = m_allocator->SetProperties(&properties, &actualProperties))) hr = memPin->NotifyAllocator(m_allocator, TRUE); @@ -435,7 +435,7 @@ HRESULT DirectShowIOSource::tryConnect(IPin *pin, const AM_MEDIA_TYPE *type) } } memPin->Release(); - } + } if (!SUCCEEDED(hr)) pin->Disconnect(); } diff --git a/src/plugins/directshow/player/directshowmetadatacontrol.cpp b/src/plugins/directshow/player/directshowmetadatacontrol.cpp index d60bce31..51d9574b 100644 --- a/src/plugins/directshow/player/directshowmetadatacontrol.cpp +++ b/src/plugins/directshow/player/directshowmetadatacontrol.cpp @@ -255,7 +255,7 @@ static QVariant getValue(IWMHeaderInfo *header, const wchar_t *key) WORD word; if (header->GetAttributeByName( &streamNumber, - key, + key, &type, reinterpret_cast(&word), &size) == S_OK) { diff --git a/src/plugins/directshow/player/directshowplayercontrol.h b/src/plugins/directshow/player/directshowplayercontrol.h index 17593716..478389de 100644 --- a/src/plugins/directshow/player/directshowplayercontrol.h +++ b/src/plugins/directshow/player/directshowplayercontrol.h @@ -79,7 +79,7 @@ public: bool isVideoAvailable() const; bool isSeekable() const; - + QMediaTimeRange availablePlaybackRanges() const; qreal playbackRate() const; @@ -140,7 +140,7 @@ private: bool m_seekable; QMediaContent m_media; QString m_errorString; - + }; #endif diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp index 9d74be59..0afeacb8 100644 --- a/src/plugins/directshow/player/directshowplayerservice.cpp +++ b/src/plugins/directshow/player/directshowplayerservice.cpp @@ -563,7 +563,7 @@ void DirectShowPlayerService::releaseGraph() } m_graph->Abort(); } - + m_pendingTasks = ReleaseGraph; ::SetEvent(m_taskHandle); @@ -803,7 +803,7 @@ void DirectShowPlayerService::doStop(QMutexLocker *locker) m_pendingTasks |= Seek; m_executedTasks &= ~(Play | Pause); - + QCoreApplication::postEvent(this, new QEvent(QEvent::Type(StatusChange))); } @@ -852,7 +852,7 @@ void DirectShowPlayerService::doSetRate(QMutexLocker *locker) seeking->Release(); } else if (m_rate != 1.0) { - m_rate = 1.0; + m_rate = 1.0; } QCoreApplication::postEvent(this, new QEvent(QEvent::Type(RateChange))); } @@ -980,7 +980,7 @@ void DirectShowPlayerService::setAudioOutput(IBaseFilter *filter) m_loop->wait(&m_mutex); } m_audioOutput->Release(); - } + } m_audioOutput = filter; diff --git a/src/plugins/directshow/player/directshowsamplescheduler.cpp b/src/plugins/directshow/player/directshowsamplescheduler.cpp index 36aefa04..2f61784a 100644 --- a/src/plugins/directshow/player/directshowsamplescheduler.cpp +++ b/src/plugins/directshow/player/directshowsamplescheduler.cpp @@ -308,10 +308,10 @@ void DirectShowSampleScheduler::run(REFERENCE_TIME startTime) for (DirectShowTimedSample *sample = m_head; sample; sample = sample->nextSample()) { sample->schedule(m_clock, m_startTime, m_timeoutEvent); } - + if (!(m_state & Flushing)) ::ResetEvent(m_flushEvent); - + if (!m_head) ::SetEvent(m_timeoutEvent); @@ -338,7 +338,7 @@ void DirectShowSampleScheduler::stop() for (DirectShowTimedSample *sample = m_head; sample; sample = sample->remove()) { sample->unschedule(m_clock); - + m_semaphore.release(1); } diff --git a/src/plugins/directshow/player/videosurfacefilter.cpp b/src/plugins/directshow/player/videosurfacefilter.cpp index b8a775bb..b6cc232a 100644 --- a/src/plugins/directshow/player/videosurfacefilter.cpp +++ b/src/plugins/directshow/player/videosurfacefilter.cpp @@ -81,7 +81,7 @@ VideoSurfaceFilter::~VideoSurfaceFilter() } HRESULT VideoSurfaceFilter::QueryInterface(REFIID riid, void **ppvObject) -{ +{ // 2dd74950-a890-11d1-abe8-00a0c905f375 static const GUID iid_IAmFilterMiscFlags = { 0x2dd74950, 0xa890, 0x11d1, {0xab, 0xe8, 0x00, 0xa0, 0xc9, 0x05, 0xf3, 0x75} }; diff --git a/src/plugins/gstreamer/camerabin/camerabinflash.h b/src/plugins/gstreamer/camerabin/camerabinflash.h index d94b4a87..f5484101 100644 --- a/src/plugins/gstreamer/camerabin/camerabinflash.h +++ b/src/plugins/gstreamer/camerabin/camerabinflash.h @@ -66,7 +66,7 @@ public: bool isFlashReady() const; private: - CameraBinSession *m_session; + CameraBinSession *m_session; }; QT_END_NAMESPACE diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.h b/src/plugins/gstreamer/camerabin/camerabinsession.h index dab8d84c..5f66dc74 100644 --- a/src/plugins/gstreamer/camerabin/camerabinsession.h +++ b/src/plugins/gstreamer/camerabin/camerabinsession.h @@ -113,7 +113,7 @@ public: void setCaptureMode(QCamera::CaptureModes mode); QUrl outputLocation() const; - bool setOutputLocation(const QUrl& sink); + bool setOutputLocation(const QUrl& sink); QDir defaultDir(QCamera::CaptureModes mode) const; QString generateFileName(const QString &prefix, const QDir &dir, const QString &ext) const; diff --git a/src/plugins/gstreamer/camerabin/camerabuttonlistener_meego.cpp b/src/plugins/gstreamer/camerabin/camerabuttonlistener_meego.cpp index c49539df..2e66360a 100644 --- a/src/plugins/gstreamer/camerabin/camerabuttonlistener_meego.cpp +++ b/src/plugins/gstreamer/camerabin/camerabuttonlistener_meego.cpp @@ -65,7 +65,7 @@ CameraButtonListener::~CameraButtonListener() void CameraButtonListener::handleQmKeyEvent(MeeGo::QmKeys::Key key, MeeGo::QmKeys::State state) { if (key == MeeGo::QmKeys::Camera) { - QWidget *window = QApplication::focusWidget(); + QWidget *window = QApplication::focusWidget(); bool focusPressed = (state == MeeGo::QmKeys::KeyHalfDown) || (state == MeeGo::QmKeys::KeyDown); diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp index d61e6a01..da612018 100644 --- a/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp +++ b/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp @@ -491,7 +491,7 @@ void QGstreamerPlayerSession::setVideoRenderer(QObject *videoOutput) } } - QGstreamerVideoRendererInterface* renderer = qobject_cast(videoOutput); + QGstreamerVideoRendererInterface* renderer = qobject_cast(videoOutput); m_renderer = renderer; @@ -646,7 +646,7 @@ void QGstreamerPlayerSession::finishVideoOutputChange() m_pendingVideoSink = 0; gst_object_unref(GST_OBJECT(srcPad)); return; - } + } if (m_usingColorspaceElement) { gst_element_set_state(m_colorSpace, GST_STATE_NULL); diff --git a/src/plugins/qt7/mediaplayer/qt7playercontrol.mm b/src/plugins/qt7/mediaplayer/qt7playercontrol.mm index c987f695..c4866077 100644 --- a/src/plugins/qt7/mediaplayer/qt7playercontrol.mm +++ b/src/plugins/qt7/mediaplayer/qt7playercontrol.mm @@ -51,7 +51,7 @@ QT_USE_NAMESPACE QT7PlayerControl::QT7PlayerControl(QObject *parent) : QMediaPlayerControl(parent) -{ +{ } QT7PlayerControl::~QT7PlayerControl() diff --git a/src/plugins/qt7/qcvdisplaylink.h b/src/plugins/qt7/qcvdisplaylink.h index 2d4809c4..f59cc92b 100644 --- a/src/plugins/qt7/qcvdisplaylink.h +++ b/src/plugins/qt7/qcvdisplaylink.h @@ -73,7 +73,7 @@ public: protected: virtual bool event(QEvent *); - + private: CVDisplayLinkRef m_displayLink; QMutex m_displayLinkMutex; diff --git a/src/plugins/qt7/qt7movierenderer.h b/src/plugins/qt7/qt7movierenderer.h index aed39ad9..bdc7c526 100644 --- a/src/plugins/qt7/qt7movierenderer.h +++ b/src/plugins/qt7/qt7movierenderer.h @@ -80,7 +80,7 @@ public: private Q_SLOTS: void updateVideoFrame(const CVTimeStamp &ts); - + private: void setupVideoOutput(); bool createPixelBufferVisualContext(); @@ -92,7 +92,7 @@ private: QCvDisplayLink *m_displayLink; #ifdef QUICKTIME_C_API_AVAILABLE - QTVisualContextRef m_visualContext; + QTVisualContextRef m_visualContext; bool m_usingGLContext; const QGLContext *m_currentGLContext; QSize m_pixelBufferContextGeometry; diff --git a/src/plugins/qt7/qt7movievideowidget.h b/src/plugins/qt7/qt7movievideowidget.h index fd0c3d07..cd61869f 100644 --- a/src/plugins/qt7/qt7movievideowidget.h +++ b/src/plugins/qt7/qt7movievideowidget.h @@ -95,7 +95,7 @@ public: private Q_SLOTS: void updateVideoFrame(const CVTimeStamp &ts); - + private: void setupVideoOutput(); bool createVisualContext(); @@ -108,7 +108,7 @@ private: QCvDisplayLink *m_displayLink; #ifdef QUICKTIME_C_API_AVAILABLE - QTVisualContextRef m_visualContext; + QTVisualContextRef m_visualContext; #endif bool m_fullscreen; diff --git a/src/plugins/qt7/qt7movievideowidget.mm b/src/plugins/qt7/qt7movievideowidget.mm index 11f2ad32..ec9367bc 100644 --- a/src/plugins/qt7/qt7movievideowidget.mm +++ b/src/plugins/qt7/qt7movievideowidget.mm @@ -76,7 +76,7 @@ public: m_nativeSize(640,480), m_aspectRatioMode(Qt::KeepAspectRatio) { - setAutoFillBackground(false); + setAutoFillBackground(false); } void initializeGL() @@ -151,7 +151,7 @@ public: void setNativeSize(const QSize &size) { - m_nativeSize = size; + m_nativeSize = size; } void setAspectRatioMode(Qt::AspectRatioMode mode) @@ -184,8 +184,8 @@ private: QT7MovieVideoWidget::QT7MovieVideoWidget(QObject *parent) :QT7VideoWidgetControl(parent), - m_movie(0), - m_videoWidget(0), + m_movie(0), + m_videoWidget(0), m_fullscreen(false), m_aspectRatioMode(Qt::KeepAspectRatio), m_brightness(0), @@ -325,7 +325,7 @@ bool QT7MovieVideoWidget::isFullScreen() const void QT7MovieVideoWidget::setFullScreen(bool fullScreen) { - m_fullscreen = fullScreen; + m_fullscreen = fullScreen; } QSize QT7MovieVideoWidget::nativeSize() const @@ -341,7 +341,7 @@ Qt::AspectRatioMode QT7MovieVideoWidget::aspectRatioMode() const void QT7MovieVideoWidget::setAspectRatioMode(Qt::AspectRatioMode mode) { m_aspectRatioMode = mode; - m_videoWidget->setAspectRatioMode(mode); + m_videoWidget->setAspectRatioMode(mode); } int QT7MovieVideoWidget::brightness() const @@ -410,7 +410,7 @@ void QT7MovieVideoWidget::updateColors() void QT7MovieVideoWidget::updateVideoFrame(const CVTimeStamp &ts) { #ifdef QUICKTIME_C_API_AVAILABLE - AutoReleasePool pool; + AutoReleasePool pool; // check for new frame if (m_visualContext && QTVisualContextIsNewImageAvailable(m_visualContext, &ts)) { CVOpenGLTextureRef currentFrame = NULL; diff --git a/src/plugins/qt7/qt7movieviewoutput.h b/src/plugins/qt7/qt7movieviewoutput.h index ea3d248f..2e3ed2c7 100644 --- a/src/plugins/qt7/qt7movieviewoutput.h +++ b/src/plugins/qt7/qt7movieviewoutput.h @@ -91,7 +91,7 @@ public: int saturation() const; void setSaturation(int saturation); - + private: void setupVideoOutput(); diff --git a/src/plugins/qt7/qt7movieviewoutput.mm b/src/plugins/qt7/qt7movieviewoutput.mm index c6a2bbaf..4fcf01d3 100644 --- a/src/plugins/qt7/qt7movieviewoutput.mm +++ b/src/plugins/qt7/qt7movieviewoutput.mm @@ -166,7 +166,7 @@ QT7MovieViewOutput::QT7MovieViewOutput(QObject *parent) m_contrast(0), m_hue(0), m_saturation(0) -{ +{ } QT7MovieViewOutput::~QT7MovieViewOutput() diff --git a/src/plugins/qt7/qt7movieviewrenderer.mm b/src/plugins/qt7/qt7movieviewrenderer.mm index 0e1571f9..a5903157 100644 --- a/src/plugins/qt7/qt7movieviewrenderer.mm +++ b/src/plugins/qt7/qt7movieviewrenderer.mm @@ -278,7 +278,7 @@ QT7MovieViewRenderer::QT7MovieViewRenderer(QObject *parent) m_fbo(0), m_ciContext(0), m_pendingRenderEvent(false) -{ +{ } QT7MovieViewRenderer::~QT7MovieViewRenderer() diff --git a/src/plugins/qt7/qt7videooutput.mm b/src/plugins/qt7/qt7videooutput.mm index 6c657c27..53486c4e 100644 --- a/src/plugins/qt7/qt7videooutput.mm +++ b/src/plugins/qt7/qt7videooutput.mm @@ -47,10 +47,10 @@ QT_USE_NAMESPACE /* QT7VideoOutputControl::QT7VideoOutputControl(QObject *parent) - :QVideoOutputControl(parent), + :QVideoOutputControl(parent), m_session(0), m_output(QVideoOutputControl::NoOutput) -{ +{ } QT7VideoOutputControl::~QT7VideoOutputControl() diff --git a/tests/auto/unit/qcamera/tst_qcamera.cpp b/tests/auto/unit/qcamera/tst_qcamera.cpp index 248f80cc..8c72acb8 100644 --- a/tests/auto/unit/qcamera/tst_qcamera.cpp +++ b/tests/auto/unit/qcamera/tst_qcamera.cpp @@ -274,7 +274,7 @@ void tst_QCamera::testSimpleCameraExposure() cameraExposure->setAutoShutterSpeed(); QVERIFY(cameraExposure->shutterSpeed() < 0); cameraExposure->setManualShutterSpeed(1/128.0); - QVERIFY(cameraExposure->shutterSpeed() < 0); + QVERIFY(cameraExposure->shutterSpeed() < 0); } void tst_QCamera::testSimpleCameraFocus() @@ -292,7 +292,7 @@ void tst_QCamera::testSimpleCameraFocus() QCOMPARE(cameraFocus->focusMode(), QCameraFocus::AutoFocus); QTest::ignoreMessage(QtWarningMsg, "Focus mode selection is not supported"); cameraFocus->setFocusMode(QCameraFocus::ContinuousFocus); - QCOMPARE(cameraFocus->focusMode(), QCameraFocus::AutoFocus); + QCOMPARE(cameraFocus->focusMode(), QCameraFocus::AutoFocus); QCOMPARE(cameraFocus->maximumOpticalZoom(), 1.0); QCOMPARE(cameraFocus->maximumDigitalZoom(), 1.0); @@ -459,7 +459,7 @@ void tst_QCamera::testCameraCapture() QVERIFY(!imageCapture.isReadyForCapture()); - QSignalSpy capturedSignal(&imageCapture, SIGNAL(imageCaptured(int,QImage))); + QSignalSpy capturedSignal(&imageCapture, SIGNAL(imageCaptured(int,QImage))); QSignalSpy errorSignal(&imageCapture, SIGNAL(error(int, QCameraImageCapture::Error,QString))); imageCapture.capture(QString::fromLatin1("/dev/null")); diff --git a/tests/auto/unit/qgraphicsvideoitem/tst_qgraphicsvideoitem.cpp b/tests/auto/unit/qgraphicsvideoitem/tst_qgraphicsvideoitem.cpp index b5db1597..88935221 100644 --- a/tests/auto/unit/qgraphicsvideoitem/tst_qgraphicsvideoitem.cpp +++ b/tests/auto/unit/qgraphicsvideoitem/tst_qgraphicsvideoitem.cpp @@ -271,7 +271,7 @@ void tst_QGraphicsVideoItem::serviceDestroyed() object.testService = 0; delete service; - + QCOMPARE(item.mediaObject(), static_cast(&object)); QVERIFY(item.boundingRect().isEmpty()); } @@ -330,7 +330,7 @@ void tst_QGraphicsVideoItem::setMediaObject() } void tst_QGraphicsVideoItem::show() -{ +{ QtTestVideoObject object(new QtTestRendererControl); QtTestGraphicsVideoItem *item = new QtTestGraphicsVideoItem; object.bind(item); @@ -630,7 +630,7 @@ void tst_QGraphicsVideoItem::paint() QtTestVideoObject object(new QtTestRendererControl); QtTestGraphicsVideoItem *item = new QtTestGraphicsVideoItem; object.bind(item); - + QGraphicsScene graphicsScene; graphicsScene.addItem(item); QGraphicsView graphicsView(&graphicsScene); diff --git a/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp b/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp index aa8645d5..7aa8d7a5 100644 --- a/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp +++ b/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp @@ -560,7 +560,7 @@ void tst_QMediaPlaylist::readOnlyPlaylist() buffer.seek(0); QSignalSpy errorSignal(&playlist, SIGNAL(loadFailed())); - playlist.load(&buffer, "m3u"); + playlist.load(&buffer, "m3u"); QCOMPARE(errorSignal.size(), 1); QCOMPARE(playlist.error(), QMediaPlaylist::AccessDeniedError); QVERIFY(!playlist.errorString().isEmpty()); diff --git a/tests/auto/unit/qmediaserviceprovider/tst_qmediaserviceprovider.cpp b/tests/auto/unit/qmediaserviceprovider/tst_qmediaserviceprovider.cpp index 9057e63c..e39070d5 100644 --- a/tests/auto/unit/qmediaserviceprovider/tst_qmediaserviceprovider.cpp +++ b/tests/auto/unit/qmediaserviceprovider/tst_qmediaserviceprovider.cpp @@ -96,7 +96,7 @@ void tst_QMediaServiceProvider::initTestCase() void tst_QMediaServiceProvider::testDefaultProviderAvailable() { - // Must always be a default provider available + // Must always be a default provider available QVERIFY(QMediaServiceProvider::defaultServiceProvider() != 0); } diff --git a/tests/auto/unit/qmediatimerange/tst_qmediatimerange.cpp b/tests/auto/unit/qmediatimerange/tst_qmediatimerange.cpp index 227c41a1..d90f38b4 100644 --- a/tests/auto/unit/qmediatimerange/tst_qmediatimerange.cpp +++ b/tests/auto/unit/qmediatimerange/tst_qmediatimerange.cpp @@ -269,7 +269,7 @@ void tst_QMediaTimeRange::testEarliestLatest() } void tst_QMediaTimeRange::testContains() -{ +{ // Test over a single interval QMediaTimeRange x(10, 20); @@ -282,7 +282,7 @@ void tst_QMediaTimeRange::testContains() // Test over multiple intervals x.addInterval(40, 50); - + QVERIFY(!x.isEmpty()); QVERIFY(!x.isContinuous()); QVERIFY(x.contains(15)); diff --git a/tests/auto/unit/qpaintervideosurface/tst_qpaintervideosurface.cpp b/tests/auto/unit/qpaintervideosurface/tst_qpaintervideosurface.cpp index 2f615271..18371456 100644 --- a/tests/auto/unit/qpaintervideosurface/tst_qpaintervideosurface.cpp +++ b/tests/auto/unit/qpaintervideosurface/tst_qpaintervideosurface.cpp @@ -102,7 +102,7 @@ public: { glGenTextures(1, &m_textureId); } - + ~QtTestGLVideoBuffer() { glDeleteTextures(1, &m_textureId); @@ -114,7 +114,7 @@ public: uchar *map(MapMode, int *, int *) { return 0; } void unmap() {} - MapMode mapMode() const { return NotMapped; } + MapMode mapMode() const { return NotMapped; } private: GLuint m_textureId; @@ -131,7 +131,7 @@ public: uchar *map(MapMode, int *, int *) { return 0; } void unmap() {} - MapMode mapMode() const { return NotMapped; } + MapMode mapMode() const { return NotMapped; } }; void tst_QPainterVideoSurface::colors() diff --git a/tests/auto/unit/qradiotuner/tst_qradiotuner.cpp b/tests/auto/unit/qradiotuner/tst_qradiotuner.cpp index d14077af..01085e20 100644 --- a/tests/auto/unit/qradiotuner/tst_qradiotuner.cpp +++ b/tests/auto/unit/qradiotuner/tst_qradiotuner.cpp @@ -112,7 +112,7 @@ void tst_QRadioTuner::initTestCase() QSignalSpy stateSpy(radio, SIGNAL(stateChanged(QRadioTuner::State))); - QCOMPARE(radio->state(), QRadioTuner::StoppedState); + QCOMPARE(radio->state(), QRadioTuner::StoppedState); radio->start(); QVERIFY(radio->availability() == QMultimedia::Available); QCOMPARE(radio->state(), QRadioTuner::ActiveState); diff --git a/tests/auto/unit/qvideowidget/tst_qvideowidget.cpp b/tests/auto/unit/qvideowidget/tst_qvideowidget.cpp index 15cff99d..c6c9bc11 100644 --- a/tests/auto/unit/qvideowidget/tst_qvideowidget.cpp +++ b/tests/auto/unit/qvideowidget/tst_qvideowidget.cpp @@ -799,7 +799,7 @@ void tst_QVideoWidget::aspectRatioRendererControl() void tst_QVideoWidget::sizeHint_data() { QTest::addColumn("size"); - + QTest::newRow("720x576") << QSize(720, 576); } From 0ab81ef59f35d103ec8174834c4fc2a4dcced453 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Thu, 30 Jan 2014 16:32:53 +0100 Subject: [PATCH 11/18] Alsa: fix crash when detecting devices. Some old versions of Alsa crash when snd_device_name_hint(-1, ...) is called. This patch works around the problem by iterating manually over all the available sound cards. Change-Id: Ic380a371acc15013d137553ff30d68bed5af664e Reviewed-by: Christian Stromme --- src/gsttools/qgstreameraudioinputselector.cpp | 45 ++++---- .../audio/qaudiodeviceinfo_alsa_p.cpp | 107 +++++++++--------- 2 files changed, 80 insertions(+), 72 deletions(-) diff --git a/src/gsttools/qgstreameraudioinputselector.cpp b/src/gsttools/qgstreameraudioinputselector.cpp index dcab762a..02d3e568 100644 --- a/src/gsttools/qgstreameraudioinputselector.cpp +++ b/src/gsttools/qgstreameraudioinputselector.cpp @@ -119,33 +119,36 @@ void QGstreamerAudioInputSelector::updateAlsaDevices() { #ifdef HAVE_ALSA void **hints, **n; - if (snd_device_name_hint(-1, "pcm", &hints) < 0) { - qWarning()<<"no alsa devices available"; - return; - } - n = hints; + int card = -1; - while (*n != NULL) { - char *name = snd_device_name_get_hint(*n, "NAME"); - char *descr = snd_device_name_get_hint(*n, "DESC"); - char *io = snd_device_name_get_hint(*n, "IOID"); + while (snd_card_next(&card) == 0 && card >= 0) { + if (snd_device_name_hint(card, "pcm", &hints) < 0) + continue; - if ((name != NULL) && (descr != NULL)) { - if ( io == NULL || qstrcmp(io,"Input") == 0 ) { - m_names.append(QLatin1String("alsa:")+QString::fromUtf8(name)); - m_descriptions.append(QString::fromUtf8(descr)); + n = hints; + while (*n != NULL) { + char *name = snd_device_name_get_hint(*n, "NAME"); + char *descr = snd_device_name_get_hint(*n, "DESC"); + char *io = snd_device_name_get_hint(*n, "IOID"); + + if ((name != NULL) && (descr != NULL)) { + if ( io == NULL || qstrcmp(io,"Input") == 0 ) { + m_names.append(QLatin1String("alsa:")+QString::fromUtf8(name)); + m_descriptions.append(QString::fromUtf8(descr)); + } } + + if (name != NULL) + free(name); + if (descr != NULL) + free(descr); + if (io != NULL) + free(io); + ++n; } - if (name != NULL) - free(name); - if (descr != NULL) - free(descr); - if (io != NULL) - free(io); - n++; + snd_device_name_free_hint(hints); } - snd_device_name_free_hint(hints); #endif } diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp index bc992029..bd8fa894 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp +++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp @@ -345,14 +345,9 @@ QList QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode) #if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) // Create a list of all current audio devices that support mode - void **hints, **n; + void **hints; char *name, *descr, *io; - - if(snd_device_name_hint(-1, "pcm", &hints) < 0) { - qWarning() << "no alsa devices available"; - return devices; - } - n = hints; + int card = -1; if(mode == QAudio::AudioInput) { filter = "Input"; @@ -360,28 +355,35 @@ QList QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode) filter = "Output"; } - while (*n != NULL) { - name = snd_device_name_get_hint(*n, "NAME"); - if (name != 0 && qstrcmp(name, "null") != 0) { - descr = snd_device_name_get_hint(*n, "DESC"); - io = snd_device_name_get_hint(*n, "IOID"); + while (snd_card_next(&card) == 0 && card >= 0) { + if (snd_device_name_hint(card, "pcm", &hints) < 0) + continue; - if ((descr != NULL) && ((io == NULL) || (io == filter))) { - QString deviceName = QLatin1String(name); - QString deviceDescription = QLatin1String(descr); - if (deviceDescription.contains(QLatin1String("Default Audio Device"))) - devices.prepend(deviceName.toLocal8Bit().constData()); - else - devices.append(deviceName.toLocal8Bit().constData()); + void **n = hints; + while (*n != NULL) { + name = snd_device_name_get_hint(*n, "NAME"); + if (name != 0 && qstrcmp(name, "null") != 0) { + descr = snd_device_name_get_hint(*n, "DESC"); + io = snd_device_name_get_hint(*n, "IOID"); + + if ((descr != NULL) && ((io == NULL) || (io == filter))) { + QString deviceName = QLatin1String(name); + QString deviceDescription = QLatin1String(descr); + if (deviceDescription.contains(QLatin1String("Default Audio Device"))) + devices.prepend(deviceName.toLocal8Bit().constData()); + else + devices.append(deviceName.toLocal8Bit().constData()); + } + + free(descr); + free(io); } - - free(descr); - free(io); + free(name); + ++n; } - free(name); - ++n; + + snd_device_name_free_hint(hints); } - snd_device_name_free_hint(hints); #else int idx = 0; char* name; @@ -422,38 +424,41 @@ void QAudioDeviceInfoInternal::checkSurround() surround51 = false; surround71 = false; - void **hints, **n; + void **hints; char *name, *descr, *io; + int card = -1; - if(snd_device_name_hint(-1, "pcm", &hints) < 0) - return; + while (snd_card_next(&card) == 0 && card >= 0) { + if (snd_device_name_hint(card, "pcm", &hints) < 0) + continue; - n = hints; - - while (*n != NULL) { - name = snd_device_name_get_hint(*n, "NAME"); - descr = snd_device_name_get_hint(*n, "DESC"); - io = snd_device_name_get_hint(*n, "IOID"); - if((name != NULL) && (descr != NULL)) { - QString deviceName = QLatin1String(name); - if (mode == QAudio::AudioOutput) { - if(deviceName.contains(QLatin1String("surround40"))) - surround40 = true; - if(deviceName.contains(QLatin1String("surround51"))) - surround51 = true; - if(deviceName.contains(QLatin1String("surround71"))) - surround71 = true; + void **n = hints; + while (*n != NULL) { + name = snd_device_name_get_hint(*n, "NAME"); + descr = snd_device_name_get_hint(*n, "DESC"); + io = snd_device_name_get_hint(*n, "IOID"); + if((name != NULL) && (descr != NULL)) { + QString deviceName = QLatin1String(name); + if (mode == QAudio::AudioOutput) { + if(deviceName.contains(QLatin1String("surround40"))) + surround40 = true; + if(deviceName.contains(QLatin1String("surround51"))) + surround51 = true; + if(deviceName.contains(QLatin1String("surround71"))) + surround71 = true; + } } + if(name != NULL) + free(name); + if(descr != NULL) + free(descr); + if(io != NULL) + free(io); + ++n; } - if(name != NULL) - free(name); - if(descr != NULL) - free(descr); - if(io != NULL) - free(io); - ++n; + + snd_device_name_free_hint(hints); } - snd_device_name_free_hint(hints); } QT_END_NAMESPACE From 2d54da2d39217e7b21ccafa9594513d554352a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= Date: Sat, 23 Nov 2013 00:14:15 +0100 Subject: [PATCH 12/18] Move win32 and Alsa audio backends into plugins. Change-Id: I9835cf5ee97900569f26421a19543b485e933051 Reviewed-by: Yoann Lopes --- src/multimedia/audio/audio.pri | 18 ---- src/multimedia/audio/qaudiodevicefactory.cpp | 55 +------------ src/plugins/alsa/alsa.json | 3 + src/plugins/alsa/alsa.pro | 23 ++++++ .../alsa/qalsaaudiodeviceinfo.cpp} | 40 ++++----- .../alsa/qalsaaudiodeviceinfo.h} | 19 ++--- .../alsa/qalsaaudioinput.cpp} | 76 ++++++++--------- .../alsa/qalsaaudioinput.h} | 16 ++-- .../alsa/qalsaaudiooutput.cpp} | 82 +++++++++---------- .../alsa/qalsaaudiooutput.h} | 21 ++--- src/plugins/alsa/qalsaplugin.cpp | 74 +++++++++++++++++ src/plugins/alsa/qalsaplugin.h | 67 +++++++++++++++ src/plugins/plugins.pro | 13 +-- .../windowsaudio/qwindowsaudiodeviceinfo.cpp} | 38 ++++----- .../windowsaudio/qwindowsaudiodeviceinfo.h} | 16 ++-- .../windowsaudio/qwindowsaudioinput.cpp} | 77 +++++++++-------- .../windowsaudio/qwindowsaudioinput.h} | 21 +++-- .../windowsaudio/qwindowsaudiooutput.cpp} | 72 ++++++++-------- .../windowsaudio/qwindowsaudiooutput.h} | 23 +++--- .../windowsaudio/qwindowsaudioplugin.cpp | 74 +++++++++++++++++ .../windowsaudio/qwindowsaudioplugin.h | 67 +++++++++++++++ src/plugins/windowsaudio/windowsaudio.json | 3 + src/plugins/windowsaudio/windowsaudio.pro | 23 ++++++ 23 files changed, 589 insertions(+), 332 deletions(-) create mode 100644 src/plugins/alsa/alsa.json create mode 100644 src/plugins/alsa/alsa.pro rename src/{multimedia/audio/qaudiodeviceinfo_alsa_p.cpp => plugins/alsa/qalsaaudiodeviceinfo.cpp} (91%) rename src/{multimedia/audio/qaudiodeviceinfo_alsa_p.h => plugins/alsa/qalsaaudiodeviceinfo.h} (90%) rename src/{multimedia/audio/qaudioinput_alsa_p.cpp => plugins/alsa/qalsaaudioinput.cpp} (93%) rename src/{multimedia/audio/qaudioinput_alsa_p.h => plugins/alsa/qalsaaudioinput.h} (93%) rename src/{multimedia/audio/qaudiooutput_alsa_p.cpp => plugins/alsa/qalsaaudiooutput.cpp} (92%) rename src/{multimedia/audio/qaudiooutput_alsa_p.h => plugins/alsa/qalsaaudiooutput.h} (92%) create mode 100644 src/plugins/alsa/qalsaplugin.cpp create mode 100644 src/plugins/alsa/qalsaplugin.h rename src/{multimedia/audio/qaudiodeviceinfo_win32_p.cpp => plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp} (92%) rename src/{multimedia/audio/qaudiodeviceinfo_win32_p.h => plugins/windowsaudio/qwindowsaudiodeviceinfo.h} (90%) rename src/{multimedia/audio/qaudioinput_win32_p.cpp => plugins/windowsaudio/qwindowsaudioinput.cpp} (92%) rename src/{multimedia/audio/qaudioinput_win32_p.h => plugins/windowsaudio/qwindowsaudioinput.h} (92%) rename src/{multimedia/audio/qaudiooutput_win32_p.cpp => plugins/windowsaudio/qwindowsaudiooutput.cpp} (92%) rename src/{multimedia/audio/qaudiooutput_win32_p.h => plugins/windowsaudio/qwindowsaudiooutput.h} (91%) create mode 100644 src/plugins/windowsaudio/qwindowsaudioplugin.cpp create mode 100644 src/plugins/windowsaudio/qwindowsaudioplugin.h create mode 100644 src/plugins/windowsaudio/windowsaudio.json create mode 100644 src/plugins/windowsaudio/windowsaudio.pro diff --git a/src/multimedia/audio/audio.pri b/src/multimedia/audio/audio.pri index 6fad6604..96cfb1ce 100644 --- a/src/multimedia/audio/audio.pri +++ b/src/multimedia/audio/audio.pri @@ -39,17 +39,8 @@ SOURCES += \ audio/qaudiodecoder.cpp \ audio/qaudiohelpers.cpp -win32 { - PRIVATE_HEADERS += audio/qaudioinput_win32_p.h audio/qaudiooutput_win32_p.h audio/qaudiodeviceinfo_win32_p.h - SOURCES += audio/qaudiodeviceinfo_win32_p.cpp \ - audio/qaudiooutput_win32_p.cpp \ - audio/qaudioinput_win32_p.cpp - LIBS_PRIVATE += -lwinmm -lstrmiids -lole32 -loleaut32 -} - unix:!mac { config_pulseaudio { - DEFINES += QT_NO_AUDIO_BACKEND CONFIG += link_pkgconfig PKGCONFIG_PRIVATE += libpulse @@ -61,15 +52,6 @@ unix:!mac { DEFINES += QT_MULTIMEDIA_QAUDIO PRIVATE_HEADERS += audio/qsoundeffect_qaudio_p.h SOURCES += audio/qsoundeffect_qaudio_p.cpp - - config_alsa { - DEFINES += HAS_ALSA - PRIVATE_HEADERS += audio/qaudiooutput_alsa_p.h audio/qaudioinput_alsa_p.h audio/qaudiodeviceinfo_alsa_p.h - SOURCES += audio/qaudiodeviceinfo_alsa_p.cpp \ - audio/qaudiooutput_alsa_p.cpp \ - audio/qaudioinput_alsa_p.cpp - LIBS_PRIVATE += -lasound - } } } else { DEFINES += QT_MULTIMEDIA_QAUDIO diff --git a/src/multimedia/audio/qaudiodevicefactory.cpp b/src/multimedia/audio/qaudiodevicefactory.cpp index e2d4ec3e..a36ab393 100644 --- a/src/multimedia/audio/qaudiodevicefactory.cpp +++ b/src/multimedia/audio/qaudiodevicefactory.cpp @@ -47,18 +47,6 @@ #include "qmediapluginloader_p.h" #include "qaudiodevicefactory_p.h" -#ifndef QT_NO_AUDIO_BACKEND -#if defined(Q_OS_WIN) -#include "qaudiodeviceinfo_win32_p.h" -#include "qaudiooutput_win32_p.h" -#include "qaudioinput_win32_p.h" -#elif defined(HAS_ALSA) -#include "qaudiodeviceinfo_alsa_p.h" -#include "qaudiooutput_alsa_p.h" -#include "qaudioinput_alsa_p.h" -#endif -#endif - QT_BEGIN_NAMESPACE #if !defined (QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS) @@ -132,13 +120,6 @@ public: QList QAudioDeviceFactory::availableDevices(QAudio::Mode mode) { QList devices; -#ifndef QT_NO_AUDIO_BACKEND -#if (defined(Q_OS_WIN) || defined(HAS_ALSA)) - foreach (const QByteArray &handle, QAudioDeviceInfoInternal::availableDevices(mode)) - devices << QAudioDeviceInfo(QLatin1String("builtin"), handle, mode); -#endif -#endif - #if !defined (QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS) QMediaPluginLoader* l = audioLoader(); foreach (const QString& key, l->keys()) { @@ -165,11 +146,6 @@ QAudioDeviceInfo QAudioDeviceFactory::defaultInputDevice() } #endif -#ifndef QT_NO_AUDIO_BACKEND -#if (defined(Q_OS_WIN) || defined(HAS_ALSA)) - return QAudioDeviceInfo(QLatin1String("builtin"), QAudioDeviceInfoInternal::defaultInputDevice(), QAudio::AudioInput); -#endif -#endif return QAudioDeviceInfo(); } @@ -185,11 +161,6 @@ QAudioDeviceInfo QAudioDeviceFactory::defaultOutputDevice() } #endif -#ifndef QT_NO_AUDIO_BACKEND -#if (defined(Q_OS_WIN) || defined(HAS_ALSA)) - return QAudioDeviceInfo(QLatin1String("builtin"), QAudioDeviceInfoInternal::defaultOutputDevice(), QAudio::AudioOutput); -#endif -#endif return QAudioDeviceInfo(); } @@ -197,13 +168,6 @@ QAbstractAudioDeviceInfo* QAudioDeviceFactory::audioDeviceInfo(const QString &re { QAbstractAudioDeviceInfo *rc = 0; -#ifndef QT_NO_AUDIO_BACKEND -#if (defined(Q_OS_WIN) || defined(HAS_ALSA)) - if (realm == QLatin1String("builtin")) - return new QAudioDeviceInfoInternal(handle, mode); -#endif -#endif - #if !defined (QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS) QAudioSystemFactoryInterface* plugin = qobject_cast(audioLoader()->instance(realm)); @@ -229,15 +193,7 @@ QAbstractAudioInput* QAudioDeviceFactory::createInputDevice(QAudioDeviceInfo con { if (deviceInfo.isNull()) return new QNullInputDevice(); -#ifndef QT_NO_AUDIO_BACKEND -#if (defined(Q_OS_WIN) || defined(HAS_ALSA)) - if (deviceInfo.realm() == QLatin1String("builtin")) { - QAbstractAudioInput* p = new QAudioInputPrivate(deviceInfo.handle()); - if (p) p->setFormat(format); - return p; - } -#endif -#endif + #if !defined (QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS) QAudioSystemFactoryInterface* plugin = qobject_cast(audioLoader()->instance(deviceInfo.realm())); @@ -256,15 +212,6 @@ QAbstractAudioOutput* QAudioDeviceFactory::createOutputDevice(QAudioDeviceInfo c { if (deviceInfo.isNull()) return new QNullOutputDevice(); -#ifndef QT_NO_AUDIO_BACKEND -#if (defined(Q_OS_WIN) || defined(HAS_ALSA)) - if (deviceInfo.realm() == QLatin1String("builtin")) { - QAbstractAudioOutput* p = new QAudioOutputPrivate(deviceInfo.handle()); - if (p) p->setFormat(format); - return p; - } -#endif -#endif #if !defined (QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS) QAudioSystemFactoryInterface* plugin = diff --git a/src/plugins/alsa/alsa.json b/src/plugins/alsa/alsa.json new file mode 100644 index 00000000..c2b22dfe --- /dev/null +++ b/src/plugins/alsa/alsa.json @@ -0,0 +1,3 @@ +{ + "Keys": ["alsa"] +} diff --git a/src/plugins/alsa/alsa.pro b/src/plugins/alsa/alsa.pro new file mode 100644 index 00000000..481c57ea --- /dev/null +++ b/src/plugins/alsa/alsa.pro @@ -0,0 +1,23 @@ +TARGET = qtaudio_alsa +QT += multimedia-private + +PLUGIN_TYPE = audio +PLUGIN_CLASS_NAME = QAlsaPlugin +load(qt_plugin) + +LIBS += -lasound + +HEADERS += \ + qalsaplugin.h \ + qalsaaudiodeviceinfo.h \ + qalsaaudioinput.h \ + qalsaaudiooutput.h + +SOURCES += \ + qalsaplugin.cpp \ + qalsaaudiodeviceinfo.cpp \ + qalsaaudioinput.cpp \ + qalsaaudiooutput.cpp + +OTHER_FILES += \ + alsa.json diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/plugins/alsa/qalsaaudiodeviceinfo.cpp similarity index 91% rename from src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp rename to src/plugins/alsa/qalsaaudiodeviceinfo.cpp index bd8fa894..1e75c466 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp +++ b/src/plugins/alsa/qalsaaudiodeviceinfo.cpp @@ -50,13 +50,13 @@ // INTERNAL USE ONLY: Do NOT use for any other purpose. // -#include "qaudiodeviceinfo_alsa_p.h" +#include "qalsaaudiodeviceinfo.h" #include QT_BEGIN_NAMESPACE -QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode mode) +QAlsaAudioDeviceInfo::QAlsaAudioDeviceInfo(QByteArray dev, QAudio::Mode mode) { handle = 0; @@ -66,17 +66,17 @@ QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode checkSurround(); } -QAudioDeviceInfoInternal::~QAudioDeviceInfoInternal() +QAlsaAudioDeviceInfo::~QAlsaAudioDeviceInfo() { close(); } -bool QAudioDeviceInfoInternal::isFormatSupported(const QAudioFormat& format) const +bool QAlsaAudioDeviceInfo::isFormatSupported(const QAudioFormat& format) const { return testSettings(format); } -QAudioFormat QAudioDeviceInfoInternal::preferredFormat() const +QAudioFormat QAlsaAudioDeviceInfo::preferredFormat() const { QAudioFormat nearest; if(mode == QAudio::AudioOutput) { @@ -101,48 +101,48 @@ QAudioFormat QAudioDeviceInfoInternal::preferredFormat() const return nearest; } -QString QAudioDeviceInfoInternal::deviceName() const +QString QAlsaAudioDeviceInfo::deviceName() const { return device; } -QStringList QAudioDeviceInfoInternal::supportedCodecs() +QStringList QAlsaAudioDeviceInfo::supportedCodecs() { updateLists(); return codecz; } -QList QAudioDeviceInfoInternal::supportedSampleRates() +QList QAlsaAudioDeviceInfo::supportedSampleRates() { updateLists(); return sampleRatez; } -QList QAudioDeviceInfoInternal::supportedChannelCounts() +QList QAlsaAudioDeviceInfo::supportedChannelCounts() { updateLists(); return channelz; } -QList QAudioDeviceInfoInternal::supportedSampleSizes() +QList QAlsaAudioDeviceInfo::supportedSampleSizes() { updateLists(); return sizez; } -QList QAudioDeviceInfoInternal::supportedByteOrders() +QList QAlsaAudioDeviceInfo::supportedByteOrders() { updateLists(); return byteOrderz; } -QList QAudioDeviceInfoInternal::supportedSampleTypes() +QList QAlsaAudioDeviceInfo::supportedSampleTypes() { updateLists(); return typez; } -bool QAudioDeviceInfoInternal::open() +bool QAlsaAudioDeviceInfo::open() { int err = 0; QString dev = device; @@ -186,14 +186,14 @@ bool QAudioDeviceInfoInternal::open() return true; } -void QAudioDeviceInfoInternal::close() +void QAlsaAudioDeviceInfo::close() { if(handle) snd_pcm_close(handle); handle = 0; } -bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const +bool QAlsaAudioDeviceInfo::testSettings(const QAudioFormat& format) const { // Set nearest to closest settings that do work. // See if what is in settings will work (return value). @@ -301,7 +301,7 @@ bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const return (err == 0); } -void QAudioDeviceInfoInternal::updateLists() +void QAlsaAudioDeviceInfo::updateLists() { // redo all lists based on current settings sampleRatez.clear(); @@ -338,7 +338,7 @@ void QAudioDeviceInfoInternal::updateLists() close(); } -QList QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode) +QList QAlsaAudioDeviceInfo::availableDevices(QAudio::Mode mode) { QList devices; QByteArray filter; @@ -400,7 +400,7 @@ QList QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode) return devices; } -QByteArray QAudioDeviceInfoInternal::defaultInputDevice() +QByteArray QAlsaAudioDeviceInfo::defaultInputDevice() { QList devices = availableDevices(QAudio::AudioInput); if(devices.size() == 0) @@ -409,7 +409,7 @@ QByteArray QAudioDeviceInfoInternal::defaultInputDevice() return devices.first(); } -QByteArray QAudioDeviceInfoInternal::defaultOutputDevice() +QByteArray QAlsaAudioDeviceInfo::defaultOutputDevice() { QList devices = availableDevices(QAudio::AudioOutput); if(devices.size() == 0) @@ -418,7 +418,7 @@ QByteArray QAudioDeviceInfoInternal::defaultOutputDevice() return devices.first(); } -void QAudioDeviceInfoInternal::checkSurround() +void QAlsaAudioDeviceInfo::checkSurround() { surround40 = false; surround51 = false; diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h b/src/plugins/alsa/qalsaaudiodeviceinfo.h similarity index 90% rename from src/multimedia/audio/qaudiodeviceinfo_alsa_p.h rename to src/plugins/alsa/qalsaaudiodeviceinfo.h index 466bcdec..c1840ee9 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h +++ b/src/plugins/alsa/qalsaaudiodeviceinfo.h @@ -51,8 +51,8 @@ // -#ifndef QAUDIODEVICEINFOALSA_H -#define QAUDIODEVICEINFOALSA_H +#ifndef QALSAAUDIODEVICEINFO_H +#define QALSAAUDIODEVICEINFO_H #include @@ -61,9 +61,9 @@ #include #include -#include "qaudio.h" -#include "qaudiodeviceinfo.h" -#include "qaudiosystem.h" +#include +#include +#include QT_BEGIN_NAMESPACE @@ -72,12 +72,12 @@ const unsigned int MAX_SAMPLE_RATES = 5; const unsigned int SAMPLE_RATES[] = { 8000, 11025, 22050, 44100, 48000 }; -class QAudioDeviceInfoInternal : public QAbstractAudioDeviceInfo +class QAlsaAudioDeviceInfo : public QAbstractAudioDeviceInfo { Q_OBJECT public: - QAudioDeviceInfoInternal(QByteArray dev,QAudio::Mode mode); - ~QAudioDeviceInfoInternal(); + QAlsaAudioDeviceInfo(QByteArray dev,QAudio::Mode mode); + ~QAlsaAudioDeviceInfo(); bool testSettings(const QAudioFormat& format) const; void updateLists(); @@ -119,5 +119,4 @@ private: QT_END_NAMESPACE -#endif - +#endif // QALSAAUDIODEVICEINFO_H diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/plugins/alsa/qalsaaudioinput.cpp similarity index 93% rename from src/multimedia/audio/qaudioinput_alsa_p.cpp rename to src/plugins/alsa/qalsaaudioinput.cpp index 41180309..902dd57d 100644 --- a/src/multimedia/audio/qaudioinput_alsa_p.cpp +++ b/src/plugins/alsa/qalsaaudioinput.cpp @@ -51,15 +51,15 @@ // #include -#include "qaudioinput_alsa_p.h" -#include "qaudiodeviceinfo_alsa_p.h" -#include "qaudiohelpers_p.h" +#include +#include "qalsaaudioinput.h" +#include "qalsaaudiodeviceinfo.h" QT_BEGIN_NAMESPACE //#define DEBUG_AUDIO 1 -QAudioInputPrivate::QAudioInputPrivate(const QByteArray &device) +QAlsaAudioInput::QAlsaAudioInput(const QByteArray &device) { bytesAvailable = 0; handle = 0; @@ -86,7 +86,7 @@ QAudioInputPrivate::QAudioInputPrivate(const QByteArray &device) connect(timer,SIGNAL(timeout()),SLOT(userFeed())); } -QAudioInputPrivate::~QAudioInputPrivate() +QAlsaAudioInput::~QAlsaAudioInput() { close(); disconnect(timer, SIGNAL(timeout())); @@ -94,38 +94,38 @@ QAudioInputPrivate::~QAudioInputPrivate() delete timer; } -void QAudioInputPrivate::setVolume(qreal vol) +void QAlsaAudioInput::setVolume(qreal vol) { m_volume = vol; } -qreal QAudioInputPrivate::volume() const +qreal QAlsaAudioInput::volume() const { return m_volume; } -QAudio::Error QAudioInputPrivate::error() const +QAudio::Error QAlsaAudioInput::error() const { return errorState; } -QAudio::State QAudioInputPrivate::state() const +QAudio::State QAlsaAudioInput::state() const { return deviceState; } -void QAudioInputPrivate::setFormat(const QAudioFormat& fmt) +void QAlsaAudioInput::setFormat(const QAudioFormat& fmt) { if (deviceState == QAudio::StoppedState) settings = fmt; } -QAudioFormat QAudioInputPrivate::format() const +QAudioFormat QAlsaAudioInput::format() const { return settings; } -int QAudioInputPrivate::xrun_recovery(int err) +int QAlsaAudioInput::xrun_recovery(int err) { int count = 0; bool reset = false; @@ -166,7 +166,7 @@ int QAudioInputPrivate::xrun_recovery(int err) return err; } -int QAudioInputPrivate::setFormat() +int QAlsaAudioInput::setFormat() { snd_pcm_format_t format = SND_PCM_FORMAT_UNKNOWN; @@ -225,7 +225,7 @@ int QAudioInputPrivate::setFormat() : -1; } -void QAudioInputPrivate::start(QIODevice* device) +void QAlsaAudioInput::start(QIODevice* device) { if(deviceState != QAudio::StoppedState) close(); @@ -244,7 +244,7 @@ void QAudioInputPrivate::start(QIODevice* device) emit stateChanged(deviceState); } -QIODevice* QAudioInputPrivate::start() +QIODevice* QAlsaAudioInput::start() { if(deviceState != QAudio::StoppedState) close(); @@ -266,7 +266,7 @@ QIODevice* QAudioInputPrivate::start() return audioSource; } -void QAudioInputPrivate::stop() +void QAlsaAudioInput::stop() { if(deviceState == QAudio::StoppedState) return; @@ -277,7 +277,7 @@ void QAudioInputPrivate::stop() emit stateChanged(deviceState); } -bool QAudioInputPrivate::open() +bool QAlsaAudioInput::open() { #ifdef DEBUG_AUDIO QTime now(QTime::currentTime()); @@ -310,7 +310,7 @@ bool QAudioInputPrivate::open() QString dev = QString(QLatin1String(m_device.constData())); - QList devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioInput); + QList devices = QAlsaAudioDeviceInfo::availableDevices(QAudio::AudioInput); if(dev.compare(QLatin1String("default")) == 0) { #if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) if (devices.size() > 0) @@ -472,7 +472,7 @@ bool QAudioInputPrivate::open() return true; } -void QAudioInputPrivate::close() +void QAlsaAudioInput::close() { timer->stop(); @@ -483,7 +483,7 @@ void QAudioInputPrivate::close() } } -int QAudioInputPrivate::checkBytesReady() +int QAlsaAudioInput::checkBytesReady() { if(resuming) bytesAvailable = period_size; @@ -503,12 +503,12 @@ int QAudioInputPrivate::checkBytesReady() return bytesAvailable; } -int QAudioInputPrivate::bytesReady() const +int QAlsaAudioInput::bytesReady() const { return qMax(bytesAvailable, 0); } -qint64 QAudioInputPrivate::read(char* data, qint64 len) +qint64 QAlsaAudioInput::read(char* data, qint64 len) { // Read in some audio data and write it to QIODevice, pull mode if ( !handle ) @@ -649,7 +649,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len) return 0; } -void QAudioInputPrivate::resume() +void QAlsaAudioInput::resume() { if(deviceState == QAudio::SuspendedState) { int err = 0; @@ -673,32 +673,32 @@ void QAudioInputPrivate::resume() } } -void QAudioInputPrivate::setBufferSize(int value) +void QAlsaAudioInput::setBufferSize(int value) { buffer_size = value; } -int QAudioInputPrivate::bufferSize() const +int QAlsaAudioInput::bufferSize() const { return buffer_size; } -int QAudioInputPrivate::periodSize() const +int QAlsaAudioInput::periodSize() const { return period_size; } -void QAudioInputPrivate::setNotifyInterval(int ms) +void QAlsaAudioInput::setNotifyInterval(int ms) { intervalTime = qMax(0, ms); } -int QAudioInputPrivate::notifyInterval() const +int QAlsaAudioInput::notifyInterval() const { return intervalTime; } -qint64 QAudioInputPrivate::processedUSecs() const +qint64 QAlsaAudioInput::processedUSecs() const { qint64 result = qint64(1000000) * totalTimeValue / (settings.channelCount()*(settings.sampleSize()/8)) / @@ -707,7 +707,7 @@ qint64 QAudioInputPrivate::processedUSecs() const return result; } -void QAudioInputPrivate::suspend() +void QAlsaAudioInput::suspend() { if(deviceState == QAudio::ActiveState||resuming) { timer->stop(); @@ -716,7 +716,7 @@ void QAudioInputPrivate::suspend() } } -void QAudioInputPrivate::userFeed() +void QAlsaAudioInput::userFeed() { if(deviceState == QAudio::StoppedState || deviceState == QAudio::SuspendedState) return; @@ -727,7 +727,7 @@ void QAudioInputPrivate::userFeed() deviceReady(); } -bool QAudioInputPrivate::deviceReady() +bool QAlsaAudioInput::deviceReady() { if(pullMode) { // reads some audio data and writes it to QIODevice @@ -764,7 +764,7 @@ bool QAudioInputPrivate::deviceReady() return true; } -qint64 QAudioInputPrivate::elapsedUSecs() const +qint64 QAlsaAudioInput::elapsedUSecs() const { if (deviceState == QAudio::StoppedState) return 0; @@ -772,7 +772,7 @@ qint64 QAudioInputPrivate::elapsedUSecs() const return clockStamp.elapsed()*1000; } -void QAudioInputPrivate::reset() +void QAlsaAudioInput::reset() { if(handle) snd_pcm_reset(handle); @@ -780,15 +780,15 @@ void QAudioInputPrivate::reset() bytesAvailable = 0; } -void QAudioInputPrivate::drain() +void QAlsaAudioInput::drain() { if(handle) snd_pcm_drain(handle); } -InputPrivate::InputPrivate(QAudioInputPrivate* audio) +InputPrivate::InputPrivate(QAlsaAudioInput* audio) { - audioDevice = qobject_cast(audio); + audioDevice = qobject_cast(audio); } InputPrivate::~InputPrivate() @@ -879,4 +879,4 @@ void RingBuffer::write(char *data, int len) QT_END_NAMESPACE -#include "moc_qaudioinput_alsa_p.cpp" +#include "moc_qalsaaudioinput.cpp" diff --git a/src/multimedia/audio/qaudioinput_alsa_p.h b/src/plugins/alsa/qalsaaudioinput.h similarity index 93% rename from src/multimedia/audio/qaudioinput_alsa_p.h rename to src/plugins/alsa/qalsaaudioinput.h index 0455ba90..6af566c8 100644 --- a/src/multimedia/audio/qaudioinput_alsa_p.h +++ b/src/plugins/alsa/qalsaaudioinput.h @@ -63,9 +63,9 @@ #include #include -#include "qaudio.h" -#include "qaudiodeviceinfo.h" -#include "qaudiosystem.h" +#include +#include +#include QT_BEGIN_NAMESPACE @@ -95,12 +95,12 @@ private: QByteArray m_data; }; -class QAudioInputPrivate : public QAbstractAudioInput +class QAlsaAudioInput : public QAbstractAudioInput { Q_OBJECT public: - QAudioInputPrivate(const QByteArray &device); - ~QAudioInputPrivate(); + QAlsaAudioInput(const QByteArray &device); + ~QAlsaAudioInput(); qint64 read(char* data, qint64 len); @@ -171,7 +171,7 @@ class InputPrivate : public QIODevice { Q_OBJECT public: - InputPrivate(QAudioInputPrivate* audio); + InputPrivate(QAlsaAudioInput* audio); ~InputPrivate(); qint64 readData( char* data, qint64 len); @@ -179,7 +179,7 @@ public: void trigger(); private: - QAudioInputPrivate *audioDevice; + QAlsaAudioInput *audioDevice; }; QT_END_NAMESPACE diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.cpp b/src/plugins/alsa/qalsaaudiooutput.cpp similarity index 92% rename from src/multimedia/audio/qaudiooutput_alsa_p.cpp rename to src/plugins/alsa/qalsaaudiooutput.cpp index c1eeaec4..192b6359 100644 --- a/src/multimedia/audio/qaudiooutput_alsa_p.cpp +++ b/src/plugins/alsa/qalsaaudiooutput.cpp @@ -51,15 +51,15 @@ // #include -#include "qaudiooutput_alsa_p.h" -#include "qaudiodeviceinfo_alsa_p.h" -#include "qaudiohelpers_p.h" +#include +#include "qalsaaudiooutput.h" +#include "qalsaaudiodeviceinfo.h" QT_BEGIN_NAMESPACE //#define DEBUG_AUDIO 1 -QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray &device) +QAlsaAudioOutput::QAlsaAudioOutput(const QByteArray &device) { bytesAvailable = 0; handle = 0; @@ -90,7 +90,7 @@ QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray &device) connect(timer,SIGNAL(timeout()),SLOT(userFeed())); } -QAudioOutputPrivate::~QAudioOutputPrivate() +QAlsaAudioOutput::~QAlsaAudioOutput() { close(); disconnect(timer, SIGNAL(timeout())); @@ -98,38 +98,38 @@ QAudioOutputPrivate::~QAudioOutputPrivate() delete timer; } -void QAudioOutputPrivate::setVolume(qreal vol) +void QAlsaAudioOutput::setVolume(qreal vol) { m_volume = vol; } -qreal QAudioOutputPrivate::volume() const +qreal QAlsaAudioOutput::volume() const { return m_volume; } -QAudio::Error QAudioOutputPrivate::error() const +QAudio::Error QAlsaAudioOutput::error() const { return errorState; } -QAudio::State QAudioOutputPrivate::state() const +QAudio::State QAlsaAudioOutput::state() const { return deviceState; } -void QAudioOutputPrivate::async_callback(snd_async_handler_t *ahandler) +void QAlsaAudioOutput::async_callback(snd_async_handler_t *ahandler) { - QAudioOutputPrivate* audioOut; + QAlsaAudioOutput* audioOut; - audioOut = static_cast + audioOut = static_cast (snd_async_handler_get_callback_private(ahandler)); if (audioOut && (audioOut->deviceState == QAudio::ActiveState || audioOut->resuming)) audioOut->feedback(); } -int QAudioOutputPrivate::xrun_recovery(int err) +int QAlsaAudioOutput::xrun_recovery(int err) { int count = 0; bool reset = false; @@ -167,7 +167,7 @@ int QAudioOutputPrivate::xrun_recovery(int err) return err; } -int QAudioOutputPrivate::setFormat() +int QAlsaAudioOutput::setFormat() { snd_pcm_format_t pcmformat = SND_PCM_FORMAT_UNKNOWN; @@ -227,7 +227,7 @@ int QAudioOutputPrivate::setFormat() : -1; } -void QAudioOutputPrivate::start(QIODevice* device) +void QAlsaAudioOutput::start(QIODevice* device) { if(deviceState != QAudio::StoppedState) deviceState = QAudio::StoppedState; @@ -252,7 +252,7 @@ void QAudioOutputPrivate::start(QIODevice* device) emit stateChanged(deviceState); } -QIODevice* QAudioOutputPrivate::start() +QIODevice* QAlsaAudioOutput::start() { if(deviceState != QAudio::StoppedState) deviceState = QAudio::StoppedState; @@ -280,7 +280,7 @@ QIODevice* QAudioOutputPrivate::start() return audioSource; } -void QAudioOutputPrivate::stop() +void QAlsaAudioOutput::stop() { if(deviceState == QAudio::StoppedState) return; @@ -290,7 +290,7 @@ void QAudioOutputPrivate::stop() emit stateChanged(deviceState); } -bool QAudioOutputPrivate::open() +bool QAlsaAudioOutput::open() { if(opened) return true; @@ -324,7 +324,7 @@ bool QAudioOutputPrivate::open() } QString dev = QString(QLatin1String(m_device.constData())); - QList devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput); + QList devices = QAlsaAudioDeviceInfo::availableDevices(QAudio::AudioOutput); if(dev.compare(QLatin1String("default")) == 0) { #if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) if (devices.size() > 0) @@ -529,7 +529,7 @@ bool QAudioOutputPrivate::open() return true; } -void QAudioOutputPrivate::close() +void QAlsaAudioOutput::close() { timer->stop(); @@ -547,7 +547,7 @@ void QAudioOutputPrivate::close() opened = false; } -int QAudioOutputPrivate::bytesFree() const +int QAlsaAudioOutput::bytesFree() const { if(resuming) return period_size; @@ -573,7 +573,7 @@ int QAudioOutputPrivate::bytesFree() const return snd_pcm_frames_to_bytes(handle, frames); } -qint64 QAudioOutputPrivate::write( const char *data, qint64 len ) +qint64 QAlsaAudioOutput::write( const char *data, qint64 len ) { // Write out some audio data if ( !handle ) @@ -623,38 +623,38 @@ qint64 QAudioOutputPrivate::write( const char *data, qint64 len ) return 0; } -int QAudioOutputPrivate::periodSize() const +int QAlsaAudioOutput::periodSize() const { return period_size; } -void QAudioOutputPrivate::setBufferSize(int value) +void QAlsaAudioOutput::setBufferSize(int value) { if(deviceState == QAudio::StoppedState) buffer_size = value; } -int QAudioOutputPrivate::bufferSize() const +int QAlsaAudioOutput::bufferSize() const { return buffer_size; } -void QAudioOutputPrivate::setNotifyInterval(int ms) +void QAlsaAudioOutput::setNotifyInterval(int ms) { intervalTime = qMax(0, ms); } -int QAudioOutputPrivate::notifyInterval() const +int QAlsaAudioOutput::notifyInterval() const { return intervalTime; } -qint64 QAudioOutputPrivate::processedUSecs() const +qint64 QAlsaAudioOutput::processedUSecs() const { return qint64(1000000) * totalTimeValue / settings.sampleRate(); } -void QAudioOutputPrivate::resume() +void QAlsaAudioOutput::resume() { if(deviceState == QAudio::SuspendedState) { int err = 0; @@ -680,18 +680,18 @@ void QAudioOutputPrivate::resume() } } -void QAudioOutputPrivate::setFormat(const QAudioFormat& fmt) +void QAlsaAudioOutput::setFormat(const QAudioFormat& fmt) { if (deviceState == QAudio::StoppedState) settings = fmt; } -QAudioFormat QAudioOutputPrivate::format() const +QAudioFormat QAlsaAudioOutput::format() const { return settings; } -void QAudioOutputPrivate::suspend() +void QAlsaAudioOutput::suspend() { if(deviceState == QAudio::ActiveState || deviceState == QAudio::IdleState || resuming) { timer->stop(); @@ -701,7 +701,7 @@ void QAudioOutputPrivate::suspend() } } -void QAudioOutputPrivate::userFeed() +void QAlsaAudioOutput::userFeed() { if(deviceState == QAudio::StoppedState || deviceState == QAudio::SuspendedState) return; @@ -715,13 +715,13 @@ void QAudioOutputPrivate::userFeed() deviceReady(); } -void QAudioOutputPrivate::feedback() +void QAlsaAudioOutput::feedback() { updateAvailable(); } -void QAudioOutputPrivate::updateAvailable() +void QAlsaAudioOutput::updateAvailable() { #ifdef DEBUG_AUDIO QTime now(QTime::currentTime()); @@ -730,7 +730,7 @@ void QAudioOutputPrivate::updateAvailable() bytesAvailable = bytesFree(); } -bool QAudioOutputPrivate::deviceReady() +bool QAlsaAudioOutput::deviceReady() { if(pullMode) { int l = 0; @@ -805,7 +805,7 @@ bool QAudioOutputPrivate::deviceReady() return true; } -qint64 QAudioOutputPrivate::elapsedUSecs() const +qint64 QAlsaAudioOutput::elapsedUSecs() const { if (deviceState == QAudio::StoppedState) return 0; @@ -813,7 +813,7 @@ qint64 QAudioOutputPrivate::elapsedUSecs() const return clockStamp.elapsed()*1000; } -void QAudioOutputPrivate::reset() +void QAlsaAudioOutput::reset() { if(handle) snd_pcm_reset(handle); @@ -821,9 +821,9 @@ void QAudioOutputPrivate::reset() stop(); } -OutputPrivate::OutputPrivate(QAudioOutputPrivate* audio) +OutputPrivate::OutputPrivate(QAlsaAudioOutput* audio) { - audioDevice = qobject_cast(audio); + audioDevice = qobject_cast(audio); } OutputPrivate::~OutputPrivate() {} @@ -857,4 +857,4 @@ qint64 OutputPrivate::writeData(const char* data, qint64 len) QT_END_NAMESPACE -#include "moc_qaudiooutput_alsa_p.cpp" +#include "moc_qalsaaudiooutput.cpp" diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.h b/src/plugins/alsa/qalsaaudiooutput.h similarity index 92% rename from src/multimedia/audio/qaudiooutput_alsa_p.h rename to src/plugins/alsa/qalsaaudiooutput.h index 3bcb94ff..67976a55 100644 --- a/src/multimedia/audio/qaudiooutput_alsa_p.h +++ b/src/plugins/alsa/qalsaaudiooutput.h @@ -62,22 +62,19 @@ #include #include -#include "qaudio.h" -#include "qaudiodeviceinfo.h" -#include "qaudiosystem.h" +#include +#include +#include QT_BEGIN_NAMESPACE - -class OutputPrivate; - -class QAudioOutputPrivate : public QAbstractAudioOutput +class QAlsaAudioOutput : public QAbstractAudioOutput { friend class OutputPrivate; Q_OBJECT public: - QAudioOutputPrivate(const QByteArray &device); - ~QAudioOutputPrivate(); + QAlsaAudioOutput(const QByteArray &device); + ~QAlsaAudioOutput(); qint64 write( const char *data, qint64 len ); @@ -154,17 +151,17 @@ private: class OutputPrivate : public QIODevice { - friend class QAudioOutputPrivate; + friend class QAlsaAudioOutput; Q_OBJECT public: - OutputPrivate(QAudioOutputPrivate* audio); + OutputPrivate(QAlsaAudioOutput* audio); ~OutputPrivate(); qint64 readData( char* data, qint64 len); qint64 writeData(const char* data, qint64 len); private: - QAudioOutputPrivate *audioDevice; + QAlsaAudioOutput *audioDevice; }; QT_END_NAMESPACE diff --git a/src/plugins/alsa/qalsaplugin.cpp b/src/plugins/alsa/qalsaplugin.cpp new file mode 100644 index 00000000..6ed36580 --- /dev/null +++ b/src/plugins/alsa/qalsaplugin.cpp @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qalsaplugin.h" +#include "qalsaaudiodeviceinfo.h" +#include "qalsaaudioinput.h" +#include "qalsaaudiooutput.h" + +QT_BEGIN_NAMESPACE + +QAlsaPlugin::QAlsaPlugin(QObject *parent) + : QAudioSystemPlugin(parent) +{ +} + +QList QAlsaPlugin::availableDevices(QAudio::Mode mode) const +{ + return QAlsaAudioDeviceInfo::availableDevices(mode); +} + +QAbstractAudioInput *QAlsaPlugin::createInput(const QByteArray &device) +{ + return new QAlsaAudioInput(device); +} + +QAbstractAudioOutput *QAlsaPlugin::createOutput(const QByteArray &device) +{ + return new QAlsaAudioOutput(device); +} + +QAbstractAudioDeviceInfo *QAlsaPlugin::createDeviceInfo(const QByteArray &device, QAudio::Mode mode) +{ + return new QAlsaAudioDeviceInfo(device, mode); +} + +QT_END_NAMESPACE diff --git a/src/plugins/alsa/qalsaplugin.h b/src/plugins/alsa/qalsaplugin.h new file mode 100644 index 00000000..6f524ac4 --- /dev/null +++ b/src/plugins/alsa/qalsaplugin.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QALSAPLUGIN_H +#define QALSAPLUGIN_H + +#include + +QT_BEGIN_NAMESPACE + +class QAlsaPlugin : public QAudioSystemPlugin +{ + Q_OBJECT + + Q_PLUGIN_METADATA(IID "org.qt-project.qt.audiosystemfactory/5.0" FILE "alsa.json") + +public: + QAlsaPlugin(QObject *parent = 0); + ~QAlsaPlugin() {} + + QList availableDevices(QAudio::Mode mode) const Q_DECL_OVERRIDE; + QAbstractAudioInput *createInput(const QByteArray &device) Q_DECL_OVERRIDE; + QAbstractAudioOutput *createOutput(const QByteArray &device) Q_DECL_OVERRIDE; + QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif // QALSAPLUGIN_H diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index d947f3b2..645aeb2b 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -22,10 +22,9 @@ qnx:!blackberry { } win32 { - SUBDIRS += audiocapture -} + SUBDIRS += audiocapture \ + windowsaudio -win32 { config_directshow: SUBDIRS += directshow config_wmf: SUBDIRS += wmf } @@ -37,12 +36,14 @@ unix:!mac:!android { SUBDIRS += audiocapture } - # v4l is turned off because it is not supported in Qt 5 - # !maemo*:SUBDIRS += v4l - config_pulseaudio { SUBDIRS += pulseaudio + } else:config_alsa { + SUBDIRS += alsa } + + # v4l is turned off because it is not supported in Qt 5 + # !maemo*:SUBDIRS += v4l } mac:!simulator { diff --git a/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp similarity index 92% rename from src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp rename to src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp index 548a0e9e..d37056a5 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp +++ b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp @@ -53,7 +53,7 @@ #include #include -#include "qaudiodeviceinfo_win32_p.h" +#include "qwindowsaudiodeviceinfo.h" #if defined(Q_CC_MINGW) && !defined(__MINGW64_VERSION_MAJOR) struct IBaseFilter; // Needed for strmif.h from stock MinGW. @@ -127,7 +127,7 @@ QT_BEGIN_NAMESPACE #endif -QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode mode) +QWindowsAudioDeviceInfo::QWindowsAudioDeviceInfo(QByteArray dev, QAudio::Mode mode) { QDataStream ds(&dev, QIODevice::ReadOnly); ds >> devId >> device; @@ -136,17 +136,17 @@ QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode updateLists(); } -QAudioDeviceInfoInternal::~QAudioDeviceInfoInternal() +QWindowsAudioDeviceInfo::~QWindowsAudioDeviceInfo() { close(); } -bool QAudioDeviceInfoInternal::isFormatSupported(const QAudioFormat& format) const +bool QWindowsAudioDeviceInfo::isFormatSupported(const QAudioFormat& format) const { return testSettings(format); } -QAudioFormat QAudioDeviceInfoInternal::preferredFormat() const +QAudioFormat QWindowsAudioDeviceInfo::preferredFormat() const { QAudioFormat nearest; if (mode == QAudio::AudioOutput) { @@ -167,58 +167,58 @@ QAudioFormat QAudioDeviceInfoInternal::preferredFormat() const return nearest; } -QString QAudioDeviceInfoInternal::deviceName() const +QString QWindowsAudioDeviceInfo::deviceName() const { return device; } -QStringList QAudioDeviceInfoInternal::supportedCodecs() +QStringList QWindowsAudioDeviceInfo::supportedCodecs() { updateLists(); return codecz; } -QList QAudioDeviceInfoInternal::supportedSampleRates() +QList QWindowsAudioDeviceInfo::supportedSampleRates() { updateLists(); return sampleRatez; } -QList QAudioDeviceInfoInternal::supportedChannelCounts() +QList QWindowsAudioDeviceInfo::supportedChannelCounts() { updateLists(); return channelz; } -QList QAudioDeviceInfoInternal::supportedSampleSizes() +QList QWindowsAudioDeviceInfo::supportedSampleSizes() { updateLists(); return sizez; } -QList QAudioDeviceInfoInternal::supportedByteOrders() +QList QWindowsAudioDeviceInfo::supportedByteOrders() { updateLists(); return byteOrderz; } -QList QAudioDeviceInfoInternal::supportedSampleTypes() +QList QWindowsAudioDeviceInfo::supportedSampleTypes() { updateLists(); return typez; } -bool QAudioDeviceInfoInternal::open() +bool QWindowsAudioDeviceInfo::open() { return true; } -void QAudioDeviceInfoInternal::close() +void QWindowsAudioDeviceInfo::close() { } -bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const +bool QWindowsAudioDeviceInfo::testSettings(const QAudioFormat& format) const { // Set nearest to closest settings that do work. // See if what is in settings will work (return value). @@ -305,7 +305,7 @@ bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const return false; } -void QAudioDeviceInfoInternal::updateLists() +void QWindowsAudioDeviceInfo::updateLists() { // redo all lists based on current settings bool match = false; @@ -407,7 +407,7 @@ void QAudioDeviceInfoInternal::updateLists() sampleRatez.prepend(8000); } -QList QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode) +QList QWindowsAudioDeviceInfo::availableDevices(QAudio::Mode mode) { Q_UNUSED(mode) @@ -467,7 +467,7 @@ QList QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode) return devices; } -QByteArray QAudioDeviceInfoInternal::defaultOutputDevice() +QByteArray QWindowsAudioDeviceInfo::defaultOutputDevice() { QByteArray defaultDevice; QDataStream ds(&defaultDevice, QIODevice::WriteOnly); @@ -477,7 +477,7 @@ QByteArray QAudioDeviceInfoInternal::defaultOutputDevice() return defaultDevice; } -QByteArray QAudioDeviceInfoInternal::defaultInputDevice() +QByteArray QWindowsAudioDeviceInfo::defaultInputDevice() { QByteArray defaultDevice; QDataStream ds(&defaultDevice, QIODevice::WriteOnly); diff --git a/src/multimedia/audio/qaudiodeviceinfo_win32_p.h b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.h similarity index 90% rename from src/multimedia/audio/qaudiodeviceinfo_win32_p.h rename to src/plugins/windowsaudio/qwindowsaudiodeviceinfo.h index 6744518c..817b803f 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_win32_p.h +++ b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.h @@ -51,16 +51,16 @@ // -#ifndef QAUDIODEVICEINFOWIN_H -#define QAUDIODEVICEINFOWIN_H +#ifndef QWINDOWSAUDIODEVICEINFO_H +#define QWINDOWSAUDIODEVICEINFO_H #include #include #include #include -#include -#include +#include +#include QT_BEGIN_NAMESPACE @@ -69,13 +69,13 @@ QT_BEGIN_NAMESPACE const unsigned int MAX_SAMPLE_RATES = 5; const unsigned int SAMPLE_RATES[] = { 8000, 11025, 22050, 44100, 48000 }; -class QAudioDeviceInfoInternal : public QAbstractAudioDeviceInfo +class QWindowsAudioDeviceInfo : public QAbstractAudioDeviceInfo { Q_OBJECT public: - QAudioDeviceInfoInternal(QByteArray dev,QAudio::Mode mode); - ~QAudioDeviceInfoInternal(); + QWindowsAudioDeviceInfo(QByteArray dev,QAudio::Mode mode); + ~QWindowsAudioDeviceInfo(); bool open(); void close(); @@ -111,4 +111,4 @@ private: QT_END_NAMESPACE -#endif +#endif // QWINDOWSAUDIODEVICEINFO_H diff --git a/src/multimedia/audio/qaudioinput_win32_p.cpp b/src/plugins/windowsaudio/qwindowsaudioinput.cpp similarity index 92% rename from src/multimedia/audio/qaudioinput_win32_p.cpp rename to src/plugins/windowsaudio/qwindowsaudioinput.cpp index 47818f28..26f0641b 100644 --- a/src/multimedia/audio/qaudioinput_win32_p.cpp +++ b/src/plugins/windowsaudio/qwindowsaudioinput.cpp @@ -51,13 +51,13 @@ // -#include "qaudioinput_win32_p.h" +#include "qwindowsaudioinput.h" QT_BEGIN_NAMESPACE //#define DEBUG_AUDIO 1 -QAudioInputPrivate::QAudioInputPrivate(const QByteArray &device) +QWindowsAudioInput::QWindowsAudioInput(const QByteArray &device) { bytesAvailable = 0; buffer_size = 0; @@ -78,21 +78,21 @@ QAudioInputPrivate::QAudioInputPrivate(const QByteArray &device) initMixer(); } -QAudioInputPrivate::~QAudioInputPrivate() +QWindowsAudioInput::~QWindowsAudioInput() { stop(); closeMixer(); } -void QT_WIN_CALLBACK QAudioInputPrivate::waveInProc( HWAVEIN hWaveIn, UINT uMsg, +void QT_WIN_CALLBACK QWindowsAudioInput::waveInProc( HWAVEIN hWaveIn, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2 ) { Q_UNUSED(dwParam1) Q_UNUSED(dwParam2) Q_UNUSED(hWaveIn) - QAudioInputPrivate* qAudio; - qAudio = (QAudioInputPrivate*)(dwInstance); + QWindowsAudioInput* qAudio; + qAudio = (QWindowsAudioInput*)(dwInstance); if(!qAudio) return; @@ -114,7 +114,7 @@ void QT_WIN_CALLBACK QAudioInputPrivate::waveInProc( HWAVEIN hWaveIn, UINT uMsg, } } -WAVEHDR* QAudioInputPrivate::allocateBlocks(int size, int count) +WAVEHDR* QWindowsAudioInput::allocateBlocks(int size, int count) { int i; unsigned char* buffer; @@ -145,7 +145,7 @@ WAVEHDR* QAudioInputPrivate::allocateBlocks(int size, int count) return blocks; } -void QAudioInputPrivate::freeBlocks(WAVEHDR* blockArray) +void QWindowsAudioInput::freeBlocks(WAVEHDR* blockArray) { WAVEHDR* blocks = blockArray; @@ -158,12 +158,12 @@ void QAudioInputPrivate::freeBlocks(WAVEHDR* blockArray) HeapFree(GetProcessHeap(), 0, blockArray); } -QAudio::Error QAudioInputPrivate::error() const +QAudio::Error QWindowsAudioInput::error() const { return errorState; } -QAudio::State QAudioInputPrivate::state() const +QAudio::State QWindowsAudioInput::state() const { return deviceState; } @@ -181,7 +181,7 @@ QAudio::State QAudioInputPrivate::state() const #define DRVM_MAPPER_CONSOLEVOICECOM_GET (DRVM_MAPPER+23) #endif -void QAudioInputPrivate::setVolume(qreal volume) +void QWindowsAudioInput::setVolume(qreal volume) { for (DWORD i = 0; i < mixerLineControls.cControls; i++) { @@ -202,7 +202,7 @@ void QAudioInputPrivate::setVolume(qreal volume) } } -qreal QAudioInputPrivate::volume() const +qreal QWindowsAudioInput::volume() const { DWORD volume = 0; for (DWORD i = 0; i < mixerLineControls.cControls; i++) { @@ -233,18 +233,18 @@ qreal QAudioInputPrivate::volume() const return volume / 65535.0; } -void QAudioInputPrivate::setFormat(const QAudioFormat& fmt) +void QWindowsAudioInput::setFormat(const QAudioFormat& fmt) { if (deviceState == QAudio::StoppedState) settings = fmt; } -QAudioFormat QAudioInputPrivate::format() const +QAudioFormat QWindowsAudioInput::format() const { return settings; } -void QAudioInputPrivate::start(QIODevice* device) +void QWindowsAudioInput::start(QIODevice* device) { if(deviceState != QAudio::StoppedState) close(); @@ -263,7 +263,7 @@ void QAudioInputPrivate::start(QIODevice* device) emit stateChanged(deviceState); } -QIODevice* QAudioInputPrivate::start() +QIODevice* QWindowsAudioInput::start() { if(deviceState != QAudio::StoppedState) close(); @@ -285,7 +285,7 @@ QIODevice* QAudioInputPrivate::start() return audioSource; } -void QAudioInputPrivate::stop() +void QWindowsAudioInput::stop() { if(deviceState == QAudio::StoppedState) return; @@ -294,7 +294,7 @@ void QAudioInputPrivate::stop() emit stateChanged(deviceState); } -bool QAudioInputPrivate::open() +bool QWindowsAudioInput::open() { #ifdef DEBUG_AUDIO QTime now(QTime::currentTime()); @@ -398,7 +398,7 @@ bool QAudioInputPrivate::open() return true; } -void QAudioInputPrivate::close() +void QWindowsAudioInput::close() { if(deviceState == QAudio::StoppedState) return; @@ -421,7 +421,7 @@ void QAudioInputPrivate::close() } } -void QAudioInputPrivate::initMixer() +void QWindowsAudioInput::initMixer() { QDataStream ds(&m_device, QIODevice::ReadOnly); quint32 inputDevice; @@ -455,13 +455,13 @@ void QAudioInputPrivate::initMixer() } } -void QAudioInputPrivate::closeMixer() +void QWindowsAudioInput::closeMixer() { delete[] mixerLineControls.pamxctrl; memset(&mixerLineControls, 0, sizeof(mixerLineControls)); } -int QAudioInputPrivate::bytesReady() const +int QWindowsAudioInput::bytesReady() const { if(period_size == 0 || buffer_size == 0) return 0; @@ -472,7 +472,7 @@ int QAudioInputPrivate::bytesReady() const return buf; } -qint64 QAudioInputPrivate::read(char* data, qint64 len) +qint64 QWindowsAudioInput::read(char* data, qint64 len) { bool done = false; @@ -591,7 +591,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len) return written; } -void QAudioInputPrivate::resume() +void QWindowsAudioInput::resume() { if(deviceState == QAudio::SuspendedState) { deviceState = QAudio::ActiveState; @@ -619,32 +619,32 @@ void QAudioInputPrivate::resume() } } -void QAudioInputPrivate::setBufferSize(int value) +void QWindowsAudioInput::setBufferSize(int value) { buffer_size = value; } -int QAudioInputPrivate::bufferSize() const +int QWindowsAudioInput::bufferSize() const { return buffer_size; } -int QAudioInputPrivate::periodSize() const +int QWindowsAudioInput::periodSize() const { return period_size; } -void QAudioInputPrivate::setNotifyInterval(int ms) +void QWindowsAudioInput::setNotifyInterval(int ms) { intervalTime = qMax(0, ms); } -int QAudioInputPrivate::notifyInterval() const +int QWindowsAudioInput::notifyInterval() const { return intervalTime; } -qint64 QAudioInputPrivate::processedUSecs() const +qint64 QWindowsAudioInput::processedUSecs() const { if (deviceState == QAudio::StoppedState) return 0; @@ -655,7 +655,7 @@ qint64 QAudioInputPrivate::processedUSecs() const return result; } -void QAudioInputPrivate::suspend() +void QWindowsAudioInput::suspend() { if(deviceState == QAudio::ActiveState) { waveInReset(hWaveIn); @@ -664,7 +664,7 @@ void QAudioInputPrivate::suspend() } } -void QAudioInputPrivate::feedback() +void QWindowsAudioInput::feedback() { #ifdef DEBUG_AUDIO QTime now(QTime::currentTime()); @@ -674,7 +674,7 @@ void QAudioInputPrivate::feedback() QMetaObject::invokeMethod(this, "deviceReady", Qt::QueuedConnection); } -bool QAudioInputPrivate::deviceReady() +bool QWindowsAudioInput::deviceReady() { bytesAvailable = bytesReady(); #ifdef DEBUG_AUDIO @@ -701,7 +701,7 @@ bool QAudioInputPrivate::deviceReady() return true; } -qint64 QAudioInputPrivate::elapsedUSecs() const +qint64 QWindowsAudioInput::elapsedUSecs() const { if (deviceState == QAudio::StoppedState) return 0; @@ -709,16 +709,16 @@ qint64 QAudioInputPrivate::elapsedUSecs() const return timeStampOpened.elapsed()*1000; } -void QAudioInputPrivate::reset() +void QWindowsAudioInput::reset() { stop(); if (period_size > 0) waveFreeBlockCount = buffer_size / period_size; } -InputPrivate::InputPrivate(QAudioInputPrivate* audio) +InputPrivate::InputPrivate(QWindowsAudioInput* audio) { - audioDevice = qobject_cast(audio); + audioDevice = qobject_cast(audio); } InputPrivate::~InputPrivate() {} @@ -749,5 +749,4 @@ void InputPrivate::trigger() QT_END_NAMESPACE -#include "moc_qaudioinput_win32_p.cpp" - +#include "moc_qwindowsaudioinput.cpp" diff --git a/src/multimedia/audio/qaudioinput_win32_p.h b/src/plugins/windowsaudio/qwindowsaudioinput.h similarity index 92% rename from src/multimedia/audio/qaudioinput_win32_p.h rename to src/plugins/windowsaudio/qwindowsaudioinput.h index a51d1bbe..7498bca5 100644 --- a/src/multimedia/audio/qaudioinput_win32_p.h +++ b/src/plugins/windowsaudio/qwindowsaudioinput.h @@ -50,8 +50,8 @@ // We mean it. // -#ifndef QAUDIOINPUTWIN_H -#define QAUDIOINPUTWIN_H +#ifndef QWINDOWSAUDIOINPUT_H +#define QWINDOWSAUDIOINPUT_H #include #include @@ -64,9 +64,9 @@ #include #include -#include -#include -#include +#include +#include +#include QT_BEGIN_NAMESPACE @@ -81,12 +81,12 @@ QT_BEGIN_NAMESPACE # endif #endif -class QAudioInputPrivate : public QAbstractAudioInput +class QWindowsAudioInput : public QAbstractAudioInput { Q_OBJECT public: - QAudioInputPrivate(const QByteArray &device); - ~QAudioInputPrivate(); + QWindowsAudioInput(const QByteArray &device); + ~QWindowsAudioInput(); qint64 read(char* data, qint64 len); @@ -163,7 +163,7 @@ class InputPrivate : public QIODevice { Q_OBJECT public: - InputPrivate(QAudioInputPrivate* audio); + InputPrivate(QWindowsAudioInput* audio); ~InputPrivate(); qint64 readData( char* data, qint64 len); @@ -171,10 +171,9 @@ public: void trigger(); private: - QAudioInputPrivate *audioDevice; + QWindowsAudioInput *audioDevice; }; QT_END_NAMESPACE - #endif diff --git a/src/multimedia/audio/qaudiooutput_win32_p.cpp b/src/plugins/windowsaudio/qwindowsaudiooutput.cpp similarity index 92% rename from src/multimedia/audio/qaudiooutput_win32_p.cpp rename to src/plugins/windowsaudio/qwindowsaudiooutput.cpp index dbc46fb8..1c8882ee 100644 --- a/src/multimedia/audio/qaudiooutput_win32_p.cpp +++ b/src/plugins/windowsaudio/qwindowsaudiooutput.cpp @@ -50,7 +50,7 @@ // INTERNAL USE ONLY: Do NOT use for any other purpose. // -#include "qaudiooutput_win32_p.h" +#include "qwindowsaudiooutput.h" #include #ifndef SPEAKER_FRONT_LEFT @@ -104,7 +104,7 @@ QT_BEGIN_NAMESPACE -QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray &device) +QWindowsAudioOutput::QWindowsAudioOutput(const QByteArray &device) { bytesAvailable = 0; buffer_size = 0; @@ -121,7 +121,7 @@ QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray &device) volumeCache = (qreal)1.; } -QAudioOutputPrivate::~QAudioOutputPrivate() +QWindowsAudioOutput::~QWindowsAudioOutput() { mutex.lock(); finished = true; @@ -130,15 +130,15 @@ QAudioOutputPrivate::~QAudioOutputPrivate() close(); } -void CALLBACK QAudioOutputPrivate::waveOutProc( HWAVEOUT hWaveOut, UINT uMsg, +void CALLBACK QWindowsAudioOutput::waveOutProc( HWAVEOUT hWaveOut, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2 ) { Q_UNUSED(dwParam1) Q_UNUSED(dwParam2) Q_UNUSED(hWaveOut) - QAudioOutputPrivate* qAudio; - qAudio = (QAudioOutputPrivate*)(dwInstance); + QWindowsAudioOutput* qAudio; + qAudio = (QWindowsAudioOutput*)(dwInstance); if(!qAudio) return; @@ -164,7 +164,7 @@ void CALLBACK QAudioOutputPrivate::waveOutProc( HWAVEOUT hWaveOut, UINT uMsg, } } -WAVEHDR* QAudioOutputPrivate::allocateBlocks(int size, int count) +WAVEHDR* QWindowsAudioOutput::allocateBlocks(int size, int count) { int i; unsigned char* buffer; @@ -186,7 +186,7 @@ WAVEHDR* QAudioOutputPrivate::allocateBlocks(int size, int count) return blocks; } -void QAudioOutputPrivate::freeBlocks(WAVEHDR* blockArray) +void QWindowsAudioOutput::freeBlocks(WAVEHDR* blockArray) { WAVEHDR* blocks = blockArray; @@ -199,18 +199,18 @@ void QAudioOutputPrivate::freeBlocks(WAVEHDR* blockArray) HeapFree(GetProcessHeap(), 0, blockArray); } -QAudioFormat QAudioOutputPrivate::format() const +QAudioFormat QWindowsAudioOutput::format() const { return settings; } -void QAudioOutputPrivate::setFormat(const QAudioFormat& fmt) +void QWindowsAudioOutput::setFormat(const QAudioFormat& fmt) { if (deviceState == QAudio::StoppedState) settings = fmt; } -void QAudioOutputPrivate::start(QIODevice* device) +void QWindowsAudioOutput::start(QIODevice* device) { if(deviceState != QAudio::StoppedState) close(); @@ -229,7 +229,7 @@ void QAudioOutputPrivate::start(QIODevice* device) emit stateChanged(deviceState); } -QIODevice* QAudioOutputPrivate::start() +QIODevice* QWindowsAudioOutput::start() { if(deviceState != QAudio::StoppedState) close(); @@ -251,7 +251,7 @@ QIODevice* QAudioOutputPrivate::start() return audioSource; } -void QAudioOutputPrivate::stop() +void QWindowsAudioOutput::stop() { if(deviceState == QAudio::StoppedState) return; @@ -263,7 +263,7 @@ void QAudioOutputPrivate::stop() emit stateChanged(deviceState); } -bool QAudioOutputPrivate::open() +bool QWindowsAudioOutput::open() { #ifdef DEBUG_AUDIO QTime now(QTime::currentTime()); @@ -394,7 +394,7 @@ bool QAudioOutputPrivate::open() return true; } -void QAudioOutputPrivate::close() +void QWindowsAudioOutput::close() { if(deviceState == QAudio::StoppedState) return; @@ -413,7 +413,7 @@ void QAudioOutputPrivate::close() buffer_size = 0; } -int QAudioOutputPrivate::bytesFree() const +int QWindowsAudioOutput::bytesFree() const { int buf; buf = waveFreeBlockCount*period_size; @@ -421,33 +421,33 @@ int QAudioOutputPrivate::bytesFree() const return buf; } -int QAudioOutputPrivate::periodSize() const +int QWindowsAudioOutput::periodSize() const { return period_size; } -void QAudioOutputPrivate::setBufferSize(int value) +void QWindowsAudioOutput::setBufferSize(int value) { if(deviceState == QAudio::StoppedState) buffer_size = value; } -int QAudioOutputPrivate::bufferSize() const +int QWindowsAudioOutput::bufferSize() const { return buffer_size; } -void QAudioOutputPrivate::setNotifyInterval(int ms) +void QWindowsAudioOutput::setNotifyInterval(int ms) { intervalTime = qMax(0, ms); } -int QAudioOutputPrivate::notifyInterval() const +int QWindowsAudioOutput::notifyInterval() const { return intervalTime; } -qint64 QAudioOutputPrivate::processedUSecs() const +qint64 QWindowsAudioOutput::processedUSecs() const { if (deviceState == QAudio::StoppedState) return 0; @@ -458,7 +458,7 @@ qint64 QAudioOutputPrivate::processedUSecs() const return result; } -qint64 QAudioOutputPrivate::write( const char *data, qint64 len ) +qint64 QWindowsAudioOutput::write( const char *data, qint64 len ) { // Write out some audio data if (deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState) @@ -539,7 +539,7 @@ qint64 QAudioOutputPrivate::write( const char *data, qint64 len ) return (len-l); } -void QAudioOutputPrivate::resume() +void QWindowsAudioOutput::resume() { if(deviceState == QAudio::SuspendedState) { deviceState = QAudio::ActiveState; @@ -550,7 +550,7 @@ void QAudioOutputPrivate::resume() } } -void QAudioOutputPrivate::suspend() +void QWindowsAudioOutput::suspend() { if(deviceState == QAudio::ActiveState || deviceState == QAudio::IdleState) { int delay = (buffer_size-bytesFree())*1000/(settings.sampleRate() @@ -563,7 +563,7 @@ void QAudioOutputPrivate::suspend() } } -void QAudioOutputPrivate::feedback() +void QWindowsAudioOutput::feedback() { #ifdef DEBUG_AUDIO QTime now(QTime::currentTime()); @@ -577,7 +577,7 @@ void QAudioOutputPrivate::feedback() } } -bool QAudioOutputPrivate::deviceReady() +bool QWindowsAudioOutput::deviceReady() { if(deviceState == QAudio::StoppedState || deviceState == QAudio::SuspendedState) return false; @@ -677,7 +677,7 @@ bool QAudioOutputPrivate::deviceReady() return true; } -qint64 QAudioOutputPrivate::elapsedUSecs() const +qint64 QWindowsAudioOutput::elapsedUSecs() const { if (deviceState == QAudio::StoppedState) return 0; @@ -685,17 +685,17 @@ qint64 QAudioOutputPrivate::elapsedUSecs() const return timeStampOpened.elapsed()*1000; } -QAudio::Error QAudioOutputPrivate::error() const +QAudio::Error QWindowsAudioOutput::error() const { return errorState; } -QAudio::State QAudioOutputPrivate::state() const +QAudio::State QWindowsAudioOutput::state() const { return deviceState; } -void QAudioOutputPrivate::setVolume(qreal v) +void QWindowsAudioOutput::setVolume(qreal v) { const qreal normalizedVolume = qBound(qreal(0.0), v, qreal(1.0)); if (deviceState != QAudio::ActiveState) { @@ -709,19 +709,19 @@ void QAudioOutputPrivate::setVolume(qreal v) volumeCache = normalizedVolume; } -qreal QAudioOutputPrivate::volume() const +qreal QWindowsAudioOutput::volume() const { return volumeCache; } -void QAudioOutputPrivate::reset() +void QWindowsAudioOutput::reset() { close(); } -OutputPrivate::OutputPrivate(QAudioOutputPrivate* audio) +OutputPrivate::OutputPrivate(QWindowsAudioOutput* audio) { - audioDevice = qobject_cast(audio); + audioDevice = qobject_cast(audio); } OutputPrivate::~OutputPrivate() {} @@ -759,4 +759,4 @@ qint64 OutputPrivate::writeData(const char* data, qint64 len) QT_END_NAMESPACE -#include "moc_qaudiooutput_win32_p.cpp" +#include "moc_qwindowsaudiooutput.cpp" diff --git a/src/multimedia/audio/qaudiooutput_win32_p.h b/src/plugins/windowsaudio/qwindowsaudiooutput.h similarity index 91% rename from src/multimedia/audio/qaudiooutput_win32_p.h rename to src/plugins/windowsaudio/qwindowsaudiooutput.h index cdff1282..77f23f70 100644 --- a/src/multimedia/audio/qaudiooutput_win32_p.h +++ b/src/plugins/windowsaudio/qwindowsaudiooutput.h @@ -50,8 +50,8 @@ // We mean it. // -#ifndef QAUDIOOUTPUTWIN_H -#define QAUDIOOUTPUTWIN_H +#ifndef QWINDOWSAUDIOOUTPUT_H +#define QWINDOWSAUDIOOUTPUT_H #include #include @@ -63,9 +63,9 @@ #include #include -#include -#include -#include +#include +#include +#include // For compat with 4.6 #if !defined(QT_WIN_CALLBACK) @@ -78,13 +78,12 @@ QT_BEGIN_NAMESPACE - -class QAudioOutputPrivate : public QAbstractAudioOutput +class QWindowsAudioOutput : public QAbstractAudioOutput { Q_OBJECT public: - QAudioOutputPrivate(const QByteArray &device); - ~QAudioOutputPrivate(); + QWindowsAudioOutput(const QByteArray &device); + ~QWindowsAudioOutput(); qint64 write( const char *data, qint64 len ); @@ -156,17 +155,17 @@ class OutputPrivate : public QIODevice { Q_OBJECT public: - OutputPrivate(QAudioOutputPrivate* audio); + OutputPrivate(QWindowsAudioOutput* audio); ~OutputPrivate(); qint64 readData( char* data, qint64 len); qint64 writeData(const char* data, qint64 len); private: - QAudioOutputPrivate *audioDevice; + QWindowsAudioOutput *audioDevice; }; QT_END_NAMESPACE -#endif +#endif // QWINDOWSAUDIOOUTPUT_H diff --git a/src/plugins/windowsaudio/qwindowsaudioplugin.cpp b/src/plugins/windowsaudio/qwindowsaudioplugin.cpp new file mode 100644 index 00000000..79aabdbf --- /dev/null +++ b/src/plugins/windowsaudio/qwindowsaudioplugin.cpp @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qwindowsaudioplugin.h" +#include "qwindowsaudiodeviceinfo.h" +#include "qwindowsaudioinput.h" +#include "qwindowsaudiooutput.h" + +QT_BEGIN_NAMESPACE + +QWindowsAudioPlugin::QWindowsAudioPlugin(QObject *parent) + : QAudioSystemPlugin(parent) +{ +} + +QList QWindowsAudioPlugin::availableDevices(QAudio::Mode mode) const +{ + return QWindowsAudioDeviceInfo::availableDevices(mode); +} + +QAbstractAudioInput *QWindowsAudioPlugin::createInput(const QByteArray &device) +{ + return new QWindowsAudioInput(device); +} + +QAbstractAudioOutput *QWindowsAudioPlugin::createOutput(const QByteArray &device) +{ + return new QWindowsAudioOutput(device); +} + +QAbstractAudioDeviceInfo *QWindowsAudioPlugin::createDeviceInfo(const QByteArray &device, QAudio::Mode mode) +{ + return new QWindowsAudioDeviceInfo(device, mode); +} + +QT_END_NAMESPACE diff --git a/src/plugins/windowsaudio/qwindowsaudioplugin.h b/src/plugins/windowsaudio/qwindowsaudioplugin.h new file mode 100644 index 00000000..3305f055 --- /dev/null +++ b/src/plugins/windowsaudio/qwindowsaudioplugin.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSAUDIOPLUGIN_H +#define QWINDOWSAUDIOPLUGIN_H + +#include + +QT_BEGIN_NAMESPACE + +class QWindowsAudioPlugin : public QAudioSystemPlugin +{ + Q_OBJECT + + Q_PLUGIN_METADATA(IID "org.qt-project.qt.audiosystemfactory/5.0" FILE "windowsaudio.json") + +public: + QWindowsAudioPlugin(QObject *parent = 0); + ~QWindowsAudioPlugin() {} + + QList availableDevices(QAudio::Mode mode) const Q_DECL_OVERRIDE; + QAbstractAudioInput *createInput(const QByteArray &device) Q_DECL_OVERRIDE; + QAbstractAudioOutput *createOutput(const QByteArray &device) Q_DECL_OVERRIDE; + QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif // QWINDOWSAUDIOPLUGIN_H diff --git a/src/plugins/windowsaudio/windowsaudio.json b/src/plugins/windowsaudio/windowsaudio.json new file mode 100644 index 00000000..a31d5210 --- /dev/null +++ b/src/plugins/windowsaudio/windowsaudio.json @@ -0,0 +1,3 @@ +{ + "Keys": ["default"] +} diff --git a/src/plugins/windowsaudio/windowsaudio.pro b/src/plugins/windowsaudio/windowsaudio.pro new file mode 100644 index 00000000..a1a32795 --- /dev/null +++ b/src/plugins/windowsaudio/windowsaudio.pro @@ -0,0 +1,23 @@ +TARGET = qtaudio_windows +QT += multimedia-private + +PLUGIN_TYPE = audio +PLUGIN_CLASS_NAME = QWindowsAudioPlugin +load(qt_plugin) + +LIBS += -lwinmm -lstrmiids -lole32 -loleaut32 + +HEADERS += \ + qwindowsaudioplugin.h \ + qwindowsaudiodeviceinfo.h \ + qwindowsaudioinput.h \ + qwindowsaudiooutput.h + +SOURCES += \ + qwindowsaudioplugin.cpp \ + qwindowsaudiodeviceinfo.cpp \ + qwindowsaudioinput.cpp \ + qwindowsaudiooutput.cpp + +OTHER_FILES += \ + windowsaudio.json From d3d898f3ed434e8df81c3fd274e30f952877a135 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Tue, 28 Jan 2014 12:54:22 +0100 Subject: [PATCH 13/18] Exclude win32 plugins from WinRT build Change-Id: Icd07ad6805341f763a7abcfc8a24104c5d672ad7 Reviewed-by: Yoann Lopes --- src/plugins/plugins.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index 645aeb2b..d8763132 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -21,7 +21,7 @@ qnx:!blackberry { SUBDIRS += qnx-audio } -win32 { +win32:!winrt { SUBDIRS += audiocapture \ windowsaudio From 6f8ccc88e827aeb09f6f9c7219f2d5f5013c6ebb Mon Sep 17 00:00:00 2001 From: Roger Maclean Date: Fri, 31 Jan 2014 14:58:54 -0500 Subject: [PATCH 14/18] Ensure the backend has had its geometry updated. When trying to play video in an overlay window, the video fails to be displayed because everything that would cause updateGeometry to be called on the backend has already occurred prior to the backend having been created. Change-Id: Ida3c8feea69b497a18e9f44d7143bed03380d6ae Reviewed-by: Yoann Lopes --- src/qtmultimediaquicktools/qdeclarativevideooutput.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp b/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp index 321fd5e8..a04b38ce 100644 --- a/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp +++ b/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp @@ -247,7 +247,10 @@ bool QDeclarativeVideoOutput::createBackend(QMediaService *service) if (!backendAvailable) { qWarning() << Q_FUNC_INFO << "Media service has neither renderer nor window control available."; m_backend.reset(); + } else if (!m_geometryDirty) { + m_backend->updateGeometry(); } + return backendAvailable; } From e4035bf6d01c2105f64b5d548ccea51c7a48ef8d Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sun, 2 Feb 2014 14:07:07 -0800 Subject: [PATCH 15/18] Normalize signal & slot signatures in connection Profiling shows Qt Creator spends 2% of its load time normalizing Change-Id: I1a4bef16be79ced35c47da865153ebe1bee22f9c Reviewed-by: Yoann Lopes --- src/imports/multimedia/qdeclarativecameracapture.cpp | 4 ++-- src/imports/multimedia/qdeclarativeradio.cpp | 2 +- src/multimedia/camera/qcameraimagecapture.cpp | 4 ++-- src/multimedia/playback/playlistfileparser.cpp | 8 ++++---- .../playback/qmedianetworkplaylistprovider.cpp | 8 ++++---- .../src/mediaplayer/qandroidmediaplayercontrol.cpp | 12 ++++++------ .../directshow/camera/dsimagecapturecontrol.cpp | 8 ++++---- src/plugins/gstreamer/camerabin/camerabinlocks.cpp | 4 ++-- .../gstreamer/camerabin/camerabinresourcepolicy.cpp | 2 +- .../camerabin/camerabuttonlistener_meego.cpp | 2 +- src/plugins/resourcepolicy/resourcepolicyimpl.cpp | 2 +- src/plugins/wmf/decoder/mfdecoderservice.cpp | 2 +- src/plugins/wmf/decoder/mfdecodersourcereader.cpp | 2 +- src/plugins/wmf/player/mfplayercontrol.cpp | 2 +- src/plugins/wmf/player/mfplayersession.cpp | 2 +- 15 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/imports/multimedia/qdeclarativecameracapture.cpp b/src/imports/multimedia/qdeclarativecameracapture.cpp index d5f36343..7e30867c 100644 --- a/src/imports/multimedia/qdeclarativecameracapture.cpp +++ b/src/imports/multimedia/qdeclarativecameracapture.cpp @@ -110,10 +110,10 @@ QDeclarativeCameraCapture::QDeclarativeCameraCapture(QCamera *camera, QObject *p connect(m_capture, SIGNAL(readyForCaptureChanged(bool)), this, SIGNAL(readyForCaptureChanged(bool))); connect(m_capture, SIGNAL(imageExposed(int)), this, SIGNAL(imageExposed(int))); - connect(m_capture, SIGNAL(imageCaptured(int,QImage)), this, SLOT(_q_imageCaptured(int, QImage))); + connect(m_capture, SIGNAL(imageCaptured(int,QImage)), this, SLOT(_q_imageCaptured(int,QImage))); connect(m_capture, SIGNAL(imageMetadataAvailable(int,QString,QVariant)), this, SLOT(_q_imageMetadataAvailable(int,QString,QVariant))); - connect(m_capture, SIGNAL(imageSaved(int,QString)), this, SLOT(_q_imageSaved(int, QString))); + connect(m_capture, SIGNAL(imageSaved(int,QString)), this, SLOT(_q_imageSaved(int,QString))); connect(m_capture, SIGNAL(error(int,QCameraImageCapture::Error,QString)), this, SLOT(_q_captureFailed(int,QCameraImageCapture::Error,QString))); diff --git a/src/imports/multimedia/qdeclarativeradio.cpp b/src/imports/multimedia/qdeclarativeradio.cpp index 26620f30..b3a7b3f6 100644 --- a/src/imports/multimedia/qdeclarativeradio.cpp +++ b/src/imports/multimedia/qdeclarativeradio.cpp @@ -114,7 +114,7 @@ QDeclarativeRadio::QDeclarativeRadio(QObject *parent) : connect(m_radioTuner, SIGNAL(signalStrengthChanged(int)), this, SIGNAL(signalStrengthChanged(int))); connect(m_radioTuner, SIGNAL(volumeChanged(int)), this, SIGNAL(volumeChanged(int))); connect(m_radioTuner, SIGNAL(mutedChanged(bool)), this, SIGNAL(mutedChanged(bool))); - connect(m_radioTuner, SIGNAL(stationFound(int, QString)), this, SIGNAL(stationFound(int, QString))); + connect(m_radioTuner, SIGNAL(stationFound(int,QString)), this, SIGNAL(stationFound(int,QString))); connect(m_radioTuner, SIGNAL(antennaConnectedChanged(bool)), this, SIGNAL(antennaConnectedChanged(bool))); connect(m_radioTuner, SIGNAL(availabilityChanged(QMultimedia::AvailabilityStatus)), this, SLOT(_q_availabilityChanged(QMultimedia::AvailabilityStatus))); diff --git a/src/multimedia/camera/qcameraimagecapture.cpp b/src/multimedia/camera/qcameraimagecapture.cpp index 0471ef3b..409db494 100644 --- a/src/multimedia/camera/qcameraimagecapture.cpp +++ b/src/multimedia/camera/qcameraimagecapture.cpp @@ -266,8 +266,8 @@ bool QCameraImageCapture::setMediaObject(QMediaObject *mediaObject) this, SIGNAL(imageMetadataAvailable(int,QString,QVariant))); connect(d->control, SIGNAL(imageAvailable(int,QVideoFrame)), this, SIGNAL(imageAvailable(int,QVideoFrame))); - connect(d->control, SIGNAL(imageSaved(int, QString)), - this, SIGNAL(imageSaved(int, QString))); + connect(d->control, SIGNAL(imageSaved(int,QString)), + this, SIGNAL(imageSaved(int,QString))); connect(d->control, SIGNAL(readyForCaptureChanged(bool)), this, SLOT(_q_readyChanged(bool))); connect(d->control, SIGNAL(error(int,int,QString)), diff --git a/src/multimedia/playback/playlistfileparser.cpp b/src/multimedia/playback/playlistfileparser.cpp index 1dc93aa7..ae14d215 100644 --- a/src/multimedia/playback/playlistfileparser.cpp +++ b/src/multimedia/playback/playlistfileparser.cpp @@ -396,8 +396,8 @@ void QPlaylistFileParserPrivate::processLine(int startIndex, int length) Q_ASSERT(m_currentParser); connect(m_currentParser, SIGNAL(newItem(QVariant)), q, SIGNAL(newItem(QVariant))); connect(m_currentParser, SIGNAL(finished()), q, SLOT(_q_handleParserFinished())); - connect(m_currentParser, SIGNAL(error(QPlaylistFileParser::ParserError, QString)), - q, SLOT(_q_handleParserError(QPlaylistFileParser::ParserError, QString))); + connect(m_currentParser, SIGNAL(error(QPlaylistFileParser::ParserError,QString)), + q, SLOT(_q_handleParserError(QPlaylistFileParser::ParserError,QString))); } QString line; @@ -583,8 +583,8 @@ void QPlaylistFileParser::stop() if (d->m_currentParser) { disconnect(d->m_currentParser, SIGNAL(newItem(QVariant)), this, SIGNAL(newItem(QVariant))); disconnect(d->m_currentParser, SIGNAL(finished()), this, SLOT(_q_handleParserFinished())); - disconnect(d->m_currentParser, SIGNAL(error(QPlaylistFileParser::ParserError, QString)), - this, SLOT(_q_handleParserError(QPlaylistFileParser::ParserError, QString))); + disconnect(d->m_currentParser, SIGNAL(error(QPlaylistFileParser::ParserError,QString)), + this, SLOT(_q_handleParserError(QPlaylistFileParser::ParserError,QString))); d->m_currentParser->deleteLater(); d->m_currentParser = 0; } diff --git a/src/multimedia/playback/qmedianetworkplaylistprovider.cpp b/src/multimedia/playback/qmedianetworkplaylistprovider.cpp index ca8e78b0..a8d8c4b0 100644 --- a/src/multimedia/playback/qmedianetworkplaylistprovider.cpp +++ b/src/multimedia/playback/qmedianetworkplaylistprovider.cpp @@ -113,11 +113,11 @@ QMediaNetworkPlaylistProvider::QMediaNetworkPlaylistProvider(QObject *parent) :QMediaPlaylistProvider(*new QMediaNetworkPlaylistProviderPrivate, parent) { d_func()->q_ptr = this; - connect(&d_func()->parser, SIGNAL(newItem(const QVariant&)), - this, SLOT(_q_handleNewItem(const QVariant&))); + connect(&d_func()->parser, SIGNAL(newItem(QVariant)), + this, SLOT(_q_handleNewItem(QVariant))); connect(&d_func()->parser, SIGNAL(finished()), this, SIGNAL(loaded())); - connect(&d_func()->parser, SIGNAL(error(QPlaylistFileParser::ParserError, const QString &)), - this, SLOT(_q_handleParserError(QPlaylistFileParser::ParserError, const QString &))); + connect(&d_func()->parser, SIGNAL(error(QPlaylistFileParser::ParserError,QString)), + this, SLOT(_q_handleParserError(QPlaylistFileParser::ParserError,QString))); } QMediaNetworkPlaylistProvider::~QMediaNetworkPlaylistProvider() diff --git a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp index ce73263d..7b0c5827 100644 --- a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp +++ b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp @@ -63,12 +63,12 @@ QAndroidMediaPlayerControl::QAndroidMediaPlayerControl(QObject *parent) { connect(mMediaPlayer, SIGNAL(bufferingUpdate(qint32)), this, SLOT(onBufferChanged(qint32))); - connect(mMediaPlayer, SIGNAL(info(qint32, qint32)), - this, SLOT(onInfo(qint32, qint32))); - connect(mMediaPlayer, SIGNAL(error(qint32, qint32)), - this, SLOT(onError(qint32, qint32))); - connect(mMediaPlayer, SIGNAL(mediaPlayerInfo(qint32, qint32)), - this, SLOT(onMediaPlayerInfo(qint32, qint32))); + connect(mMediaPlayer, SIGNAL(info(qint32,qint32)), + this, SLOT(onInfo(qint32,qint32))); + connect(mMediaPlayer, SIGNAL(error(qint32,qint32)), + this, SLOT(onError(qint32,qint32))); + connect(mMediaPlayer, SIGNAL(mediaPlayerInfo(qint32,qint32)), + this, SLOT(onMediaPlayerInfo(qint32,qint32))); connect(mMediaPlayer, SIGNAL(videoSizeChanged(qint32,qint32)), this, SLOT(onVideoSizeChanged(qint32,qint32))); } diff --git a/src/plugins/directshow/camera/dsimagecapturecontrol.cpp b/src/plugins/directshow/camera/dsimagecapturecontrol.cpp index f1332235..e689b13d 100644 --- a/src/plugins/directshow/camera/dsimagecapturecontrol.cpp +++ b/src/plugins/directshow/camera/dsimagecapturecontrol.cpp @@ -49,10 +49,10 @@ DSImageCaptureControl::DSImageCaptureControl(DSCameraSession *session) :QCameraImageCaptureControl(session), m_session(session), m_ready(false) { connect(m_session, SIGNAL(stateChanged(QCamera::State)), SLOT(updateState())); - connect(m_session, SIGNAL(imageCaptured(const int, QImage)), - this, SIGNAL(imageCaptured(const int, QImage))); - connect(m_session, SIGNAL(imageSaved(const int, const QString &)), - this, SIGNAL(imageSaved(const int, const QString &))); + connect(m_session, SIGNAL(imageCaptured(int,QImage)), + this, SIGNAL(imageCaptured(int,QImage))); + connect(m_session, SIGNAL(imageSaved(int,QString)), + this, SIGNAL(imageSaved(int,QString))); connect(m_session, SIGNAL(readyForCaptureChanged(bool)), this, SIGNAL(readyForCaptureChanged(bool))); } diff --git a/src/plugins/gstreamer/camerabin/camerabinlocks.cpp b/src/plugins/gstreamer/camerabin/camerabinlocks.cpp index 464fa804..cf105d48 100644 --- a/src/plugins/gstreamer/camerabin/camerabinlocks.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinlocks.cpp @@ -54,8 +54,8 @@ CameraBinLocks::CameraBinLocks(CameraBinSession *session) m_session(session), m_focus(m_session->cameraFocusControl()) { - connect(m_focus, SIGNAL(_q_focusStatusChanged(QCamera::LockStatus, QCamera::LockChangeReason)), - this, SLOT(updateFocusStatus(QCamera::LockStatus, QCamera::LockChangeReason))); + connect(m_focus, SIGNAL(_q_focusStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason)), + this, SLOT(updateFocusStatus(QCamera::LockStatus,QCamera::LockChangeReason))); } CameraBinLocks::~CameraBinLocks() diff --git a/src/plugins/gstreamer/camerabin/camerabinresourcepolicy.cpp b/src/plugins/gstreamer/camerabin/camerabinresourcepolicy.cpp index d6df4208..d8f1616d 100644 --- a/src/plugins/gstreamer/camerabin/camerabinresourcepolicy.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinresourcepolicy.cpp @@ -65,7 +65,7 @@ CamerabinResourcePolicy::CamerabinResourcePolicy(QObject *parent) : m_resource->setAlwaysReply(); m_resource->initAndConnect(); - connect(m_resource, SIGNAL(resourcesGranted(const QList)), + connect(m_resource, SIGNAL(resourcesGranted(QList)), SLOT(handleResourcesGranted())); connect(m_resource, SIGNAL(resourcesDenied()), SIGNAL(resourcesDenied())); connect(m_resource, SIGNAL(lostResources()), SLOT(handleResourcesLost())); diff --git a/src/plugins/gstreamer/camerabin/camerabuttonlistener_meego.cpp b/src/plugins/gstreamer/camerabin/camerabuttonlistener_meego.cpp index 2e66360a..84bcac9f 100644 --- a/src/plugins/gstreamer/camerabin/camerabuttonlistener_meego.cpp +++ b/src/plugins/gstreamer/camerabin/camerabuttonlistener_meego.cpp @@ -54,7 +54,7 @@ CameraButtonListener::CameraButtonListener(QObject *parent) : m_shutterPressed(false) { m_keys = new MeeGo::QmKeys(this); - connect(m_keys, SIGNAL(keyEvent(MeeGo::QmKeys::Key, MeeGo::QmKeys::State)), + connect(m_keys, SIGNAL(keyEvent(MeeGo::QmKeys::Key,MeeGo::QmKeys::State)), this, SLOT(handleQmKeyEvent(MeeGo::QmKeys::Key,MeeGo::QmKeys::State))); } diff --git a/src/plugins/resourcepolicy/resourcepolicyimpl.cpp b/src/plugins/resourcepolicy/resourcepolicyimpl.cpp index aed9ccb0..0acabc00 100644 --- a/src/plugins/resourcepolicy/resourcepolicyimpl.cpp +++ b/src/plugins/resourcepolicy/resourcepolicyimpl.cpp @@ -61,7 +61,7 @@ ResourcePolicyImpl::ResourcePolicyImpl(QObject *parent) m_resourceSet->update(); - connect(m_resourceSet, SIGNAL(resourcesGranted(const QList)), + connect(m_resourceSet, SIGNAL(resourcesGranted(QList)), this, SLOT(handleResourcesGranted())); connect(m_resourceSet, SIGNAL(resourcesDenied()), this, SLOT(handleResourcesDenied())); diff --git a/src/plugins/wmf/decoder/mfdecoderservice.cpp b/src/plugins/wmf/decoder/mfdecoderservice.cpp index 9a06eed8..7e9175d7 100644 --- a/src/plugins/wmf/decoder/mfdecoderservice.cpp +++ b/src/plugins/wmf/decoder/mfdecoderservice.cpp @@ -64,4 +64,4 @@ void MFAudioDecoderService::releaseControl(QMediaControl *control) if (control && control->inherits("MFAudioDecoderControl")) { delete control; } -} \ No newline at end of file +} diff --git a/src/plugins/wmf/decoder/mfdecodersourcereader.cpp b/src/plugins/wmf/decoder/mfdecodersourcereader.cpp index 0aa2cafb..c26e3518 100644 --- a/src/plugins/wmf/decoder/mfdecodersourcereader.cpp +++ b/src/plugins/wmf/decoder/mfdecodersourcereader.cpp @@ -196,4 +196,4 @@ STDMETHODIMP MFDecoderSourceReader::OnFlush(DWORD) STDMETHODIMP MFDecoderSourceReader::OnEvent(DWORD, IMFMediaEvent*) { return S_OK; -} \ No newline at end of file +} diff --git a/src/plugins/wmf/player/mfplayercontrol.cpp b/src/plugins/wmf/player/mfplayercontrol.cpp index 68ffa7b6..a50c213c 100644 --- a/src/plugins/wmf/player/mfplayercontrol.cpp +++ b/src/plugins/wmf/player/mfplayercontrol.cpp @@ -58,7 +58,7 @@ MFPlayerControl::MFPlayerControl(MFPlayerSession *session) QObject::connect(m_session, SIGNAL(audioAvailable()), this, SLOT(handleAudioAvailable())); QObject::connect(m_session, SIGNAL(durationUpdate(qint64)), this, SLOT(handleDurationUpdate(qint64))); QObject::connect(m_session, SIGNAL(seekableUpdate(bool)), this, SLOT(handleSeekableUpdate(bool))); - QObject::connect(m_session, SIGNAL(error(QMediaPlayer::Error, QString, bool)), this, SLOT(handleError(QMediaPlayer::Error, QString, bool))); + QObject::connect(m_session, SIGNAL(error(QMediaPlayer::Error,QString,bool)), this, SLOT(handleError(QMediaPlayer::Error,QString,bool))); QObject::connect(m_session, SIGNAL(positionChanged(qint64)), this, SIGNAL(positionChanged(qint64))); QObject::connect(m_session, SIGNAL(volumeChanged(int)), this, SIGNAL(volumeChanged(int))); QObject::connect(m_session, SIGNAL(mutedChanged(bool)), this, SIGNAL(mutedChanged(bool))); diff --git a/src/plugins/wmf/player/mfplayersession.cpp b/src/plugins/wmf/player/mfplayersession.cpp index 04b46ec0..183f0231 100644 --- a/src/plugins/wmf/player/mfplayersession.cpp +++ b/src/plugins/wmf/player/mfplayersession.cpp @@ -93,7 +93,7 @@ MFPlayerSession::MFPlayerSession(MFPlayerService *playerService) , m_audioSampleGrabberNode(0) , m_videoProbeMFT(0) { - QObject::connect(this, SIGNAL(sessionEvent(IMFMediaEvent *)), this, SLOT(handleSessionEvent(IMFMediaEvent *))); + QObject::connect(this, SIGNAL(sessionEvent(IMFMediaEvent*)), this, SLOT(handleSessionEvent(IMFMediaEvent*))); m_pendingState = NoPending; ZeroMemory(&m_state, sizeof(m_state)); From 7a02bcaad18d7aa133944a23f863c2f9efcbf5fe Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Fri, 17 Jan 2014 14:41:08 +0100 Subject: [PATCH 16/18] Replace win32-g++ with mingw scope Commit 773dd01 in qtbase introduced a general mingw platform scope, which is cleaner and more flexible than matching the spec name. (see 278152fff for a similar commit in qtbase). Change-Id: Ib46b9e83f690b0b26933b73764c7d7d4b031d792 Reviewed-by: Yoann Lopes --- src/plugins/directshow/camera/camera.pri | 2 +- src/plugins/directshow/directshow.pro | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/plugins/directshow/camera/camera.pri b/src/plugins/directshow/camera/camera.pri index 7081abd3..2c0fe55b 100644 --- a/src/plugins/directshow/camera/camera.pri +++ b/src/plugins/directshow/camera/camera.pri @@ -2,7 +2,7 @@ INCLUDEPATH += $$PWD DEFINES += QMEDIA_DIRECTSHOW_CAMERA -win32-g++: DEFINES += QT_NO_WMSDK +mingw: DEFINES += QT_NO_WMSDK win32: DEFINES += _CRT_SECURE_NO_WARNINGS diff --git a/src/plugins/directshow/directshow.pro b/src/plugins/directshow/directshow.pro index 97e72a10..4dad9711 100644 --- a/src/plugins/directshow/directshow.pro +++ b/src/plugins/directshow/directshow.pro @@ -16,9 +16,7 @@ qtHaveModule(widgets) { DEFINES += HAVE_WIDGETS } -win32-g++ { - DEFINES += NO_DSHOW_STRSAFE -} +mingw: DEFINES += NO_DSHOW_STRSAFE !config_wmf: include(player/player.pri) include(camera/camera.pri) From 54066d2c216e871e3f4c08590f0e010dd2e76e69 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Fri, 7 Feb 2014 14:23:32 +0100 Subject: [PATCH 17/18] AVFoundation: mirror viewfinder frames of front-facing cameras. Change-Id: I95920aa459ff0931819cb6f8278ab296db542601 Reviewed-by: Andy Nichols --- .../avfoundation/camera/avfcamerasession.h | 1 + .../avfoundation/camera/avfcamerasession.mm | 10 ++++- .../camera/avfvideorenderercontrol.h | 7 ++- .../camera/avfvideorenderercontrol.mm | 45 +++++++++++++++++-- 4 files changed, 56 insertions(+), 7 deletions(-) diff --git a/src/plugins/avfoundation/camera/avfcamerasession.h b/src/plugins/avfoundation/camera/avfcamerasession.h index 48681aae..2630a35f 100644 --- a/src/plugins/avfoundation/camera/avfcamerasession.h +++ b/src/plugins/avfoundation/camera/avfcamerasession.h @@ -64,6 +64,7 @@ public: void setVideoOutput(AVFVideoRendererControl *output); AVCaptureSession *captureSession() const { return m_captureSession; } + AVCaptureDevice *videoCaptureDevice() const; QCamera::State state() const; QCamera::State requestedState() const { return m_state; } diff --git a/src/plugins/avfoundation/camera/avfcamerasession.mm b/src/plugins/avfoundation/camera/avfcamerasession.mm index 5f1385a7..93c2bacd 100644 --- a/src/plugins/avfoundation/camera/avfcamerasession.mm +++ b/src/plugins/avfoundation/camera/avfcamerasession.mm @@ -155,7 +155,15 @@ void AVFCameraSession::setVideoOutput(AVFVideoRendererControl *output) { m_videoOutput = output; if (output) - output->configureAVCaptureSession(m_captureSession); + output->configureAVCaptureSession(this); +} + +AVCaptureDevice *AVFCameraSession::videoCaptureDevice() const +{ + if (m_videoInput) + return m_videoInput.device; + + return 0; } QCamera::State AVFCameraSession::state() const diff --git a/src/plugins/avfoundation/camera/avfvideorenderercontrol.h b/src/plugins/avfoundation/camera/avfvideorenderercontrol.h index 57978c05..c080451c 100644 --- a/src/plugins/avfoundation/camera/avfvideorenderercontrol.h +++ b/src/plugins/avfoundation/camera/avfvideorenderercontrol.h @@ -66,7 +66,7 @@ public: QAbstractVideoSurface *surface() const; void setSurface(QAbstractVideoSurface *surface); - void configureAVCaptureSession(AVCaptureSession *captureSession); + void configureAVCaptureSession(AVFCameraSession *cameraSession); void syncHandleViewfinderFrame(const QVideoFrame &frame); Q_SIGNALS: @@ -74,13 +74,16 @@ Q_SIGNALS: private Q_SLOTS: void handleViewfinderFrame(); + void updateCaptureConnection(); private: QAbstractVideoSurface *m_surface; AVFCaptureFramesDelegate *m_viewfinderFramesDelegate; - AVCaptureSession *m_captureSession; + AVFCameraSession *m_cameraSession; AVCaptureVideoDataOutput *m_videoDataOutput; + bool m_needsHorizontalMirroring; + QVideoFrame m_lastViewfinderFrame; QMutex m_vfMutex; }; diff --git a/src/plugins/avfoundation/camera/avfvideorenderercontrol.mm b/src/plugins/avfoundation/camera/avfvideorenderercontrol.mm index 6efa3cbf..1a205445 100644 --- a/src/plugins/avfoundation/camera/avfvideorenderercontrol.mm +++ b/src/plugins/avfoundation/camera/avfvideorenderercontrol.mm @@ -146,13 +146,14 @@ private: AVFVideoRendererControl::AVFVideoRendererControl(QObject *parent) : QVideoRendererControl(parent) , m_surface(0) + , m_needsHorizontalMirroring(false) { m_viewfinderFramesDelegate = [[AVFCaptureFramesDelegate alloc] initWithRenderer:this]; } AVFVideoRendererControl::~AVFVideoRendererControl() { - [m_captureSession removeOutput:m_videoDataOutput]; + [m_cameraSession->captureSession() removeOutput:m_videoDataOutput]; [m_viewfinderFramesDelegate release]; } @@ -169,9 +170,13 @@ void AVFVideoRendererControl::setSurface(QAbstractVideoSurface *surface) } } -void AVFVideoRendererControl::configureAVCaptureSession(AVCaptureSession *captureSession) +void AVFVideoRendererControl::configureAVCaptureSession(AVFCameraSession *cameraSession) { - m_captureSession = captureSession; + m_cameraSession = cameraSession; + connect(m_cameraSession, SIGNAL(readyToConfigureConnections()), + this, SLOT(updateCaptureConnection())); + + m_needsHorizontalMirroring = false; m_videoDataOutput = [[[AVCaptureVideoDataOutput alloc] init] autorelease]; @@ -188,7 +193,23 @@ void AVFVideoRendererControl::configureAVCaptureSession(AVCaptureSession *captur [NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]; - [m_captureSession addOutput:m_videoDataOutput]; + [m_cameraSession->captureSession() addOutput:m_videoDataOutput]; +} + +void AVFVideoRendererControl::updateCaptureConnection() +{ + AVCaptureConnection *connection = [m_videoDataOutput connectionWithMediaType:AVMediaTypeVideo]; + if (connection == nil || !m_cameraSession->videoCaptureDevice()) + return; + + // Frames of front-facing cameras should be mirrored horizontally (it's the default when using + // AVCaptureVideoPreviewLayer but not with AVCaptureVideoDataOutput) + if (connection.isVideoMirroringSupported) + connection.videoMirrored = m_cameraSession->videoCaptureDevice().position == AVCaptureDevicePositionFront; + + // If the connection does't support mirroring, we'll have to do it ourselves + m_needsHorizontalMirroring = !connection.isVideoMirrored + && m_cameraSession->videoCaptureDevice().position == AVCaptureDevicePositionFront; } //can be called from non main thread @@ -203,6 +224,22 @@ void AVFVideoRendererControl::syncHandleViewfinderFrame(const QVideoFrame &frame } m_lastViewfinderFrame = frame; + + if (m_needsHorizontalMirroring) { + m_lastViewfinderFrame.map(QAbstractVideoBuffer::ReadOnly); + + // no deep copy + QImage image(m_lastViewfinderFrame.bits(), + m_lastViewfinderFrame.size().width(), + m_lastViewfinderFrame.size().height(), + m_lastViewfinderFrame.bytesPerLine(), + QImage::Format_RGB32); + + QImage mirrored = image.mirrored(true, false); + + m_lastViewfinderFrame.unmap(); + m_lastViewfinderFrame = QVideoFrame(mirrored); + } } void AVFVideoRendererControl::handleViewfinderFrame() From 01714ef0c5ee80544e3799ae2a66d9a611c9d71f Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 17 Feb 2014 14:19:44 +0100 Subject: [PATCH 18/18] Use QVERIFY2 for elapsed time in tst_QMediaPlayerBackend::seekPauseSeek(). The test has been observed to fail sometimes, try to obtain values. Change-Id: Id0374b7ad3d593c099500e771bc4d8cc50f26651 Reviewed-by: Yoann Lopes --- .../tst_qmediaplayerbackend.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp index e5b115bf..380e344d 100644 --- a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp +++ b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp @@ -630,8 +630,9 @@ void tst_QMediaPlayerBackend::seekPauseSeek() QVERIFY(surface->m_frameList.isEmpty()); // frame must not appear until we call pause() or play() positionSpy.clear(); - player.setPosition((qint64)7000); - QTRY_VERIFY(!positionSpy.isEmpty() && qAbs(player.position() - (qint64)7000) < (qint64)500); + qint64 position = 7000; + player.setPosition(position); + QTRY_VERIFY(!positionSpy.isEmpty() && qAbs(player.position() - position) < (qint64)500); QCOMPARE(player.state(), QMediaPlayer::StoppedState); QTest::qWait(250); // wait a bit to ensure the frame is not rendered QVERIFY(surface->m_frameList.isEmpty()); // still no frame, we must call pause() or play() to see a frame @@ -642,7 +643,8 @@ void tst_QMediaPlayerBackend::seekPauseSeek() { QVideoFrame frame = surface->m_frameList.back(); - QVERIFY(qAbs(frame.startTime() - (qint64)7000) < (qint64)500); + const qint64 elapsed = frame.startTime() - position; + QVERIFY2(qAbs(elapsed) < (qint64)500, QByteArray::number(elapsed).constData()); QCOMPARE(frame.width(), 160); QCOMPARE(frame.height(), 120); @@ -657,14 +659,16 @@ void tst_QMediaPlayerBackend::seekPauseSeek() } positionSpy.clear(); - player.setPosition((qint64)12000); - QTRY_VERIFY(!positionSpy.isEmpty() && qAbs(player.position() - (qint64)12000) < (qint64)500); + position = 12000; + player.setPosition(position); + QTRY_VERIFY(!positionSpy.isEmpty() && qAbs(player.position() - position) < (qint64)500); QCOMPARE(player.state(), QMediaPlayer::PausedState); QCOMPARE(surface->m_frameList.size(), 2); { QVideoFrame frame = surface->m_frameList.back(); - QVERIFY(qAbs(frame.startTime() - (qint64)12000) < (qint64)500); + const qint64 elapsed = frame.startTime() - position; + QVERIFY2(qAbs(elapsed) < (qint64)500, QByteArray::number(elapsed).constData()); QCOMPARE(frame.width(), 160); QCOMPARE(frame.height(), 120);