diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index 1300850ed6836d3c595dbd2a9f21482e56d42936..3bb1ef4e99e2b81c3f264da801cd2ad69c68158a 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -930,10 +930,18 @@ static int handle_negotiated_sdp(struct ast_sip_session *session, const pjmedia_
 		session_media = AST_VECTOR_GET(&session->pending_media_state->sessions, i);
 		stream = ast_stream_topology_get_stream(session->pending_media_state->topology, i);
 
-		/* The stream state will have already been set to removed when either we
-		 * negotiate the incoming SDP stream or when we produce our own local SDP.
-		 * This can occur if an internal thing has requested it to be removed, or if
-		 * we remove it as a result of the stream limit being reached.
+		/* Make sure that this stream is in the correct state. If we need to change
+		 * the state to REMOVED, then our work here is done, so go ahead and move on
+		 * to the next stream.
+		 */
+		if (!remote->media[i]->desc.port) {
+			ast_stream_set_state(stream, AST_STREAM_STATE_REMOVED);
+			continue;
+		}
+
+		/* If the stream state is REMOVED, nothing needs to be done, so move on to the
+		 * next stream. This can occur if an internal thing has requested it to be
+		 * removed, or if we remove it as a result of the stream limit being reached.
 		 */
 		if (ast_stream_get_state(stream) == AST_STREAM_STATE_REMOVED) {
 			/*
diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c
index 1327d710a6d6952063416195f95889f858a5c1ca..1d1d66e8b66637b09dc9e84506691b9eeaf241a1 100644
--- a/res/res_rtp_asterisk.c
+++ b/res/res_rtp_asterisk.c
@@ -5802,7 +5802,17 @@ static struct ast_frame *ast_rtcp_interpret(struct ast_rtp_instance *instance, s
 		}
 
 		if (ssrc_valid && rtp->themssrc_valid) {
-			if (ssrc != rtp->themssrc && use_packet_source) {
+			/*
+			 * If the SSRC is 1, we still need to handle RTCP since this could be a
+			 * special case. For example, if we have a unidirectional video stream, the
+			 * SSRC may be set to 1 by the browser (in the case of chromium), and requests
+			 * will still need to be processed so that video can flow as expected. This
+			 * should only be done for PLI and FUR, since there is not a way to get the
+			 * appropriate rtp instance when the SSRC is 1.
+			 */
+			int exception = (ssrc == 1 && !((pt == RTCP_PT_PSFB && rc == AST_RTP_RTCP_FMT_PLI) || pt == RTCP_PT_FUR));
+			if ((ssrc != rtp->themssrc && use_packet_source && ssrc != 1)
+					|| exception) {
 				/*
 				 * Skip over this RTCP record as it does not contain the
 				 * correct SSRC.  We should not act upon RTCP records