diff --git a/include/asterisk/sdp_state.h b/include/asterisk/sdp_state.h
index 88660b6c7e7df8a56f8cc2c38d6c40d096a5c85c..c2122fbce5aa7677c81cfbe9eed8d5bae994fedd 100644
--- a/include/asterisk/sdp_state.h
+++ b/include/asterisk/sdp_state.h
@@ -164,7 +164,7 @@ int ast_sdp_state_set_remote_sdp(struct ast_sdp_state *sdp_state, const struct a
  *
  * \since 15
  */
-int ast_sdp_state_set_remote_sdp_from_impl(struct ast_sdp_state *sdp_state, void *remote);
+int ast_sdp_state_set_remote_sdp_from_impl(struct ast_sdp_state *sdp_state, const void *remote);
 
 /*!
  * \brief Reset the SDP state and stream capabilities as if the SDP state had just been allocated.
diff --git a/include/asterisk/sdp_translator.h b/include/asterisk/sdp_translator.h
index 09901af2e6c585cb7407db2523e248caeb5584a8..e1d51f0be0943e6576296cf1e03b70d957e05813 100644
--- a/include/asterisk/sdp_translator.h
+++ b/include/asterisk/sdp_translator.h
@@ -34,9 +34,9 @@ struct ast_sdp_translator_ops {
 	/*! Free translator private data */
 	void (*translator_free)(void *translator_priv);
 	/*! Convert the channel-native SDP into an internal Asterisk SDP */
-	struct ast_sdp *(*to_sdp)(void *repr_sdp, void *translator_priv);
+	struct ast_sdp *(*to_sdp)(const void *repr_sdp, void *translator_priv);
 	/*! Convert an internal Asterisk SDP into a channel-native SDP */
-	void *(*from_sdp)(const struct ast_sdp *sdp, void *translator_priv);
+	const void *(*from_sdp)(const struct ast_sdp *sdp, void *translator_priv);
 };
 
 /*!
@@ -87,7 +87,7 @@ void ast_sdp_translator_free(struct ast_sdp_translator *translator);
  * \retval NULL FAIL
  * \retval Non-NULL The translated SDP
  */
-struct ast_sdp *ast_sdp_translator_to_sdp(struct ast_sdp_translator *translator, void *native_sdp);
+struct ast_sdp *ast_sdp_translator_to_sdp(struct ast_sdp_translator *translator, const void *native_sdp);
 
 /*!
  * \brief Translate an internal Asterisk SDP to a native SDP
@@ -97,7 +97,7 @@ struct ast_sdp *ast_sdp_translator_to_sdp(struct ast_sdp_translator *translator,
  * \retval NULL FAIL
  * \retval non-NULL The translated SDP
  */
-void *ast_sdp_translator_from_sdp(struct ast_sdp_translator *translator,
+const void *ast_sdp_translator_from_sdp(struct ast_sdp_translator *translator,
 	const struct ast_sdp *ast_sdp);
 
 #endif /* _ASTERISK_SDP_TRANSLATOR_H */
diff --git a/main/sdp_state.c b/main/sdp_state.c
index 2c018b1261426e00c62ba1cd9da29fbe2f385237..dddc79c071b6d6ac47b7a4ae2fff54b52e44d85f 100644
--- a/main/sdp_state.c
+++ b/main/sdp_state.c
@@ -1084,7 +1084,7 @@ int ast_sdp_state_set_remote_sdp(struct ast_sdp_state *sdp_state, const struct a
 	return merge_sdps(sdp_state, sdp);
 }
 
-int ast_sdp_state_set_remote_sdp_from_impl(struct ast_sdp_state *sdp_state, void *remote)
+int ast_sdp_state_set_remote_sdp_from_impl(struct ast_sdp_state *sdp_state, const void *remote)
 {
 	struct ast_sdp *sdp;
 	int ret;
diff --git a/main/sdp_translator.c b/main/sdp_translator.c
index 2426b10ea23b05bd262ca6bbad454f841c9ed645..6fe330a60dd3699fafc6f1297bcc66c20badd4ff 100644
--- a/main/sdp_translator.c
+++ b/main/sdp_translator.c
@@ -92,12 +92,12 @@ void ast_sdp_translator_free(struct ast_sdp_translator *translator)
 }
 
 struct ast_sdp *ast_sdp_translator_to_sdp(struct ast_sdp_translator *translator,
-	void *native_sdp)
+	const void *native_sdp)
 {
 	return translator->ops->to_sdp(native_sdp, translator->translator_priv);
 }
 
