Replaced QAudioCaptureSource with QAudioRecorder.

QAudioCaptureSource name is confusing, it's essentially an audio
recording service but it's not evident from API.

QAudioRecorder replaces QAudioCaptureSource+QMediaRecorder combination.

Change-Id: I0082d766fc0d1b8d5ecbfc527f13e715add730c8
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
This commit is contained in:
Dmytro Poplavskiy
2012-01-18 14:46:58 +10:00
committed by Qt by Nokia
parent 8c74e5e7e7
commit 69cef0c24c
16 changed files with 462 additions and 449 deletions

View File

@@ -3,7 +3,7 @@ TEMPLATE = subdirs
SUBDIRS += \
qabstractvideobuffer \
qabstractvideosurface \
qaudiocapturesource \
qaudiorecorder \
qaudioformat \
qaudionamespace \
qcamera \

View File

@@ -1,11 +0,0 @@
CONFIG += testcase
TARGET = tst_qaudiocapturesource
QT += multimedia-private testlib
CONFIG += no_private_qt_headers_warning
SOURCES += tst_qaudiocapturesource.cpp
include (../qmultimedia_common/mockrecorder.pri)
include (../qmultimedia_common/mock.pri)

View File

@@ -0,0 +1,10 @@
CONFIG += testcase no_private_qt_headers_warning
TARGET = tst_qaudiorecorder
QT += multimedia-private testlib
SOURCES += tst_qaudiorecorder.cpp
include (../qmultimedia_common/mock.pri)
include (../qmultimedia_common/mockrecorder.pri)

View File

@@ -44,7 +44,7 @@
#include <qaudioformat.h>
#include <qaudiocapturesource.h>
#include <qaudiorecorder.h>
#include <qaudioencodercontrol.h>
#include <qmediarecordercontrol.h>
#include <qaudioendpointselector.h>
@@ -59,13 +59,13 @@
QT_USE_NAMESPACE
class tst_QAudioCaptureSource: public QObject
class tst_QAudioRecorder: public QObject
{
Q_OBJECT
public slots:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
private slots:
//void testNullService();
@@ -77,28 +77,29 @@ private slots:
void testAvailableAudioInputChangedSignal();
private:
QAudioCaptureSource *audiosource;
QAudioRecorder *audiosource;
MockMediaRecorderService *mockMediaRecorderService;
MockMediaServiceProvider *mockProvider;
};
void tst_QAudioCaptureSource::initTestCase()
void tst_QAudioRecorder::init()
{
mockMediaRecorderService = new MockMediaRecorderService;
mockMediaRecorderService = new MockMediaRecorderService(this, new MockMediaRecorderControl(this));
mockProvider = new MockMediaServiceProvider(mockMediaRecorderService);
}
void tst_QAudioCaptureSource::cleanupTestCase()
void tst_QAudioRecorder::cleanup()
{
delete audiosource;
delete mockProvider;
audiosource = 0;
mockProvider = 0;
}
/*
void tst_QAudioCaptureSource::testNullService()
void tst_QAudioRecorder::testNullService()
{
MockProvider provider(0);
QAudioCaptureSource source(0, &provider);
QAudioRecorder source(0, &provider);
QCOMPARE(source.audioInputs().size(), 0);
QCOMPARE(source.defaultAudioInput(), QString());
@@ -106,12 +107,12 @@ void tst_QAudioCaptureSource::testNullService()
}
*/
/*
void tst_QAudioCaptureSource::testNullControl()
void tst_QAudioRecorder::testNullControl()
{
MockRecorderService service;
service.hasAudioDeviceControl = false;
MockProvider provider(&service);
QAudioCaptureSource source(0, &provider);
QAudioRecorder source(0, &provider);
QCOMPARE(source.audioInputs().size(), 0);
QCOMPARE(source.defaultAudioInput(), QString());
@@ -125,14 +126,14 @@ void tst_QAudioCaptureSource::testNullControl()
QCOMPARE(deviceNameSpy.count(), 0);
}
*/
void tst_QAudioCaptureSource::testAudioSource()
void tst_QAudioRecorder::testAudioSource()
{
audiosource = new QAudioCaptureSource(0, mockProvider);
audiosource = new QAudioRecorder(0, mockProvider);
QCOMPARE(audiosource->service(),(QMediaService *) mockMediaRecorderService);
QCOMPARE(audiosource->mediaObject()->service(),(QMediaService *) mockMediaRecorderService);
}
void tst_QAudioCaptureSource::testOptions()
void tst_QAudioRecorder::testOptions()
{
const QString codec(QLatin1String("audio/mpeg"));
@@ -142,45 +143,45 @@ void tst_QAudioCaptureSource::testOptions()
QVERIFY(mockMediaRecorderService->mockAudioEncoderControl->encodingOption(codec, options.first()).toInt() == 8000);
}
void tst_QAudioCaptureSource::testDevices()
void tst_QAudioRecorder::testDevices()
{
audiosource = new QAudioCaptureSource(0,mockProvider);
audiosource = new QAudioRecorder(0,mockProvider);
QList<QString> devices = audiosource->audioInputs();
QVERIFY(devices.size() > 0);
QVERIFY(devices.at(0).compare("device1") == 0);
QVERIFY(audiosource->audioDescription("device1").compare("dev1 comment") == 0);
QVERIFY(audiosource->audioInputDescription("device1").compare("dev1 comment") == 0);
QVERIFY(audiosource->defaultAudioInput() == "device1");
QVERIFY(audiosource->isAvailable() == true);
QSignalSpy checkSignal(audiosource, SIGNAL(activeAudioInputChanged(QString)));
QSignalSpy checkSignal(audiosource, SIGNAL(audioInputChanged(QString)));
audiosource->setAudioInput("device2");
QVERIFY(audiosource->activeAudioInput().compare("device2") == 0);
QVERIFY(audiosource->audioInput().compare("device2") == 0);
QVERIFY(checkSignal.count() == 1);
QVERIFY(audiosource->isAvailable() == true);
}
void tst_QAudioCaptureSource::testAvailability()
void tst_QAudioRecorder::testAvailability()
{
MockMediaRecorderService service;
MockMediaRecorderService service(this, new MockMediaRecorderControl(this));
service.hasControls = false;
MockMediaServiceProvider provider(&service);
QAudioCaptureSource source(0, &provider);
QAudioRecorder source(0, &provider);
QVERIFY(source.isAvailable() == false);
QVERIFY(source.availabilityError() == QtMultimedia::ServiceMissingError);
service.hasControls = true;
MockMediaServiceProvider provider2(&service);
QAudioCaptureSource source2(0, &provider2);
QAudioRecorder source2(0, &provider2);
QVERIFY(source2.isAvailable() == true);
QVERIFY(source2.availabilityError() == QtMultimedia::NoError);
}
void tst_QAudioCaptureSource::testAvailableAudioInputChangedSignal()
void tst_QAudioRecorder::testAvailableAudioInputChangedSignal()
{
// The availabilityChangedSignal is implemented in QAudioCaptureSource. SO using it to test the signal.
audiosource = new QAudioCaptureSource(0, mockProvider);
// The availabilityChangedSignal is implemented in QAudioRecorder. SO using it to test the signal.
audiosource = new QAudioRecorder(0, mockProvider);
/* Spy the signal availableEndpointChanged and audioInputchanged */
QSignalSpy changed(mockMediaRecorderService->mockAudioEndpointSelector, SIGNAL(availableEndpointsChanged()));
@@ -199,6 +200,6 @@ void tst_QAudioCaptureSource::testAvailableAudioInputChangedSignal()
QVERIFY(audioInputchange.count() == 1);
}
QTEST_MAIN(tst_QAudioCaptureSource)
QTEST_GUILESS_MAIN(tst_QAudioRecorder)
#include "tst_qaudiocapturesource.moc"
#include "tst_qaudiorecorder.moc"

