diff --git a/src/account.cpp b/src/account.cpp
index 1a901bba0f9dea40cfe68ed2c6ab3749382d4219..8833bdc4a745d4a0f7f1c7563f2e276860727583 100644
--- a/src/account.cpp
+++ b/src/account.cpp
@@ -94,7 +94,8 @@ constexpr const char * const DEFAULT_RINGTONE_PATH = "/usr/share/ring/ringtones/
 #endif
 
 Account::Account(const std::string &accountID)
-    : accountID_(accountID)
+    : rand(dht::crypto::getSeededRandomEngine<std::mt19937_64>())
+    , accountID_(accountID)
     , username_()
     , hostname_()
     , alias_()
@@ -109,7 +110,6 @@ Account::Account(const std::string &accountID)
     , userAgent_(DEFAULT_USER_AGENT)
     , hasCustomUserAgent_(false)
     , mailBox_()
-    , rand(dht::crypto::getSeededRandomEngine<std::mt19937_64>())
 {
     // Initialize the codec order, used when creating a new account
     loadDefaultCodecs();
diff --git a/src/jamidht/account_manager.cpp b/src/jamidht/account_manager.cpp
index 5f4ab2d3873899943d565179f8767efdea03a1f6..010ac1859f4c44c94c9b305d793868cd83253846 100644
--- a/src/jamidht/account_manager.cpp
+++ b/src/jamidht/account_manager.cpp
@@ -205,7 +205,7 @@ AccountManager::startSync()
                 return true;
 
             // allowPublic always true for trust requests (only forbidden if banned)
-            onPeerMessage(v.from, true, [this, v](const std::shared_ptr<dht::crypto::Certificate>& cert, dht::InfoHash peer_account) mutable {
+            onPeerMessage(v.from, true, [this, v](const std::shared_ptr<dht::crypto::Certificate>&, dht::InfoHash peer_account) mutable {
                 JAMI_WARN("Got trust request from: %s / %s", peer_account.toString().c_str(), v.from.toString().c_str());
                 if (info_)
                     if (info_->contacts->onTrustRequest(peer_account, v.from, time(nullptr), v.confirm, std::move(v.payload))) {
diff --git a/src/jamidht/channeled_transport.cpp b/src/jamidht/channeled_transport.cpp
index 8afc521fea16526581588c5917699aed14a14c49..f0f10f2362ee5a94fb171174cf5461257f47c75c 100644
--- a/src/jamidht/channeled_transport.cpp
+++ b/src/jamidht/channeled_transport.cpp
@@ -157,7 +157,7 @@ ChanneledSIPTransport::~ChanneledSIPTransport()
 
     // Here, we reset callbacks in ChannelSocket to avoid to call it after destruction
     // ChanneledSIPTransport is managed by pjsip, so we don't have any weak_ptr available
-    socket_->setOnRecv([](const uint8_t* buf, size_t len){return len;});
+    socket_->setOnRecv([](const uint8_t*, size_t len){return len;});
     socket_->onShutdown([](){});
     // Stop low-level transport first
     socket_->shutdown();
diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index ba731646711fdcd361ee1f39184a1f8519c36f0c..058fe102d578833e2ff744078e1ff56f5127f35c 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -1643,7 +1643,7 @@ JamiAccount::registerAsyncOps()
             doRegister_();
     };
 
-    loadCachedProxyServer([onLoad](const std::string& proxy) {
+    loadCachedProxyServer([onLoad](const std::string&) {
         onLoad();
     });
 
@@ -1779,7 +1779,7 @@ JamiAccount::trackPresence(const dht::InfoHash& h, BuddyInfo& buddy)
     if (not dht or not dht->isRunning()) {
         return;
     }
-    buddy.listenToken = dht->listen<DeviceAnnouncement>(h, [this, h](DeviceAnnouncement&& dev, bool expired){
+    buddy.listenToken = dht->listen<DeviceAnnouncement>(h, [this, h](DeviceAnnouncement&&, bool expired){
         bool wasConnected, isConnected;
         {
             std::lock_guard<std::mutex> lock(buddyInfoMtx);
@@ -3117,7 +3117,7 @@ void
 JamiAccount::startAccountDiscovery()
 {
     auto id = dht::InfoHash(accountManager_->getInfo()->accountId);
-    peerDiscovery_->startDiscovery<AccountPeerInfo>(PEER_DISCOVERY_JAMI_SERVICE,[this,id](AccountPeerInfo&& v, dht::SockAddr&& add){
+    peerDiscovery_->startDiscovery<AccountPeerInfo>(PEER_DISCOVERY_JAMI_SERVICE,[this,id](AccountPeerInfo&& v, dht::SockAddr&&){
 
         std::lock_guard<std::mutex> lc(discoveryMapMtx_);
         //Make sure that account itself will not be recorded
diff --git a/src/jamidht/server_account_manager.cpp b/src/jamidht/server_account_manager.cpp
index 8b8e5190676b2b38dca56a962c7e663cf306453b..f2b298c5fab59bc1a38c68358fb47560eece0e56 100644
--- a/src/jamidht/server_account_manager.cpp
+++ b/src/jamidht/server_account_manager.cpp
@@ -308,7 +308,7 @@ ServerAccountManager::revokeDevice(const std::string& password, const std::strin
 }
 
 void
-ServerAccountManager::registerName(const std::string& password, const std::string& name, RegistrationCallback cb)
+ServerAccountManager::registerName(const std::string&, const std::string&, RegistrationCallback cb)
 {
     cb(NameDirectory::RegistrationResponse::unsupported);
 }
diff --git a/src/media/audio/alsa/alsalayer.cpp b/src/media/audio/alsa/alsalayer.cpp
index 72699878981f71f7582b531293e3df635136e3a5..4534804cbe45af8537f08c89e7a10841f13f2321 100644
--- a/src/media/audio/alsa/alsalayer.cpp
+++ b/src/media/audio/alsa/alsalayer.cpp
@@ -213,7 +213,7 @@ bool AlsaLayer::openDevice(snd_pcm_t **pcm, const std::string &dev, snd_pcm_stre
 }
 
 void
-AlsaLayer::startStream(AudioStreamType stream)
+AlsaLayer::startStream(AudioStreamType)
 {
     {
         std::lock_guard<std::mutex> lock(mutex_);
diff --git a/src/media/audio/audio_input.cpp b/src/media/audio/audio_input.cpp
index 1d07c5d51b32742afcc4b069681b871dadc1dc0d..e4d18ef68952122af13ce9cab8a26cc3ee79585e 100644
--- a/src/media/audio/audio_input.cpp
+++ b/src/media/audio/audio_input.cpp
@@ -163,6 +163,11 @@ AudioInput::readFromFile()
     case MediaDemuxer::Status::ReadError:
         JAMI_ERR() << "Failed to decode frame";
         break;
+    case MediaDemuxer::Status::ReadBufferOverflow:
+        JAMI_ERR() << "Read buffer overflow detected";
+        break;
+    case MediaDemuxer::Status::FallBack:
+        break;
     }
 }
 
diff --git a/src/media/audio/audiolayer.cpp b/src/media/audio/audiolayer.cpp
index 80ddb2ef7c77ba7bfaf5d80b59335f35561f7d06..45f525817c1d2531c75aec480e02b343b78013a1 100644
--- a/src/media/audio/audiolayer.cpp
+++ b/src/media/audio/audiolayer.cpp
@@ -39,7 +39,7 @@ namespace jami {
 
 struct AudioLayer::EchoState
 {
-    EchoState(AudioFormat format, unsigned frameSize, unsigned tailLength)
+    EchoState(AudioFormat format, unsigned frameSize, unsigned)
         : state(speex_echo_state_init_mc(
                     frameSize, frameSize * 16,
                     format.nb_channels, format.nb_channels), &speex_echo_state_destroy)
diff --git a/src/media/audio/jack/jacklayer.cpp b/src/media/audio/jack/jacklayer.cpp
index 3f175ba3862c02a3ac2e91ddf9e1eefb8dca9fa9..d401a5567d34cd123efb57684e53c7b23160aba7 100644
--- a/src/media/audio/jack/jacklayer.cpp
+++ b/src/media/audio/jack/jacklayer.cpp
@@ -346,7 +346,7 @@ JackLayer::process_playback(jack_nframes_t frames, void *arg)
  * Start the capture and playback.
  */
 void
-JackLayer::startStream(AudioStreamType stream)
+JackLayer::startStream(AudioStreamType)
 {
     {
         std::lock_guard<std::mutex> lock(mutex_);
diff --git a/src/media/audio/pulseaudio/pulselayer.cpp b/src/media/audio/pulseaudio/pulselayer.cpp
index 5a61d0476bea37e867cdffdabe7d48a118bdc888..3fccefc1fded181f8b843a6c5bdf9b8941769a52 100644
--- a/src/media/audio/pulseaudio/pulselayer.cpp
+++ b/src/media/audio/pulseaudio/pulselayer.cpp
@@ -373,7 +373,7 @@ void PulseLayer::disconnectAudioStream()
     record_.reset();
 }
 
-void PulseLayer::startStream(AudioStreamType stream)
+void PulseLayer::startStream(AudioStreamType)
 {
     std::unique_lock<std::mutex> lk(readyMtx_);
     readyCv_.wait(lk, [this] {
diff --git a/src/media/congestion_control.cpp b/src/media/congestion_control.cpp
index e654ba2f0f871062c6309cf3a55b637d6b0e5bc8..c5905868575dc0f560cbb8fcf6a098a25281f0a8 100644
--- a/src/media/congestion_control.cpp
+++ b/src/media/congestion_control.cpp
@@ -125,7 +125,7 @@ CongestionControl::createREMB(uint64_t bitrate_bps)
     insert2Byte(remb, mantissa & 0xffff);
     insert4Byte(remb, 0x2345678b);
 
-    return std::move(remb);
+    return remb;
 }
 
 
diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp
index 0f25c7cd83d68cd37a3e9d03450d0e588a350666..62c06a9641b01659f2494eb191cb84839dcfe94a 100644
--- a/src/media/media_decoder.cpp
+++ b/src/media/media_decoder.cpp
@@ -151,7 +151,7 @@ MediaDemuxer::getDuration() const
 }
 
 bool
-MediaDemuxer::seekFrame(int stream_index, int64_t timestamp)
+MediaDemuxer::seekFrame(int, int64_t timestamp)
 {
     if (av_seek_frame(inputCtx_, -1, timestamp, AVSEEK_FLAG_BACKWARD) >= 0) {
         clearFrames();
diff --git a/src/media/media_player.cpp b/src/media/media_player.cpp
index c30cde8497fba77740d1c913290468897ae00a00..6f737b89211c3737a6799e3b75cd0ea501aadbfd 100644
--- a/src/media/media_player.cpp
+++ b/src/media/media_player.cpp
@@ -143,6 +143,7 @@ MediaPlayer::process()
     const auto ret = demuxer_->demuxe();
     switch (ret) {
         case MediaDemuxer::Status::Success:
+        case MediaDemuxer::Status::FallBack:
             break;
         case MediaDemuxer::Status::EndOfFile:
             demuxer_->updateCurrentState(MediaDemuxer::CurrentState::Finished);
diff --git a/src/media/socket_pair.cpp b/src/media/socket_pair.cpp
index fcdc3796e21f69999a200f7ff8a202bb16c46ec1..4d5f581bfcedd08197a23734dae9f346de4486af 100644
--- a/src/media/socket_pair.cpp
+++ b/src/media/socket_pair.cpp
@@ -498,7 +498,7 @@ SocketPair::readCallback(uint8_t* buf, int buf_size)
     if (len <= 0)
         return len;
 
-    if (not fromRTCP && (buf_size < MINIMUM_RTP_HEADER_SIZE))
+    if (not fromRTCP && (buf_size < static_cast<int>(MINIMUM_RTP_HEADER_SIZE)))
         return len;
 
     // SRTP decrypt
diff --git a/src/media/video/video_input.cpp b/src/media/video/video_input.cpp
index af56a2a9711d13e2d393b32df75402e32251cfe2..4e87ac9daa669c0a0d0997df85e15405f7faac27 100644
--- a/src/media/video/video_input.cpp
+++ b/src/media/video/video_input.cpp
@@ -229,7 +229,7 @@ VideoInput::flushBuffers() {
 }
 
 void
-VideoInput::configureFilePlayback(const std::string& path, std::shared_ptr<MediaDemuxer>& demuxer, int index)
+VideoInput::configureFilePlayback(const std::string&, std::shared_ptr<MediaDemuxer>& demuxer, int index)
 {
     deleteDecoder();
     clearOptions();
diff --git a/src/upnp/upnp_control.cpp b/src/upnp/upnp_control.cpp
index 84a11beb1e4dbceae8a8217346b8548e8d1ff5e1..d09b2f8ee179867f82c899ff5d121874b239e281 100644
--- a/src/upnp/upnp_control.cpp
+++ b/src/upnp/upnp_control.cpp
@@ -102,7 +102,7 @@ Controller::requestMappingAdd(NotifyServiceCallback&& cb, uint16_t portDesired,
                 if (map.isValid())
                     addLocalMap(map);
             },
-            [this](const Mapping& map, bool success) {
+            [this](const Mapping& map, bool) {
                 if (map.isValid())
                     removeLocalMap(map);
             },