diff --git a/pjmedia/src/pjmedia-audiodev/wmme_dev.c b/pjmedia/src/pjmedia-audiodev/wmme_dev.c
index c3b5e17..e1b9215 100644
--- a/pjmedia/src/pjmedia-audiodev/wmme_dev.c
+++ b/pjmedia/src/pjmedia-audiodev/wmme_dev.c
@@ -583,7 +583,7 @@
     wmme_strm->timestamp.u64 = 0;
 
     /* Done setting up play device. */
-    PJ_LOG(5, (THIS_FILE, 
+    PJ_LOG(4, (THIS_FILE, 
 	       " WaveAPI Sound player \"%s\" initialized ("
 	       "format=%s, clock_rate=%d, "
 	       "channel_count=%d, samples_per_frame=%d (%dms))",
@@ -663,7 +663,7 @@
     wmme_strm->timestamp.u64 = 0;
 
     /* Done setting up play device. */
-    PJ_LOG(5,(THIS_FILE, 
+    PJ_LOG(4,(THIS_FILE, 
 	" WaveAPI Sound recorder \"%s\" initialized "
 	"(format=%s, clock_rate=%d, "
 	"channel_count=%d, samples_per_frame=%d (%dms))",
@@ -788,7 +788,7 @@
 		}
 
 		/* Get frame from application. */
-		PJ_LOG(5,(THIS_FILE, "xxx %u play_cb", play_cnt++));
+		//PJ_LOG(5,(THIS_FILE, "xxx %u play_cb", play_cnt++));
 		status = (*strm->play_cb)(strm->user_data, frame);
 
 		if (status != PJ_SUCCESS)
@@ -933,7 +933,7 @@
 
 
 		/* Call callback */
-		PJ_LOG(5,(THIS_FILE, "xxx %u rec_cb", rec_cnt++));
+		//PJ_LOG(5,(THIS_FILE, "xxx %u rec_cb", rec_cnt++));
 		status = (*strm->rec_cb)(strm->user_data, frame);
 		if (status != PJ_SUCCESS)
 		    break;
@@ -1197,7 +1197,7 @@
 	if (mr != MMSYSERR_NOERROR) {
 	    return CONVERT_MM_ERROR(mr);
 	}
-	PJ_LOG(5,(THIS_FILE, "WMME playback stream started"));
+	PJ_LOG(4,(THIS_FILE, "WMME playback stream started"));
     }
 
     if (stream->rec_strm.hWave.In != NULL)
@@ -1206,7 +1206,7 @@
 	if (mr != MMSYSERR_NOERROR) {
 	    return CONVERT_MM_ERROR(mr);
 	}
-	PJ_LOG(5,(THIS_FILE, "WMME capture stream started"));
+	PJ_LOG(4,(THIS_FILE, "WMME capture stream started"));
     }
 
     return PJ_SUCCESS;
@@ -1226,7 +1226,7 @@
 	if (mr != MMSYSERR_NOERROR) {
 	    return CONVERT_MM_ERROR(mr);
 	}
-	PJ_LOG(5,(THIS_FILE, "Stopped WMME playback stream"));
+	PJ_LOG(4,(THIS_FILE, "Stopped WMME playback stream"));
     }
 
     if (stream->rec_strm.hWave.In != NULL)
@@ -1235,7 +1235,7 @@
 	if (mr != MMSYSERR_NOERROR) {
 	    return CONVERT_MM_ERROR(mr);
 	}
-	PJ_LOG(5,(THIS_FILE, "Stopped WMME capture stream"));
+	PJ_LOG(4,(THIS_FILE, "Stopped WMME capture stream"));
     }
 
     return PJ_SUCCESS;
diff --git a/pjmedia/src/pjmedia/sound_port.c b/pjmedia/src/pjmedia/sound_port.c
index 98b3b72..7117c82 100644
--- a/pjmedia/src/pjmedia/sound_port.c
+++ b/pjmedia/src/pjmedia/sound_port.c
@@ -252,10 +252,11 @@
 				  snd_port->samples_per_frame);
 
     /* Create software EC if parameter specifies EC but device 
-     * doesn't support EC
+     * doesn't support EC. Only do this if the format is PCM!
      */
     if ((snd_port->aud_param.flags & PJMEDIA_AUD_DEV_CAP_EC) &&
-	(snd_port->aud_caps & PJMEDIA_AUD_DEV_CAP_EC)==0)
+	(snd_port->aud_caps & PJMEDIA_AUD_DEV_CAP_EC)==0 &&
+	param_copy.ext_fmt.id == PJMEDIA_FORMAT_PCM)
     {
 	if ((snd_port->aud_param.flags & PJMEDIA_AUD_DEV_CAP_EC_TAIL)==0) {
 	    snd_port->aud_param.flags |= PJMEDIA_AUD_DEV_CAP_EC_TAIL;
@@ -531,9 +532,6 @@
 
     } else {
 	/* We use software EC */
-	/* Sound port must have 16bits per sample */
-	PJ_ASSERT_RETURN(snd_port->bits_per_sample == 16,
-			 PJ_EINVALIDOP);
 
 	/* Check if there is change in parameters */
 	if (tail_ms==snd_port->ec_tail_len && options==snd_port->ec_options) {
@@ -542,22 +540,23 @@
 	    return PJ_SUCCESS;
 	}
 
+	status = pjmedia_aud_stream_get_param(snd_port->aud_stream, &prm);
+	if (status != PJ_SUCCESS)
+	    return status;
+
+	/* Audio stream must be in PCM format */
+	PJ_ASSERT_RETURN(prm.ext_fmt.id == PJMEDIA_FORMAT_PCM,
+			 PJ_EINVALIDOP);
+
 	/* Destroy AEC */
 	if (snd_port->ec_state) {
 	    pjmedia_echo_destroy(snd_port->ec_state);
 	    snd_port->ec_state = NULL;
 	}
 
-	snd_port->ec_options = options;
-	snd_port->ec_tail_len = tail_ms;
-
 	if (tail_ms != 0) {
 	    unsigned delay_ms;
 
-	    status = pjmedia_aud_stream_get_param(snd_port->aud_stream, &prm);
-	    if (status != PJ_SUCCESS)
-		prm.input_latency_ms = prm.output_latency_ms = 0;
-
 	    //No need to add input latency in the latency calculation,
 	    //since actual input latency should be zero.
 	    //delay_ms = (si.rec_latency + si.play_latency) * 1000 /
@@ -577,6 +576,9 @@
 				 "sound port"));
 	    status = PJ_SUCCESS;
 	}
+
+	snd_port->ec_options = options;
+	snd_port->ec_tail_len = tail_ms;
     }
 
     return status;
