diff --git a/bin/dbus/cx.ring.Ring.ConfigurationManager.xml b/bin/dbus/cx.ring.Ring.ConfigurationManager.xml index 348f7ab247182ed1e2dd45f7588433dd59f71153..517157d08a982d3e834d00f85cf375352d5d9d0f 100644 --- a/bin/dbus/cx.ring.Ring.ConfigurationManager.xml +++ b/bin/dbus/cx.ring.Ring.ConfigurationManager.xml @@ -779,6 +779,24 @@ </arg> </method> + <!-- Hardware encoding/decoding signals --> + <signal name="hardwareDecodingChanged" tp:name-for-bindings="hardwareDecodingChanged"> + <arg type="b" name="state"> + <tp:docstring> + If hardware decoding is enabled + </tp:docstring> + </arg> + <tp:docstring>Signal triggered when hardware decoding changes.</tp:docstring> + </signal> + <signal name="hardwareEncodingChanged" tp:name-for-bindings="hardwareEncodingChanged"> + <arg type="b" name="state"> + <tp:docstring> + If hardware encoding is enabled + </tp:docstring> + </arg> + <tp:docstring>Signal triggered when hardware encoding changes.</tp:docstring> + </signal> + <!-- Audio devices methods --> <method name="getAudioPluginList" tp:name-for-bindings="getAudioPluginList"> diff --git a/bin/dbus/dbusclient.cpp b/bin/dbus/dbusclient.cpp index 465156ab790fe3cc4cb58d3d6009a2f64c645530..d412fe37585b6b096fdb9615a9306090dd286e06 100644 --- a/bin/dbus/dbusclient.cpp +++ b/bin/dbus/dbusclient.cpp @@ -186,6 +186,8 @@ DBusClient::initLibrary(int flags) exportable_callback<ConfigurationSignal::CertificateStateChanged>(bind(&DBusConfigurationManager::certificateStateChanged, confM, _1, _2, _3 )), exportable_callback<ConfigurationSignal::MediaParametersChanged>(bind(&DBusConfigurationManager::mediaParametersChanged, confM, _1 )), exportable_callback<ConfigurationSignal::MigrationEnded>(bind(&DBusConfigurationManager::migrationEnded, confM, _1, _2 )), + exportable_callback<ConfigurationSignal::HardwareDecodingChanged>(bind(&DBusConfigurationManager::hardwareDecodingChanged, confM, _1 )), + exportable_callback<ConfigurationSignal::HardwareEncodingChanged>(bind(&DBusConfigurationManager::hardwareEncodingChanged, confM, _1 )), }; // Presence event handlers diff --git a/bin/jni/configurationmanager.i b/bin/jni/configurationmanager.i index 62430da0ce0a28083b6ffdded9b9c8acc6fd811e..71bb314e482c4d6d169975295da6a2d1899a17e9 100644 --- a/bin/jni/configurationmanager.i +++ b/bin/jni/configurationmanager.i @@ -56,6 +56,9 @@ public: virtual void migrationEnded(const std::string& /*accountId*/, const std::string& /*state*/){} virtual void deviceRevocationEnded(const std::string& /*accountId*/, const std::string& /*device*/, int /*status*/){} + + virtual void hardwareDecodingChanged(bool /*state*/){} + virtual void hardwareEncodingChanged(bool /*state*/){} }; %} @@ -247,4 +250,7 @@ public: virtual void migrationEnded(const std::string& /*accountId*/, const std::string& /*state*/){} virtual void deviceRevocationEnded(const std::string& /*accountId*/, const std::string& /*device*/, int /*status*/){} + + virtual void hardwareDecodingChanged(bool /*state*/){} + virtual void hardwareEncodingChanged(bool /*state*/){} }; diff --git a/bin/nodejs/configurationmanager.i b/bin/nodejs/configurationmanager.i index a86d6aae579a79b11022ccbae2af94b31f86db1a..c696d1743fa06ad4763d55fbd3dff5a33e34815d 100644 --- a/bin/nodejs/configurationmanager.i +++ b/bin/nodejs/configurationmanager.i @@ -235,4 +235,8 @@ public: virtual void migrationEnded(const std::string& /*accountId*/, const std::string& /*state*/){} virtual void deviceRevocationEnded(const std::string& /*accountId*/, const std::string& /*device*/, int /*status*/){} + + virtual void hardwareDecodingChanged(bool /*state*/){} + virtual void hardwareEncodingChanged(bool /*state*/){} + }; diff --git a/configure.ac b/configure.ac index 23ba8598817236c4b0bec19b40213bd8f8480720..6781dececb0143c9d90aeab01ff7585b522c86f6 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl Jami - configure.ac for automake 1.9 and autoconf 2.59 dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.65]) -AC_INIT([Ring Daemon],[7.2.0],[ring@gnu.org],[ring]) +AC_INIT([Ring Daemon],[7.3.0],[ring@gnu.org],[ring]) AC_COPYRIGHT([[Copyright (c) Savoir-faire Linux 2004-2018]]) AC_REVISION([$Revision$]) diff --git a/src/client/ring_signal.cpp b/src/client/ring_signal.cpp index d1091664210cddb0913e9901e4674f5eaf96930d..39f2c079316556a6efdba9e19d74fc00c378e8b4 100644 --- a/src/client/ring_signal.cpp +++ b/src/client/ring_signal.cpp @@ -81,6 +81,8 @@ getSignalHandlers() exported_callback<DRing::ConfigurationSignal::GetAppDataPath>(), exported_callback<DRing::ConfigurationSignal::GetDeviceName>(), #endif + exported_callback<DRing::ConfigurationSignal::HardwareDecodingChanged>(), + exported_callback<DRing::ConfigurationSignal::HardwareEncodingChanged>(), /* Debug */ exported_callback<DRing::DebugSignal::MessageSend>(), @@ -135,4 +137,4 @@ registerSignalHandlers(const std::map<std::string, } } -} \ No newline at end of file +} diff --git a/src/dring/configurationmanager_interface.h b/src/dring/configurationmanager_interface.h index 9e6d4a918428d329b180a0bcad2d5f30f2451250..e0cca93be34c633484cadf990727dd3d4d537f6d 100644 --- a/src/dring/configurationmanager_interface.h +++ b/src/dring/configurationmanager_interface.h @@ -338,6 +338,14 @@ struct DRING_PUBLIC ConfigurationSignal { using cb_type = void(std::vector<std::string>* /* path_ret */); }; #endif + struct DRING_PUBLIC HardwareDecodingChanged { + constexpr static const char* name = "HardwareDecodingChanged"; + using cb_type = void(bool /* state */); + }; + struct DRING_PUBLIC HardwareEncodingChanged { + constexpr static const char* name = "HardwareEncodingChanged"; + using cb_type = void(bool /* state */); + }; }; // Can be used when a client's stdout is not available diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp index f150b2bb3aaa44d4a96ed2b8528c1bf0d64f9e80..06d4e789a12e71072db233bed55014d970bd46d2 100644 --- a/src/media/media_decoder.cpp +++ b/src/media/media_decoder.cpp @@ -35,6 +35,7 @@ #include "string_utils.h" #include "logger.h" +#include "client/ring_signal.h" #include <iostream> #include <unistd.h> @@ -381,6 +382,7 @@ void MediaDecoder::enableAccel(bool enableAccel) { enableAccel_ = enableAccel; + emitSignal<DRing::ConfigurationSignal::HardwareDecodingChanged>(enableAccel_); if (!enableAccel) { accel_ = {}; if (decoderCtx_->hw_device_ctx) diff --git a/src/preferences.h b/src/preferences.h index 31bf3f0337e23ed4f8b036e248b5bc737a7fe36d..cf68a3bc9a52973a997b957b98e4f0f8855f0b40 100644 --- a/src/preferences.h +++ b/src/preferences.h @@ -22,6 +22,7 @@ #define __PREFERENCE_H__ #include "config/serializable.h" +#include "client/ring_signal.h" #include <string> #include <map> #include <vector> @@ -462,6 +463,7 @@ class VideoPreferences : public Serializable { void setDecodingAccelerated(bool decodingAccelerated) { decodingAccelerated_ = decodingAccelerated; + emitSignal<DRing::ConfigurationSignal::HardwareDecodingChanged>(decodingAccelerated_); } private: