Replaced endpoint control with audio input and output controls

Change-Id: I981aabe39d106ced4ee1240db9e5b653c6fa5e91
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
This commit is contained in:
Dmytro Poplavskiy
2012-07-16 11:28:02 +10:00
committed by Qt by Nokia
parent 29a2d09a43
commit ae728a4b1e
34 changed files with 549 additions and 328 deletions

View File

@@ -10,7 +10,7 @@ DESTDIR = $$QT.multimedia.plugins/$${PLUGIN_TYPE}
HEADERS += audioencodercontrol.h \
audiocontainercontrol.h \
audiomediarecordercontrol.h \
audioendpointselector.h \
audioinputselector.h \
audiocaptureservice.h \
audiocaptureserviceplugin.h \
audiocapturesession.h
@@ -18,7 +18,7 @@ HEADERS += audioencodercontrol.h \
SOURCES += audioencodercontrol.cpp \
audiocontainercontrol.cpp \
audiomediarecordercontrol.cpp \
audioendpointselector.cpp \
audioinputselector.cpp \
audiocaptureservice.cpp \
audiocaptureserviceplugin.cpp \
audiocapturesession.cpp

View File

@@ -41,7 +41,7 @@
#include "audiocaptureservice.h"
#include "audiocapturesession.h"
#include "audioendpointselector.h"
#include "audioinputselector.h"
#include "audioencodercontrol.h"
#include "audiocontainercontrol.h"
#include "audiomediarecordercontrol.h"
@@ -53,14 +53,14 @@ AudioCaptureService::AudioCaptureService(QObject *parent):
m_encoderControl = new AudioEncoderControl(m_session);
m_containerControl = new AudioContainerControl(m_session);
m_mediaControl = new AudioMediaRecorderControl(m_session);
m_endpointSelector = new AudioEndpointSelector(m_session);
m_inputSelector = new AudioInputSelector(m_session);
}
AudioCaptureService::~AudioCaptureService()
{
delete m_encoderControl;
delete m_containerControl;
delete m_endpointSelector;
delete m_inputSelector;
delete m_mediaControl;
delete m_session;
}
@@ -73,8 +73,8 @@ QMediaControl *AudioCaptureService::requestControl(const char *name)
if (qstrcmp(name,QAudioEncoderSettingsControl_iid) == 0)
return m_encoderControl;
if (qstrcmp(name,QAudioEndpointSelectorControl_iid) == 0)
return m_endpointSelector;
if (qstrcmp(name,QAudioInputSelectorControl_iid) == 0)
return m_inputSelector;
if (qstrcmp(name,QMediaContainerControl_iid) == 0)
return m_containerControl;

View File

@@ -50,7 +50,7 @@ class AudioCaptureSession;
class AudioEncoderControl;
class AudioContainerControl;
class AudioMediaRecorderControl;
class AudioEndpointSelector;
class AudioInputSelector;
QT_USE_NAMESPACE
@@ -67,7 +67,7 @@ private:
AudioCaptureSession *m_session;
AudioEncoderControl *m_encoderControl;
AudioContainerControl *m_containerControl;
AudioEndpointSelector *m_endpointSelector;
AudioInputSelector *m_inputSelector;
AudioMediaRecorderControl *m_mediaControl;
};

View File

@@ -47,7 +47,7 @@
#include <QDir>
#include "audioencodercontrol.h"
#include "audioendpointselector.h"
#include "audioinputselector.h"
#include "audiomediarecordercontrol.h"
#include <qaudioformat.h>

View File

