diff --git a/src/newcallmodel.cpp b/src/newcallmodel.cpp
index 21338964839adb890a9d0b33ef120c5f1a47656c..7d9a30aaeead5a813c93934980b0ff0416659820 100644
--- a/src/newcallmodel.cpp
+++ b/src/newcallmodel.cpp
@@ -48,6 +48,8 @@
 #include <random>
 #include <map>
 
+using namespace DRing::Media;
+
 static std::uniform_int_distribution<int> dis {0, std::numeric_limits<int>::max()};
 static const std::map<short, QString>
     sip_call_status_code_map {{0, QObject::tr("Null")},
@@ -292,9 +294,11 @@ NewCallModel::updateCallMediaList(const QString& callId, bool acceptVideo)
             for (auto it = callInfos->second->mediaList.begin();
                  it != callInfos->second->mediaList.end();
                  it++) {
-                if ((*it)["MEDIA_TYPE"] == "MEDIA_TYPE_VIDEO" && !acceptVideo) {
-                    (*it)["ENABLED"] = "false";
-                    (*it)["MUTED"] = "true";
+                if ((*it)[MediaAttributeKey::MEDIA_TYPE]
+                        == MediaAttributeValue::VIDEO
+                    && !acceptVideo) {
+                    (*it)[MediaAttributeKey::ENABLED] = "false";
+                    (*it)[MediaAttributeKey::MUTED] = "true";
                     callInfos->second->videoMuted = !acceptVideo;
                 }
             }
@@ -307,15 +311,17 @@ QString
 NewCallModel::createCall(const QString& uri, bool isAudioOnly)
 {
     VectorMapStringString mediaList {};
-    MapStringString mediaAttribute = {{"MEDIA_TYPE", "MEDIA_TYPE_AUDIO"},
-                                      {"ENABLED", "true"},
-                                      {"MUTED", "false"},
-                                      {"SOURCE", ""},
-                                      {"LABEL", "audio_0"}};
+    MapStringString mediaAttribute = {{MediaAttributeKey::MEDIA_TYPE,
+                                       MediaAttributeValue::AUDIO},
+                                      {MediaAttributeKey::ENABLED, "true"},
+                                      {MediaAttributeKey::MUTED, "false"},
+                                      {MediaAttributeKey::SOURCE, ""},
+                                      {MediaAttributeKey::LABEL, "audio_0"}};
     mediaList.push_back(mediaAttribute);
     if (!isAudioOnly) {
-        mediaAttribute["MEDIA_TYPE"] = "MEDIA_TYPE_VIDEO";
-        mediaAttribute["LABEL"] = "video_0";
+        mediaAttribute[MediaAttributeKey::MEDIA_TYPE]
+            = MediaAttributeValue::VIDEO;
+        mediaAttribute[MediaAttributeKey::LABEL] = "video_0";
         mediaList.push_back(mediaAttribute);
     }
 #ifdef ENABLE_LIBWRAP
@@ -358,19 +364,21 @@ NewCallModel::requestMediaChange(const QString& callId, const QString& mediaLabe
 
     int found = 0;
     for (auto& item : proposedList) {
-        if (item["LABEL"] == mediaLabel) {
-            item["ENABLED"] = "true";
-            item["MUTED"] = item["MUTED"] == "true" ? "false" : "true";
+        if (item[MediaAttributeKey::LABEL] == mediaLabel) {
+            item[MediaAttributeKey::ENABLED] = "true";
+            item[MediaAttributeKey::MUTED]
+                = item[MediaAttributeKey::MUTED] == "true" ? "false" : "true";
             break;
         }
         found++;
     }
     if (found == proposedList.size() && mediaLabel == "video_0") {
-        MapStringString mediaAttribute = {{"MEDIA_TYPE", "MEDIA_TYPE_VIDEO"},
-                                          {"ENABLED", "true"},
-                                          {"MUTED", "false"},
-                                          {"SOURCE", ""},
-                                          {"LABEL", "video_0"}};
+        MapStringString mediaAttribute = {{MediaAttributeKey::MEDIA_TYPE,
+                                           MediaAttributeValue::VIDEO},
+                                          {MediaAttributeKey::ENABLED, "true"},
+                                          {MediaAttributeKey::MUTED, "false"},
+                                          {MediaAttributeKey::SOURCE, ""},
+                                          {MediaAttributeKey::LABEL, "video_0"}};
         proposedList.push_back(mediaAttribute);
         // We should prepare it here for adding file and screen sharing
         // for now it supports only adding main video to an audio only call
@@ -380,9 +388,9 @@ NewCallModel::requestMediaChange(const QString& callId, const QString& mediaLabe
     // update the mediaList because we will not receive signal
     // mediaNegotiationStatus
     if (found < callInfo->mediaList.size()) {
-        callInfo->mediaList[found]["MUTED"] = callInfo->mediaList[found]["MUTED"] == "true"
-                                                  ? "false"
-                                                  : "true";
+        callInfo->mediaList[found][MediaAttributeKey::MUTED]
+            = callInfo->mediaList[found][MediaAttributeKey::MUTED] == "true" ? "false"
+                                                                                           : "true";
         if (callInfo->status == call::Status::IN_PROGRESS)
             emit callInfosChanged(owner.id, callId);
     }
@@ -966,7 +974,8 @@ NewCallModelPimpl::slotIncomingCallWithMedia(const QString& accountId,
     callInfo->type = call::Type::DIALOG;
     callInfo->isAudioOnly = true;
     for (const auto& item : mediaList) {
-        if (item["MEDIA_TYPE"] == "MEDIA_TYPE_VIDEO") {
+        if (item[MediaAttributeKey::MEDIA_TYPE]
+            == MediaAttributeValue::VIDEO) {
             callInfo->isAudioOnly = false;
             break;
         }
@@ -1006,9 +1015,10 @@ NewCallModelPimpl::slotMediaChangeRequested(const QString& accountId,
     auto answerMedia = QList<MapStringString>::fromVector(mediaList);
 
     for (auto& item : answerMedia) {
-        if (item["MEDIA_TYPE"] == "MEDIA_TYPE_VIDEO") {
-            item["MUTED"] = callInfo->videoMuted ? "true" : "false";
-            item["ENABLED"] = "true";
+        if (item[MediaAttributeKey::MEDIA_TYPE]
+            == MediaAttributeValue::VIDEO) {
+            item[MediaAttributeKey::MUTED] = callInfo->videoMuted ? "true" : "false";
+            item[MediaAttributeKey::ENABLED] = "true";
         }
     }
     CallManager::instance().answerMediaChangeRequest(callId,
@@ -1105,14 +1115,17 @@ NewCallModelPimpl::slotMediaNegotiationStatus(const QString& callId,
 
     callInfo->isAudioOnly = true;
     for (const auto& item : mediaList) {
-        if (item["MEDIA_TYPE"] == "MEDIA_TYPE_VIDEO") {
-        	if (item["ENABLED"] == "true") {
-            	callInfo->isAudioOnly = false;
-            	callInfo->videoMuted = item["MUTED"] == "true";
+        if (item[MediaAttributeKey::MEDIA_TYPE]
+            == MediaAttributeValue::VIDEO) {
+        	if (item[MediaAttributeKey::ENABLED] == "true") {
+                callInfo->isAudioOnly = false;
             }
+            callInfo->videoMuted = item[MediaAttributeKey::MUTED] == "true"
+                                    || item[MediaAttributeKey::ENABLED] == "false";
         }
-        if (item["MEDIA_TYPE"] == "MEDIA_TYPE_AUDIO") {
-            callInfo->audioMuted = item["MUTED"] == "true";
+        if (item[MediaAttributeKey::MEDIA_TYPE]
+            == MediaAttributeValue::AUDIO) {
+            callInfo->audioMuted = item[MediaAttributeKey::MUTED] == "true";
         }
     }