View File

@@ -48,7 +48,6 @@
#include <qmediaobject.h>
#include <qmediaservice.h>
#include <qmetadatareadercontrol.h>
#include <qaudiocapturesource.h>
#include <qaudioendpointselector.h>
#include "mockmediarecorderservice.h"
@@ -103,7 +102,6 @@ private slots:
void extendedMetaData();
void service();
void availabilityChangedSignal();
private:
void setupNotifyTests();
@@ -474,30 +472,6 @@ void tst_QMediaObject::availability()
QtTestMediaObject mediaObject2;
QMediaService *service2 = mediaObject2.service();
QVERIFY(service2 == NULL);
}
void tst_QMediaObject::availabilityChangedSignal()
{
// The availabilityChangedSignal is implemented in QAudioCaptureSource. So using it to test the signal.
MockMediaRecorderService *mockAudioSourceService = new MockMediaRecorderService;
MockMediaServiceProvider *mockProvider = new MockMediaServiceProvider(mockAudioSourceService);
QAudioCaptureSource *audiosource = new QAudioCaptureSource(0, mockProvider);
QSignalSpy spy(audiosource, SIGNAL(availabilityChanged(bool)));
// Add the end points and verify if the availablity changed signal emitted with argument true.
QMetaObject::invokeMethod(mockAudioSourceService->mockAudioEndpointSelector, "addEndpoints");
QVERIFY(spy.count() == 1);
bool available = qvariant_cast<bool>(spy.at(0).at(0));
QVERIFY(available == true);
spy.clear();
// Remove all endpoints and verify if the signal is emitted with argument false.
QMetaObject::invokeMethod(mockAudioSourceService->mockAudioEndpointSelector, "removeEndpoints");
QVERIFY(spy.count() == 1);
available = qvariant_cast<bool>(spy.at(0).at(0));
QVERIFY(available == false);
}
QTEST_GUILESS_MAIN(tst_QMediaObject)

View File

@@ -51,7 +51,7 @@
#include <qmediaobject.h>
#include <qmediaservice.h>
#include <qmediaplayer.h>
#include <qaudiocapturesource.h>
#include <qaudiorecorder.h>
QT_USE_NAMESPACE
class MockMediaService : public QMediaService