diff --git a/ring-android/libringclient/src/main/java/cx/ring/model/Codec.java b/ring-android/libringclient/src/main/java/cx/ring/model/Codec.java
index 5a42ab5..c117234 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/model/Codec.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/model/Codec.java
@@ -38,12 +38,6 @@
     private boolean mIsEnabled;
 
     public Codec(long i, Map<String, String> audioCodecDetails, boolean enabled) {
-
-        Log.d("CodecDetail", Long.toString(i));
-        for (String s : audioCodecDetails.keySet()) {
-            Log.d("CodecDetail", s + " -> " + audioCodecDetails.get(s));
-        }
-
         mPayload = i;
         mName = audioCodecDetails.get("CodecInfo.name");
         mType = audioCodecDetails.get("CodecInfo.type").contentEquals("AUDIO") ? Type.AUDIO : Type.VIDEO;
diff --git a/ring-android/libringclient/src/main/java/cx/ring/services/AccountService.java b/ring-android/libringclient/src/main/java/cx/ring/services/AccountService.java
index baa07e6..e81f13b 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/services/AccountService.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/services/AccountService.java
@@ -728,14 +728,12 @@
 
             UintVect activePayloads = Ringservice.getActiveCodecList(accountId);
             for (int i = 0; i < activePayloads.size(); ++i) {
-                Log.i(TAG, "getCodecDetails(" + accountId + ", " + activePayloads.get(i) + ")");
                 StringMap codecsDetails = Ringservice.getCodecDetails(accountId, activePayloads.get(i));
                 results.add(new Codec(activePayloads.get(i), codecsDetails.toNative(), true));
             }
-            UintVect payloads = Ringservice.getCodecList();
 
-            cl:
-            for (int i = 0; i < payloads.size(); ++i) {
+            UintVect payloads = Ringservice.getCodecList();
+            cl: for (int i = 0; i < payloads.size(); ++i) {
                 for (Codec co : results) {
                     if (co.getPayload() == payloads.get(i)) {
                         continue cl;