-void *ast_sdp_translator_from_sdp(struct ast_sdp_translator *translator,
+const void *ast_sdp_translator_from_sdp(struct ast_sdp_translator *translator,
 	const struct ast_sdp *ast_sdp)
 {
 	return translator->ops->from_sdp(ast_sdp, translator->translator_priv);
diff --git a/res/res_sdp_translator_pjmedia.c b/res/res_sdp_translator_pjmedia.c
index 6ad1e9b09485d98d00dc2a5ae1372513c3297c49..3b9c26c46d94f61b0b4e12418ac9592018827e2a 100644
--- a/res/res_sdp_translator_pjmedia.c
+++ b/res/res_sdp_translator_pjmedia.c
@@ -89,7 +89,7 @@ static struct ast_sdp_m_line *pjmedia_copy_m_line(struct pjmedia_sdp_media *pjme
 	return m_line;
 }
 
-static void pjmedia_copy_a_lines(struct ast_sdp *new_sdp, pjmedia_sdp_session *pjmedia_sdp)
+static void pjmedia_copy_a_lines(struct ast_sdp *new_sdp, const pjmedia_sdp_session *pjmedia_sdp)
 {
 	int i;
 
@@ -100,7 +100,7 @@ static void pjmedia_copy_a_lines(struct ast_sdp *new_sdp, pjmedia_sdp_session *p
 }
 
 static void pjmedia_copy_m_lines(struct ast_sdp *new_sdp,
-	struct pjmedia_sdp_session *pjmedia_sdp)
+	const struct pjmedia_sdp_session *pjmedia_sdp)
 {
 	int i;
 
@@ -109,9 +109,9 @@ static void pjmedia_copy_m_lines(struct ast_sdp *new_sdp,
 	}
 }
 
-static struct ast_sdp *pjmedia_to_sdp(void *in, void *translator_priv)
+static struct ast_sdp *pjmedia_to_sdp(const void *in, void *translator_priv)
 {
-	struct pjmedia_sdp_session *pjmedia_sdp = in;
+	const struct pjmedia_sdp_session *pjmedia_sdp = in;
 
 	struct ast_sdp_o_line *o_line = ast_sdp_o_alloc(dupa_pj_str(pjmedia_sdp->origin.user),
 		pjmedia_sdp->origin.id, pjmedia_sdp->origin.version,
@@ -239,7 +239,7 @@ static void copy_m_lines_pjmedia(pj_pool_t *pool, pjmedia_sdp_session *pjmedia_s
 	}
 }
 
-static void *sdp_to_pjmedia(const struct ast_sdp *sdp, void *translator_priv)
+static const void *sdp_to_pjmedia(const struct ast_sdp *sdp, void *translator_priv)
 {
 	pj_pool_t *pool = translator_priv;
 	pjmedia_sdp_session *pjmedia_sdp;
@@ -470,7 +470,7 @@ AST_TEST_DEFINE(sdp_to_pjmedia_test)
       "a=rtpmap:32 MPV/90000\r\n\r\n";
 	pj_pool_t *pool;
 	pjmedia_sdp_session *pjmedia_sdp_orig;
-	pjmedia_sdp_session *pjmedia_sdp_dup;
+	const pjmedia_sdp_session *pjmedia_sdp_dup;
 	struct ast_sdp *sdp = NULL;
 	pj_status_t status;
 	enum ast_test_result_state res = AST_TEST_PASS;