diff --git a/linphone/oRTP/src/rtpsession.c b/linphone/oRTP/src/rtpsession.c
index a69557a955a97afc748185759355cbd36add1e5c..2199217d85b599b42035db79f3bdf5c8bf991079 100644
--- a/linphone/oRTP/src/rtpsession.c
+++ b/linphone/oRTP/src/rtpsession.c
@@ -595,8 +595,8 @@ rtp_session_set_ssrc (RtpSession * session, uint32_t ssrc)
 void rtp_session_update_payload_type(RtpSession *session, int paytype){
 	/* check if we support this payload type */
 	PayloadType *pt=rtp_profile_get_payload(session->rcv.profile,paytype);
-	session->hw_recv_pt=paytype;
 	if (pt!=0){
+		session->hw_recv_pt=paytype;
 		ortp_message ("payload type changed to %i(%s) !",
 				 paytype,pt->mime_type);
 		payload_type_changed(session,pt);
@@ -921,8 +921,11 @@ extern void rtcp_parse(RtpSession *session, mblk_t *mp);
 
 
 static void payload_type_changed_notify(RtpSession *session, int paytype){
-	session->rcv.pt = paytype;
-	rtp_signal_table_emit (&session->on_payload_type_changed);	
+	PayloadType *pt = rtp_profile_get_payload(session->rcv.profile,paytype);
+	if (pt) {
+		session->rcv.pt = paytype;
+		rtp_signal_table_emit (&session->on_payload_type_changed);
+	}
 }