diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c37b0cc9805090d4e9c033f8564c14b8b974688d..1203db418066e41e7a4b38d4deea1ba143b57d9c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -225,12 +225,12 @@ ENDIF(${ENABLE_QT5} MATCHES true) # video manager interface -SET ( video_xml ${dbus_xml_introspecs_path}/video_controls-introspec.xml ) +SET ( video_xml ${dbus_xml_introspecs_path}/videomanager-introspec.xml ) SET_SOURCE_FILES_PROPERTIES( ${video_xml} PROPERTIES - CLASSNAME VideoInterface + CLASSNAME VideoManagerInterface INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/dbus/metatypes.h") IF(${ENABLE_QT5} MATCHES true) diff --git a/src/callmodel.cpp b/src/callmodel.cpp index 36ad50872518ded3c3fa47ed9b46b6201f7d6aed..696aa1b87e69138c5d40c439a87b836f090fa55e 100644 --- a/src/callmodel.cpp +++ b/src/callmodel.cpp @@ -82,7 +82,7 @@ void CallModel::init() if (!dbusInit) { CallManagerInterface& callManager = DBus::CallManager::instance(); #ifdef ENABLE_VIDEO - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); #endif //SLOTS diff --git a/src/dbus/callmanager-introspec.xml b/src/dbus/callmanager-introspec.xml index 6901c669559a279f26784d7736f5926a73e4da88..1c2699687496bd7c013efb5de2b27e4c5a6206e2 100644 --- a/src/dbus/callmanager-introspec.xml +++ b/src/dbus/callmanager-introspec.xml @@ -534,6 +534,23 @@ </arg> </signal> + <method name="getDisplayNames" tp:name-for-bindings="getDisplayNames"> + <tp:added version="1.3.0"/> + <tp:docstring> + Get the display name of every participant in a given conference, or their number as a fallback. + </tp:docstring> + <arg type="s" name="confID" direction="in"> + <tp:docstring> + The conference ID. + </tp:docstring> + </arg> + <arg type="as" name="list" direction="out"> + <tp:docstring> + The list of the display names. + </tp:docstring> + </arg> + </method> + <method name="getParticipantList" tp:name-for-bindings="getParticipantList"> <tp:added version="0.9.7"/> <tp:docstring> @@ -721,7 +738,6 @@ </signal> <signal name="showSAS" tp:name-for-bindings="showSAS"> - <tp:added version="0.9.7"/> <tp:added version="0.9.7"/> <arg type="s" name="callID" /> <arg type="s" name="sas" /> @@ -753,5 +769,25 @@ <arg type="s" name="callID" direction="in"/> <arg type="b" name="accepted" direction="in"/> </method> + + <signal name="onRtcpReportReceived" tp:name-for-bindings="onRtcpReportReceived"> + <tp:added version="1.3.0"/> + <tp:docstring> + <p>Signal sent adter a RTCP report has been received and computed.</p> + </tp:docstring> + <arg type="s" name="callID" /> + <annotation name="com.trolltech.QtDBus.QtTypeName.In1" value="MapStringInt"/> + <arg type="a{si}" name="report" direction="out" tp:type="String_Integer_Map"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>A map containing RTCP stats: </p> + <ul> + <li>PACKET_LOSS</li> + <li>CUMULATIVE_LOSS</li> + <li>ROUND_TRIP_DELAY</li> + <li>LATENCY</li> + </ul> + </tp:docstring> + </arg> + </signal> </interface> </node> diff --git a/src/dbus/configurationmanager-introspec.xml b/src/dbus/configurationmanager-introspec.xml index 1a3a9aa26c5a736fcb6dbef979c883a9280dc6e5..a8fe9dbc69ca7ba9fecbfb79460c9b2c368dac62 100644 --- a/src/dbus/configurationmanager-introspec.xml +++ b/src/dbus/configurationmanager-introspec.xml @@ -267,7 +267,7 @@ <!-- For now only expose these two options to clients --> <method name="muteDtmf" tp:name-for-bindings="muteDtmf"> - <arg type="b" name="muteDtmf" direction="in"/> + <arg type="b" name="mute" direction="in"/> </method> <method name="isDtmfMuted" tp:name-for-bindings="isDtmfMuted"> <arg type="b" name="muted" direction="out"/> @@ -315,6 +315,14 @@ </arg> </method> + <method name="getSupportedAudioManagers" tp:name-for-bindings="getSupportedAudioManagers"> + <tp:docstring> + Returns a list of compiled audio backends. + </tp:docstring> + <arg type="as" name="api" direction="out"> + </arg> + </method> + <method name="getRecordPath" tp:name-for-bindings="getRecordPath"> <arg type="s" name="rec" direction="out"> </arg> @@ -416,8 +424,15 @@ </arg> </method> - <method name="getAudioDeviceIndex" tp:name-for-bindings="getAudioDeviceIndex"> - <arg type="s" name="name" direction="in"> + <method name="getAudioInputDeviceIndex" tp:name-for-bindings="getAudioInputDeviceIndex"> + <arg type="s" name="devname" direction="in"> + </arg> + <arg type="i" name="index" direction="out"> + </arg> + </method> + + <method name="getAudioOutputDeviceIndex" tp:name-for-bindings="getAudioOutputDeviceIndex"> + <arg type="s" name="devname" direction="in"> </arg> <arg type="i" name="index" direction="out"> </arg> @@ -605,5 +620,31 @@ <arg type="a{ss}" name="shortcutsMap" direction="in"> </arg> </method> + + <!-- Security Methods --> + <method name="checkForPrivateKey" tp:name-for-bindings="checkForPrivateKey"> + <arg type="s" name="pemPath" direction="in"> + </arg> + <arg type="b" name="containPrivateKey" direction="out"> + </arg> + </method> + + <method name="checkCertificateValidity" tp:name-for-bindings="checkCertificateValidity"> + <arg type="s" name="pemPath" direction="in"> + </arg> + <arg type="b" name="isValid" direction="out"> + </arg> + </method> + + <method name="checkHostnameCertificate" tp:name-for-bindings="checkHostnameCertificate"> + <arg type="s" name="pemPath" direction="in"> + </arg> + <arg type="s" name="host" direction="in"> + </arg> + <arg type="s" name="port" direction="in"> + </arg> + <arg type="b" name="isValid" direction="out"> + </arg> + </method> </interface> </node> diff --git a/src/dbus/video_controls-introspec.xml b/src/dbus/videomanager-introspec.xml similarity index 86% rename from src/dbus/video_controls-introspec.xml rename to src/dbus/videomanager-introspec.xml index c95cb19af8c7ab3ec6da81281fb66c05ac60bbb1..1fa755d1259c3ee4e317a464f008f5feef2b551e 100644 --- a/src/dbus/video_controls-introspec.xml +++ b/src/dbus/videomanager-introspec.xml @@ -1,6 +1,6 @@ <?xml version="1.0" ?> -<node name="/video_controls-introspec" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"> - <interface name="org.sflphone.SFLphone.VideoControls"> +<node name="/videomanager-introspec" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"> + <interface name="org.sflphone.SFLphone.VideoManager"> <!-- Video device methods --> <method name="getDeviceList" tp:name-for-bindings="getDeviceList"> @@ -111,7 +111,19 @@ </method> <method name="switchInput" tp:name-for-bindings="switchInput"> - <arg type="s" name="device" direction="in"> + <arg type="s" name="resource" direction="in"> + <tp:docstring> + A media resource locator (MRL). + Currently, the following are supported: + <ul> + <li>v4l2://DEVICE</li> + <li>display://DISPLAY_NAME[ WIDTHxHEIGHT]</li> + <li>file://IMAGE_PATH</li> + </ul> + </tp:docstring> + </arg> + <arg type="b" name="switched" direction="out"> + <tp:docstring>Returns true if the input stream was successfully changed, false otherwise</tp:docstring> </arg> </method> @@ -140,6 +152,9 @@ <arg type="i" name="height"> <tp:docstring>The height of the video in the shared memory</tp:docstring> </arg> + <arg type="b" name="isMixer"> + <tp:docstring>Whether or not this texture belongs to a video mixer or is a single texture</tp:docstring> + </arg> </signal> <signal name="stoppedDecoding" tp:name-for-bindings="stoppedDecoding"> @@ -150,6 +165,9 @@ <arg type="s" name="shmPath"> <tp:docstring>The path of the newly created shared memory</tp:docstring> </arg> + <arg type="b" name="isMixer"> + <tp:docstring>Whether or not this texture belongs to a video mixer or is a single texture</tp:docstring> + </arg> </signal> <method name="getCurrentCodecName" tp:name-for-bindings="getCurrentCodecName"> diff --git a/src/dbus/videomanager.cpp b/src/dbus/videomanager.cpp index 87518ccea95b977136be031d4334fe0195ac29ae..d271efd20e553f6a2226bd77f295bf97fa83979c 100644 --- a/src/dbus/videomanager.cpp +++ b/src/dbus/videomanager.cpp @@ -17,13 +17,13 @@ ***************************************************************************/ #include "videomanager.h" -VideoInterface* DBus::VideoManager::interface = nullptr; +VideoManagerInterface* DBus::VideoManager::interface = nullptr; -VideoInterface& DBus::VideoManager::instance() +VideoManagerInterface& DBus::VideoManager::instance() { if (!dbus_metaTypeInit) registerCommTypes(); if (!interface) - interface = new VideoInterface("org.sflphone.SFLphone", "/org/sflphone/SFLphone/VideoControls", QDBusConnection::sessionBus()); + interface = new VideoManagerInterface("org.sflphone.SFLphone", "/org/sflphone/SFLphone/VideoManager", QDBusConnection::sessionBus()); if(!interface->connection().isConnected()) { throw "Error : sflphoned not connected. Service " + interface->service() + " not connected. From instance interface."; diff --git a/src/dbus/videomanager.h b/src/dbus/videomanager.h index f5169d97cae2faa496d900286b295e7ee0191ed1..b350cfb4c2d6183d21de905c50759d388ed47c63 100644 --- a/src/dbus/videomanager.h +++ b/src/dbus/videomanager.h @@ -30,10 +30,10 @@ namespace DBus { { private: - static VideoInterface* interface; + static VideoManagerInterface* interface; public: - static VideoInterface& instance(); + static VideoManagerInterface& instance(); }; diff --git a/src/videocodecmodel.cpp b/src/videocodecmodel.cpp index 0fa61d31cf5ca4bb498dd584b0832f17bcdd79fb..17cfd5243dc532babc3d9a59b6ba4e900edfb476 100644 --- a/src/videocodecmodel.cpp +++ b/src/videocodecmodel.cpp @@ -96,7 +96,7 @@ void VideoCodecModel::reload() m_lCodecs.removeAt(0); delete c; } - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); const VectorMapStringString codecs = interface.getCodecs(m_pAccount->id()); foreach(const MapStringString& h,codecs) { VideoCodec* c = new VideoCodec(h[VideoCodec::CodecFields::NAME], @@ -111,7 +111,7 @@ void VideoCodecModel::reload() ///Save the current model over dbus void VideoCodecModel::save() { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); VectorMapStringString toSave; foreach(VideoCodec* vc,m_lCodecs) { toSave << vc->toMap(); diff --git a/src/videodevice.cpp b/src/videodevice.cpp index c553fba8601e20c8d7655d3397999e736b50acb5..ae9c28f72b36898588bf7364abf0fad31f13ac57 100644 --- a/src/videodevice.cpp +++ b/src/videodevice.cpp @@ -63,56 +63,56 @@ VideoDevice::~VideoDevice() ///Get the valid rates for this device const QStringList VideoDevice::rateList(VideoChannel channel, Resolution resolution) { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); return interface.getDeviceRateList(m_DeviceId,channel,resolution.toString()); } ///Get the valid channel list const QList<VideoChannel> VideoDevice::channelList() { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); return interface.getDeviceChannelList(m_DeviceId); } ///Set the current device rate void VideoDevice::setRate(VideoRate rate) { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); interface.setActiveDeviceRate(rate); } ///Set the current resolution void VideoDevice::setResolution(Resolution resolution) //??? No device { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); interface.setActiveDeviceSize(resolution.toString()); } ///Set the current device channel void VideoDevice::setChannel(VideoChannel channel) //??? No device { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); interface.setActiveDeviceChannel(channel); } ///Get the current resolution const Resolution VideoDevice::resolution() { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); return Resolution(interface.getActiveDeviceSize()); } ///Get the current channel const VideoChannel VideoDevice::channel() //??? No device { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); return interface.getActiveDeviceChannel(); } ///Get the current rate const VideoRate VideoDevice::rate() { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); return interface.getActiveDeviceRate(); } @@ -120,7 +120,7 @@ const VideoRate VideoDevice::rate() const QList<Resolution> VideoDevice::resolutionList(VideoChannel channel) { QList<Resolution> toReturn; - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); const QStringList list = interface.getDeviceSizeList(m_DeviceId,channel); foreach(const QString& res,list) { toReturn << Resolution(res); diff --git a/src/videodevicemodel.cpp b/src/videodevicemodel.cpp index bb0bd317cbc4985187f2e700f8ba62a24da7c168..06bfb7a3efec779255492cf7b3372a9bc2744f62 100644 --- a/src/videodevicemodel.cpp +++ b/src/videodevicemodel.cpp @@ -94,7 +94,7 @@ void VideoDeviceModel::setActive(const QModelIndex& idx) { if (idx.isValid()) { qDebug() << "DEV CHANGE" << m_lDevices[idx.row()]->id(); - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); interface.setActiveDevice(m_lDevices[idx.row()]->id()); emit changed(); emit currentIndexChanged(idx.row()); @@ -110,7 +110,7 @@ void VideoDeviceModel::setActive(const int idx) void VideoDeviceModel::setActive(const VideoDevice* device) { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); interface.setActiveDevice(device->id()); emit changed(); const int idx = m_lDevices.indexOf((VideoDevice*)device); @@ -120,7 +120,7 @@ void VideoDeviceModel::setActive(const VideoDevice* device) void VideoDeviceModel::reload() { QHash<QString,VideoDevice*> devicesHash; - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); const QStringList deviceList = interface.getDeviceList(); if (deviceList.size() == m_hDevices.size()) { m_lDevices = m_hDevices.values(); @@ -152,7 +152,7 @@ void VideoDeviceModel::reload() VideoDevice* VideoDeviceModel::activeDevice() const { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); const QString deId = interface.getActiveDevice(); if (!m_lDevices.size()) const_cast<VideoDeviceModel*>(this)->reload(); @@ -225,7 +225,7 @@ VideoDeviceResolutionModel::~VideoDeviceResolutionModel() Resolution VideoDeviceResolutionModel::activeResolution() const { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); const QString res = interface.getActiveDeviceSize(); if (!m_hResolutions[res]) const_cast<VideoDeviceResolutionModel*>(this)->reload(); @@ -239,7 +239,7 @@ void VideoDeviceResolutionModel::setActive(const QModelIndex& idx) { if (idx.isValid()) { qDebug() << "RES CHANGE" << m_lResolutions[idx.row()]->toString(); - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); interface.setActiveDeviceSize(m_lResolutions[idx.row()]->toString()); emit changed(); qDebug() << "CURRENT" << idx.row(); @@ -258,7 +258,7 @@ void VideoDeviceResolutionModel::setActive(const int idx) void VideoDeviceResolutionModel::reload() { QHash<QString,Resolution*> devicesHash; - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); const QStringList deviceList = interface.getDeviceSizeList(VideoDeviceModel::instance()->activeDevice()->id(), VideoDeviceModel::instance()->rateModel()->activeRate()); if (deviceList.size() == m_hResolutions.size()) { @@ -307,7 +307,7 @@ VideoDeviceChannelModel* VideoDeviceModel::channelModel() const QString VideoDeviceChannelModel::activeChannel() const { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); return interface.getActiveDeviceChannel(); } @@ -358,7 +358,7 @@ void VideoDeviceChannelModel::setActive(const QModelIndex& idx) { if (idx.isValid()) { qDebug() << "CHAN CHANGE" << m_lChannels[idx.row()]; - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); interface.setActiveDeviceChannel(m_lChannels[idx.row()]); emit changed(); emit currentIndexChanged(idx.row()); @@ -374,7 +374,7 @@ void VideoDeviceChannelModel::setActive(const int idx) void VideoDeviceChannelModel::reload() { QHash<QString,QString> devicesHash; - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); const QStringList deviceList = interface.getDeviceChannelList(VideoDeviceModel::instance()->activeDevice()->id()); m_lChannels = deviceList; @@ -405,7 +405,7 @@ VideoDeviceRateModel* VideoDeviceModel::rateModel() const QString VideoDeviceRateModel::activeRate() const { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); return interface.getActiveDeviceRate(); } @@ -456,7 +456,7 @@ void VideoDeviceRateModel::setActive(const QModelIndex& idx) { if (idx.isValid()) { qDebug() << "RATE CHANGE" << m_lRates[idx.row()]; - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); interface.setActiveDeviceRate(m_lRates[idx.row()]); emit changed(); emit currentIndexChanged(idx.row()); @@ -474,7 +474,7 @@ void VideoDeviceRateModel::setActive(const int idx) void VideoDeviceRateModel::reload() { QHash<QString,VideoDevice*> devicesHash; - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); const QStringList deviceList = interface.getDeviceRateList(VideoDeviceModel::instance()->activeDevice()->id (), VideoDeviceModel::instance()->channelModel()->activeChannel (), VideoDeviceModel::instance()->resolutionModel()->activeResolution().toString() diff --git a/src/videomodel.cpp b/src/videomodel.cpp index d5b6c5e8eb4be8e119984a20ab1cfea787e81112..efb3ff87e2c481c2da986f12680283dc7f8de011 100644 --- a/src/videomodel.cpp +++ b/src/videomodel.cpp @@ -33,7 +33,7 @@ VideoModel* VideoModel::m_spInstance = nullptr; ///Constructor VideoModel::VideoModel():QThread(),m_BufferSize(0),m_ShmKey(0),m_SemKey(0),m_PreviewState(false),m_SSMutex(new QMutex()) { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); connect( &interface , SIGNAL(deviceEvent()) , this, SLOT(deviceEvent()) ); connect( &interface , SIGNAL(startedDecoding(QString,QString,int,int)), this, SLOT(startedDecoding(QString,QString,int,int))); connect( &interface , SIGNAL(stoppedDecoding(QString,QString)) , this, SLOT(stoppedDecoding(QString,QString)) ); @@ -68,7 +68,7 @@ VideoRenderer* VideoModel::getRenderer(const Call* call) const VideoRenderer* VideoModel::previewRenderer() { if (!m_lRenderers["local"]) { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); m_lRenderers["local"] = new VideoRenderer("local","", Resolution(interface.getActiveDeviceSize())); } return m_lRenderers["local"]; @@ -77,7 +77,7 @@ VideoRenderer* VideoModel::previewRenderer() ///Stop video preview void VideoModel::stopPreview() { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); interface.stopCamera(); m_PreviewState = false; } @@ -86,7 +86,7 @@ void VideoModel::stopPreview() void VideoModel::startPreview() { if (m_PreviewState) return; - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); interface.startCamera(); m_PreviewState = true; } @@ -175,7 +175,7 @@ void VideoModel::stoppedDecoding(const QString& id, const QString& shmPath) // void VideoModel::setActiveDevice(const VideoDevice* device) // { -// VideoInterface& interface = DBus::VideoManager::instance(); +// VideoManagerInterface& interface = DBus::VideoManager::instance(); // if (isPreviewing()) { // switchDevice(device); // } @@ -184,14 +184,14 @@ void VideoModel::stoppedDecoding(const QString& id, const QString& shmPath) void VideoModel::switchDevice(const VideoDevice* device) const { - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); interface.switchInput(device->id()); } QList<VideoDevice*> VideoModel::devices() { QHash<QString,VideoDevice*> devicesHash; - VideoInterface& interface = DBus::VideoManager::instance(); + VideoManagerInterface& interface = DBus::VideoManager::instance(); const QStringList deviceList = interface.getDeviceList(); if (deviceList.size() == m_hDevices.size()) { // qDebug() << "\n\nRETUNING CACHE" << m_hDevices.values(); @@ -224,7 +224,7 @@ QList<VideoDevice*> VideoModel::devices() // VideoDevice* VideoModel::activeDevice() const // { -// VideoInterface& interface = DBus::VideoManager::instance(); +// VideoManagerInterface& interface = DBus::VideoManager::instance(); // const QString deId = interface.getActiveDevice(); // if (!deId.isEmpty() && !m_hDevices.size()) { // const_cast<VideoModel*>(this)->devices();