@@ -40,31 +40,31 @@
****************************************************************************/
#include "audiocapturesession.h"
#include "audioendpointselector.h"
#include "audioinputselector.h"
#include <qaudiodeviceinfo.h>
AudioEndpointSelector::AudioEndpointSelector(QObject *parent)
:QAudioEndpointSelectorControl(parent)
AudioInputSelector::AudioInputSelector(QObject *parent)
:QAudioInputSelectorControl(parent)
{
m_session = qobject_cast<AudioCaptureSession*>(parent);
update();
m_audioInput = defaultEndpoint();
m_audioInput = defaultInput();
}
AudioEndpointSelector::~AudioEndpointSelector()
AudioInputSelector::~AudioInputSelector()
{
}
QList<QString> AudioEndpointSelector::availableEndpoints() const
QList<QString> AudioInputSelector::availableInputs() const
{
return m_names;
}
QString AudioEndpointSelector::endpointDescription(const QString& name) const
QString AudioInputSelector::inputDescription(const QString& name) const
{
QString desc;
@@ -77,26 +77,26 @@ QString AudioEndpointSelector::endpointDescription(const QString& name) const
return desc;
}
QString AudioEndpointSelector::defaultEndpoint() const
QString AudioInputSelector::defaultInput() const
{
return QAudioDeviceInfo(QAudioDeviceInfo::defaultInputDevice()).deviceName();
}
QString AudioEndpointSelector::activeEndpoint() const
QString AudioInputSelector::activeInput() const
{
return m_audioInput;
}
void AudioEndpointSelector::setActiveEndpoint(const QString& name)
void AudioInputSelector::setActiveInput(const QString& name)
{
if (m_audioInput.compare(name) != 0) {
m_audioInput = name;
m_session->setCaptureDevice(name);
emit activeEndpointChanged(name);
emit activeInputChanged(name);
}
}
void AudioEndpointSelector::update()
void AudioInputSelector::update()
{
m_names.clear();
m_descriptions.clear();

View File

@@ -39,31 +39,31 @@
**
****************************************************************************/
#ifndef AUDIOENDPOINTSELECTOR_H
#define AUDIOENDPOINTSELECTOR_H
#ifndef AUDIOINPUTSELECTOR_H
#define AUDIOINPUTSELECTOR_H
#include <QStringList>
#include "qaudioendpointselectorcontrol.h"
#include "qaudioinputselectorcontrol.h"
class AudioCaptureSession;
QT_USE_NAMESPACE
class AudioEndpointSelector : public QAudioEndpointSelectorControl
class AudioInputSelector : public QAudioInputSelectorControl
{
Q_OBJECT
public:
AudioEndpointSelector(QObject *parent);
virtual ~AudioEndpointSelector();
AudioInputSelector(QObject *parent);
virtual ~AudioInputSelector();
QList<QString> availableEndpoints() const;
QString endpointDescription(const QString& name) const;
QString defaultEndpoint() const;
QString activeEndpoint() const;
QList<QString> availableInputs() const;
QString inputDescription(const QString& name) const;
QString defaultInput() const;
QString activeInput() const;
public Q_SLOTS:
void setActiveEndpoint(const QString& name);
void setActiveInput(const QString& name);
private:
void update();
@@ -74,4 +74,4 @@ private:
AudioCaptureSession* m_session;
};
#endif // AUDIOENDPOINTSELECTOR_H
#endif // AUDIOINPUTSELECTOR_H

View File

@@ -46,7 +46,7 @@
DirectShowAudioEndpointControl::DirectShowAudioEndpointControl(
DirectShowPlayerService *service, QObject *parent)
: QAudioEndpointSelectorControl(parent)
: QAudioOutputSelectorControl(parent)
, m_service(service)
, m_bindContext(0)
, m_deviceEnumerator(0)
@@ -56,7 +56,7 @@ DirectShowAudioEndpointControl::DirectShowAudioEndpointControl(
updateEndpoints();
setActiveEndpoint(m_defaultEndpoint);
setActiveOutput(m_defaultEndpoint);
}
}
@@ -72,12 +72,12 @@ DirectShowAudioEndpointControl::~DirectShowAudioEndpointControl()
m_deviceEnumerator->Release();
}
QList<QString> DirectShowAudioEndpointControl::availableEndpoints() const
QList<QString> DirectShowAudioEndpointControl::availableOutputs() const
{
return m_devices.keys();
}
QString DirectShowAudioEndpointControl::endpointDescription(const QString &name) const
QString DirectShowAudioEndpointControl::outputDescription(const QString &name) const
{
#ifdef __IPropertyBag_INTERFACE_DEFINED__
QString description;
@@ -101,17 +101,17 @@ QString DirectShowAudioEndpointControl::endpointDescription(const QString &name)
#endif
}
QString DirectShowAudioEndpointControl::defaultEndpoint() const
QString DirectShowAudioEndpointControl::defaultOutput() const
{
return m_defaultEndpoint;
}
QString DirectShowAudioEndpointControl::activeEndpoint() const
QString DirectShowAudioEndpointControl::activeOutput() const
{
return m_activeEndpoint;
}
void DirectShowAudioEndpointControl::setActiveEndpoint(const QString &name)
void DirectShowAudioEndpointControl::setActiveOutput(const QString &name)
{
if (m_activeEndpoint == name)
return;

View File

@@ -42,7 +42,7 @@
#ifndef DIRECTSHOWAUDIOENDPOINTCONTROL_H
#define DIRECTSHOWAUDIOENDPOINTCONTROL_H
#include "qaudioendpointselectorcontrol.h"
#include "qaudiooutputselectorcontrol.h"
#include <dshow.h>
@@ -50,21 +50,21 @@ class DirectShowPlayerService;
QT_USE_NAMESPACE
class DirectShowAudioEndpointControl : public QAudioEndpointSelectorControl
class DirectShowAudioEndpointControl : public QAudioOutputSelectorControl
{
Q_OBJECT
public:
DirectShowAudioEndpointControl(DirectShowPlayerService *service, QObject *parent = 0);
~DirectShowAudioEndpointControl();
QList<QString> availableEndpoints() const;
QList<QString> availableOutputs() const;
QString endpointDescription(const QString &name) const;
QString outputDescription(const QString &name) const;
QString defaultEndpoint() const;
QString activeEndpoint() const;
QString defaultOutput() const;
QString activeOutput() const;
void setActiveEndpoint(const QString& name);
void setActiveOutput(const QString& name);
private:
void updateEndpoints();

View File

@@ -156,7 +156,7 @@ QMediaControl *DirectShowPlayerService::requestControl(const char *name)
{
if (qstrcmp(name, QMediaPlayerControl_iid) == 0) {
return m_playerControl;
} else if (qstrcmp(name, QAudioEndpointSelectorControl_iid) == 0) {
} else if (qstrcmp(name, QAudioOutputSelectorControl_iid) == 0) {
return m_audioEndpointControl;
} else if (qstrcmp(name, QMetaDataReaderControl_iid) == 0) {
return m_metaDataControl;

View File

@@ -62,7 +62,7 @@
#include "camerabincapturedestination.h"
#include <private/qgstreamerbushelper_p.h>
#include <private/qgstreameraudioinputendpointselector_p.h>
#include <private/qgstreameraudioinputselector_p.h>
#include <private/qgstreamervideoinputdevicecontrol_p.h>
#if defined(HAVE_WIDGETS)
@@ -95,7 +95,7 @@ CameraBinService::CameraBinService(const QString &service, QObject *parent):
m_cameraControl = 0;
m_metaDataControl = 0;
m_audioInputEndpointSelector = 0;
m_audioInputSelector = 0;
m_videoInputDevice = 0;
m_videoOutput = 0;
@@ -139,11 +139,11 @@ CameraBinService::CameraBinService(const QString &service, QObject *parent):
return;
}
m_audioInputEndpointSelector = new QGstreamerAudioInputEndpointSelector(this);
connect(m_audioInputEndpointSelector, SIGNAL(activeEndpointChanged(QString)), m_captureSession, SLOT(setCaptureDevice(QString)));
m_audioInputSelector = new QGstreamerAudioInputSelector(this);
connect(m_audioInputSelector, SIGNAL(activeInputChanged(QString)), m_captureSession, SLOT(setCaptureDevice(QString)));
if (m_captureSession && m_audioInputEndpointSelector->availableEndpoints().size() > 0)
m_captureSession->setCaptureDevice(m_audioInputEndpointSelector->defaultEndpoint());
if (m_captureSession && m_audioInputSelector->availableInputs().size() > 0)
m_captureSession->setCaptureDevice(m_audioInputSelector->defaultInput());
m_metaDataControl = new CameraBinMetaData(this);
connect(m_metaDataControl, SIGNAL(metaDataChanged(QMap<QByteArray,QVariant>)),
@@ -183,8 +183,8 @@ QMediaControl *CameraBinService::requestControl(const char *name)
}
}
if (qstrcmp(name,QAudioEndpointSelectorControl_iid) == 0)
return m_audioInputEndpointSelector;
if (qstrcmp(name,QAudioInputSelectorControl_iid) == 0)
return m_audioInputSelector;
if (qstrcmp(name,QVideoDeviceSelectorControl_iid) == 0)
return m_videoInputDevice;

View File

@@ -47,7 +47,7 @@
#include <gst/gst.h>
QT_BEGIN_NAMESPACE
class QAudioEndpointSelectorControl;
class QAudioInputSelectorControl;
class QVideoDeviceSelectorControl;
@@ -83,7 +83,7 @@ private:
CameraBinControl *m_cameraControl;
CameraBinMetaData *m_metaDataControl;
QAudioEndpointSelectorControl *m_audioInputEndpointSelector;
QAudioInputSelectorControl *m_audioInputSelector;
QVideoDeviceSelectorControl *m_videoInputDevice;
QMediaControl *m_videoOutput;

View File

@@ -52,7 +52,7 @@
#include "qgstreamercapturemetadatacontrol.h"
#include "qgstreamerimagecapturecontrol.h"
#include <private/qgstreameraudioinputendpointselector_p.h>
#include <private/qgstreameraudioinputselector_p.h>
#include <private/qgstreamervideoinputdevicecontrol_p.h>
#include <private/qgstreameraudioprobecontrol_p.h>
@@ -75,7 +75,7 @@ QGstreamerCaptureService::QGstreamerCaptureService(const QString &service, QObje
m_metaDataControl = 0;
m_videoInput = 0;
m_audioInputEndpointSelector = 0;
m_audioInputSelector = 0;
m_videoInputDevice = 0;
m_videoOutput = 0;
@@ -112,11 +112,11 @@ QGstreamerCaptureService::QGstreamerCaptureService(const QString &service, QObje
m_imageCaptureControl = new QGstreamerImageCaptureControl(m_captureSession);
}
m_audioInputEndpointSelector = new QGstreamerAudioInputEndpointSelector(this);
connect(m_audioInputEndpointSelector, SIGNAL(activeEndpointChanged(QString)), m_captureSession, SLOT(setCaptureDevice(QString)));
m_audioInputSelector = new QGstreamerAudioInputSelector(this);
connect(m_audioInputSelector, SIGNAL(activeInputChanged(QString)), m_captureSession, SLOT(setCaptureDevice(QString)));
if (m_captureSession && m_audioInputEndpointSelector->availableEndpoints().size() > 0)
m_captureSession->setCaptureDevice(m_audioInputEndpointSelector->defaultEndpoint());
if (m_captureSession && m_audioInputSelector->availableInputs().size() > 0)
m_captureSession->setCaptureDevice(m_audioInputSelector->defaultInput());
m_metaDataControl = new QGstreamerCaptureMetaDataControl(this);
connect(m_metaDataControl, SIGNAL(metaDataChanged(QMap<QByteArray,QVariant>)),
@@ -132,8 +132,8 @@ QMediaControl *QGstreamerCaptureService::requestControl(const char *name)
if (!m_captureSession)
return 0;
if (qstrcmp(name,QAudioEndpointSelectorControl_iid) == 0)
return m_audioInputEndpointSelector;
if (qstrcmp(name,QAudioInputSelectorControl_iid) == 0)
return m_audioInputSelector;
if (qstrcmp(name,QVideoDeviceSelectorControl_iid) == 0)
return m_videoInputDevice;

View File

@@ -48,7 +48,7 @@
#include <gst/gst.h>
QT_BEGIN_NAMESPACE
class QAudioEndpointSelectorControl;
class QAudioInputSelectorControl;
class QVideoDeviceSelectorControl;
class QGstreamerCaptureSession;
@@ -82,7 +82,7 @@ private:
QGstreamerV4L2Input *m_videoInput;
QGstreamerCaptureMetaDataControl *m_metaDataControl;
QAudioEndpointSelectorControl *m_audioInputEndpointSelector;
QAudioInputSelectorControl *m_audioInputSelector;
QVideoDeviceSelectorControl *m_videoInputDevice;
QMediaControl *m_videoOutput;

View File

@@ -43,11 +43,11 @@
#include "mfaudioendpointcontrol.h"
MFAudioEndpointControl::MFAudioEndpointControl(QObject *parent)
: QAudioEndpointSelectorControl(parent)
: QAudioOutputSelectorControl(parent)
, m_currentActivate(0)
{
updateEndpoints();
setActiveEndpoint(m_defaultEndpoint);
setActiveOutput(m_defaultEndpoint);
}
MFAudioEndpointControl::~MFAudioEndpointControl()
@@ -59,27 +59,27 @@ MFAudioEndpointControl::~MFAudioEndpointControl()
m_currentActivate->Release();
}
QList<QString> MFAudioEndpointControl::availableEndpoints() const
QList<QString> MFAudioEndpointControl::availableOutputs() const
{
return m_devices.keys();
}
QString MFAudioEndpointControl::endpointDescription(const QString &name) const
QString MFAudioEndpointControl::outputDescription(const QString &name) const
{
return name.section(QLatin1Char('\\'), -1);
}
QString MFAudioEndpointControl::defaultEndpoint() const
QString MFAudioEndpointControl::defaultOutput() const
{
return m_defaultEndpoint;
}
QString MFAudioEndpointControl::activeEndpoint() const
QString MFAudioEndpointControl::activeOutput() const
{
return m_activeEndpoint;
}
void MFAudioEndpointControl::setActiveEndpoint(const QString &name)
void MFAudioEndpointControl::setActiveOutput(const QString &name)
{
if (m_activeEndpoint == name)
return;

View File

@@ -46,27 +46,27 @@
#include <mfidl.h>
#include <mmdeviceapi.h>
#include "qaudioendpointselectorcontrol.h"
#include "qaudiooutputselectorcontrol.h"
class MFPlayerService;
QT_USE_NAMESPACE
class MFAudioEndpointControl : public QAudioEndpointSelectorControl
class MFAudioEndpointControl : public QAudioOutputSelectorControl
{
Q_OBJECT
public:
MFAudioEndpointControl(QObject *parent = 0);
~MFAudioEndpointControl();
QList<QString> availableEndpoints() const;
QList<QString> availableOutputs() const;
QString endpointDescription(const QString &name) const;
QString outputDescription(const QString &name) const;
QString defaultEndpoint() const;
QString activeEndpoint() const;
QString defaultOutput() const;
QString activeOutput() const;
void setActiveEndpoint(const QString& name);
void setActiveOutput(const QString& name);
IMFActivate* currentActivate() const;

View File

@@ -87,7 +87,7 @@ QMediaControl* MFPlayerService::requestControl(const char *name)
{
if (qstrcmp(name, QMediaPlayerControl_iid) == 0) {
return m_player;
} else if (qstrcmp(name, QAudioEndpointSelectorControl_iid) == 0) {
} else if (qstrcmp(name, QAudioOutputSelectorControl_iid) == 0) {
return m_audioEndpointControl;
} else if (qstrcmp(name, QMetaDataReaderControl_iid) == 0) {
return m_metaDataControl;