diff --git a/src/media/audio/audio_rtp_session.cpp b/src/media/audio/audio_rtp_session.cpp
index e354fd06816e07ad8f0b89859fc1a4706ad8d75b..bfb0fce5a75f4582a4e63b669c7ac6ccbd526d0d 100644
--- a/src/media/audio/audio_rtp_session.cpp
+++ b/src/media/audio/audio_rtp_session.cpp
@@ -137,6 +137,8 @@ AudioSender::setup(SocketPair& socketPair)
         return false;
     }
 
+    Smartools::getInstance().setLocalAudioCodec(audioEncoder_->getEncoderName());
+
 #ifdef DEBUG_SDP
     audioEncoder_->print_sdp();
 #endif
@@ -344,6 +346,8 @@ AudioReceiveThread::setup()
         return false;
     }
 
+    Smartools::getInstance().setRemoteAudioCodec(audioDecoder_->getDecoderName());
+
     ringbuffer_ = Manager::instance().getRingBufferPool().getRingBuffer(id_);
     return true;
 }
@@ -364,8 +368,6 @@ AudioReceiveThread::process()
             }
             audioDecoder_->writeToRingBuffer(decodedFrame, *ringbuffer_,
                                              mainBuffFormat);
-            // Refresh the remote audio codec in the callback SmartInfo
-            Smartools::getInstance().setRemoteAudioCodec(audioDecoder_->getDecoderName());
             return;
 
         case MediaDecoder::Status::DecodeError:
diff --git a/src/media/video/sinkclient.cpp b/src/media/video/sinkclient.cpp
index 17e43a99d5d39dc345377a274f0ec9b65d0a7340..aa267404f9a1439611d2c61919f0d98ff235d62d 100644
--- a/src/media/video/sinkclient.cpp
+++ b/src/media/video/sinkclient.cpp
@@ -332,9 +332,6 @@ SinkClient::update(Observable<std::shared_ptr<VideoFrame>>* /*obs*/,
     }
 #endif
 
-    // Send the resolution in smartInfo
-    Smartools::getInstance().setResolution(id_, f.width(), f.height());
-
 #if HAVE_SHM
     shm_->renderFrame(f);
 #endif
diff --git a/src/media/video/video_receive_thread.cpp b/src/media/video/video_receive_thread.cpp
index 96d6e147b288f0610f1817ff74283c13dd8c8199..a82a66a264ec9f9d1f61c64991ba73eadd6b2436 100644
--- a/src/media/video/video_receive_thread.cpp
+++ b/src/media/video/video_receive_thread.cpp
@@ -138,6 +138,9 @@ bool VideoReceiveThread::setup()
     // Send remote video codec in SmartInfo
     Smartools::getInstance().setRemoteVideoCodec(videoDecoder_->getDecoderName(), id_);
 
+    // Send the resolution in smartInfo
+    Smartools::getInstance().setResolution(id_, dstWidth_, dstHeight_);
+
     return true;
 }
 
diff --git a/src/media/video/video_sender.cpp b/src/media/video/video_sender.cpp
index 8fb9916e0e68b682bcc65aa8adf90727f99faa55..93cfe1e0bff9bfd4212a6d49156c5360b6266ae7 100644
--- a/src/media/video/video_sender.cpp
+++ b/src/media/video/video_sender.cpp
@@ -50,6 +50,12 @@ VideoSender::VideoSender(const std::string& dest, const DeviceParams& dev,
     videoEncoder_->startIO();
 
     videoEncoder_->print_sdp();
+
+    // Send local video codec in SmartInfo
+    Smartools::getInstance().setLocalVideoCodec(videoEncoder_->getEncoderName());
+
+    // Send the resolution in smartInfo
+    Smartools::getInstance().setResolution("local", dev.width, dev.height);
 }
 
 VideoSender::~VideoSender()
@@ -69,9 +75,6 @@ VideoSender::encodeAndSendVideo(VideoFrame& input_frame)
 
     if (videoEncoder_->encode(input_frame, is_keyframe, frameNumber_++) < 0)
         RING_ERR("encoding failed");
-
-    // Send local video codec in SmartInfo
-    Smartools::getInstance().setLocalVideoCodec(videoEncoder_->getEncoderName());
 }
 
 void